mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 19:51:11 +00:00
omxvideoenc/dec: fix handling of component enabling failing
- Report the error from OMX if any (OMX_EventError) - If not report the failing to the application (GST_ELEMENT_ERROR) - return GST_FLOW_ERROR rather than FALSE - don't leak @frame https://bugzilla.gnome.org/show_bug.cgi?id=795352
This commit is contained in:
parent
dfd270042f
commit
e1a149f3d5
2 changed files with 32 additions and 2 deletions
|
@ -2733,7 +2733,7 @@ gst_omx_video_dec_handle_frame (GstVideoDecoder * decoder,
|
||||||
|
|
||||||
if (gst_omx_port_is_flushing (self->dec_out_port)) {
|
if (gst_omx_port_is_flushing (self->dec_out_port)) {
|
||||||
if (!gst_omx_video_dec_enable (self, frame->input_buffer))
|
if (!gst_omx_video_dec_enable (self, frame->input_buffer))
|
||||||
return FALSE;
|
goto enable_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (self, "Starting task");
|
GST_DEBUG_OBJECT (self, "Starting task");
|
||||||
|
@ -3001,6 +3001,21 @@ map_failed:
|
||||||
return GST_FLOW_ERROR;
|
return GST_FLOW_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enable_error:
|
||||||
|
{
|
||||||
|
/* Report the OMX error, if any */
|
||||||
|
if (gst_omx_component_get_last_error (self->dec) != OMX_ErrorNone)
|
||||||
|
GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL),
|
||||||
|
("Failed to enable OMX decoder: %s (0x%08x)",
|
||||||
|
gst_omx_component_get_last_error_string (self->dec),
|
||||||
|
gst_omx_component_get_last_error (self->dec)));
|
||||||
|
else
|
||||||
|
GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL),
|
||||||
|
("Failed to enable OMX decoder"));
|
||||||
|
gst_video_codec_frame_unref (frame);
|
||||||
|
return GST_FLOW_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
component_error:
|
component_error:
|
||||||
{
|
{
|
||||||
gst_video_codec_frame_unref (frame);
|
gst_video_codec_frame_unref (frame);
|
||||||
|
|
|
@ -2582,7 +2582,7 @@ gst_omx_video_enc_handle_frame (GstVideoEncoder * encoder,
|
||||||
if (!self->started) {
|
if (!self->started) {
|
||||||
if (gst_omx_port_is_flushing (self->enc_out_port)) {
|
if (gst_omx_port_is_flushing (self->enc_out_port)) {
|
||||||
if (!gst_omx_video_enc_enable (self, frame->input_buffer))
|
if (!gst_omx_video_enc_enable (self, frame->input_buffer))
|
||||||
return FALSE;
|
goto enable_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (self, "Starting task");
|
GST_DEBUG_OBJECT (self, "Starting task");
|
||||||
|
@ -2758,6 +2758,21 @@ flow_error:
|
||||||
return self->downstream_flow_ret;
|
return self->downstream_flow_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enable_error:
|
||||||
|
{
|
||||||
|
/* Report the OMX error, if any */
|
||||||
|
if (gst_omx_component_get_last_error (self->enc) != OMX_ErrorNone)
|
||||||
|
GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL),
|
||||||
|
("Failed to enable OMX encoder: %s (0x%08x)",
|
||||||
|
gst_omx_component_get_last_error_string (self->enc),
|
||||||
|
gst_omx_component_get_last_error (self->enc)));
|
||||||
|
else
|
||||||
|
GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL),
|
||||||
|
("Failed to enable OMX encoder"));
|
||||||
|
gst_video_codec_frame_unref (frame);
|
||||||
|
return GST_FLOW_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
component_error:
|
component_error:
|
||||||
{
|
{
|
||||||
GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL),
|
GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL),
|
||||||
|
|
Loading…
Reference in a new issue