From 2b207a47cbbe7811894b9df3a7f6d16df1665d4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Mon, 21 May 2018 13:24:39 +0200 Subject: [PATCH] libs: decoder: vc1: implement reset() callback remove destroy() and create() callbacks use g_clear_pointer for rbdu_buffer no cast for enum https://bugzilla.gnome.org/show_bug.cgi?id=796308 --- gst-libs/gst/vaapi/gstvaapidecoder_vc1.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_vc1.c b/gst-libs/gst/vaapi/gstvaapidecoder_vc1.c index 4bd03148ef..cf05ba320b 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_vc1.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_vc1.c @@ -170,8 +170,7 @@ gst_vaapi_decoder_vc1_destroy (GstVaapiDecoder * base_decoder) gst_vaapi_decoder_vc1_close (decoder); if (priv->rbdu_buffer) { - g_free (priv->rbdu_buffer); - priv->rbdu_buffer = NULL; + g_clear_pointer (&priv->rbdu_buffer, g_free); priv->rbdu_buffer_size = 0; } } @@ -186,12 +185,20 @@ gst_vaapi_decoder_vc1_create (GstVaapiDecoder * base_decoder) priv->size_changed = priv->profile_changed = priv->closed_entry = priv->broken_link = FALSE; - priv->profile = (GstVaapiProfile) 0; + priv->profile = GST_VAAPI_PROFILE_UNKNOWN; priv->rndctrl = 0; priv->width = priv->height = 0; return TRUE; } +static GstVaapiDecoderStatus +gst_vaapi_decoder_vc1_reset (GstVaapiDecoder * base_decoder) +{ + gst_vaapi_decoder_vc1_destroy (base_decoder); + gst_vaapi_decoder_vc1_create (base_decoder); + return GST_VAAPI_DECODER_STATUS_SUCCESS; +} + static GstVaapiDecoderStatus ensure_context (GstVaapiDecoderVC1 * decoder) { @@ -1445,8 +1452,7 @@ gst_vaapi_decoder_vc1_class_init (GstVaapiDecoderVC1Class * klass) object_class->finalize = gst_vaapi_decoder_vc1_finalize; - decoder_class->create = gst_vaapi_decoder_vc1_create; - decoder_class->destroy = gst_vaapi_decoder_vc1_destroy; + decoder_class->reset = gst_vaapi_decoder_vc1_reset; decoder_class->parse = gst_vaapi_decoder_vc1_parse; decoder_class->decode = gst_vaapi_decoder_vc1_decode; decoder_class->start_frame = gst_vaapi_decoder_vc1_start_frame;