# HG changeset patch # User melanson # Date 1124044799 0 # Node ID 7bfea1374957a1f7c26342a91718a22a1d1bcf9e # Parent d4c4b84e0facc7d466b1ac8ba0cf5327bc2994cc automatically detect Cinepak data from Sega FILM/CPK files diff -r d4c4b84e0fac -r 7bfea1374957 cinepak.c --- a/cinepak.c Sun Aug 14 16:37:29 2005 +0000 +++ b/cinepak.c Sun Aug 14 18:39:59 2005 +0000 @@ -316,13 +316,22 @@ 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;