[FFmpeg-cvslog] avformat/ac3dec: Fix to prevent runaway ac3 detection by looking at the actual frame rather than the first detected frame.

Marijn Meijles git at videolan.org
Sun Jan 29 00:09:40 EET 2017


ffmpeg | branch: master | Marijn Meijles <marijn at bitpit.net> | Fri Jan 27 22:08:15 2017 +0100| [227d602bb36f9460e007fb3e1fbff4a776838498] | committer: Michael Niedermayer

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 at bitpit.net>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=227d602bb36f9460e007fb3e1fbff4a776838498
---

 libavformat/ac3dec.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavformat/ac3dec.c b/libavformat/ac3dec.c
index 363a32e..e85b0ac 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))



More information about the ffmpeg-cvslog mailing list