|
From: Rob C. <ro...@ti...> - 2010-03-17 22:50:15
|
These apply on top of the last patchset ('rebased boilerplate reduction
macros')
Rob Clark (3):
Construct GOmxPort objects in element constructor
Simplify g_omx_port_setup()
Don't hard-code port indexes
omx/gstomx_aacdec.c | 2 +-
omx/gstomx_aacenc.c | 8 ++--
omx/gstomx_adpcmdec.c | 2 +-
omx/gstomx_adpcmenc.c | 4 +-
omx/gstomx_amrnbdec.c | 2 +-
omx/gstomx_amrnbenc.c | 4 +-
omx/gstomx_amrwbdec.c | 2 +-
omx/gstomx_amrwbenc.c | 4 +-
omx/gstomx_audiosink.c | 2 +-
omx/gstomx_base_filter.c | 23 +++-----------
omx/gstomx_base_sink.c | 16 +--------
omx/gstomx_base_src.c | 16 +--------
omx/gstomx_base_videodec.c | 6 ++--
omx/gstomx_base_videoenc.c | 4 +-
omx/gstomx_g711dec.c | 2 +-
omx/gstomx_g711enc.c | 2 +-
omx/gstomx_g729enc.c | 2 +-
omx/gstomx_h263enc.c | 2 +-
omx/gstomx_h264enc.c | 2 +-
omx/gstomx_jpegenc.c | 8 ++--
omx/gstomx_mp2dec.c | 2 +-
omx/gstomx_mp3dec.c | 2 +-
omx/gstomx_mpeg4enc.c | 2 +-
omx/gstomx_util.c | 73 ++++++++++++++++++++++++--------------------
omx/gstomx_util.h | 6 ++--
omx/gstomx_videosink.c | 6 ++--
omx/gstomx_volume.c | 2 +-
omx/gstomx_vorbisdec.c | 2 +-
28 files changed, 89 insertions(+), 119 deletions(-)
|
|
From: Rob C. <ro...@ti...> - 2010-03-17 22:50:17
|
The port objects are constructed up in element constructor (so they are
valid at any point in the element's lifecycle), and bound to a port_index
at construction time, rather than getting constructed in setup_ports.
This will be useful later to enable properties that directly set port
params.
---
omx/gstomx_base_filter.c | 7 ++++-
omx/gstomx_base_sink.c | 3 +-
omx/gstomx_base_src.c | 3 +-
omx/gstomx_util.c | 56 +++++++++++++++++++++++-----------------------
omx/gstomx_util.h | 4 +-
5 files changed, 39 insertions(+), 34 deletions(-)
diff --git a/omx/gstomx_base_filter.c b/omx/gstomx_base_filter.c
index cbded8b..edbb11e 100644
--- a/omx/gstomx_base_filter.c
+++ b/omx/gstomx_base_filter.c
@@ -67,16 +67,17 @@ setup_ports (GstOmxBaseFilter *self)
param.nPortIndex = 0;
OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, ¶m);
- self->in_port = g_omx_core_setup_port (core, ¶m);
+ g_omx_port_setup (self->in_port, ¶m);
gst_pad_set_element_private (self->sinkpad, self->in_port);
/* Output port configuration. */
param.nPortIndex = 1;
OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, ¶m);
- self->out_port = g_omx_core_setup_port (core, ¶m);
+ g_omx_port_setup (self->out_port, ¶m);
gst_pad_set_element_private (self->srcpad, self->out_port);
+ /* @todo: read from config file: */
if (g_getenv ("OMX_ALLOCATE_ON"))
{
self->in_port->omx_allocate = TRUE;
@@ -892,6 +893,8 @@ type_instance_init (GTypeInstance *instance,
self->gomx = g_omx_core_new (self);
gstomx_get_component_info (self->gomx, G_TYPE_FROM_CLASS (g_class));
+ self->in_port = g_omx_core_new_port (self->gomx, 0);
+ self->out_port = g_omx_core_new_port (self->gomx, 1);
self->ready_lock = g_mutex_new ();
diff --git a/omx/gstomx_base_sink.c b/omx/gstomx_base_sink.c
index 97200b0..f946874 100644
--- a/omx/gstomx_base_sink.c
+++ b/omx/gstomx_base_sink.c
@@ -59,7 +59,7 @@ setup_ports (GstOmxBaseSink *self)
param.nPortIndex = 0;
OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, ¶m);
- self->in_port = g_omx_core_setup_port (core, ¶m);
+ g_omx_port_setup (self->in_port, ¶m);
gst_pad_set_element_private (self->sinkpad, self->in_port);
}
@@ -436,6 +436,7 @@ type_instance_init (GTypeInstance *instance,
self->gomx = g_omx_core_new (self);
gstomx_get_component_info (self->gomx, G_TYPE_FROM_CLASS (g_class));
+ self->in_port = g_omx_core_new_port (self->gomx, 0);
{
GstPad *sinkpad;
diff --git a/omx/gstomx_base_src.c b/omx/gstomx_base_src.c
index ee04e78..0741aab 100644
--- a/omx/gstomx_base_src.c
+++ b/omx/gstomx_base_src.c
@@ -50,7 +50,7 @@ setup_ports (GstOmxBaseSrc *self)
param.nPortIndex = 0;
OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, ¶m);
- self->out_port = g_omx_core_setup_port (core, ¶m);
+ g_omx_port_setup (self->out_port, ¶m);
if (self->setup_ports)
{
@@ -421,6 +421,7 @@ type_instance_init (GTypeInstance *instance,
self->gomx = g_omx_core_new (self);
gstomx_get_component_info (self->gomx, G_TYPE_FROM_CLASS (g_class));
+ self->out_port = g_omx_core_new_port (self->gomx, 1);
GST_LOG_OBJECT (self, "end");
}
diff --git a/omx/gstomx_util.c b/omx/gstomx_util.c
index b2a96c8..e1060da 100644
--- a/omx/gstomx_util.c
+++ b/omx/gstomx_util.c
@@ -76,9 +76,7 @@ omx_state_to_str (OMX_STATETYPE omx_state);
static inline const char *
omx_error_to_str (OMX_ERRORTYPE omx_error);
-static inline GOmxPort *
-g_omx_core_get_port (GOmxCore *core,
- guint index);
+static inline GOmxPort * get_port (GOmxCore *core, guint index);
static inline void
port_free_buffers (GOmxPort *port);
@@ -133,7 +131,7 @@ core_for_each_port (GOmxCore *core,
{
GOmxPort *port;
- port = g_omx_core_get_port (core, index);
+ port = get_port (core, index);
if (port)
func (port);
@@ -396,37 +394,33 @@ g_omx_core_unload (GOmxCore *core)
g_ptr_array_clear (core->ports);
}
-GOmxPort *
-g_omx_core_setup_port (GOmxCore *core,
- OMX_PARAM_PORTDEFINITIONTYPE *omx_port)
+static inline GOmxPort *
+get_port (GOmxCore *core, guint index)
{
- GOmxPort *port;
- guint index;
-
- index = omx_port->nPortIndex;
- port = g_omx_core_get_port (core, index);
-
- if (!port)
+ if (G_LIKELY (index < core->ports->len))
{
- port = g_omx_port_new (core);
- g_ptr_array_insert (core->ports, index, port);
+ return g_ptr_array_index (core->ports, index);
}
- g_omx_port_setup (port, omx_port);
-
- return port;
+ return NULL;
}
-static inline GOmxPort *
-g_omx_core_get_port (GOmxCore *core,
+GOmxPort *
+g_omx_core_new_port (GOmxCore *core,
guint index)
{
- if (G_LIKELY (index < core->ports->len))
+ GOmxPort *port = get_port (core, index);
+
+ if (port)
{
- return g_ptr_array_index (core->ports, index);
+ GST_WARNING_OBJECT (core->object, "port %d already exists", index);
+ return port;
}
- return NULL;
+ port = g_omx_port_new (core, index);
+ g_ptr_array_insert (core->ports, index, port);
+
+ return port;
}
void
@@ -458,13 +452,18 @@ g_omx_core_flush_stop (GOmxCore *core)
* Port
*/
+/**
+ * note: this is not intended to be called directly by elements (which should
+ * instead use g_omx_core_new_port())
+ */
GOmxPort *
-g_omx_port_new (GOmxCore *core)
+g_omx_port_new (GOmxCore *core, guint index)
{
GOmxPort *port;
port = g_new0 (GOmxPort, 1);
port->core = core;
+ port->port_index = index;
port->num_buffers = 0;
port->buffer_size = 0;
port->buffers = NULL;
@@ -492,6 +491,8 @@ g_omx_port_setup (GOmxPort *port,
{
GOmxPortType type = -1;
+ g_assert (port->port_index == omx_port->nPortIndex);
+
switch (omx_port->eDir)
{
case OMX_DirInput:
@@ -508,7 +509,6 @@ g_omx_port_setup (GOmxPort *port,
/** @todo should it be nBufferCountMin? */
port->num_buffers = omx_port->nBufferCountActual;
port->buffer_size = omx_port->nBufferSize;
- port->port_index = omx_port->nPortIndex;
g_free (port->buffers);
port->buffers = g_new0 (OMX_BUFFERHEADERTYPE *, port->num_buffers);
@@ -904,7 +904,7 @@ EmptyBufferDone (OMX_HANDLETYPE omx_handle,
GOmxPort *port;
core = (GOmxCore*) app_data;
- port = g_omx_core_get_port (core, omx_buffer->nInputPortIndex);
+ port = get_port (core, omx_buffer->nInputPortIndex);
GST_CAT_LOG_OBJECT (gstomx_util_debug, core->object, "omx_buffer=%p", omx_buffer);
got_buffer (core, port, omx_buffer);
@@ -921,7 +921,7 @@ FillBufferDone (OMX_HANDLETYPE omx_handle,
GOmxPort *port;
core = (GOmxCore *) app_data;
- port = g_omx_core_get_port (core, omx_buffer->nOutputPortIndex);
+ 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);
diff --git a/omx/gstomx_util.h b/omx/gstomx_util.h
index 6450c0d..f763618 100644
--- a/omx/gstomx_util.h
+++ b/omx/gstomx_util.h
@@ -130,9 +130,9 @@ void g_omx_core_set_done (GOmxCore *core);
void g_omx_core_wait_for_done (GOmxCore *core);
void g_omx_core_flush_start (GOmxCore *core);
void g_omx_core_flush_stop (GOmxCore *core);
-GOmxPort *g_omx_core_setup_port (GOmxCore *core, OMX_PARAM_PORTDEFINITIONTYPE *omx_port);
+GOmxPort *g_omx_core_new_port (GOmxCore *core, guint index);
-GOmxPort *g_omx_port_new (GOmxCore *core);
+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_push_buffer (GOmxPort *port, OMX_BUFFERHEADERTYPE *omx_buffer);
--
1.6.3.2
|
|
From: Felipe C. <fel...@gm...> - 2010-03-23 22:11:15
|
On Thu, Mar 18, 2010 at 12:50 AM, Rob Clark <ro...@ti...> wrote: > The port objects are constructed up in element constructor (so they are > valid at any point in the element's lifecycle), and bound to a port_index > at construction time, rather than getting constructed in setup_ports. > > This will be useful later to enable properties that directly set port > params. Looks fine to me but I recall making some comments on previous revisions. Did you forget to mention that in the commit message? -- Felipe Contreras |
|
From: Rob C. <ro...@ti...> - 2010-03-17 22:50:20
|
Do OMX_GetParameter(PortDefinition) inside g_omx_port_setup(), rather than
duplicating same code in each caller.
---
omx/gstomx_base_filter.c | 20 ++------------------
omx/gstomx_base_sink.c | 15 +--------------
omx/gstomx_base_src.c | 15 +--------------
omx/gstomx_util.c | 19 +++++++++++++------
omx/gstomx_util.h | 2 +-
5 files changed, 18 insertions(+), 53 deletions(-)
diff --git a/omx/gstomx_base_filter.c b/omx/gstomx_base_filter.c
index edbb11e..e12fcd2 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 (¶m, 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, ¶m);
- g_omx_port_setup (self->in_port, ¶m);
+ 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, ¶m);
- g_omx_port_setup (self->out_port, ¶m);
+ 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 (¶m, 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, ¶m);
- g_omx_port_setup (self->in_port, ¶m);
+ 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 (¶m, 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, ¶m);
- g_omx_port_setup (self->out_port, ¶m);
+ 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 (¶m, 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, ¶m);
+
+ 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);
--
1.6.3.2
|
|
From: Felipe C. <fel...@gm...> - 2010-03-23 22:13:04
|
On Thu, Mar 18, 2010 at 12:50 AM, Rob Clark <ro...@ti...> wrote: > Do OMX_GetParameter(PortDefinition) inside g_omx_port_setup(), rather than > duplicating same code in each caller. Nice! ACK. -- Felipe Contreras |
|
From: Rob C. <ro...@ti...> - 2010-03-17 22:50:23
|
This improves readability by keeping knowledge of numeric port-index value
in only one place (in the element constructor), and makes it easier to
later add derived classes with different port indexes (for example
GstOmxCamera subclassing GstOmxBaseSrc, but having GstOmxBaseSrc handling a
port whose index != 0 while derived class handles port index 0 and others).
---
omx/gstomx_aacdec.c | 2 +-
omx/gstomx_aacenc.c | 8 ++++----
omx/gstomx_adpcmdec.c | 2 +-
omx/gstomx_adpcmenc.c | 4 ++--
omx/gstomx_amrnbdec.c | 2 +-
omx/gstomx_amrnbenc.c | 4 ++--
omx/gstomx_amrwbdec.c | 2 +-
omx/gstomx_amrwbenc.c | 4 ++--
omx/gstomx_audiosink.c | 2 +-
omx/gstomx_base_videodec.c | 6 +++---
omx/gstomx_base_videoenc.c | 4 ++--
omx/gstomx_g711dec.c | 2 +-
omx/gstomx_g711enc.c | 2 +-
omx/gstomx_g729enc.c | 2 +-
omx/gstomx_h263enc.c | 2 +-
omx/gstomx_h264enc.c | 2 +-
omx/gstomx_jpegenc.c | 8 ++++----
omx/gstomx_mp2dec.c | 2 +-
omx/gstomx_mp3dec.c | 2 +-
omx/gstomx_mpeg4enc.c | 2 +-
omx/gstomx_videosink.c | 6 +++---
omx/gstomx_volume.c | 2 +-
omx/gstomx_vorbisdec.c | 2 +-
23 files changed, 37 insertions(+), 37 deletions(-)
diff --git a/omx/gstomx_aacdec.c b/omx/gstomx_aacdec.c
index f72178d..1f22dd8 100644
--- a/omx/gstomx_aacdec.c
+++ b/omx/gstomx_aacdec.c
@@ -148,7 +148,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
rate = param.nSamplingRate;
diff --git a/omx/gstomx_aacenc.c b/omx/gstomx_aacenc.c
index 5882a31..565bc82 100644
--- a/omx/gstomx_aacenc.c
+++ b/omx/gstomx_aacenc.c
@@ -308,7 +308,7 @@ sink_setcaps (GstPad *pad,
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
param.nSamplingRate = rate;
@@ -356,7 +356,7 @@ omx_setup (GstOmxBaseFilter *omx_base)
/* Output port configuration. */
{
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioAac, ¶m);
GST_DEBUG_OBJECT (omx_base, "setting bitrate: %i", self->bitrate);
@@ -383,7 +383,7 @@ omx_setup (GstOmxBaseFilter *omx_base)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
rate = param.nSamplingRate;
@@ -398,7 +398,7 @@ omx_setup (GstOmxBaseFilter *omx_base)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioAac, ¶m);
param.nSampleRate = rate;
diff --git a/omx/gstomx_adpcmdec.c b/omx/gstomx_adpcmdec.c
index ed77085..12ee81f 100644
--- a/omx/gstomx_adpcmdec.c
+++ b/omx/gstomx_adpcmdec.c
@@ -130,7 +130,7 @@ sink_setcaps (GstPad *pad,
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
param.nSamplingRate = rate;
diff --git a/omx/gstomx_adpcmenc.c b/omx/gstomx_adpcmenc.c
index ab5ce61..fea6bf4 100644
--- a/omx/gstomx_adpcmenc.c
+++ b/omx/gstomx_adpcmenc.c
@@ -121,7 +121,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioAdpcm, ¶m);
rate = param.nSampleRate;
@@ -185,7 +185,7 @@ sink_setcaps (GstPad *pad,
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
param.nSamplingRate = rate;
diff --git a/omx/gstomx_amrnbdec.c b/omx/gstomx_amrnbdec.c
index a32f162..f32b15f 100644
--- a/omx/gstomx_amrnbdec.c
+++ b/omx/gstomx_amrnbdec.c
@@ -121,7 +121,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
rate = param.nSamplingRate;
diff --git a/omx/gstomx_amrnbenc.c b/omx/gstomx_amrnbenc.c
index e1c9b19..cc3486f 100644
--- a/omx/gstomx_amrnbenc.c
+++ b/omx/gstomx_amrnbenc.c
@@ -186,7 +186,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioAmr, ¶m);
channels = param.nChannels;
@@ -236,7 +236,7 @@ sink_setcaps (GstPad *pad,
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
param.nSamplingRate = rate;
diff --git a/omx/gstomx_amrwbdec.c b/omx/gstomx_amrwbdec.c
index 26e1692..20dddcb 100644
--- a/omx/gstomx_amrwbdec.c
+++ b/omx/gstomx_amrwbdec.c
@@ -121,7 +121,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
rate = param.nSamplingRate;
diff --git a/omx/gstomx_amrwbenc.c b/omx/gstomx_amrwbenc.c
index a19e670..3d95272 100644
--- a/omx/gstomx_amrwbenc.c
+++ b/omx/gstomx_amrwbenc.c
@@ -186,7 +186,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioAmr, ¶m);
channels = param.nChannels;
@@ -236,7 +236,7 @@ sink_setcaps (GstPad *pad,
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
param.nSamplingRate = rate;
diff --git a/omx/gstomx_audiosink.c b/omx/gstomx_audiosink.c
index a05a7cd..6c912f0 100644
--- a/omx/gstomx_audiosink.c
+++ b/omx/gstomx_audiosink.c
@@ -114,7 +114,7 @@ setcaps (GstBaseSink *gst_sink,
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 0;
+ param.nPortIndex = self->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
param.nChannels = channels;
diff --git a/omx/gstomx_base_videodec.c b/omx/gstomx_base_videodec.c
index 3ff2f44..5c6d1e1 100644
--- a/omx/gstomx_base_videodec.c
+++ b/omx/gstomx_base_videodec.c
@@ -116,7 +116,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamPortDefinition, ¶m);
width = param.format.video.nFrameWidth;
@@ -217,7 +217,7 @@ sink_setcaps (GstPad *pad,
/* Input port configuration. */
{
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamPortDefinition, ¶m);
param.format.video.nFrameWidth = width;
@@ -250,7 +250,7 @@ omx_setup (GstOmxBaseFilter *omx_base)
/* Input port configuration. */
{
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamPortDefinition, ¶m);
param.format.video.eCompressionFormat = self->compression_format;
diff --git a/omx/gstomx_base_videoenc.c b/omx/gstomx_base_videoenc.c
index 7c99a53..d243fbd 100644
--- a/omx/gstomx_base_videoenc.c
+++ b/omx/gstomx_base_videoenc.c
@@ -222,7 +222,7 @@ sink_setcaps (GstPad *pad,
/* Input port configuration. */
{
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamPortDefinition, ¶m);
param.format.video.nFrameWidth = width;
@@ -264,7 +264,7 @@ omx_setup (GstOmxBaseFilter *omx_base)
/* Output port configuration. */
{
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamPortDefinition, ¶m);
param.format.video.eCompressionFormat = self->compression_format;
diff --git a/omx/gstomx_g711dec.c b/omx/gstomx_g711dec.c
index 40cd64b..bc2fb18 100644
--- a/omx/gstomx_g711dec.c
+++ b/omx/gstomx_g711dec.c
@@ -142,7 +142,7 @@ sink_setcaps (GstPad *pad,
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
if (strcmp (mode, "audio/x-alaw") == 0)
diff --git a/omx/gstomx_g711enc.c b/omx/gstomx_g711enc.c
index 16d58aa..ba8d297 100644
--- a/omx/gstomx_g711enc.c
+++ b/omx/gstomx_g711enc.c
@@ -152,7 +152,7 @@ sink_setcaps (GstPad *pad,
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
if (strcmp (mode, "audio/x-alaw") == 0)
diff --git a/omx/gstomx_g729enc.c b/omx/gstomx_g729enc.c
index b6c41f0..67f9b38 100644
--- a/omx/gstomx_g729enc.c
+++ b/omx/gstomx_g729enc.c
@@ -230,7 +230,7 @@ omx_setup (GstOmxBaseFilter *omx_base)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamAudioG729, ¶m);
param.bDTX = self->dtx;
diff --git a/omx/gstomx_h263enc.c b/omx/gstomx_h263enc.c
index 5f39029..2d2a1a0 100644
--- a/omx/gstomx_h263enc.c
+++ b/omx/gstomx_h263enc.c
@@ -97,7 +97,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base_filter->out_port->port_index;
OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, ¶m);
width = param.format.video.nFrameWidth;
diff --git a/omx/gstomx_h264enc.c b/omx/gstomx_h264enc.c
index 336ea9a..7d2c2b6 100644
--- a/omx/gstomx_h264enc.c
+++ b/omx/gstomx_h264enc.c
@@ -96,7 +96,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base_filter->out_port->port_index;
OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, ¶m);
width = param.format.video.nFrameWidth;
diff --git a/omx/gstomx_jpegenc.c b/omx/gstomx_jpegenc.c
index 2799521..63ff8fe 100644
--- a/omx/gstomx_jpegenc.c
+++ b/omx/gstomx_jpegenc.c
@@ -211,7 +211,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamPortDefinition, ¶m);
width = param.format.image.nFrameWidth;
@@ -294,7 +294,7 @@ sink_setcaps (GstPad *pad,
/* Input port configuration. */
{
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamPortDefinition, ¶m);
param.format.image.nFrameWidth = width;
@@ -329,7 +329,7 @@ omx_setup (GstOmxBaseFilter *omx_base)
/* Output port configuration. */
{
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamPortDefinition, ¶m);
param.format.image.eCompressionFormat = OMX_IMAGE_CodingJPEG;
@@ -347,7 +347,7 @@ omx_setup (GstOmxBaseFilter *omx_base)
param.nVersion.s.nVersionMinor = 1;
param.nQFactor = self->quality;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_SetParameter (gomx->omx_handle, OMX_IndexParamQFactor, ¶m);
}
diff --git a/omx/gstomx_mp2dec.c b/omx/gstomx_mp2dec.c
index f6c2568..6e78e5f 100644
--- a/omx/gstomx_mp2dec.c
+++ b/omx/gstomx_mp2dec.c
@@ -124,7 +124,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
rate = param.nSamplingRate;
diff --git a/omx/gstomx_mp3dec.c b/omx/gstomx_mp3dec.c
index 08f1896..3824a9d 100644
--- a/omx/gstomx_mp3dec.c
+++ b/omx/gstomx_mp3dec.c
@@ -124,7 +124,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
rate = param.nSamplingRate;
diff --git a/omx/gstomx_mpeg4enc.c b/omx/gstomx_mpeg4enc.c
index 7a91c1c..f365639 100644
--- a/omx/gstomx_mpeg4enc.c
+++ b/omx/gstomx_mpeg4enc.c
@@ -98,7 +98,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base_filter->out_port->port_index;
OMX_GetParameter (core->omx_handle, OMX_IndexParamPortDefinition, ¶m);
width = param.format.video.nFrameWidth;
diff --git a/omx/gstomx_videosink.c b/omx/gstomx_videosink.c
index 683ee4c..7c5849b 100644
--- a/omx/gstomx_videosink.c
+++ b/omx/gstomx_videosink.c
@@ -166,7 +166,7 @@ setcaps (GstBaseSink *gst_sink,
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 0;
+ param.nPortIndex = omx_base->in_port->port_index;
OMX_GetParameter (gomx->omx_handle, OMX_IndexParamPortDefinition, ¶m);
switch (color_format)
@@ -205,7 +205,7 @@ setcaps (GstBaseSink *gst_sink,
config.nVersion.s.nVersionMajor = 1;
config.nVersion.s.nVersionMinor = 1;
- config.nPortIndex = 0;
+ config.nPortIndex = omx_base->in_port->port_index;
OMX_GetConfig (gomx->omx_handle, OMX_IndexConfigCommonScale, &config);
config.nRotation = self->rotation;
@@ -221,7 +221,7 @@ setcaps (GstBaseSink *gst_sink,
config.nVersion.s.nVersionMajor = 1;
config.nVersion.s.nVersionMinor = 1;
- config.nPortIndex = 0;
+ config.nPortIndex = omx_base->in_port->port_index;
OMX_GetConfig (gomx->omx_handle, OMX_IndexConfigCommonScale, &config);
config.xWidth = self->x_scale;
diff --git a/omx/gstomx_volume.c b/omx/gstomx_volume.c
index cd23103..91e116e 100644
--- a/omx/gstomx_volume.c
+++ b/omx/gstomx_volume.c
@@ -126,7 +126,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
rate = param.nSamplingRate;
diff --git a/omx/gstomx_vorbisdec.c b/omx/gstomx_vorbisdec.c
index 2adad9b..aad896a 100644
--- a/omx/gstomx_vorbisdec.c
+++ b/omx/gstomx_vorbisdec.c
@@ -119,7 +119,7 @@ settings_changed_cb (GOmxCore *core)
param.nVersion.s.nVersionMajor = 1;
param.nVersion.s.nVersionMinor = 1;
- param.nPortIndex = 1;
+ param.nPortIndex = omx_base->out_port->port_index;
OMX_GetParameter (omx_base->gomx->omx_handle, OMX_IndexParamAudioPcm, ¶m);
rate = param.nSamplingRate;
--
1.6.3.2
|
|
From: Felipe C. <fel...@gm...> - 2010-03-23 22:15:00
|
On Thu, Mar 18, 2010 at 12:50 AM, Rob Clark <ro...@ti...> wrote: > This improves readability by keeping knowledge of numeric port-index value > in only one place (in the element constructor), and makes it easier to > later add derived classes with different port indexes (for example > GstOmxCamera subclassing GstOmxBaseSrc, but having GstOmxBaseSrc handling a > port whose index != 0 while derived class handles port index 0 and others). This patch doesn't have much merit alone, but I guess it will be useful later on. ACK. -- Felipe Contreras |
|
From: Felipe C. <fel...@gm...> - 2010-03-23 22:17:30
|
On Thu, Mar 18, 2010 at 12:50 AM, Rob Clark <ro...@ti...> wrote:
> These apply on top of the last patchset ('rebased boilerplate reduction
> macros')
>
> Rob Clark (3):
> Construct GOmxPort objects in element constructor
> Simplify g_omx_port_setup()
> Don't hard-code port indexes
I'll apply these ASAP. But maybe I'll delay the last one. Thanks.
--
Felipe Contreras
|