diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2005-10-23 02:11:16 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2005-10-23 02:11:16 +0000 |
commit | 712a40b59a0f451a558d88db1f9f124463016f97 (patch) | |
tree | 82bc80e9b7a5ba09c01acf205c8ac1e20c44914f /src/libffmpeg/libavcodec/cinepak.c | |
parent | 640063a719556f8569fe848528b39660c6fc31a6 (diff) | |
download | xine-lib-712a40b59a0f451a558d88db1f9f124463016f97.tar.gz xine-lib-712a40b59a0f451a558d88db1f9f124463016f97.tar.bz2 |
big ffmpeg update
it is likely to break, so please keep both pieces
CVS patchset: 7767
CVS date: 2005/10/23 02:11:16
Diffstat (limited to 'src/libffmpeg/libavcodec/cinepak.c')
-rw-r--r-- | src/libffmpeg/libavcodec/cinepak.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libffmpeg/libavcodec/cinepak.c b/src/libffmpeg/libavcodec/cinepak.c index 3b00a1605..d1e1f0ec1 100644 --- a/src/libffmpeg/libavcodec/cinepak.c +++ b/src/libffmpeg/libavcodec/cinepak.c @@ -316,13 +316,22 @@ static int cinepak_decode (CinepakContext *s) uint8_t *eod = (s->data + s->size); int i, result, strip_size, frame_flags, num_strips; int y0 = 0; + int encoded_buf_size; + /* if true, Cinepak data is from a Sega FILM/CPK file */ + int sega_film_data = 0; if (s->size < 10) return -1; frame_flags = s->data[0]; num_strips = BE_16 (&s->data[8]); - s->data += 10; + encoded_buf_size = BE_16 (&s->data[2]); + if (encoded_buf_size != s->size) + sega_film_data = 1; + if (sega_film_data) + s->data += 12; + else + s->data += 10; if (num_strips > MAX_STRIPS) num_strips = MAX_STRIPS; |