Hello community,

here is the log from the commit of package gstreamer-plugins-good for 
openSUSE:Factory checked in at 2020-01-12 23:16:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-good (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.6675 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-good"

Sun Jan 12 23:16:13 2020 rev:69 rq:761777 version:1.16.2

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-good/gstreamer-plugins-good.changes
    2019-12-11 12:09:15.112636202 +0100
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.6675/gstreamer-plugins-good.changes
  2020-01-12 23:16:32.134641963 +0100
@@ -1,0 +2,9 @@
+Mon Dec 30 23:34:26 UTC 2019 - Bjørn Lie <bjorn....@gmail.com>
+
+- Add upstream bugfix patches:
+  + gst-good-qtdemux-Specify-REDIRECT-info.patch: qtdemux: Specify
+    REDIRECT information in error message.
+  + gst-good-rtpjpegdepay-outputs-framed-jpeg.patch: rtpjpegdepay:
+    outputs framed jpeg.
+
+-------------------------------------------------------------------

New:
----
  gst-good-qtdemux-Specify-REDIRECT-info.patch
  gst-good-rtpjpegdepay-outputs-framed-jpeg.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gstreamer-plugins-good.spec ++++++
--- /var/tmp/diff_new_pack.0lsAZE/_old  2020-01-12 23:16:33.490642465 +0100
+++ /var/tmp/diff_new_pack.0lsAZE/_new  2020-01-12 23:16:33.498642468 +0100
@@ -42,6 +42,10 @@
 Source0:        
https://gstreamer.freedesktop.org/src/gst-plugins-good/%{_name}-%{version}.tar.xz
 Source1:        gstreamer-plugins-good.appdata.xml
 Source99:       baselibs.conf
+# PATCH-FIX-UPSTREAM gst-good-qtdemux-Specify-REDIRECT-info.patch -- qtdemux: 
Specify REDIRECT information in error message
+Patch0:         gst-good-qtdemux-Specify-REDIRECT-info.patch
+# PATCH-FIX-UPSTREAM gst-good-rtpjpegdepay-outputs-framed-jpeg.patch -- 
rtpjpegdepay: outputs framed jpeg
+Patch1:         gst-good-rtpjpegdepay-outputs-framed-jpeg.patch
 
 BuildRequires:  Mesa-libGLESv2-devel
 BuildRequires:  Mesa-libGLESv3-devel

++++++ gst-good-qtdemux-Specify-REDIRECT-info.patch ++++++
>From a0c6156a81d56c472a9eccd9797a0e77628067df Mon Sep 17 00:00:00 2001
From: Thibault Saunier <tsaun...@igalia.com>
Date: Tue, 3 Sep 2019 16:46:30 -0400
Subject: [PATCH] qtdemux: Specify REDIRECT information in error message

There are in the wild (mp4) streams that basically contain no tracks
but do have a redirect info[0], in which case, we won't be able
to expose any pad (there are no tracks) so we can't post anything but
an error on the bus, as:

- it can't send EOS downstream, it has no pad,
- posting an EOS message will be useless as PAUSED state can't be
  reached and there is no sink in the pipeline meaning GstBin will
  simply ignore it

The approach here is to to add details to the ERROR message with a
`redirect-location` field which elements like playbin handle and use right
away.

[0]: 
http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
---
 gst/isomp4/qtdemux.c | 32 +++++++++++++++++++++++++-------
 gst/isomp4/qtdemux.h |  2 +-
 2 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
index ad07c1e36..61fec02cb 100644
--- a/gst/isomp4/qtdemux.c
+++ b/gst/isomp4/qtdemux.c
@@ -523,6 +523,7 @@ GST_STATIC_PAD_TEMPLATE ("subtitle_%u",
 G_DEFINE_TYPE (GstQTDemux, gst_qtdemux, GST_TYPE_ELEMENT);
 
 static void gst_qtdemux_dispose (GObject * object);
+static void gst_qtdemux_finalize (GObject * object);
 
 static guint32
 gst_qtdemux_find_index_linear (GstQTDemux * qtdemux, QtDemuxStream * str,
@@ -625,6 +626,7 @@ gst_qtdemux_class_init (GstQTDemuxClass * klass)
   parent_class = g_type_class_peek_parent (klass);
 
   gobject_class->dispose = gst_qtdemux_dispose;
+  gobject_class->finalize = gst_qtdemux_finalize;
 
   gstelement_class->change_state = GST_DEBUG_FUNCPTR 
(gst_qtdemux_change_state);
 #if 0
@@ -680,6 +682,16 @@ gst_qtdemux_init (GstQTDemux * qtdemux)
   gst_qtdemux_reset (qtdemux, TRUE);
 }
 
+static void
+gst_qtdemux_finalize (GObject * object)
+{
+  GstQTDemux *qtdemux = GST_QTDEMUX (object);
+
+  g_free (qtdemux->redirect_location);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
 static void
 gst_qtdemux_dispose (GObject * object)
 {
@@ -708,10 +720,11 @@ gst_qtdemux_dispose (GObject * object)
 static void
 gst_qtdemux_post_no_playable_stream_error (GstQTDemux * qtdemux)
 {
-  if (qtdemux->posted_redirect) {
-    GST_ELEMENT_ERROR (qtdemux, STREAM, DEMUX,
+  if (qtdemux->redirect_location) {
+    GST_ELEMENT_ERROR_WITH_DETAILS (qtdemux, STREAM, DEMUX,
         (_("This file contains no playable streams.")),
-        ("no known streams found, a redirect message has been posted"));
+        ("no known streams found, a redirect message has been posted"),
+        ("redirect-location", G_TYPE_STRING, qtdemux->redirect_location, 
NULL));
   } else {
     GST_ELEMENT_ERROR (qtdemux, STREAM, DEMUX,
         (_("This file contains no playable streams.")),
@@ -2112,7 +2125,7 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
     qtdemux->neededbytes = 16;
     qtdemux->todrop = 0;
     qtdemux->pullbased = FALSE;
-    qtdemux->posted_redirect = FALSE;
+    g_clear_pointer (&qtdemux->redirect_location, g_free);
     qtdemux->first_mdat = -1;
     qtdemux->header_size = 0;
     qtdemux->mdatoffset = -1;
@@ -6038,11 +6051,12 @@ gst_qtdemux_decorate_and_push_buffer (GstQTDemux * 
qtdemux,
     gst_buffer_unmap (buf, &map);
     if (url != NULL && strlen (url) != 0) {
       /* we have RTSP redirect now */
+      g_free (qtdemux->redirect_location);
+      qtdemux->redirect_location = g_strdup (url);
       gst_element_post_message (GST_ELEMENT_CAST (qtdemux),
           gst_message_new_element (GST_OBJECT_CAST (qtdemux),
               gst_structure_new ("redirect",
                   "new-location", G_TYPE_STRING, url, NULL)));
-      qtdemux->posted_redirect = TRUE;
     } else {
       GST_WARNING_OBJECT (qtdemux, "Redirect URI of stream is empty, not "
           "posting");
@@ -12912,7 +12926,9 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
             "new-location", G_TYPE_STRING,
             QTDEMUX_NTH_STREAM (qtdemux, 0)->redirect_uri, NULL));
     gst_element_post_message (GST_ELEMENT_CAST (qtdemux), m);
-    qtdemux->posted_redirect = TRUE;
+    g_free (qtdemux->redirect_location);
+    qtdemux->redirect_location =
+        g_strdup (QTDEMUX_NTH_STREAM (qtdemux, 0)->redirect_uri);
   }
 
   g_ptr_array_foreach (qtdemux->active_streams,
@@ -13965,9 +13981,11 @@ qtdemux_process_redirects (GstQTDemux * qtdemux, GList 
* references)
   g_list_free (references);
 
   GST_INFO_OBJECT (qtdemux, "posting redirect message: %" GST_PTR_FORMAT, s);
+  g_free (qtdemux->redirect_location);
+  qtdemux->redirect_location =
+      g_strdup (gst_structure_get_string (s, "new-location"));
   msg = gst_message_new_element (GST_OBJECT_CAST (qtdemux), s);
   gst_element_post_message (GST_ELEMENT_CAST (qtdemux), msg);
-  qtdemux->posted_redirect = TRUE;
 }
 
 /* look for redirect nodes, collect all redirect information and
diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
index 83a050a43..05ea7c78f 100644
--- a/gst/isomp4/qtdemux.h
+++ b/gst/isomp4/qtdemux.h
@@ -69,7 +69,7 @@ struct _GstQTDemux {
   /* TRUE if pull-based */
   gboolean pullbased;
 
-  gboolean posted_redirect;
+  gchar *redirect_location;
 
   /* Protect pad exposing from flush event */
   GMutex expose_lock;
-- 
2.24.1

++++++ gst-good-rtpjpegdepay-outputs-framed-jpeg.patch ++++++
>From eea8d25a4325112d80d05a00957884dd95a34dc7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <t...@centricular.com>
Date: Wed, 4 Dec 2019 01:03:49 +0000
Subject: [PATCH] rtpjpegdepay: outputs framed jpeg

Add parsed=true to output caps, as we always output
whole frames, timestamped and all. Means also that
the output can be decoded by avdec_mjpeg wihout
plugging an extra parser (which has no rank).
---
 gst/rtp/gstrtpjpegdepay.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gst/rtp/gstrtpjpegdepay.c b/gst/rtp/gstrtpjpegdepay.c
index 59274f111..d424b64d9 100644
--- a/gst/rtp/gstrtpjpegdepay.c
+++ b/gst/rtp/gstrtpjpegdepay.c
@@ -627,9 +627,10 @@ gst_rtp_jpeg_depay_process (GstRTPBaseDepayload * 
depayload, GstRTPBuffer * rtp)
       GstCaps *outcaps;
 
       outcaps =
-          gst_caps_new_simple ("image/jpeg", "framerate", GST_TYPE_FRACTION,
-          rtpjpegdepay->frate_num, rtpjpegdepay->frate_denom, "width",
-          G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
+          gst_caps_new_simple ("image/jpeg", "parsed", G_TYPE_BOOLEAN, TRUE,
+          "framerate", GST_TYPE_FRACTION, rtpjpegdepay->frate_num,
+          rtpjpegdepay->frate_denom, "width", G_TYPE_INT, width,
+          "height", G_TYPE_INT, height, NULL);
       gst_pad_set_caps (depayload->srcpad, outcaps);
       gst_caps_unref (outcaps);
 
-- 
2.24.1


Reply via email to