summaryrefslogtreecommitdiff
path: root/src/libffmpeg/libavcodec/svq3.c
diff options
context:
space:
mode:
authorMike Melanson <mike@multimedia.cx>2004-03-14 21:14:07 +0000
committerMike Melanson <mike@multimedia.cx>2004-03-14 21:14:07 +0000
commit0d90aec0fd7428a77b5c4c536ab65635669bc42d (patch)
tree9eb56c6c1176bf6a6f3ae65199a3f43aa8c2aa2d /src/libffmpeg/libavcodec/svq3.c
parentb4d3aa3dcce07b90098e33c37b563e797378d0f1 (diff)
downloadxine-lib-0d90aec0fd7428a77b5c4c536ab65635669bc42d.tar.gz
xine-lib-0d90aec0fd7428a77b5c4c536ab65635669bc42d.tar.bz2
sync to ffmpeg build 4707
CVS patchset: 6253 CVS date: 2004/03/14 21:14:07
Diffstat (limited to 'src/libffmpeg/libavcodec/svq3.c')
-rw-r--r--src/libffmpeg/libavcodec/svq3.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/libffmpeg/libavcodec/svq3.c b/src/libffmpeg/libavcodec/svq3.c
index c8720c07a..413cc8963 100644
--- a/src/libffmpeg/libavcodec/svq3.c
+++ b/src/libffmpeg/libavcodec/svq3.c
@@ -766,6 +766,8 @@ static int svq3_decode_frame (AVCodecContext *avctx,
MpegEncContext *const s = avctx->priv_data;
H264Context *const h = avctx->priv_data;
int m, mb_type;
+ unsigned char *extradata;
+ unsigned int size;
*data_size = 0;
@@ -790,13 +792,21 @@ static int svq3_decode_frame (AVCodecContext *avctx,
alloc_tables (h);
- if (avctx->extradata && avctx->extradata_size >= 0x64
- && !memcmp (avctx->extradata, "SVQ3", 4)) {
+ /* prowl for the "SEQH" marker in the extradata */
+ extradata = (unsigned char *)avctx->extradata;
+ for (m = 0; m < avctx->extradata_size; m++) {
+ if (!memcmp (extradata, "SEQH", 4))
+ break;
+ extradata++;
+ }
+
+ /* if a match was found, parse the extra data */
+ if (!memcmp (extradata, "SEQH", 4)) {
GetBitContext gb;
- init_get_bits (&gb, (uint8_t *) avctx->extradata + 0x62,
- 8*(avctx->extradata_size - 0x62));
+ size = BE_32(&extradata[4]);
+ init_get_bits (&gb, extradata + 8, size);
/* 'frame size code' and optional 'width, height' */
if (get_bits (&gb, 3) == 7) {