From 0c0f80348801cea5f190e6b2024f4c0da5381efd Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Wed, 24 Jun 2015 23:55:35 +0200 Subject: [PATCH] encodebin: Fix special case Allows to run such a command line : gst-launch-1.0 uridecodebin uri=file:///home/meh/Music/sthg.mp4 ! \ encodebin profile-string="audio/x-wav|1" ! filesink location=sthg.wav Previously the code failed because wavenc is considered as a muxer. We still want encodebin to audio/x-wav as an AudioEncodingProfile, so this simple fix allows that. Ability to mux raw streams in containers such as matroskamux is a different issue. https://bugzilla.gnome.org/show_bug.cgi?id=751470 --- gst/encoding/gstencodebin.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gst/encoding/gstencodebin.c b/gst/encoding/gstencodebin.c index 88952085b4..69d37eaa77 100644 --- a/gst/encoding/gstencodebin.c +++ b/gst/encoding/gstencodebin.c @@ -950,6 +950,14 @@ _get_encoder (GstEncodeBin * ebin, GstEncodingProfile * sprof) gst_element_factory_list_filter (ebin->encoders, format, GST_PAD_SRC, FALSE); + if (G_UNLIKELY (encoders == NULL) && sprof == ebin->profile) { + /* Special case: if the top-level profile is an encoder, + * it could be listed in our muxers (for example wavenc) + */ + encoders = gst_element_factory_list_filter (ebin->muxers, format, + GST_PAD_SRC, FALSE); + } + if (G_UNLIKELY (encoders == NULL)) { GST_DEBUG ("Couldn't find any compatible encoders"); goto beach;