From 0694c4a1c315455e3a4e26efa9983494e6487c8e Mon Sep 17 00:00:00 2001 From: He Junyan Date: Thu, 6 Apr 2023 19:57:29 +0800 Subject: [PATCH] va: encoder: Do not continue when push_buffer gets error Part-of: --- subprojects/gst-plugins-bad/sys/va/gstvabaseenc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.c b/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.c index 78efc1e170..32a29b36f3 100644 --- a/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.c +++ b/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.c @@ -660,9 +660,12 @@ gst_va_base_enc_handle_frame (GstVideoEncoder * venc, if (ret != GST_FLOW_OK) goto error_encode; - while (g_queue_get_length (&base->output_list) > 0) + while (ret == GST_FLOW_OK && g_queue_get_length (&base->output_list) > 0) ret = _push_out_one_buffer (base); + if (ret != GST_FLOW_OK) + goto error_push_buffer; + frame_encode = NULL; if (!base_class->reorder_frame (base, NULL, FALSE, &frame_encode)) goto error_reorder; @@ -706,6 +709,12 @@ error_encode: gst_video_encoder_finish_frame (venc, frame_encode); return ret; } +error_push_buffer: + { + GST_ELEMENT_ERROR (venc, STREAM, ENCODE, + ("Failed to push one frame."), (NULL)); + return ret; + } } static GstFlowReturn