h264decoder: Fix GstVideoCodecFrame leak

If current buffer has no slice data, frame should be released.
Otherwise frames will stay in decoder baseclass forever.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5733>
This commit is contained in:
Seungha Yang 2023-11-21 01:41:16 +09:00 committed by Tim-Philipp Müller
parent e5b6be0f70
commit 6b89494e2e

View file

@ -1870,8 +1870,16 @@ gst_h264_decoder_finish_current_picture (GstH264Decoder * self,
GstH264DecoderClass *klass; GstH264DecoderClass *klass;
GstFlowReturn flow_ret = GST_FLOW_OK; GstFlowReturn flow_ret = GST_FLOW_OK;
if (!priv->current_picture) if (!priv->current_picture) {
if (priv->current_frame) {
GST_DEBUG_OBJECT (self,
"AU buffer without slice data, releasing current frame %u",
priv->current_frame->system_frame_number);
gst_video_decoder_release_frame (GST_VIDEO_DECODER_CAST (self),
gst_video_codec_frame_ref (priv->current_frame));
}
return; return;
}
klass = GST_H264_DECODER_GET_CLASS (self); klass = GST_H264_DECODER_GET_CLASS (self);