From 4c68f3b597f9eec7247808b98f8a6ea78da06dc3 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Thu, 17 Feb 2011 18:11:10 +0100 Subject: [PATCH] encodebin: Add a audioconverter after the audio resampler. This allows handling non-native-endianness conversion properly. --- gst/encoding/gstencodebin.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gst/encoding/gstencodebin.c b/gst/encoding/gstencodebin.c index ada95f8f5f..0ca3981f20 100644 --- a/gst/encoding/gstencodebin.c +++ b/gst/encoding/gstencodebin.c @@ -1203,26 +1203,30 @@ _create_stream_group (GstEncodeBin * ebin, GstEncodingProfile * sprof, last = cspace; } else if (GST_IS_ENCODING_AUDIO_PROFILE (sprof)) { - GstElement *aconv, *ares, *arate; + GstElement *aconv, *ares, *arate, *aconv2; GST_LOG ("Adding conversion elements for audio stream"); arate = gst_element_factory_make ("audiorate", NULL); g_object_set (arate, "tolerance", (guint64) ebin->tolerance, NULL); aconv = gst_element_factory_make ("audioconvert", NULL); + aconv2 = gst_element_factory_make ("audioconvert", NULL); ares = gst_element_factory_make ("audioresample", NULL); - gst_bin_add_many ((GstBin *) ebin, arate, aconv, ares, NULL); + gst_bin_add_many ((GstBin *) ebin, arate, aconv, ares, aconv2, NULL); tosync = g_list_append (tosync, arate); tosync = g_list_append (tosync, aconv); tosync = g_list_append (tosync, ares); + tosync = g_list_append (tosync, aconv2); if (!fast_element_link (arate, aconv) || - !fast_element_link (aconv, ares) || !fast_element_link (ares, last)) + !fast_element_link (aconv, ares) || + !fast_element_link (ares, aconv2) || !fast_element_link (aconv2, last)) goto converter_link_failure; sgroup->converters = g_list_prepend (sgroup->converters, arate); sgroup->converters = g_list_prepend (sgroup->converters, aconv); sgroup->converters = g_list_prepend (sgroup->converters, ares); + sgroup->converters = g_list_prepend (sgroup->converters, aconv2); last = arate; }