v4l2codecs: Unref the frame before leaving on error
In h264, h265 and mpeg2, make sure that dec_submit_bitstream() doesn't leak a frame when dec_ensure_output_buffer() fails. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8794>
This commit is contained in:
parent
880053c52c
commit
28fdf598e4
@ -1241,8 +1241,10 @@ gst_v4l2_codec_h264_dec_submit_bitstream (GstV4l2CodecH264Dec * self,
|
|||||||
system_frame_number);
|
system_frame_number);
|
||||||
g_return_val_if_fail (frame, FALSE);
|
g_return_val_if_fail (frame, FALSE);
|
||||||
|
|
||||||
if (!gst_v4l2_codec_h264_dec_ensure_output_buffer (self, frame))
|
if (!gst_v4l2_codec_h264_dec_ensure_output_buffer (self, frame)) {
|
||||||
|
gst_video_codec_frame_unref (frame);
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
request = gst_v4l2_decoder_alloc_request (self->decoder,
|
request = gst_v4l2_decoder_alloc_request (self->decoder,
|
||||||
system_frame_number, self->bitstream, frame->output_buffer);
|
system_frame_number, self->bitstream, frame->output_buffer);
|
||||||
|
@ -1392,8 +1392,10 @@ gst_v4l2_codec_h265_dec_submit_bitstream (GstV4l2CodecH265Dec * self,
|
|||||||
system_frame_number);
|
system_frame_number);
|
||||||
g_return_val_if_fail (frame, FALSE);
|
g_return_val_if_fail (frame, FALSE);
|
||||||
|
|
||||||
if (!gst_v4l2_codec_h265_dec_ensure_output_buffer (self, frame))
|
if (!gst_v4l2_codec_h265_dec_ensure_output_buffer (self, frame)) {
|
||||||
|
gst_video_codec_frame_unref (frame);
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
request = gst_v4l2_decoder_alloc_request (self->decoder,
|
request = gst_v4l2_decoder_alloc_request (self->decoder,
|
||||||
system_frame_number, self->bitstream, frame->output_buffer);
|
system_frame_number, self->bitstream, frame->output_buffer);
|
||||||
|
@ -874,8 +874,10 @@ gst_v4l2_codec_mpeg2_dec_submit_bitstream (GstV4l2CodecMpeg2Dec * self,
|
|||||||
system_frame_number);
|
system_frame_number);
|
||||||
g_return_val_if_fail (frame, FALSE);
|
g_return_val_if_fail (frame, FALSE);
|
||||||
|
|
||||||
if (!gst_v4l2_codec_mpeg2_dec_ensure_output_buffer (self, frame))
|
if (!gst_v4l2_codec_mpeg2_dec_ensure_output_buffer (self, frame)) {
|
||||||
|
gst_video_codec_frame_unref (frame);
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
request = gst_v4l2_decoder_alloc_request (self->decoder,
|
request = gst_v4l2_decoder_alloc_request (self->decoder,
|
||||||
system_frame_number, self->bitstream, frame->output_buffer);
|
system_frame_number, self->bitstream, frame->output_buffer);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user