[PATCH 2/3] vpu/encoder_base: add a 'close' subclass vfunc

Carlos Rafael Giani dv at pseudoterminal.org
Tue Sep 6 15:10:31 UTC 2016


Hi,

I saw your patches, but I am absolutely, extremely busy with a super 
important deadline. I will go back to the gstreamer-imx and libimxvpuapi 
projects in a few days.

cheers,
   Carlos


On 2016-09-06 14:53, phdm at macq.eu wrote:
> From: Philippe De Muyter <phdm at macqel.be>
>
> Signed-off-by: Philippe De Muyter <phdm at macqel.be>
> ---
>   src/vpu/encoder_base.c | 8 ++++++++
>   src/vpu/encoder_base.h | 4 ++++
>   2 files changed, 12 insertions(+)
>
> diff --git a/src/vpu/encoder_base.c b/src/vpu/encoder_base.c
> index 458aec1..fe020d1 100644
> --- a/src/vpu/encoder_base.c
> +++ b/src/vpu/encoder_base.c
> @@ -316,6 +316,14 @@ static gboolean gst_imx_vpu_encoder_base_start(GstVideoEncoder *encoder)
>   static gboolean gst_imx_vpu_encoder_base_stop(GstVideoEncoder *encoder)
>   {
>   	GstImxVpuEncoderBase *vpu_encoder_base = GST_IMX_VPU_ENCODER_BASE(encoder);
> +	GstImxVpuEncoderBaseClass *klass;
> +
> +	klass = GST_IMX_VPU_ENCODER_BASE_CLASS(G_OBJECT_GET_CLASS(vpu_encoder_base));
> +	/* Let the derived class terminate cleanly */
> +	if ((klass->close != NULL) && !klass->close(vpu_encoder_base))
> +	{
> +		GST_ERROR_OBJECT(vpu_encoder_base, "derived class could not terminate cleanly");
> +	}
>   
>   	gst_imx_vpu_encoder_base_close(vpu_encoder_base);
>   
> diff --git a/src/vpu/encoder_base.h b/src/vpu/encoder_base.h
> index 73a42f7..19bc15f 100644
> --- a/src/vpu/encoder_base.h
> +++ b/src/vpu/encoder_base.h
> @@ -130,6 +130,9 @@ struct _GstImxVpuEncoderBase
>    *                         *output_buffer must point to this new buffer, and the previous
>    *                         *output_buffer must be unref'd.
>    *                         Returns TRUE if the call succeeded, and FALSE otherwise.
> + * @close:		   Optional.
> + *                         Free all the private allocations done by the subclass
> + *                         Returns TRUE if the call succeeded, and FALSE otherwise.
>    */
>   struct _GstImxVpuEncoderBaseClass
>   {
> @@ -141,6 +144,7 @@ struct _GstImxVpuEncoderBaseClass
>   	GstCaps* (*get_output_caps)(GstImxVpuEncoderBase *vpu_encoder_base);
>   	gboolean (*set_frame_enc_params)(GstImxVpuEncoderBase *vpu_encoder_base, ImxVpuEncParams *enc_params);
>   	gboolean (*process_output_buffer)(GstImxVpuEncoderBase *vpu_encoder_base, GstVideoCodecFrame *frame, GstBuffer **output_buffer);
> +	gboolean (*close)(GstImxVpuEncoderBase *vpu_encoder_base);
>   };
>   
>   



More information about the gstreamer-devel mailing list