Hello community, here is the log from the commit of package gstreamer-transcoder for openSUSE:Factory checked in at 2018-10-04 19:00:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer-transcoder (Old) and /work/SRC/openSUSE:Factory/.gstreamer-transcoder.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-transcoder" Thu Oct 4 19:00:40 2018 rev:10 rq:638665 version:1.14.1 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer-transcoder/gstreamer-transcoder.changes 2018-06-27 10:22:51.880879619 +0200 +++ /work/SRC/openSUSE:Factory/.gstreamer-transcoder.new/gstreamer-transcoder.changes 2018-10-04 19:00:41.827253518 +0200 @@ -1,0 +2,9 @@ +Wed Sep 26 22:36:00 UTC 2018 - bjorn....@gmail.com + +- Update to version 1.14.1: + + transcodebin: Handle files with several tracks of a kind. This + doesn't support transcoding the various tracks yet, but there + is a FIXME about that for now. + + Force profile=high in youtube target. + +------------------------------------------------------------------- Old: ---- gst-transcoder-1.14.0.tar.gz New: ---- gst-transcoder-1.14.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer-transcoder.spec ++++++ --- /var/tmp/diff_new_pack.H5J03o/_old 2018-10-04 19:00:42.519252793 +0200 +++ /var/tmp/diff_new_pack.H5J03o/_new 2018-10-04 19:00:42.523252789 +0200 @@ -12,13 +12,13 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define _name gst-transcoder Name: gstreamer-transcoder -Version: 1.14.0 +Version: 1.14.1 Release: 0 Summary: GStreamer Transcoding API License: LGPL-2.1-only ++++++ gst-transcoder-1.14.0.tar.gz -> gst-transcoder-1.14.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-transcoder-1.14.0/data/targets/online-service/youtube.gep new/gst-transcoder-1.14.1/data/targets/online-service/youtube.gep --- old/gst-transcoder-1.14.0/data/targets/online-service/youtube.gep 2018-03-24 13:38:14.000000000 +0100 +++ new/gst-transcoder-1.14.1/data/targets/online-service/youtube.gep 2018-07-23 16:37:27.000000000 +0200 @@ -19,6 +19,6 @@ [streamprofile-default-1] parent=default type=video -format=video/x-h264 +format=video/x-h264,profile=high preset=Profile YouTube pass=0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-transcoder-1.14.0/gst/transcode/gsttranscodebin.c new/gst-transcoder-1.14.1/gst/transcode/gsttranscodebin.c --- old/gst-transcoder-1.14.0/gst/transcode/gsttranscodebin.c 2018-03-24 13:38:14.000000000 +0100 +++ new/gst-transcoder-1.14.1/gst/transcode/gsttranscodebin.c 2018-07-23 16:37:27.000000000 +0200 @@ -104,7 +104,8 @@ GstCaps * caps) { GstPad *filter_src = NULL, *filter_sink = NULL; - GstElement *filter = NULL; + GstElement* filter = NULL; + GstObject *filter_parent; if (self->video_filter && !g_strcmp0 (gst_structure_get_name (gst_caps_get_structure (caps, 0)), @@ -119,6 +120,15 @@ if (!filter) return pad; + if ((filter_parent = gst_object_get_parent (GST_OBJECT (filter)))) { + GST_WARNING_OBJECT (self, "Filter already in use (inside %" GST_PTR_FORMAT ").", + filter_parent); + GST_FIXME_OBJECT(self, "Handle transcoding several streams of a same kind."); + gst_object_unref(filter_parent); + + return pad; + } + /* We are guaranteed filters only have 1 unique sinkpad and srcpad */ GST_OBJECT_LOCK (filter); filter_sink = filter->sinkpads->data; @@ -177,24 +187,34 @@ pad = _insert_filter (self, sinkpad, pad, caps); lret = gst_pad_link (pad, sinkpad); - if (G_UNLIKELY (lret != GST_PAD_LINK_OK)) { - GstCaps *othercaps = gst_pad_query_caps (sinkpad, NULL); - caps = gst_pad_get_current_caps (pad); - - GST_ELEMENT_ERROR_WITH_DETAILS (self, CORE, PAD, - (NULL), - ("Couldn't link pads:\n %" GST_PTR_FORMAT ": %" GST_PTR_FORMAT - "\nand:\n" " %" GST_PTR_FORMAT ": %" GST_PTR_FORMAT "\n\n", - pad, caps, sinkpad, othercaps), - ("linking-error", GST_TYPE_PAD_LINK_RETURN, lret, - "source-pad", GST_TYPE_PAD, pad, - "source-caps", GST_TYPE_CAPS, caps, - "sink-pad", GST_TYPE_PAD, sinkpad, - "sink-caps", GST_TYPE_CAPS, othercaps, NULL)); - - gst_caps_unref (caps); - if (othercaps) - gst_caps_unref (othercaps); + switch (lret) { + case GST_PAD_LINK_OK: + break; + case GST_PAD_LINK_WAS_LINKED: + GST_FIXME_OBJECT(self, "Pad %" GST_PTR_FORMAT " was already linked", + sinkpad); + break; + default: + { + GstCaps* othercaps = gst_pad_query_caps(sinkpad, NULL); + caps = gst_pad_get_current_caps(pad); + + GST_ELEMENT_ERROR_WITH_DETAILS(self, CORE, PAD, + (NULL), + ("Couldn't link pads:\n %" GST_PTR_FORMAT ": %" GST_PTR_FORMAT + "\nand:\n" + " %" GST_PTR_FORMAT ": %" GST_PTR_FORMAT "\n\n", + pad, caps, sinkpad, othercaps), + ("linking-error", GST_TYPE_PAD_LINK_RETURN, lret, + "source-pad", GST_TYPE_PAD, pad, + "source-caps", GST_TYPE_CAPS, caps, + "sink-pad", GST_TYPE_PAD, sinkpad, + "sink-caps", GST_TYPE_CAPS, othercaps, NULL)); + + gst_caps_unref(caps); + if (othercaps) + gst_caps_unref(othercaps); + } } gst_object_unref (sinkpad);