Accepting request 761112 from home:iznogood:branches:multimedia:libs

- Add upstream bugfix patches:
  + gst-base-playbin-handle-error.patch: playbin: Handle error
    message with redirection indication.
  + gst-base-audioencoder-fix-leak.patch: audioencoder: fix segment
    event leak.
  + gst-base-fft-update-kiss-version.patch: fft: Update our kiss
    fft version.

OBS-URL: https://build.opensuse.org/request/show/761112
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/gstreamer-plugins-base?expand=0&rev=146
This commit is contained in:
Bjørn Lie 2020-01-08 09:18:34 +00:00 committed by Git OBS Bridge
parent ba1aa9335a
commit 833fe97641
5 changed files with 2401 additions and 1 deletions

View File

@ -0,0 +1,25 @@
From c61767dc2f7f99e3de93aee09695a6a06202f619 Mon Sep 17 00:00:00 2001
From: Jonas Holmberg <jonashg@axis.com>
Date: Fri, 20 Dec 2019 13:35:53 +0100
Subject: [PATCH] audioencoder: fix segment event leak
Segment event was leaked if format != _TIME.
---
gst-libs/gst/audio/gstaudioencoder.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/gst-libs/gst/audio/gstaudioencoder.c b/gst-libs/gst/audio/gstaudioencoder.c
index c2f0382ae..031a40b7f 100644
--- a/gst-libs/gst/audio/gstaudioencoder.c
+++ b/gst-libs/gst/audio/gstaudioencoder.c
@@ -1551,6 +1551,7 @@ gst_audio_encoder_sink_event_default (GstAudioEncoder * enc, GstEvent * event)
GST_DEBUG_OBJECT (enc, "received SEGMENT %" GST_SEGMENT_FORMAT, &seg);
GST_DEBUG_OBJECT (enc, "unsupported format; ignoring");
res = TRUE;
+ gst_event_unref (event);
break;
}
--
2.24.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,100 @@
From 0375d3a393385f8098928c06520ce03f456f1b28 Mon Sep 17 00:00:00 2001
From: Thibault Saunier <tsaunier@igalia.com>
Date: Tue, 3 Sep 2019 16:03:49 -0400
Subject: [PATCH] playbin: Handle error message with redirection indication
There are in the wild (mp4) streams that basically contain no tracks
but do have a redirect info[0], in which case, qtdemux won't be able
to expose any pad (there are no tracks) so 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
In that case, currently the application could try to handle that but it
is pretty complex as it will get the REDIRECT message on the bus at
which point it could set the URL but playbin will ignore it, as
it will only be for the next EOS, it thus need to set the pipeline to
NULL (READY won't do as it is already in READY at that point). And it
needs to figure out the following ERROR message on the bus needs to be
ignored, which is not really simple.
The approach here is to allow element to add details to the ERROR
message with a `redirect-location` field which elements like playbin handle
and use right away.
We could also use the element 'redirect' message in playbin, but the
issue with that approach is that the element will still emit the ERROR
message on the bus, leading to wrong behaviour. That can't be avoided
since in the case the app/parent pipeline is not handling the redirect
instruction, the ERROR message is necessary (and there is no way to
detect that the message has been "handled" from the element emitting the
redirect).
[0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
---
gst/playback/gstplaybin2.c | 40 ++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c
index 1f3d9faf0..cec4b36b7 100644
--- a/gst/playback/gstplaybin2.c
+++ b/gst/playback/gstplaybin2.c
@@ -170,6 +170,10 @@
* type. The new location may be a relative or an absolute URI. Examples
* for such redirects can be found in many quicktime movie trailers.
*
+ * NOTE: playbin will internally handle the redirect messages in the case
+ * that the redirecting stream doesn't contain any tracks and thus
+ * needs to report an error message on the bus.
+ *
* ## Examples
* |[
* gst-launch-1.0 -v playbin uri=file:///path/to/somefile.mp4
@@ -3027,6 +3031,42 @@ gst_play_bin_handle_message (GstBin * bin, GstMessage * msg)
no_more_pads_cb (NULL, group);
}
}
+ } else {
+ const GstStructure *details = NULL;
+
+ gst_message_parse_error_details (msg, &details);
+ if (details && gst_structure_has_field (details, "redirect-location")) {
+ gchar *uri = NULL;
+ const gchar *location =
+ gst_structure_get_string ((GstStructure *) details,
+ "redirect-location");
+
+ if (gst_uri_is_valid (location)) {
+ uri = g_strdup (location);
+ } else {
+ uri = gst_uri_join_strings (group->uri, location);
+ }
+
+ if (g_strcmp0 (uri, group->uri)) {
+ GST_PLAY_BIN_LOCK (playbin);
+ if (playbin->next_group && playbin->next_group->valid) {
+ GST_DEBUG_OBJECT (playbin,
+ "User already setup next uri %s, using it",
+ playbin->next_group->uri);
+ } else {
+ GST_DEBUG_OBJECT (playbin,
+ "Using newly configured redirect URI: %s", uri);
+ gst_play_bin_set_uri (playbin, uri);
+ }
+ GST_PLAY_BIN_UNLOCK (playbin);
+
+ setup_next_source (playbin, GST_STATE_PAUSED);
+ gst_message_unref (msg);
+ msg = NULL;
+ }
+
+ g_free (uri);
+ }
}
}
--
2.24.1

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Mon Jan 6 10:17:50 UTC 2020 - Bjørn Lie <bjorn.lie@gmail.com>
- Add upstream bugfix patches:
+ gst-base-playbin-handle-error.patch: playbin: Handle error
message with redirection indication.
+ gst-base-audioencoder-fix-leak.patch: audioencoder: fix segment
event leak.
+ gst-base-fft-update-kiss-version.patch: fft: Update our kiss
fft version.
-------------------------------------------------------------------
Fri Dec 13 15:18:03 UTC 2019 - Frederic Crozat <fcrozat@suse.com>

View File

@ -1,7 +1,7 @@
#
# spec file for package gstreamer-plugins-base
#
# Copyright (c) 2019 SUSE LLC
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -33,6 +33,12 @@ URL: https://gstreamer.freedesktop.org/
Source0: https://gstreamer.freedesktop.org/src/gst-plugins-base/%{_name}-%{version}.tar.xz
Source1: gstreamer-plugins-base.appdata.xml
Source2: baselibs.conf
# PATCH-FIX-UPSTREAM gst-base-playbin-handle-error.patch -- playbin: Handle error message with redirection indication
Patch0: gst-base-playbin-handle-error.patch
# PATCH-FIX-UPSTREAM gst-base-audioencoder-fix-leak.patch -- audioencoder: fix segment event leak
Patch1: gst-base-audioencoder-fix-leak.patch
# PATCH-FIX-UPSTREAM gst-base-fft-update-kiss-version.patch -- fft: Update our kiss fft version
Patch2: gst-base-fft-update-kiss-version.patch
BuildRequires: Mesa-libGLESv3-devel
BuildRequires: cdparanoia-devel