Add gst_vaapi_decoder_pause().
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 29 Apr 2010 17:51:57 +0000 (17:51 +0000)
committerGwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Mon, 20 Sep 2010 10:55:41 +0000 (12:55 +0200)
gst-libs/gst/vaapi/gstvaapidecoder.c
gst-libs/gst/vaapi/gstvaapidecoder.h

index 568212b..a6c848c 100644 (file)
@@ -440,18 +440,35 @@ gst_vaapi_decoder_init(GstVaapiDecoder *decoder)
 gboolean
 gst_vaapi_decoder_start(GstVaapiDecoder *decoder)
 {
 gboolean
 gst_vaapi_decoder_start(GstVaapiDecoder *decoder)
 {
-    /* This is an internal function */
-    GstVaapiDecoderPrivate * const priv = decoder->priv;
+    g_return_val_if_fail(GST_VAAPI_IS_DECODER(decoder), FALSE);
 
 
-    if (priv->decoder_task)
+    if (decoder->priv->decoder_task)
         return TRUE;
 
         return TRUE;
 
-    priv->decoder_task = gst_task_create(decoder_task, decoder);
-    if (!priv->decoder_task)
+    decoder->priv->decoder_task = gst_task_create(decoder_task, decoder);
+    if (!decoder->priv->decoder_task)
         return FALSE;
 
         return FALSE;
 
-    gst_task_set_lock(priv->decoder_task, &priv->decoder_task_lock);
-    return gst_task_start(priv->decoder_task);
+    gst_task_set_lock(decoder->priv->decoder_task, &decoder->priv->decoder_task_lock);
+    return gst_task_start(decoder->priv->decoder_task);
+}
+
+/**
+ * gst_vaapi_decoder_pause:
+ * @decoder: a #GstVaapiDecoder
+ *
+ * Pauses the decoder. It can be made active again through
+ * gst_vaapi_decoder_start() or definitely stopped through
+ * gst_vaapi_decoder_stop().
+ *
+ * Return value: %TRUE on success
+ */
+gboolean
+gst_vaapi_decoder_pause(GstVaapiDecoder *decoder)
+{
+    g_return_val_if_fail(GST_VAAPI_IS_DECODER(decoder), FALSE);
+
+    return gst_task_pause(decoder->priv->decoder_task);
 }
 
 /**
 }
 
 /**
@@ -468,15 +485,16 @@ gst_vaapi_decoder_start(GstVaapiDecoder *decoder)
 gboolean
 gst_vaapi_decoder_stop(GstVaapiDecoder *decoder)
 {
 gboolean
 gst_vaapi_decoder_stop(GstVaapiDecoder *decoder)
 {
-    /* This is an internal function */
-    GstVaapiDecoderPrivate * const priv = decoder->priv;
     gboolean success;
 
     gboolean success;
 
-    if (!priv->decoder_task)
+    g_return_val_if_fail(GST_VAAPI_IS_DECODER(decoder), FALSE);
+
+    if (!decoder->priv->decoder_task)
         return FALSE;
 
         return FALSE;
 
-    success = gst_task_join(priv->decoder_task);
-    priv->decoder_task = NULL;
+    success = gst_task_join(decoder->priv->decoder_task);
+    g_object_unref(decoder->priv->decoder_task);
+    decoder->priv->decoder_task = NULL;
     return success;
 }
 
     return success;
 }
 
index f526cde..b3a212e 100644 (file)
@@ -128,6 +128,9 @@ gboolean
 gst_vaapi_decoder_start(GstVaapiDecoder *decoder);
 
 gboolean
 gst_vaapi_decoder_start(GstVaapiDecoder *decoder);
 
 gboolean
+gst_vaapi_decoder_pause(GstVaapiDecoder *decoder);
+
+gboolean
 gst_vaapi_decoder_stop(GstVaapiDecoder *decoder);
 
 gboolean
 gst_vaapi_decoder_stop(GstVaapiDecoder *decoder);
 
 gboolean