mirror of
https://github.com/nyanmisaka/ffmpeg-rockchip.git
synced 2026-01-24 02:21:11 +01:00
lavf/cafdec: Do not fail for unknown atoms with negative size.
The specification requires the demuxer to only read the data atom up to its given size, this is necessary as atoms are allowed at the end of the file. This patch duplicates the behaviour of the QuickTime player.
This commit is contained in:
parent
795af110f7
commit
8a788ff5d6
1 changed files with 3 additions and 0 deletions
|
|
@ -310,6 +310,8 @@ static int read_header(AVFormatContext *s)
|
|||
"skipping CAF chunk: %08"PRIX32" (%s), size %"PRId64"\n",
|
||||
tag, av_fourcc2str(av_bswap32(tag)), size);
|
||||
case MKBETAG('f','r','e','e'):
|
||||
if (size < 0 && found_data)
|
||||
goto found_data;
|
||||
if (size < 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
break;
|
||||
|
|
@ -325,6 +327,7 @@ static int read_header(AVFormatContext *s)
|
|||
if (!found_data)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
found_data:
|
||||
if (caf->bytes_per_packet > 0 && caf->frames_per_packet > 0) {
|
||||
if (caf->data_size > 0)
|
||||
st->nb_frames = (caf->data_size / caf->bytes_per_packet) * caf->frames_per_packet;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue