[FFmpeg-cvslog] avcodec/ac3dec: don't override existing downmix coefficient with default ones

James Almer git at videolan.org
Sun Jan 19 20:16:27 EET 2025


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Wed Jan 15 22:12:28 2025 -0300| [4563cf95caeaa1f1bcb263b1ef6bb16932357903] | committer: James Almer

avcodec/ac3dec: don't override existing downmix coefficient with default ones

With this, if the eac3 dependent frame doesn't have coded downmix values when
parsed by ff_eac3_parse_header(), it will inherit the coded ones from the core
ac3 frame instead of ignoring them.

Signed-off-by: James Almer <jamrial at gmail.com>

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

 libavcodec/ac3dec.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c
index a796ddf44e..eb5cfd9818 100644
--- a/libavcodec/ac3dec.c
+++ b/libavcodec/ac3dec.c
@@ -345,9 +345,11 @@ static int parse_frame_header(AC3DecodeContext *s)
     s->frame_size                   = hdr.frame_size;
     s->superframe_size             += hdr.frame_size;
     s->preferred_downmix            = AC3_DMIXMOD_NOTINDICATED;
-    s->center_mix_level             = hdr.center_mix_level;
+    if (hdr.bitstream_id <= 10) {
+        s->center_mix_level         = hdr.center_mix_level;
+        s->surround_mix_level       = hdr.surround_mix_level;
+    }
     s->center_mix_level_ltrt        = 4; // -3.0dB
-    s->surround_mix_level           = hdr.surround_mix_level;
     s->surround_mix_level_ltrt      = 4; // -3.0dB
     s->lfe_mix_level_exists         = 0;
     s->num_blocks                   = hdr.num_blocks;



More information about the ffmpeg-cvslog mailing list