From e2bde252a66881b2d27b093bcedf96325729179a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 28 Apr 2016 11:21:47 +0300 Subject: [PATCH] encoding-profile: Recurse into nested container profiles and only add the final audio/video streams If we e.g. have AVI with DV container with video/audio inside the DV container, we can't handle this at this point with an encoding profile. Instead of erroring out, flatten the container hierarchy. https://bugzilla.gnome.org/show_bug.cgi?id=765708 --- gst-libs/gst/pbutils/encoding-profile.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gst-libs/gst/pbutils/encoding-profile.c b/gst-libs/gst/pbutils/encoding-profile.c index 06814bb758..54439961d9 100644 --- a/gst-libs/gst/pbutils/encoding-profile.c +++ b/gst-libs/gst/pbutils/encoding-profile.c @@ -1517,6 +1517,21 @@ add_stream_to_profile (GstEncodingContainerProfile * profile, sprofile = (GstEncodingProfile *) gst_encoding_video_profile_new (caps, NULL, NULL, 0); + } else if (GST_IS_DISCOVERER_CONTAINER_INFO (sinfo)) { + GList *streams, *stream; + guint n_streams = 0; + + streams = + gst_discoverer_container_info_get_streams (GST_DISCOVERER_CONTAINER_INFO + (sinfo)); + for (stream = streams; stream; stream = stream->next) { + if (add_stream_to_profile (profile, + (GstDiscovererStreamInfo *) stream->data)) + n_streams++; + } + gst_discoverer_stream_info_list_free (streams); + + return n_streams != 0; } else { GST_WARNING ("Ignoring stream of type '%s'", g_type_name (G_OBJECT_TYPE (sinfo)));