From: Yeongjin Jeong Date: Thu, 11 Oct 2018 07:36:17 +0000 (+0900) Subject: flvdemux: Use aac codec-data to adjust channels if needed X-Git-Tag: 1.16.2~348 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bd6a4aa10d233e52370ee6ee80c32ef2659c48ea;p=platform%2Fupstream%2Fgst-plugins-good.git flvdemux: Use aac codec-data to adjust channels if needed Flv does not support various channels in AAC stream format, for example flvdemux detect an audio channels of 2(stereo) when the AAC really is 1(mono). https://bugzilla.gnome.org/show_bug.cgi?id=797275 --- diff --git a/gst/flv/gstflvdemux.c b/gst/flv/gstflvdemux.c index 2a0fa45..1f53888 100644 --- a/gst/flv/gstflvdemux.c +++ b/gst/flv/gstflvdemux.c @@ -723,6 +723,7 @@ gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, GstCaps *caps = NULL, *old_caps; gboolean ret = FALSE; guint adjusted_rate = rate; + guint adjusted_channels = channels; GstEvent *event; gchar *stream_id; @@ -784,6 +785,16 @@ gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, } else { adjusted_rate = rate; } + + adjusted_channels = + gst_codec_utils_aac_get_channels (map.data, map.size); + + if (adjusted_channels && (channels != adjusted_channels)) { + GST_LOG_OBJECT (demux, "Ajusting AAC channels %d -> %d", channels, + adjusted_channels); + } else { + adjusted_channels = channels; + } } gst_buffer_unmap (demux->audio_codec_data, &map); @@ -866,7 +877,7 @@ gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, } gst_caps_set_simple (caps, "rate", G_TYPE_INT, adjusted_rate, - "channels", G_TYPE_INT, channels, NULL); + "channels", G_TYPE_INT, adjusted_channels, NULL); if (demux->audio_codec_data) { gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER,