diff options
author | Marijn Meijles <marijn@bitpit.net> | 2017-01-27 22:08:15 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-01-28 23:08:42 +0100 |
commit | 227d602bb36f9460e007fb3e1fbff4a776838498 (patch) | |
tree | 8bdabb394b47abf74ea6d389324b70b46baed4a5 /libavformat/ac3dec.c | |
parent | 65862f57ad2f7f49d715f334a9d892e0b20d42f1 (diff) | |
download | ffmpeg-227d602bb36f9460e007fb3e1fbff4a776838498.tar.gz |
avformat/ac3dec: Fix to prevent runaway ac3 detection by looking at the actual frame rather than the first detected frame.
When detecting a swapped AC3 marker the data of the frame is swapped. However, in subsequent frames the data swapped is taken from the first frame rather than the current frame.
Signed-off-by: Marijn Meijles <marijn@bitpit.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat/ac3dec.c')
-rw-r--r-- | libavformat/ac3dec.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libavformat/ac3dec.c b/libavformat/ac3dec.c index 363a32e04e..e85b0ac7c9 100644 --- a/libavformat/ac3dec.c +++ b/libavformat/ac3dec.c @@ -49,8 +49,8 @@ static int ac3_eac3_probe(AVProbeData *p, enum AVCodecID expected_codec_id) buf2+=16; if (buf[0] == 0x77 && buf[1] == 0x0B) { for(i=0; i<8; i+=2) { - buf3[i ] = buf[i+1]; - buf3[i+1] = buf[i ]; + buf3[i ] = buf2[i+1]; + buf3[i+1] = buf2[i ]; } init_get_bits(&gbc, buf3, 54); }else @@ -62,8 +62,8 @@ static int ac3_eac3_probe(AVProbeData *p, enum AVCodecID expected_codec_id) if (buf[0] == 0x77 && buf[1] == 0x0B) { av_assert0(phdr->frame_size <= sizeof(buf3)); for(i=8; i<phdr->frame_size; i+=2) { - buf3[i ] = buf[i+1]; - buf3[i+1] = buf[i ]; + buf3[i ] = buf2[i+1]; + buf3[i+1] = buf2[i ]; } } if(av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0, gbc.buffer + 2, phdr->frame_size - 2)) |