diff options
Diffstat (limited to 'recipes-multimedia/gstreamer/gstreamer1.0')
7 files changed, 0 insertions, 365 deletions
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0/0001-handle-base-parse-error.patch b/recipes-multimedia/gstreamer/gstreamer1.0/0001-handle-base-parse-error.patch deleted file mode 100644 index 3aaa636..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0/0001-handle-base-parse-error.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 01b047cbb5e326fb3980bb6fc5206a82ea401170 Mon Sep 17 00:00:00 2001 -From: Lyon Wang <lyon.wang@freescale.com> -Date: Wed, 14 Oct 2015 14:15:11 +0800 -Subject: [PATCH 1/7] handle base parse error - -There is no need to send GST_ELEMENT_ERROR -becuase ohter tracks may still good to play. -no need to end the element, just print error message is enough - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=741542] - -Signed-off-by: Lyon Wang <lyon.wang@freescale.com> ---- - libs/gst/base/gstbaseparse.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c -index df67dd0..2f45d23 100644 ---- a/libs/gst/base/gstbaseparse.c -+++ b/libs/gst/base/gstbaseparse.c -@@ -1324,8 +1324,9 @@ gst_base_parse_sink_event_default (GstBaseParse * parse, GstEvent * event) - /* If we STILL have zero frames processed, fire an error */ - if (parse->priv->framecount == 0 && !parse->priv->saw_gaps && - !parse->priv->first_buffer) { -- GST_ELEMENT_ERROR (parse, STREAM, WRONG_TYPE, -- ("No valid frames found before end of stream"), (NULL)); -+ /* GST_ELEMENT_ERROR (parse, STREAM, WRONG_TYPE, -+ ("No valid frames found before end of stream"), (NULL));*/ -+ GST_ERROR_OBJECT(parse, "No valid frames decoded before end of stream"); - } - - if (!parse->priv->saw_gaps --- -1.9.1 - diff --git a/recipes-multimedia/gstreamer/gstreamer1.0/0002-Fix-crash-with-gst-inspect-Chris-Lord-chris-openedha.patch b/recipes-multimedia/gstreamer/gstreamer1.0/0002-Fix-crash-with-gst-inspect-Chris-Lord-chris-openedha.patch deleted file mode 100644 index 1bd381b..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0/0002-Fix-crash-with-gst-inspect-Chris-Lord-chris-openedha.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 1bd9b30040ad23d86faa577baeb1c6734f39150f Mon Sep 17 00:00:00 2001 -From: Carlos Rafael Giani <dv@pseudoterminal.org> -Date: Sat, 6 Apr 2013 23:52:11 +0200 -Subject: [PATCH 2/7] Fix crash with gst-inspect Chris Lord - <chris@openedhand.com> - -Upstream-Status: Pending - -Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> - -Conflicts: - tools/gst-inspect.c ---- - tools/gst-inspect.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tools/gst-inspect.c b/tools/gst-inspect.c -index e420e4c..95983bc 100644 ---- a/tools/gst-inspect.c -+++ b/tools/gst-inspect.c -@@ -1548,7 +1548,7 @@ main (int argc, char *argv[]) - g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE); - g_option_context_add_group (ctx, gst_init_get_option_group ()); - if (!g_option_context_parse (ctx, &argc, &argv, &err)) { -- g_printerr ("Error initializing: %s\n", err->message); -+ g_printerr ("Error initializing: %s\n", err ? err->message : "(null)"); - g_clear_error (&err); - g_option_context_free (ctx); - return -1; --- -1.9.1 - diff --git a/recipes-multimedia/gstreamer/gstreamer1.0/0003-baseparse-unset-FLAG_DISCONT-when-push-to-adapter.patch b/recipes-multimedia/gstreamer/gstreamer1.0/0003-baseparse-unset-FLAG_DISCONT-when-push-to-adapter.patch deleted file mode 100644 index 9758d9c..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0/0003-baseparse-unset-FLAG_DISCONT-when-push-to-adapter.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 95d80584413c60cfe302cb2b55f59ffdca2a67b9 Mon Sep 17 00:00:00 2001 -From: Lyon Wang <lyon.wang@freescale.com> -Date: Wed, 4 Nov 2015 18:16:52 +0800 -Subject: [PATCH 3/7] [baseparse] unset FLAG_DISCONT when push to adapter - -Since DISCONT flag will be handled by priv->discont flag. -There is no need to copy DISCONT flag to adapter. -Otherwise, the DISCONT flag will alwasys been set on each frame, -for the first chain in buffer. - - -Upstream-Status: Pending [https://bugzilla.gnome.org/show_bug.cgi?id=757575] - -Signed-off-by: Lyon Wang <lyon.wang@freescale.com> ---- - libs/gst/base/gstbaseparse.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c -index 2f45d23..3c52887 100644 ---- a/libs/gst/base/gstbaseparse.c -+++ b/libs/gst/base/gstbaseparse.c -@@ -3157,6 +3157,7 @@ gst_base_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) - parse->priv->discont = TRUE; - } - } -+ GST_BUFFER_FLAG_UNSET(buffer, GST_BUFFER_FLAG_DISCONT); - gst_adapter_push (parse->priv->adapter, buffer); - } - --- -1.9.1 - diff --git a/recipes-multimedia/gstreamer/gstreamer1.0/0004-gstbaseparse-Need-push-adapter-remainning-data-in-pa.patch b/recipes-multimedia/gstreamer/gstreamer1.0/0004-gstbaseparse-Need-push-adapter-remainning-data-in-pa.patch deleted file mode 100644 index 303e108..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0/0004-gstbaseparse-Need-push-adapter-remainning-data-in-pa.patch +++ /dev/null @@ -1,51 +0,0 @@ -From b7f3a53b5d43c40fc1432c12f2ca314c5dbf403b Mon Sep 17 00:00:00 2001 -From: Lyon Wang <lyon.wang@nxp.com> -Date: Fri, 15 Jan 2016 17:30:14 +0800 -Subject: [PATCH 4/7] [gstbaseparse] Need push adapter remainning data in pass - through mode - -When switching to pass through mode, there might be remainning -data in the adpater, and it will be no chance to push to downstream when -in pass through mode. -So need check adapter available data and push downstream to avoid missing data - -package: gstreamer1.0 -Upstream-Status: Pending [https://bugzilla.gnome.org/show_bug.cgi?id=760513] - -Signed-off-by: Lyon Wang <lyon.wang@nxp.com> ---- - libs/gst/base/gstbaseparse.c | 15 +++++++++++++++ - 1 file changed, 15 insertions(+) - mode change 100644 => 100755 libs/gst/base/gstbaseparse.c - -diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c -old mode 100644 -new mode 100755 -index 3c52887..6d3eacf ---- a/libs/gst/base/gstbaseparse.c -+++ b/libs/gst/base/gstbaseparse.c -@@ -3138,6 +3138,21 @@ gst_base_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) - && parse->priv->passthrough)) { - GstBaseParseFrame frame; - -+ av = gst_adapter_available (parse->priv->adapter); -+ if (av) { -+ tmpbuf = gst_adapter_take_buffer (parse->priv->adapter, av); -+ -+ if (parse->priv->upstream_format == GST_FORMAT_TIME) { -+ tmpbuf = gst_buffer_make_writable (tmpbuf); -+ GST_BUFFER_PTS (tmpbuf) = parse->priv->next_pts; -+ GST_BUFFER_DTS (tmpbuf) = parse->priv->next_dts; -+ GST_BUFFER_DURATION (tmpbuf) = GST_CLOCK_TIME_NONE; -+ } -+ -+ ret = gst_pad_push (parse->srcpad, tmpbuf); -+ -+ } -+ - gst_base_parse_frame_init (&frame); - frame.buffer = gst_buffer_make_writable (buffer); - ret = gst_base_parse_push_frame (parse, &frame); --- -1.9.1 - diff --git a/recipes-multimedia/gstreamer/gstreamer1.0/0005-inputselector-should-proceed-non-active-pad-buffer-e.patch b/recipes-multimedia/gstreamer/gstreamer1.0/0005-inputselector-should-proceed-non-active-pad-buffer-e.patch deleted file mode 100644 index f35ca04..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0/0005-inputselector-should-proceed-non-active-pad-buffer-e.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 7f7398acb5dc5fdc904f6684eab2bb072be25de7 Mon Sep 17 00:00:00 2001 -From: Song Bing <bing.song@nxp.com> -Date: Wed, 11 May 2016 16:57:23 +0800 -Subject: [PATCH 5/7] inputselector: should proceed non-active pad buffer even - if active pad reach eos - -non-active pad will be blocked if active pad reach eos in inputselector. -Which will cause all pipeline be blocked. -Inputselector should proceed non-active pad buffer based on clock even -if active pad reach eos -Change to sync with clock for better user experience. - - -Upstream-Status: Pending [https://bugzilla.gnome.org/show_bug.cgi?id=766261] - -Signed-off-by: Song Bing bing.song@nxp.com ---- - plugins/elements/gstinputselector.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/plugins/elements/gstinputselector.c b/plugins/elements/gstinputselector.c -index f3f95e6..f6e1993 100644 ---- a/plugins/elements/gstinputselector.c -+++ b/plugins/elements/gstinputselector.c -@@ -772,7 +772,7 @@ gst_input_selector_wait_running_time (GstInputSelector * sel, - } - - cur_running_time = GST_CLOCK_TIME_NONE; -- if (sel->sync_mode == GST_INPUT_SELECTOR_SYNC_MODE_CLOCK) { -+ if (sel->sync_mode == GST_INPUT_SELECTOR_SYNC_MODE_CLOCK || active_selpad->eos) { - clock = gst_element_get_clock (GST_ELEMENT_CAST (sel)); - if (clock) { - GstClockTime base_time; -@@ -823,7 +823,13 @@ gst_input_selector_wait_running_time (GstInputSelector * sel, - "Waiting for active streams to advance. %" GST_TIME_FORMAT " >= %" - GST_TIME_FORMAT, GST_TIME_ARGS (running_time), - GST_TIME_ARGS (cur_running_time)); -- GST_INPUT_SELECTOR_WAIT (sel); -+ if (active_selpad->eos) { -+ GST_INPUT_SELECTOR_UNLOCK (sel); -+ g_usleep (5000); -+ GST_INPUT_SELECTOR_LOCK (sel); -+ } else { -+ GST_INPUT_SELECTOR_WAIT (sel); -+ } - } else { - GST_INPUT_SELECTOR_UNLOCK (sel); - break; --- -1.9.1 - diff --git a/recipes-multimedia/gstreamer/gstreamer1.0/0006-poll-Add-check-if-can-read-event-API.patch b/recipes-multimedia/gstreamer/gstreamer1.0/0006-poll-Add-check-if-can-read-event-API.patch deleted file mode 100644 index 9a6cf47..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0/0006-poll-Add-check-if-can-read-event-API.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 6daed66db8a147783acc117b76afa2e779c8c12c Mon Sep 17 00:00:00 2001 -From: Song Bing <bing.song@nxp.com> -Date: Thu, 20 Aug 2015 14:57:46 +0800 -Subject: [PATCH 6/7] poll: Add check if can read event API - -Need check if can read event of buffer for video decoder based on -V4L2 driver. Add the API for it. - - -Upstream-Status: Pending [https://bugzilla.gnome.org/show_bug.cgi?id=752962] - -Signed-off-by: Song Bing bing.song@nxp.com ---- - gst/gstpoll.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - gst/gstpoll.h | 1 + - 2 files changed, 53 insertions(+) - -diff --git a/gst/gstpoll.c b/gst/gstpoll.c -index fd672ed..084f6f7 100644 ---- a/gst/gstpoll.c -+++ b/gst/gstpoll.c -@@ -1242,6 +1242,58 @@ gst_poll_fd_can_read (const GstPoll * set, GstPollFD * fd) - return res; - } - -+static gboolean -+gst_poll_fd_can_read_pri_unlocked (const GstPoll * set, GstPollFD * fd) -+{ -+ gboolean res = FALSE; -+ gint idx; -+ -+ idx = find_index (set->active_fds, fd); -+ if (idx >= 0) { -+#ifndef G_OS_WIN32 -+ struct pollfd *pfd = &g_array_index (set->active_fds, struct pollfd, idx); -+ -+ res = (pfd->revents & POLLPRI) != 0; -+#else -+ WinsockFd *wfd = &g_array_index (set->active_fds, WinsockFd, idx); -+ -+ res = (wfd->events.lNetworkEvents & FD_ACCEPT) != 0; -+#endif -+ } else { -+ GST_WARNING ("%p: couldn't find fd !", set); -+ } -+ GST_DEBUG ("%p: fd (fd:%d, idx:%d) %d", set, fd->fd, fd->idx, res); -+ -+ return res; -+} -+ -+/** -+ * gst_poll_fd_can_read_pri: -+ * @set: a file descriptor set. -+ * @fd: a file descriptor. -+ * -+ * Check if @fd in @set has data to be read. -+ * -+ * Returns: %TRUE if the descriptor has data to be read. -+ */ -+gboolean -+gst_poll_fd_can_read_pri (const GstPoll * set, GstPollFD * fd) -+{ -+ gboolean res = FALSE; -+ -+ g_return_val_if_fail (set != NULL, FALSE); -+ g_return_val_if_fail (fd != NULL, FALSE); -+ g_return_val_if_fail (fd->fd >= 0, FALSE); -+ -+ g_mutex_lock (&((GstPoll *) set)->lock); -+ -+ res = gst_poll_fd_can_read_pri_unlocked (set, fd); -+ -+ g_mutex_unlock (&((GstPoll *) set)->lock); -+ -+ return res; -+} -+ - /** - * gst_poll_fd_can_write: - * @set: a file descriptor set. -diff --git a/gst/gstpoll.h b/gst/gstpoll.h -index ef6dcea..0513648 100644 ---- a/gst/gstpoll.h -+++ b/gst/gstpoll.h -@@ -79,6 +79,7 @@ void gst_poll_fd_ignored (GstPoll *set, GstPollFD *fd); - gboolean gst_poll_fd_has_closed (const GstPoll *set, GstPollFD *fd); - gboolean gst_poll_fd_has_error (const GstPoll *set, GstPollFD *fd); - gboolean gst_poll_fd_can_read (const GstPoll *set, GstPollFD *fd); -+gboolean gst_poll_fd_can_read_pri (const GstPoll *set, GstPollFD *fd); - gboolean gst_poll_fd_can_write (const GstPoll *set, GstPollFD *fd); - - gint gst_poll_wait (GstPoll *set, GstClockTime timeout); --- -1.9.1 - diff --git a/recipes-multimedia/gstreamer/gstreamer1.0/0007-inputselector-Need-flush-when-set-active-pad-and-the.patch b/recipes-multimedia/gstreamer/gstreamer1.0/0007-inputselector-Need-flush-when-set-active-pad-and-the.patch deleted file mode 100644 index c5d329b..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0/0007-inputselector-Need-flush-when-set-active-pad-and-the.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 9860e95c4c6bcec422b6c83a2650ef76dd6a5488 Mon Sep 17 00:00:00 2001 -From: Song Bing <bing.song@nxp.com> -Date: Wed, 10 May 2017 11:24:46 +0800 -Subject: [PATCH 7/7] inputselector: Need flush when set active pad and then - seek in PAUSE state - - -Upstream-Status: Pending [https://bugzilla.gnome.org/show_bug.cgi?id=782417] - -Signed-off-by: Song Bing bing.song@nxp.com ---- - plugins/elements/gstinputselector.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/plugins/elements/gstinputselector.c b/plugins/elements/gstinputselector.c -index f6e1993..54400dd 100644 ---- a/plugins/elements/gstinputselector.c -+++ b/plugins/elements/gstinputselector.c -@@ -161,6 +161,7 @@ struct _GstSelectorPad - guint32 segment_seqnum; /* sequence number of the current segment */ - - gboolean events_pending; /* TRUE if sticky events need to be updated */ -+ gboolean flush_events_pending;/* unblock old active track */ - - gboolean sending_cached_buffers; - GQueue *cached_buffers; -@@ -339,6 +340,7 @@ gst_selector_pad_reset (GstSelectorPad * pad) - pad->eos = FALSE; - pad->eos_sent = FALSE; - pad->events_pending = FALSE; -+ pad->flush_events_pending = FALSE; - pad->discont = FALSE; - pad->flushing = FALSE; - gst_segment_init (&pad->segment, GST_FORMAT_UNDEFINED); -@@ -557,6 +559,8 @@ gst_selector_pad_event (GstPad * pad, GstObject * parent, GstEvent * event) - selpad->flushing = TRUE; - sel->eos = FALSE; - selpad->group_done = FALSE; -+ if (selpad->flush_events_pending) -+ forward = TRUE; - GST_INPUT_SELECTOR_BROADCAST (sel); - break; - case GST_EVENT_FLUSH_STOP: -@@ -1136,6 +1140,7 @@ gst_selector_pad_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) - buf = gst_buffer_ref (buf); - res = gst_pad_push (sel->srcpad, buf); - GST_LOG_OBJECT (pad, "Buffer %p forwarded result=%d", buf, res); -+ selpad->flush_events_pending = FALSE; - - GST_INPUT_SELECTOR_LOCK (sel); - -@@ -1389,8 +1394,12 @@ gst_input_selector_set_active_pad (GstInputSelector * self, GstPad * pad) - active_pad_p = &self->active_sinkpad; - gst_object_replace ((GstObject **) active_pad_p, GST_OBJECT_CAST (pad)); - -- if (old && old != new) -+ if (old && old != new) { - gst_pad_push_event (GST_PAD_CAST (old), gst_event_new_reconfigure ()); -+ /* Old will be blocked on gst_pad_push() when set active pad in PAUSE -+ * state. Need flush when set active pad and then seek in PAUSE state */ -+ old->flush_events_pending = TRUE; -+ } - if (new) - gst_pad_push_event (GST_PAD_CAST (new), gst_event_new_reconfigure ()); - --- -1.9.1 - |