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>
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user