diff --git a/gst-libs/gst/video/gstbasevideocodec.c b/gst-libs/gst/video/gstbasevideocodec.c index 07085f7304..f2d4ee6ca6 100644 --- a/gst-libs/gst/video/gstbasevideocodec.c +++ b/gst-libs/gst/video/gstbasevideocodec.c @@ -182,5 +182,8 @@ gst_base_video_codec_free_frame (GstVideoFrame * frame) gst_buffer_unref (frame->src_buffer); } + if (frame->coder_hook_destroy_notify && frame->coder_hook) + frame->coder_hook_destroy_notify (frame->coder_hook); + g_free (frame); } diff --git a/gst-libs/gst/video/gstbasevideocodec.h b/gst-libs/gst/video/gstbasevideocodec.h index 9bada934b3..e9431e20ab 100644 --- a/gst-libs/gst/video/gstbasevideocodec.h +++ b/gst-libs/gst/video/gstbasevideocodec.h @@ -125,6 +125,8 @@ struct _GstVideoFrame int n_fields; void *coder_hook; + GDestroyNotify coder_hook_destroy_notify; + GstClockTime deadline; gboolean force_keyframe; diff --git a/gst-libs/gst/video/gstbasevideodecoder.c b/gst-libs/gst/video/gstbasevideodecoder.c index aca8d5cdfa..81c84beb99 100644 --- a/gst-libs/gst/video/gstbasevideodecoder.c +++ b/gst-libs/gst/video/gstbasevideodecoder.c @@ -1288,6 +1288,9 @@ gst_base_video_decoder_free_frame (GstVideoFrame * frame) gst_buffer_unref (frame->src_buffer); } + if (frame->coder_hook_destroy_notify && frame->coder_hook) + frame->coder_hook_destroy_notify (frame->coder_hook); + g_free (frame); }