From 3c13502b75a8fa64d106e28c6b964c2c0f8a0f7e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 11 Mar 2013 13:45:04 +0100 Subject: [PATCH] omxvideoenc: Always allocate output buffers from the loop function --- omx/gstomxvideoenc.c | 49 ++++++------------------------------------------- 1 file changed, 6 insertions(+), 43 deletions(-) diff --git a/omx/gstomxvideoenc.c b/omx/gstomxvideoenc.c index eeffc4f..e8078aa 100644 --- a/omx/gstomxvideoenc.c +++ b/omx/gstomxvideoenc.c @@ -1245,27 +1245,7 @@ gst_omx_video_enc_set_format (GstVideoEncoder * encoder, return FALSE; if (gst_omx_port_mark_reconfigured (self->enc_in_port) != OMX_ErrorNone) return FALSE; - - /* If the output port is already configured with the new format we can - * allocate buffers here already */ - if (self->enc_out_port->port_def.format.video.nFrameHeight == info->height - && self->enc_out_port->port_def.format.video.nFrameWidth == - info->width) { - if (gst_omx_port_set_enabled (self->enc_out_port, TRUE) != OMX_ErrorNone) - return FALSE; - if (gst_omx_port_allocate_buffers (self->enc_out_port) != OMX_ErrorNone) - return FALSE; - if (gst_omx_port_wait_enabled (self->enc_out_port, - 3 * GST_SECOND) != OMX_ErrorNone) - return FALSE; - if (gst_omx_port_populate (self->enc_out_port) != OMX_ErrorNone) - return FALSE; - if (gst_omx_port_mark_reconfigured (self->enc_out_port) != OMX_ErrorNone) - return FALSE; - } } else { - gboolean have_output_buffers = FALSE; - if (gst_omx_component_set_state (self->enc, OMX_StateIdle) != OMX_ErrorNone) return FALSE; @@ -1273,23 +1253,13 @@ gst_omx_video_enc_set_format (GstVideoEncoder * encoder, if (gst_omx_port_allocate_buffers (self->enc_in_port) != OMX_ErrorNone) return FALSE; - /* If the output port is already configured with the new format we can - * allocate buffers here already */ - if (self->enc_out_port->port_def.format.video.nFrameHeight == info->height - && self->enc_out_port->port_def.format.video.nFrameWidth == - info->width) { - if (gst_omx_port_allocate_buffers (self->enc_out_port) != OMX_ErrorNone) - return FALSE; - have_output_buffers = TRUE; - } else { - /* And disable output port */ - if (gst_omx_port_set_enabled (self->enc_out_port, FALSE) != OMX_ErrorNone) - return FALSE; + /* And disable output port */ + if (gst_omx_port_set_enabled (self->enc_out_port, FALSE) != OMX_ErrorNone) + return FALSE; - if (gst_omx_port_wait_enabled (self->enc_out_port, - 1 * GST_SECOND) != OMX_ErrorNone) - return FALSE; - } + if (gst_omx_port_wait_enabled (self->enc_out_port, + 1 * GST_SECOND) != OMX_ErrorNone) + return FALSE; if (gst_omx_component_get_state (self->enc, GST_CLOCK_TIME_NONE) != OMX_StateIdle) @@ -1302,13 +1272,6 @@ gst_omx_video_enc_set_format (GstVideoEncoder * encoder, if (gst_omx_component_get_state (self->enc, GST_CLOCK_TIME_NONE) != OMX_StateExecuting) return FALSE; - - if (have_output_buffers) { - if (gst_omx_port_populate (self->enc_out_port) != OMX_ErrorNone) - return FALSE; - if (gst_omx_port_mark_reconfigured (self->enc_out_port) != OMX_ErrorNone) - return FALSE; - } } /* Unset flushing to allow ports to accept data again */ -- 2.7.4