Skip to content

Commit abfa872

Browse files
committed
[gstreamer1] Archived buildroot patches for gst 1.10.4 (.3 for vaapi) and added patches for 1.14.4
No modifications on the mk files is done, so buildroot keeps building 1.10.4 at this point.
1 parent 5d41436 commit abfa872

89 files changed

Lines changed: 2142 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package/gstreamer1/gst-omx/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch renamed to package/gstreamer1/gst-omx/1.10.4/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch

File renamed without changes.

package/gstreamer1/gst-omx/0002-fix-decoder-flushing.patch renamed to package/gstreamer1/gst-omx/1.10.4/0002-fix-decoder-flushing.patch

File renamed without changes.

package/gstreamer1/gst-omx/0003-no-timeout-on-get-state.patch renamed to package/gstreamer1/gst-omx/1.10.4/0003-no-timeout-on-get-state.patch

File renamed without changes.

package/gstreamer1/gst-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch renamed to package/gstreamer1/gst-omx/1.10.4/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch

File renamed without changes.

package/gstreamer1/gst-omx/0006-omxvideodec-fix-deadlock-on-downstream-EOS.patch renamed to package/gstreamer1/gst-omx/1.10.4/0006-omxvideodec-fix-deadlock-on-downstream-EOS.patch

File renamed without changes.
File renamed without changes.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
From 7ddfffe75bce312eeb57a6e26f5ddd4730359e4a Mon Sep 17 00:00:00 2001
2+
From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
3+
Date: Mon, 25 May 2015 14:53:35 +0200
4+
Subject: [PATCH 1/6] Don't try to acquire buffer when src pad isn't active
5+
6+
This solves a race condition when setting the pipeline from PAUSE to
7+
NULL while the decoder loop is still running. Without this patch, the
8+
thread which interacts with the decode sink pad gets blocked here:
9+
10+
gst_element_change_state()
11+
gst_element_change_state_func()
12+
gst_element_pads_activate() --> Deactivating pads
13+
activate_pads()
14+
gst_pad_set_active()
15+
gst_pad_activate_mode()
16+
post_activate()
17+
GST_PAD_STREAM_LOCK()
18+
19+
while gst_omx_port_acquire_buffer() gets stalled forever in
20+
gst_omx_component_wait_message() waiting for a message that will never
21+
arrive:
22+
23+
gst_omx_video_dec_loop()
24+
gst_omx_port_acquire_buffer()
25+
gst_omx_component_wait_message()
26+
---
27+
omx/gstomxvideodec.c | 5 +++++
28+
1 file changed, 5 insertions(+)
29+
30+
diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
31+
index 812eb29..52806bc 100644
32+
--- a/omx/gstomxvideodec.c
33+
+++ b/omx/gstomxvideodec.c
34+
@@ -1541,6 +1541,11 @@ gst_omx_video_dec_loop (GstOMXVideoDec * self)
35+
GstClockTimeDiff deadline;
36+
OMX_ERRORTYPE err;
37+
38+
+ if (!gst_pad_is_active(GST_VIDEO_DECODER_SRC_PAD (self))) {
39+
+ GST_DEBUG_OBJECT (self, "Src pad not active, not acquiring buffer and flushing instead");
40+
+ goto flushing;
41+
+ }
42+
+
43+
#if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
44+
port = self->eglimage ? self->egl_out_port : self->dec_out_port;
45+
#else
46+
--
47+
2.17.0
48+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
From 8522f829c2b696d8aff386573e0da495c7abdf2e Mon Sep 17 00:00:00 2001
2+
From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
3+
Date: Tue, 17 Jan 2017 18:43:57 +0000
4+
Subject: [PATCH 2/6] No timeout on get state
5+
6+
---
7+
omx/gstomxvideodec.c | 4 ++--
8+
1 file changed, 2 insertions(+), 2 deletions(-)
9+
10+
diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
11+
index 52806bc..ae04e4a 100644
12+
--- a/omx/gstomxvideodec.c
13+
+++ b/omx/gstomxvideodec.c
14+
@@ -2006,9 +2006,9 @@ gst_omx_video_dec_stop (GstVideoDecoder * decoder)
15+
g_cond_broadcast (&self->drain_cond);
16+
g_mutex_unlock (&self->drain_lock);
17+
18+
- gst_omx_component_get_state (self->dec, 5 * GST_SECOND);
19+
+ gst_omx_component_get_state (self->dec, 0);
20+
#if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
21+
- gst_omx_component_get_state (self->egl_render, 1 * GST_SECOND);
22+
+ gst_omx_component_get_state (self->egl_render, 0);
23+
#endif
24+
25+
gst_buffer_replace (&self->codec_data, NULL);
26+
--
27+
2.17.0
28+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
From 009f262826a50e7740adfda5a67838064de30c48 Mon Sep 17 00:00:00 2001
2+
From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
3+
Date: Tue, 4 Dec 2018 11:59:17 +0000
4+
Subject: [PATCH 3/6] omxvideodec: fix deadlock on downstream EOS
5+
6+
Wake the _drain condition when downstream signals GST_FLOW_EOS to
7+
prevent the upstream streaming thread to keep waiting forever.
8+
9+
This scenario can be triggered when seeking near EOS.
10+
---
11+
omx/gstomxvideodec.c | 4 ++++
12+
1 file changed, 4 insertions(+)
13+
14+
diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
15+
index ae04e4a..4efe1da 100644
16+
--- a/omx/gstomxvideodec.c
17+
+++ b/omx/gstomxvideodec.c
18+
@@ -1887,6 +1887,10 @@ flow_error:
19+
gst_event_new_eos ());
20+
gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
21+
self->started = FALSE;
22+
+ if (self->draining) {
23+
+ self->draining = FALSE;
24+
+ g_cond_broadcast (&self->drain_cond);
25+
+ }
26+
} else if (flow_ret < GST_FLOW_EOS) {
27+
GST_ELEMENT_ERROR (self, STREAM, FAILED,
28+
("Internal data stream error."), ("stream stopped, reason %s",
29+
--
30+
2.17.0
31+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
From 52720fca7cec60e5df491faa6fbdd1afa756ce43 Mon Sep 17 00:00:00 2001
2+
From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
3+
Date: Mon, 17 Dec 2018 16:14:51 +0100
4+
Subject: [PATCH 4/6] Enable video decoder when the output buffer pool is null
5+
6+
This fixes a "seek never completes" issue. At some point the decoder was
7+
disabled and drained (no buffers allocated for output) and it was never
8+
enabled again.
9+
---
10+
omx/gstomxvideodec.c | 2 +-
11+
1 file changed, 1 insertion(+), 1 deletion(-)
12+
13+
diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
14+
index 4efe1da..5323683 100644
15+
--- a/omx/gstomxvideodec.c
16+
+++ b/omx/gstomxvideodec.c
17+
@@ -2740,7 +2740,7 @@ gst_omx_video_dec_handle_frame (GstVideoDecoder * decoder,
18+
return GST_FLOW_OK;
19+
}
20+
21+
- if (gst_omx_port_is_flushing (self->dec_out_port)) {
22+
+ if (gst_omx_port_is_flushing (self->dec_out_port) || self->dec_out_port && self->dec_out_port->buffers == NULL) {
23+
if (!gst_omx_video_dec_enable (self, frame->input_buffer))
24+
goto enable_error;
25+
}
26+
--
27+
2.17.0
28+

0 commit comments

Comments
 (0)