[gst-cvs] gst-plugins-bad: mimenc: Refuse to go playing in paused-mode without clock

Olivier Crête tester at kemper.freedesktop.org
Wed Aug 12 14:36:59 PDT 2009


Module: gst-plugins-bad
Branch: master
Commit: 6001c6b5c0e438b4bab21a2babc0bad6cf6630a9
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=6001c6b5c0e438b4bab21a2babc0bad6cf6630a9

Author: Olivier Crête <tester at tester.ca>
Date:   Wed Aug 12 12:21:33 2009 -0400

mimenc: Refuse to go playing in paused-mode without clock

Only try to use the clock in if paused-mode is set and refuse to go playing
in paused-mode without it.

Fixes bug #591538

---

 ext/mimic/gstmimenc.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/ext/mimic/gstmimenc.c b/ext/mimic/gstmimenc.c
index 4a65b9f..e946209 100644
--- a/ext/mimic/gstmimenc.c
+++ b/ext/mimic/gstmimenc.c
@@ -593,10 +593,19 @@ gst_mimenc_change_state (GstElement * element, GstStateChange transition)
     case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
       GST_OBJECT_LOCK (mimenc);
       mimenc->stop_paused_mode = FALSE;
-      if (mimenc->last_buffer == GST_CLOCK_TIME_NONE)
-        mimenc->last_buffer = gst_clock_get_time (GST_ELEMENT_CLOCK (mimenc))
-            - GST_ELEMENT_CAST (mimenc)->base_time;
       paused_mode = mimenc->paused_mode;
+      if (paused_mode) {
+        if (!GST_ELEMENT_CLOCK (mimenc)) {
+          GST_OBJECT_UNLOCK (mimenc);
+          GST_ELEMENT_ERROR (mimenc, RESOURCE, FAILED,
+              ("Using paused-mode requires a clock, but no clock was provided"
+                  " to the element"), (NULL));
+          return GST_STATE_CHANGE_FAILURE;
+        }
+        if (mimenc->last_buffer == GST_CLOCK_TIME_NONE)
+          mimenc->last_buffer = gst_clock_get_time (GST_ELEMENT_CLOCK (mimenc))
+              - GST_ELEMENT_CAST (mimenc)->base_time;
+      }
       GST_OBJECT_UNLOCK (mimenc);
       if (paused_mode) {
         if (!gst_pad_start_task (mimenc->srcpad, paused_mode_task, mimenc)) {





More information about the Gstreamer-commits mailing list