Skip to content
Snippets Groups Projects
Commit 12d9a364 authored by Mike Melanson's avatar Mike Melanson Committed by Michael Niedermayer
Browse files

Add another special case to the Cinepak video decoder so that it can handle the following file:

http://samples.mplayerhq.hu/V-codecs/CVID/bad_cinepak_frame_size.mov



This fix works around another work around which handles a different type
of odd Cinepak data.

Thanks to Matthew Hoops (clone2727 - gmail.com) for the sample and fix.

Signed-off-by: default avatarMichael Niedermayer <michaelni@gmx.at>
parent 974d25e2
No related branches found
No related tags found
No related merge requests found
......@@ -330,12 +330,13 @@ static int cinepak_decode (CinepakContext *s)
/* if this is the first frame, check for deviant Sega FILM data */
if (s->sega_film_skip_bytes == -1) {
if (encoded_buf_size != s->size) {
if (encoded_buf_size != s->size && (s->size % encoded_buf_size) != 0) {
/* If the encoded frame size differs from the frame size as indicated
* by the container file, this data likely comes from a Sega FILM/CPK file.
* If the frame header is followed by the bytes FE 00 00 06 00 00 then
* this is probably one of the two known files that have 6 extra bytes
* after the frame header. Else, assume 2 extra bytes. */
* after the frame header. Else, assume 2 extra bytes. The container size
* size also cannot be a multiple of the encoded size. */
if (s->size >= 16 &&
(s->data[10] == 0xFE) &&
(s->data[11] == 0x00) &&
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment