diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-04-28 11:15:53 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-05-04 10:21:25 +0300 |
commit | ab55c350d43029838b69eb023834e1a17b3b9207 (patch) | |
tree | 066af3b40480ea39f6da94ca6970ac7b33f0abfd | |
parent | 7ac32601c8a185292748b75ff2f4004cb2b8fa1b (diff) | |
download | gstreamer-plugins-base-ab55c350d43029838b69eb023834e1a17b3b9207.tar.gz |
encoding-profile: Move adding of each stream to a helper function
https://bugzilla.gnome.org/show_bug.cgi?id=765708
-rw-r--r-- | gst-libs/gst/pbutils/encoding-profile.c | 74 |
1 files changed, 42 insertions, 32 deletions
diff --git a/gst-libs/gst/pbutils/encoding-profile.c b/gst-libs/gst/pbutils/encoding-profile.c index b58dd8854..8898e5633 100644 --- a/gst-libs/gst/pbutils/encoding-profile.c +++ b/gst-libs/gst/pbutils/encoding-profile.c @@ -1489,6 +1489,47 @@ gst_encoding_profile_deserialize_valfunc (GValue * value, const gchar * s) return FALSE; } +static gboolean +add_stream_to_profile (GstEncodingContainerProfile * profile, + GstDiscovererStreamInfo * sinfo) +{ + GstEncodingProfile *sprofile = NULL; + GstStructure *s; + GstCaps *caps; + + caps = gst_discoverer_stream_info_get_caps (sinfo); + + s = gst_caps_get_structure (caps, 0); + if (gst_structure_has_field (s, "codec_data") + || gst_structure_has_field (s, "streamheader")) { + caps = gst_caps_make_writable (caps); + s = gst_caps_get_structure (caps, 0); + gst_structure_remove_field (s, "codec_data"); + gst_structure_remove_field (s, "streamheader"); + } + + GST_LOG ("Stream: %" GST_PTR_FORMAT "\n", caps); + if (GST_IS_DISCOVERER_AUDIO_INFO (sinfo)) { + sprofile = + (GstEncodingProfile *) gst_encoding_audio_profile_new (caps, NULL, + NULL, 0); + } else if (GST_IS_DISCOVERER_VIDEO_INFO (sinfo)) { + sprofile = + (GstEncodingProfile *) gst_encoding_video_profile_new (caps, NULL, + NULL, 0); + } else { + /* subtitles or other ? ignore for now */ + } + if (sprofile) + gst_encoding_container_profile_add_profile (profile, sprofile); + else + GST_ERROR ("Failed to create stream profile from caps %" GST_PTR_FORMAT, + caps); + gst_caps_unref (caps); + + return sprofile != NULL; +} + /** * gst_encoding_profile_from_discoverer: * @info: (transfer none): The #GstDiscovererInfo to read from @@ -1530,38 +1571,7 @@ gst_encoding_profile_from_discoverer (GstDiscovererInfo * info) gst_discoverer_container_info_get_streams (GST_DISCOVERER_CONTAINER_INFO (sinfo)); for (stream = streams; stream; stream = stream->next) { - GstEncodingProfile *sprofile = NULL; - GstStructure *s; - sinfo = (GstDiscovererStreamInfo *) stream->data; - caps = gst_discoverer_stream_info_get_caps (sinfo); - - s = gst_caps_get_structure (caps, 0); - if (gst_structure_has_field (s, "codec_data") - || gst_structure_has_field (s, "streamheader")) { - caps = gst_caps_make_writable (caps); - s = gst_caps_get_structure (caps, 0); - gst_structure_remove_field (s, "codec_data"); - gst_structure_remove_field (s, "streamheader"); - } - - GST_LOG ("Stream: %" GST_PTR_FORMAT "\n", caps); - if (GST_IS_DISCOVERER_AUDIO_INFO (sinfo)) { - sprofile = - (GstEncodingProfile *) gst_encoding_audio_profile_new (caps, NULL, - NULL, 0); - } else if (GST_IS_DISCOVERER_VIDEO_INFO (sinfo)) { - sprofile = - (GstEncodingProfile *) gst_encoding_video_profile_new (caps, NULL, - NULL, 0); - } else { - /* subtitles or other ? ignore for now */ - } - if (sprofile) - gst_encoding_container_profile_add_profile (profile, sprofile); - else - GST_ERROR ("Failed to create stream profile from caps %" GST_PTR_FORMAT, - caps); - gst_caps_unref (caps); + add_stream_to_profile (profile, (GstDiscovererStreamInfo *) stream->data); } gst_discoverer_stream_info_list_free (streams); |