summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Clark <rob@ti.com>2010-03-17 17:50:30 -0500
committerFelipe Contreras <felipe.contreras@nokia.com>2010-04-16 17:30:04 +0300
commit6c0caf43e6c9047e0be755ac5b6546abae525f8f (patch)
treeb61f63fe48d7bd8d6be8c8989fb6c58f2824a88c
parent69d756373bc886d3ef49a743c13f126b1c0b6413 (diff)
Simplify g_omx_port_setup()
Do OMX_GetParameter(PortDefinition) inside g_omx_port_setup(), rather than duplicating same code in each caller. Signed-off-by: Felipe Contreras <felipe.contreras@nokia.com>
-rw-r--r--omx/gstomx_base_filter.c20
-rw-r--r--omx/gstomx_base_sink.c15
-rw-r--r--omx/gstomx_base_src.c15
-rw-r--r--omx/gstomx_util.c19
-rw-r--r--omx/gstomx_util.h2
5 files changed, 18 insertions, 53 deletions
diff --git a/omx/gstomx_base_filter.c b/omx/gstomx_base_filter.c
index bc0a77d..0e49d3e 100644
--- a/omx/gstomx_base_filter.c
+++ b/omx/gstomx_base_filter.c
@@ -53,28 +53,12 @@ log_buffer (GstOmxBaseFilter *self,
static void
setup_ports (GstOmxBaseFilter *self)
{
- GOmxCore *core;
- OMX_PARAM_PORTDEFINITIONTYPE param;
-
- core = self->gomx;
-
- memset (&param, 0, sizeof (param));
- param.nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
- param.nVersion.s.nVersionMajor = 1;
- param.nVersion.s.nVersionMinor = 1;
-
/* Input port configuration. */
-
- param.nPortIndex = 0;
- OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, &param);
- g_omx_port_setup (self->in_port, &param);
+ g_omx_port_setup (self->in_port);
gst_pad_set_element_private (self->sinkpad, self->in_port);
/* Output port configuration. */
-
- param.nPortIndex = 1;
- OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, &param);
- g_omx_port_setup (self->out_port, &param);
+ g_omx_port_setup (self->out_port);
gst_pad_set_element_private (self->srcpad, self->out_port);
/* @todo: read from config file: */
diff --git a/omx/gstomx_base_sink.c b/omx/gstomx_base_sink.c
index f946874..b6a8955 100644
--- a/omx/gstomx_base_sink.c
+++ b/omx/gstomx_base_sink.c
@@ -45,21 +45,8 @@ GSTOMX_BOILERPLATE_FULL (GstOmxBaseSink, gst_omx_base_sink, GstBaseSink, GST_TYP
static void
setup_ports (GstOmxBaseSink *self)
{
- GOmxCore *core;
- OMX_PARAM_PORTDEFINITIONTYPE param;
-
- core = self->gomx;
-
- memset (&param, 0, sizeof (param));
- param.nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
- param.nVersion.s.nVersionMajor = 1;
- param.nVersion.s.nVersionMinor = 1;
-
/* Input port configuration. */
-
- param.nPortIndex = 0;
- OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, &param);
- g_omx_port_setup (self->in_port, &param);
+ g_omx_port_setup (self->in_port);
gst_pad_set_element_private (self->sinkpad, self->in_port);
}
diff --git a/omx/gstomx_base_src.c b/omx/gstomx_base_src.c
index 0741aab..fea7631 100644
--- a/omx/gstomx_base_src.c
+++ b/omx/gstomx_base_src.c
@@ -36,21 +36,8 @@ GSTOMX_BOILERPLATE (GstOmxBaseSrc, gst_omx_base_src, GstBaseSrc, GST_TYPE_BASE_S
static void
setup_ports (GstOmxBaseSrc *self)
{
- GOmxCore *core;
- OMX_PARAM_PORTDEFINITIONTYPE param;
-
- core = self->gomx;
-
- memset (&param, 0, sizeof (param));
- param.nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
- param.nVersion.s.nVersionMajor = 1;
- param.nVersion.s.nVersionMinor = 1;
-
/* Input port configuration. */
-
- param.nPortIndex = 0;
- OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, &param);
- g_omx_port_setup (self->out_port, &param);
+ g_omx_port_setup (self->out_port);
if (self->setup_ports)
{
diff --git a/omx/gstomx_util.c b/omx/gstomx_util.c
index e1060da..b1c869a 100644
--- a/omx/gstomx_util.c
+++ b/omx/gstomx_util.c
@@ -22,6 +22,7 @@
#include "gstomx_util.h"
#include <dlfcn.h>
+#include <string.h> /* for memset */
#include "gstomx.h"
@@ -486,14 +487,20 @@ g_omx_port_free (GOmxPort *port)
}
void
-g_omx_port_setup (GOmxPort *port,
- OMX_PARAM_PORTDEFINITIONTYPE *omx_port)
+g_omx_port_setup (GOmxPort *port)
{
GOmxPortType type = -1;
+ OMX_PARAM_PORTDEFINITIONTYPE param;
- g_assert (port->port_index == omx_port->nPortIndex);
+ memset (&param, 0, sizeof (param));
+ param.nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
+ param.nVersion.s.nVersionMajor = 1;
+ param.nVersion.s.nVersionMinor = 1;
- switch (omx_port->eDir)
+ param.nPortIndex = port->port_index;
+ OMX_GetParameter (port->core->omx_handle, OMX_IndexParamPortDefinition, &param);
+
+ switch (param.eDir)
{
case OMX_DirInput:
type = GOMX_PORT_INPUT;
@@ -507,8 +514,8 @@ g_omx_port_setup (GOmxPort *port,
port->type = type;
/** @todo should it be nBufferCountMin? */
- port->num_buffers = omx_port->nBufferCountActual;
- port->buffer_size = omx_port->nBufferSize;
+ port->num_buffers = param.nBufferCountActual;
+ port->buffer_size = param.nBufferSize;
g_free (port->buffers);
port->buffers = g_new0 (OMX_BUFFERHEADERTYPE *, port->num_buffers);
diff --git a/omx/gstomx_util.h b/omx/gstomx_util.h
index f763618..456f9a8 100644
--- a/omx/gstomx_util.h
+++ b/omx/gstomx_util.h
@@ -134,7 +134,7 @@ GOmxPort *g_omx_core_new_port (GOmxCore *core, guint index);
GOmxPort *g_omx_port_new (GOmxCore *core, guint index);
void g_omx_port_free (GOmxPort *port);
-void g_omx_port_setup (GOmxPort *port, OMX_PARAM_PORTDEFINITIONTYPE *omx_port);
+void g_omx_port_setup (GOmxPort *port);
void g_omx_port_push_buffer (GOmxPort *port, OMX_BUFFERHEADERTYPE *omx_buffer);
OMX_BUFFERHEADERTYPE *g_omx_port_request_buffer (GOmxPort *port);
void g_omx_port_release_buffer (GOmxPort *port, OMX_BUFFERHEADERTYPE *omx_buffer);