summaryrefslogtreecommitdiff
path: root/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0016-gstplayer-Add-play-stop-sync-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0016-gstplayer-Add-play-stop-sync-API.patch')
-rw-r--r--recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0016-gstplayer-Add-play-stop-sync-API.patch182
1 files changed, 0 insertions, 182 deletions
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0016-gstplayer-Add-play-stop-sync-API.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0016-gstplayer-Add-play-stop-sync-API.patch
deleted file mode 100644
index a4ccc18..0000000
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0016-gstplayer-Add-play-stop-sync-API.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From cbbb524a5e634463965935cf9b6d03ec91804e2d Mon Sep 17 00:00:00 2001
-From: Lyon Wang <lyon.wang@nxp.com>
-Date: Thu, 16 Feb 2017 18:50:28 +0800
-Subject: [PATCH 16/26] gstplayer: Add play/stop sync API
-
-- Add play/stop/pause sync API
- gst_player_play_sync()
- gst_player_stop_sync()
- gst_player_pause_sync()
-
-https://bugzilla.gnome.org/show_bug.cgi?id=778390
-
-Upstream-Status: Inappropriate [i.MX specific]
-
-Signed-off-by: Lyon Wang <lyon.wang@nxp.com>
-
-Conflicts:
- gst-libs/gst/player/gstplayer.c
----
- gst-libs/gst/player/gstplayer.c | 112 ++++++++++++++++++++++++++++++++++++++++
- gst-libs/gst/player/gstplayer.h | 4 ++
- 2 files changed, 116 insertions(+)
-
-diff --git a/gst-libs/gst/player/gstplayer.c b/gst-libs/gst/player/gstplayer.c
-index ebad94e..8c94a98 100644
---- a/gst-libs/gst/player/gstplayer.c
-+++ b/gst-libs/gst/player/gstplayer.c
-@@ -200,6 +200,10 @@ struct _GstPlayer
- gchar *audio_sid;
- gchar *subtitle_sid;
- gulong stream_notify_id;
-+
-+ /* When error occur, will set this flag to TRUE,
-+ * so that it could quit for sync play/stop loop */
-+ gboolean got_error;
- };
-
- struct _GstPlayerClass
-@@ -296,6 +300,7 @@ gst_player_init (GstPlayer * self)
- self->seek_position = GST_CLOCK_TIME_NONE;
- self->last_seek_time = GST_CLOCK_TIME_NONE;
- self->inhibit_sigs = FALSE;
-+ self->got_error = FALSE;
-
- GST_TRACE_OBJECT (self, "Initialized");
- }
-@@ -1055,6 +1060,8 @@ emit_error (GstPlayer * self, GError * err)
- GST_ERROR_OBJECT (self, "Error: %s (%s, %d)", err->message,
- g_quark_to_string (err->domain), err->code);
-
-+ self->got_error = TRUE;
-+
- if (g_signal_handler_find (self, G_SIGNAL_MATCH_ID,
- signals[SIGNAL_ERROR], 0, NULL, NULL, NULL) != 0) {
- ErrorSignalData *data = g_new (ErrorSignalData, 1);
-@@ -5062,3 +5069,108 @@ gst_player_get_state (GstPlayer * self)
-
- return self->app_state;
- }
-+
-+/**
-+ * gst_player_wait_state
-+ * @player: #GstPlayer instance
-+ * @target_state: target state
-+ * @time_out: time out value
-+ * negtive (< 0): infinitely waiting for state change.
-+ * positive (>0): wait until time out.
-+ * zero (0), do not wait for the state change.
-+ *
-+ * Wait for target state, quit loop when time out
-+ */
-+static void
-+gst_player_wait_state (GstPlayer * self, GstPlayerState target_state,
-+ gint time_out)
-+{
-+ gint wait_cnt = 0;
-+
-+ while (time_out < 0 || wait_cnt < time_out * 20) {
-+ if (self->app_state == target_state) {
-+ break;
-+ } else if (self->got_error == TRUE) {
-+ self->got_error = FALSE;
-+ return;
-+ } else if (self->is_eos == TRUE) {
-+ return;
-+ } else {
-+ wait_cnt++;
-+ usleep (50000);
-+ }
-+ }
-+ if (time_out > 0 && wait_cnt >= time_out * 20) {
-+ emit_error (self, g_error_new (GST_PLAYER_ERROR,
-+ GST_PLAYER_ERROR_FAILED,
-+ "try to play /stop /pause failed, time out"));
-+ }
-+
-+ return;
-+}
-+
-+/**
-+ * gst_player_play_sync:
-+ * @player: #GstPlayer instance
-+ * @time_out: time out value
-+ * negtive (< 0): infinitely waiting for state change.
-+ * positive (>0): wait until time out.
-+ * zero (0), do not wait for the state change.
-+ *
-+ * Request to play the loaded stream in sync mode.
-+ */
-+void
-+gst_player_play_sync (GstPlayer * self, gint time_out)
-+{
-+ g_return_if_fail (GST_IS_PLAYER (self));
-+
-+ gst_player_play (self);
-+
-+ gst_player_wait_state (self, GST_PLAYER_STATE_PLAYING, time_out);
-+
-+ return;
-+}
-+
-+/**
-+ * gst_player_stop_sync:
-+ * @player: #GstPlayer instance
-+ * @time_out: time out value
-+ * negtive (< 0): infinitely waiting for state change.
-+ * positive (>0): wait until time out.
-+ * zero (0), do not wait for the state change.
-+ *
-+ * Stops playing the current stream in sync mode.
-+ */
-+void
-+gst_player_stop_sync (GstPlayer * self, gint time_out)
-+{
-+ g_return_if_fail (GST_IS_PLAYER (self));
-+
-+ gst_player_stop (self);
-+
-+ gst_player_wait_state (self, GST_PLAYER_STATE_STOPPED, time_out);
-+
-+ return;
-+}
-+
-+/**
-+ * gst_player_pause_sync:
-+ * @player: #GstPlayer instance
-+ * @time_out: time out value
-+ * negtive (< 0): infinitely waiting for state change.
-+ * positive (>0): wait until time out.
-+ * zero (0), do not wait for the state change.
-+ *
-+ * Pause current stream in sync mode.
-+ */
-+void
-+gst_player_pause_sync (GstPlayer * self, gint time_out)
-+{
-+ g_return_if_fail (GST_IS_PLAYER (self));
-+
-+ gst_player_pause (self);
-+
-+ gst_player_wait_state (self, GST_PLAYER_STATE_PAUSED, time_out);
-+
-+ return;
-+}
-diff --git a/gst-libs/gst/player/gstplayer.h b/gst-libs/gst/player/gstplayer.h
-index 5ee3592..ee1a8da 100644
---- a/gst-libs/gst/player/gstplayer.h
-+++ b/gst-libs/gst/player/gstplayer.h
-@@ -230,6 +230,10 @@ GstElement * gst_player_get_text_sink (GstPlayer * player);
-
- GstPlayerState gst_player_get_state (GstPlayer * player);
-
-+void gst_player_play_sync (GstPlayer * player, gint time_out);
-+void gst_player_stop_sync (GstPlayer * player, gint time_out);
-+void gst_player_pause_sync (GstPlayer * player, gint time_out);
-+
- G_END_DECLS
-
- #endif /* __GST_PLAYER_H__ */
---
-1.9.1
-