summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2016-04-28 11:21:47 +0300
committerSebastian Dröge <sebastian@centricular.com>2016-05-04 10:21:25 +0300
commit724238afd9c6ad381760da486548a7591112f8b2 (patch)
treebe9da6295bec65e42e3bbfef241821b578223ffa
parentab55c350d43029838b69eb023834e1a17b3b9207 (diff)
downloadgstreamer-plugins-base-724238afd9c6ad381760da486548a7591112f8b2.tar.gz
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
-rw-r--r--gst-libs/gst/pbutils/encoding-profile.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gst-libs/gst/pbutils/encoding-profile.c b/gst-libs/gst/pbutils/encoding-profile.c
index 8898e5633..b149458de 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 {
/* subtitles or other ? ignore for now */
}