[FFmpeg-cvslog] avformat/isom: don't drop the known layout when parsing AAC decSpecificInfo

James Almer git at videolan.org
Wed Apr 3 02:34:09 EEST 2024


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Tue Apr  2 20:21:13 2024 -0300| [50458b7fa1fc9b22ae48d410954585780f1a44f7] | committer: James Almer

avformat/isom: don't drop the known layout when parsing AAC decSpecificInfo

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

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

 libavformat/isom.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/libavformat/isom.c b/libavformat/isom.c
index c5930bd4d8..74bb13dc96 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -359,9 +359,11 @@ int ff_mp4_read_dec_config_descr(AVFormatContext *fc, AVStream *st, AVIOContext
                                                 st->codecpar->extradata_size, 1, fc);
             if (ret < 0)
                 return ret;
-            av_channel_layout_uninit(&st->codecpar->ch_layout);
-            st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
-            st->codecpar->ch_layout.nb_channels = cfg.channels;
+            if (cfg.channels != st->codecpar->ch_layout.nb_channels) {
+                av_channel_layout_uninit(&st->codecpar->ch_layout);
+                st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
+                st->codecpar->ch_layout.nb_channels = cfg.channels;
+            }
             if (cfg.object_type == 29 && cfg.sampling_index < 3) // old mp3on4
                 st->codecpar->sample_rate = ff_mpa_freq_tab[cfg.sampling_index];
             else if (cfg.ext_sample_rate)



More information about the ffmpeg-cvslog mailing list