From af9da83b0e1192ae6163633f66c420a332e2932c Mon Sep 17 00:00:00 2001 From: Mike Melanson Date: Sun, 14 Aug 2005 18:39:59 +0000 Subject: [PATCH] automatically detect Cinepak data from Sega FILM/CPK files Originally committed as revision 4525 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/cinepak.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavcodec/cinepak.c b/libavcodec/cinepak.c index 3b00a16..d1e1f0e 100644 --- a/libavcodec/cinepak.c +++ b/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; -- 2.7.4