void g_omx_core_start (GOmxCore *core) { change_state (core, OMX_StateExecuting); wait_for_state (core, OMX_StateExecuting); { guint index; guint i; for (index = 0; index < core->ports->len; index++) { GOmxPort *port; port = g_omx_core_get_port (core, index); for (i = 0; i < port->num_buffers; i++) { OMX_BUFFERHEADERTYPE *omx_buffer; omx_buffer = port->buffers[i]; got_buffer (core, port, omx_buffer); } } } }
static OMX_ERRORTYPE FillBufferDone (OMX_HANDLETYPE omx_handle, OMX_PTR app_data, OMX_BUFFERHEADERTYPE *omx_buffer) { GOmxCore *core; GOmxPort *port; core = (GOmxCore *) app_data; port = g_omx_core_get_port (core, omx_buffer->nOutputPortIndex); got_buffer (core, port, omx_buffer); return OMX_ErrorNone; }
static OMX_ERRORTYPE FillBufferDone (OMX_HANDLETYPE omx_handle, OMX_PTR app_data, OMX_BUFFERHEADERTYPE *omx_buffer) { GOmxCore *core; GOmxPort *port; core = (GOmxCore *) app_data; port = get_port (core, omx_buffer->nOutputPortIndex); GST_CAT_LOG_OBJECT (gstomx_util_debug, core->object, "omx_buffer=%p", omx_buffer); got_buffer (core, port, omx_buffer); return OMX_ErrorNone; }
static void port_start_buffers (GOmxPort *port) { guint i; for (i = 0; i < port->num_buffers; i++) { OMX_BUFFERHEADERTYPE *omx_buffer; omx_buffer = port->buffers[i]; /* If it's an input port we will need to fill the buffer, so put it in * the queue, otherwise send to omx for processing (fill it up). */ if (port->type == GOMX_PORT_INPUT) got_buffer (port->core, port, omx_buffer); else g_omx_port_release_buffer (port, omx_buffer); } }