diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-04-28 11:21:47 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-05-04 10:21:25 +0300 |
commit | 724238afd9c6ad381760da486548a7591112f8b2 (patch) | |
tree | be9da6295bec65e42e3bbfef241821b578223ffa | |
parent | ab55c350d43029838b69eb023834e1a17b3b9207 (diff) | |
download | gstreamer-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.c | 15 |
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 */ } |