Add gst_vaapi_decoder_pause().

This commit is contained in:
gb 2010-04-29 17:51:57 +00:00 committed by Gwenole Beauchesne
parent 2356ceb0d9
commit 5d1eb8ce89
2 changed files with 33 additions and 12 deletions

View file

@ -440,18 +440,35 @@ gst_vaapi_decoder_init(GstVaapiDecoder *decoder)
gboolean gboolean
gst_vaapi_decoder_start(GstVaapiDecoder *decoder) gst_vaapi_decoder_start(GstVaapiDecoder *decoder)
{ {
/* This is an internal function */ g_return_val_if_fail(GST_VAAPI_IS_DECODER(decoder), FALSE);
GstVaapiDecoderPrivate * const priv = decoder->priv;
if (priv->decoder_task) if (decoder->priv->decoder_task)
return TRUE; return TRUE;
priv->decoder_task = gst_task_create(decoder_task, decoder); decoder->priv->decoder_task = gst_task_create(decoder_task, decoder);
if (!priv->decoder_task) if (!decoder->priv->decoder_task)
return FALSE; return FALSE;
gst_task_set_lock(priv->decoder_task, &priv->decoder_task_lock); gst_task_set_lock(decoder->priv->decoder_task, &decoder->priv->decoder_task_lock);
return gst_task_start(priv->decoder_task); 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 gboolean
gst_vaapi_decoder_stop(GstVaapiDecoder *decoder) 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); success = gst_task_join(decoder->priv->decoder_task);
priv->decoder_task = NULL; g_object_unref(decoder->priv->decoder_task);
decoder->priv->decoder_task = NULL;
return success; return success;
} }

View file

@ -127,6 +127,9 @@ gst_vaapi_decoder_set_frame_rate(
gboolean gboolean
gst_vaapi_decoder_start(GstVaapiDecoder *decoder); gst_vaapi_decoder_start(GstVaapiDecoder *decoder);
gboolean
gst_vaapi_decoder_pause(GstVaapiDecoder *decoder);
gboolean gboolean
gst_vaapi_decoder_stop(GstVaapiDecoder *decoder); gst_vaapi_decoder_stop(GstVaapiDecoder *decoder);