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:
parent
ba1aa9335a
commit
833fe97641
25
gst-base-audioencoder-fix-leak.patch
Normal file
25
gst-base-audioencoder-fix-leak.patch
Normal 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
|
||||||
|
|
2258
gst-base-fft-update-kiss-version.patch
Normal file
2258
gst-base-fft-update-kiss-version.patch
Normal file
File diff suppressed because it is too large
Load Diff
100
gst-base-playbin-handle-error.patch
Normal file
100
gst-base-playbin-handle-error.patch
Normal 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
|
||||||
|
|
@ -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>
|
Fri Dec 13 15:18:03 UTC 2019 - Frederic Crozat <fcrozat@suse.com>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package gstreamer-plugins-base
|
# 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
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# 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
|
Source0: https://gstreamer.freedesktop.org/src/gst-plugins-base/%{_name}-%{version}.tar.xz
|
||||||
Source1: gstreamer-plugins-base.appdata.xml
|
Source1: gstreamer-plugins-base.appdata.xml
|
||||||
Source2: baselibs.conf
|
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: Mesa-libGLESv3-devel
|
||||||
BuildRequires: cdparanoia-devel
|
BuildRequires: cdparanoia-devel
|
||||||
|
Loading…
x
Reference in New Issue
Block a user