summaryrefslogtreecommitdiff
path: root/tests/standalone/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/standalone/core.c')
-rw-r--r--tests/standalone/core.c482
1 files changed, 232 insertions, 250 deletions
diff --git a/tests/standalone/core.c b/tests/standalone/core.c
index c145524..36e11d7 100644
--- a/tests/standalone/core.c
+++ b/tests/standalone/core.c
@@ -24,8 +24,8 @@
#include <glib.h>
-#include <stdlib.h> /* For calloc, free */
-#include <string.h> /* For memcpy */
+#include <stdlib.h> /* For calloc, free */
+#include <string.h> /* For memcpy */
#include "async_queue.h"
@@ -34,18 +34,17 @@ static void *foo_thread (void *cb_data);
OMX_ERRORTYPE
OMX_Init (void)
{
- if (!g_thread_supported ())
- {
- g_thread_init (NULL);
- }
+ if (!g_thread_supported ()) {
+ g_thread_init (NULL);
+ }
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}
OMX_ERRORTYPE
OMX_Deinit (void)
{
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}
typedef struct CompPrivate CompPrivate;
@@ -53,349 +52,332 @@ typedef struct CompPrivatePort CompPrivatePort;
struct CompPrivate
{
- OMX_STATETYPE state;
- OMX_CALLBACKTYPE *callbacks;
- OMX_PTR app_data;
- CompPrivatePort *ports;
- gboolean done;
- GMutex *flush_mutex;
+ OMX_STATETYPE state;
+ OMX_CALLBACKTYPE *callbacks;
+ OMX_PTR app_data;
+ CompPrivatePort *ports;
+ gboolean done;
+ GMutex *flush_mutex;
};
struct CompPrivatePort
{
- OMX_PARAM_PORTDEFINITIONTYPE port_def;
- AsyncQueue *queue;
+ OMX_PARAM_PORTDEFINITIONTYPE port_def;
+ AsyncQueue *queue;
};
static OMX_ERRORTYPE
-comp_GetState (OMX_HANDLETYPE handle,
- OMX_STATETYPE *state)
+comp_GetState (OMX_HANDLETYPE handle, OMX_STATETYPE * state)
{
- OMX_COMPONENTTYPE *comp;
- CompPrivate *private;
+ OMX_COMPONENTTYPE *comp;
+ CompPrivate *private;
- /* printf ("GetState\n"); */
+ /* printf ("GetState\n"); */
- comp = handle;
- private = comp->pComponentPrivate;
+ comp = handle;
+ private = comp->pComponentPrivate;
- *state = private->state;
+ *state = private->state;
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}
static OMX_ERRORTYPE
-comp_GetParameter (OMX_HANDLETYPE handle,
- OMX_INDEXTYPE index,
- OMX_PTR param)
+comp_GetParameter (OMX_HANDLETYPE handle, OMX_INDEXTYPE index, OMX_PTR param)
{
- OMX_COMPONENTTYPE *comp;
- CompPrivate *private;
+ OMX_COMPONENTTYPE *comp;
+ CompPrivate *private;
- /* printf ("GetParameter\n"); */
+ /* printf ("GetParameter\n"); */
- comp = handle;
- private = comp->pComponentPrivate;
+ comp = handle;
+ private = comp->pComponentPrivate;
- switch (index)
+ switch (index) {
+ case OMX_IndexParamPortDefinition:
{
- case OMX_IndexParamPortDefinition:
- {
- OMX_PARAM_PORTDEFINITIONTYPE *port_def;
- port_def = param;
- memcpy (port_def, &private->ports[port_def->nPortIndex].port_def, port_def->nSize);
- break;
- }
- default:
- break;
+ OMX_PARAM_PORTDEFINITIONTYPE *port_def;
+ port_def = param;
+ memcpy (port_def, &private->ports[port_def->nPortIndex].port_def,
+ port_def->nSize);
+ break;
}
+ default:
+ break;
+ }
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}
static OMX_ERRORTYPE
-comp_SetParameter (OMX_HANDLETYPE handle,
- OMX_INDEXTYPE index,
- OMX_PTR param)
+comp_SetParameter (OMX_HANDLETYPE handle, OMX_INDEXTYPE index, OMX_PTR param)
{
- OMX_COMPONENTTYPE *comp;
- CompPrivate *private;
+ OMX_COMPONENTTYPE *comp;
+ CompPrivate *private;
- /* printf ("SetParameter\n"); */
+ /* printf ("SetParameter\n"); */
- comp = handle;
- private = comp->pComponentPrivate;
+ comp = handle;
+ private = comp->pComponentPrivate;
- switch (index)
+ switch (index) {
+ case OMX_IndexParamPortDefinition:
{
- case OMX_IndexParamPortDefinition:
- {
- OMX_PARAM_PORTDEFINITIONTYPE *port_def;
- port_def = param;
- memcpy (&private->ports[port_def->nPortIndex].port_def, port_def, port_def->nSize);
- break;
- }
- default:
- break;
+ OMX_PARAM_PORTDEFINITIONTYPE *port_def;
+ port_def = param;
+ memcpy (&private->ports[port_def->nPortIndex].port_def, port_def,
+ port_def->nSize);
+ break;
}
+ default:
+ break;
+ }
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}
static OMX_ERRORTYPE
comp_SendCommand (OMX_HANDLETYPE handle,
- OMX_COMMANDTYPE command,
- OMX_U32 param_1,
- OMX_PTR data)
+ OMX_COMMANDTYPE command, OMX_U32 param_1, OMX_PTR data)
{
- OMX_COMPONENTTYPE *comp;
- CompPrivate *private;
+ OMX_COMPONENTTYPE *comp;
+ CompPrivate *private;
- /* printf ("SendCommand\n"); */
+ /* printf ("SendCommand\n"); */
- comp = handle;
- private = comp->pComponentPrivate;
+ comp = handle;
+ private = comp->pComponentPrivate;
- switch (command)
+ switch (command) {
+ case OMX_CommandStateSet:
{
- case OMX_CommandStateSet:
- {
- if (private->state == OMX_StateLoaded && param_1 == OMX_StateIdle)
- {
- g_thread_create (foo_thread, comp, TRUE, NULL);
- }
- private->state = param_1;
- private->callbacks->EventHandler (handle,
- private->app_data, OMX_EventCmdComplete,
- OMX_CommandStateSet, private->state, data);
- }
- break;
- case OMX_CommandFlush:
- {
- g_mutex_lock (private->flush_mutex);
- {
- OMX_BUFFERHEADERTYPE *buffer;
-
- while ((buffer = async_queue_pop_forced (private->ports[0].queue)))
- {
- private->callbacks->EmptyBufferDone (comp,
- private->app_data, buffer);
- }
-
- while ((buffer = async_queue_pop_forced (private->ports[1].queue)))
- {
- private->callbacks->FillBufferDone (comp,
- private->app_data, buffer);
- }
- }
- g_mutex_unlock (private->flush_mutex);
-
- private->callbacks->EventHandler (handle,
- private->app_data, OMX_EventCmdComplete,
- OMX_CommandFlush, param_1, data);
- }
- break;
- default:
- /* printf ("command: %d\n", command); */
- break;
+ if (private->state == OMX_StateLoaded && param_1 == OMX_StateIdle) {
+ g_thread_create (foo_thread, comp, TRUE, NULL);
+ }
+ private->state = param_1;
+ private->callbacks->EventHandler (handle,
+ private->app_data, OMX_EventCmdComplete,
+ OMX_CommandStateSet, private->state, data);
}
+ break;
+ case OMX_CommandFlush:
+ {
+ g_mutex_lock (private->flush_mutex);
+ {
+ OMX_BUFFERHEADERTYPE *buffer;
- return OMX_ErrorNone;
-}
-
-static OMX_ERRORTYPE
-comp_UseBuffer (OMX_HANDLETYPE handle,
- OMX_BUFFERHEADERTYPE **buffer_header,
- OMX_U32 index,
- OMX_PTR data,
- OMX_U32 size,
- OMX_U8 *buffer)
-{
- OMX_BUFFERHEADERTYPE *new;
+ while ((buffer = async_queue_pop_forced (private->ports[0].queue))) {
+ private->callbacks->EmptyBufferDone (comp, private->app_data, buffer);
+ }
- new = calloc (1, sizeof (OMX_BUFFERHEADERTYPE));
- new->nSize = sizeof (OMX_BUFFERHEADERTYPE);
- new->nVersion.nVersion = 1;
- new->pBuffer = buffer;
- new->nAllocLen = size;
+ while ((buffer = async_queue_pop_forced (private->ports[1].queue))) {
+ private->callbacks->FillBufferDone (comp, private->app_data, buffer);
+ }
+ }
+ g_mutex_unlock (private->flush_mutex);
- switch (index)
- {
- case 0: new->nInputPortIndex = 0; break;
- case 1: new->nOutputPortIndex = 1; break;
- default: break;
+ private->callbacks->EventHandler (handle,
+ private->app_data, OMX_EventCmdComplete,
+ OMX_CommandFlush, param_1, data);
}
+ break;
+ default:
+ /* printf ("command: %d\n", command); */
+ break;
+ }
- *buffer_header = new;
+ return OMX_ErrorNone;
+}
- return OMX_ErrorNone;
+static OMX_ERRORTYPE
+comp_UseBuffer (OMX_HANDLETYPE handle,
+ OMX_BUFFERHEADERTYPE ** buffer_header,
+ OMX_U32 index, OMX_PTR data, OMX_U32 size, OMX_U8 * buffer)
+{
+ OMX_BUFFERHEADERTYPE *new;
+
+ new = calloc (1, sizeof (OMX_BUFFERHEADERTYPE));
+ new->nSize = sizeof (OMX_BUFFERHEADERTYPE);
+ new->nVersion.nVersion = 1;
+ new->pBuffer = buffer;
+ new->nAllocLen = size;
+
+ switch (index) {
+ case 0:
+ new->nInputPortIndex = 0;
+ break;
+ case 1:
+ new->nOutputPortIndex = 1;
+ break;
+ default:
+ break;
+ }
+
+ *buffer_header = new;
+
+ return OMX_ErrorNone;
}
static OMX_ERRORTYPE
comp_FreeBuffer (OMX_HANDLETYPE handle,
- OMX_U32 index,
- OMX_BUFFERHEADERTYPE *buffer_header)
+ OMX_U32 index, OMX_BUFFERHEADERTYPE * buffer_header)
{
- free (buffer_header);
+ free (buffer_header);
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}
static gpointer
foo_thread (gpointer cb_data)
{
- OMX_COMPONENTTYPE *comp;
- CompPrivate *private;
+ OMX_COMPONENTTYPE *comp;
+ CompPrivate *private;
- comp = cb_data;
- private = comp->pComponentPrivate;
+ comp = cb_data;
+ private = comp->pComponentPrivate;
- while (!private->done)
- {
- OMX_BUFFERHEADERTYPE *in_buffer;
- OMX_BUFFERHEADERTYPE *out_buffer;
-
- in_buffer = async_queue_pop (private->ports[0].queue);
- if (!in_buffer) continue;
-
- out_buffer = async_queue_pop (private->ports[1].queue);
- if (!out_buffer) continue;
-
- /* process buffers */
- {
- unsigned long size;
- size = MIN (in_buffer->nFilledLen, out_buffer->nAllocLen);
- memcpy (out_buffer->pBuffer, in_buffer->pBuffer, size);
- out_buffer->nFilledLen = size;
- in_buffer->nFilledLen -= size;
- out_buffer->nTimeStamp = in_buffer->nTimeStamp;
- out_buffer->nFlags = in_buffer->nFlags;
- }
+ while (!private->done) {
+ OMX_BUFFERHEADERTYPE *in_buffer;
+ OMX_BUFFERHEADERTYPE *out_buffer;
- g_mutex_lock (private->flush_mutex);
+ in_buffer = async_queue_pop (private->ports[0].queue);
+ if (!in_buffer)
+ continue;
- private->callbacks->FillBufferDone (comp,
- private->app_data, out_buffer);
- if (in_buffer->nFilledLen == 0)
- {
- private->callbacks->EmptyBufferDone (comp,
- private->app_data, in_buffer);
- }
+ out_buffer = async_queue_pop (private->ports[1].queue);
+ if (!out_buffer)
+ continue;
- g_mutex_unlock (private->flush_mutex);
+ /* process buffers */
+ {
+ unsigned long size;
+ size = MIN (in_buffer->nFilledLen, out_buffer->nAllocLen);
+ memcpy (out_buffer->pBuffer, in_buffer->pBuffer, size);
+ out_buffer->nFilledLen = size;
+ in_buffer->nFilledLen -= size;
+ out_buffer->nTimeStamp = in_buffer->nTimeStamp;
+ out_buffer->nFlags = in_buffer->nFlags;
}
- return NULL;
+ g_mutex_lock (private->flush_mutex);
+
+ private->callbacks->FillBufferDone (comp, private->app_data, out_buffer);
+ if (in_buffer->nFilledLen == 0) {
+ private->callbacks->EmptyBufferDone (comp, private->app_data, in_buffer);
+ }
+
+ g_mutex_unlock (private->flush_mutex);
+ }
+
+ return NULL;
}
static OMX_ERRORTYPE
comp_EmptyThisBuffer (OMX_HANDLETYPE handle,
- OMX_BUFFERHEADERTYPE *buffer_header)
+ OMX_BUFFERHEADERTYPE * buffer_header)
{
- OMX_COMPONENTTYPE *comp;
- CompPrivate *private;
+ OMX_COMPONENTTYPE *comp;
+ CompPrivate *private;
- /* printf ("EmptyThisBuffer\n"); */
+ /* printf ("EmptyThisBuffer\n"); */
- comp = handle;
- private = comp->pComponentPrivate;
+ comp = handle;
+ private = comp->pComponentPrivate;
- async_queue_push (private->ports[0].queue, buffer_header);
+ async_queue_push (private->ports[0].queue, buffer_header);
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}
static OMX_ERRORTYPE
comp_FillThisBuffer (OMX_HANDLETYPE handle,
- OMX_BUFFERHEADERTYPE *buffer_header)
+ OMX_BUFFERHEADERTYPE * buffer_header)
{
- OMX_COMPONENTTYPE *comp;
- CompPrivate *private;
+ OMX_COMPONENTTYPE *comp;
+ CompPrivate *private;
- /* printf ("FillThisBuffer\n"); */
+ /* printf ("FillThisBuffer\n"); */
- comp = handle;
- private = comp->pComponentPrivate;
+ comp = handle;
+ private = comp->pComponentPrivate;
- async_queue_push (private->ports[1].queue, buffer_header);
+ async_queue_push (private->ports[1].queue, buffer_header);
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}
OMX_ERRORTYPE
-OMX_GetHandle (OMX_HANDLETYPE *handle,
- OMX_STRING component_name,
- OMX_PTR data,
- OMX_CALLBACKTYPE *callbacks)
+OMX_GetHandle (OMX_HANDLETYPE * handle,
+ OMX_STRING component_name, OMX_PTR data, OMX_CALLBACKTYPE * callbacks)
{
- OMX_COMPONENTTYPE *comp;
+ OMX_COMPONENTTYPE *comp;
+
+ comp = calloc (1, sizeof (OMX_COMPONENTTYPE));
+ comp->nSize = sizeof (OMX_COMPONENTTYPE);
+ comp->nVersion.nVersion = 1;
+
+ comp->GetState = comp_GetState;
+ comp->GetParameter = comp_GetParameter;
+ comp->SetParameter = comp_SetParameter;
+ comp->SendCommand = comp_SendCommand;
+ comp->UseBuffer = comp_UseBuffer;
+ comp->FreeBuffer = comp_FreeBuffer;
+ comp->EmptyThisBuffer = comp_EmptyThisBuffer;
+ comp->FillThisBuffer = comp_FillThisBuffer;
+
+ {
+ CompPrivate *private;
- comp = calloc (1, sizeof (OMX_COMPONENTTYPE));
- comp->nSize = sizeof (OMX_COMPONENTTYPE);
- comp->nVersion.nVersion = 1;
+ private = calloc (1, sizeof (CompPrivate));
+ private->state = OMX_StateLoaded;
+ private->callbacks = callbacks;
+ private->app_data = data;
+ private->ports = calloc (2, sizeof (CompPrivatePort));
+ private->flush_mutex = g_mutex_new ();
- comp->GetState = comp_GetState;
- comp->GetParameter = comp_GetParameter;
- comp->SetParameter = comp_SetParameter;
- comp->SendCommand = comp_SendCommand;
- comp->UseBuffer = comp_UseBuffer;
- comp->FreeBuffer = comp_FreeBuffer;
- comp->EmptyThisBuffer = comp_EmptyThisBuffer;
- comp->FillThisBuffer = comp_FillThisBuffer;
+ private->ports[0].queue = async_queue_new ();
+ private->ports[1].queue = async_queue_new ();
{
- CompPrivate *private;
-
- private = calloc (1, sizeof (CompPrivate));
- private->state = OMX_StateLoaded;
- private->callbacks = callbacks;
- private->app_data = data;
- private->ports = calloc (2, sizeof (CompPrivatePort));
- private->flush_mutex = g_mutex_new ();
-
- private->ports[0].queue = async_queue_new ();
- private->ports[1].queue = async_queue_new ();
-
- {
- OMX_PARAM_PORTDEFINITIONTYPE *port_def;
-
- port_def = &private->ports[0].port_def;
- port_def->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
- port_def->nVersion.nVersion = 1;
- port_def->nPortIndex = 0;
- port_def->eDir = OMX_DirInput;
- port_def->nBufferCountActual = 1;
- port_def->nBufferCountMin = 1;
- port_def->nBufferSize = 0x1000;
- port_def->eDomain = OMX_PortDomainAudio;
-
- }
+ OMX_PARAM_PORTDEFINITIONTYPE *port_def;
+
+ port_def = &private->ports[0].port_def;
+ port_def->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
+ port_def->nVersion.nVersion = 1;
+ port_def->nPortIndex = 0;
+ port_def->eDir = OMX_DirInput;
+ port_def->nBufferCountActual = 1;
+ port_def->nBufferCountMin = 1;
+ port_def->nBufferSize = 0x1000;
+ port_def->eDomain = OMX_PortDomainAudio;
- {
- OMX_PARAM_PORTDEFINITIONTYPE *port_def;
-
- port_def = &private->ports[1].port_def;
- port_def->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
- port_def->nVersion.nVersion = 1;
- port_def->nPortIndex = 1;
- port_def->eDir = OMX_DirOutput;
- port_def->nBufferCountActual = 1;
- port_def->nBufferCountMin = 1;
- port_def->nBufferSize = 0x1000;
- port_def->eDomain = OMX_PortDomainAudio;
- }
+ }
- comp->pComponentPrivate = private;
+ {
+ OMX_PARAM_PORTDEFINITIONTYPE *port_def;
+
+ port_def = &private->ports[1].port_def;
+ port_def->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
+ port_def->nVersion.nVersion = 1;
+ port_def->nPortIndex = 1;
+ port_def->eDir = OMX_DirOutput;
+ port_def->nBufferCountActual = 1;
+ port_def->nBufferCountMin = 1;
+ port_def->nBufferSize = 0x1000;
+ port_def->eDomain = OMX_PortDomainAudio;
}
- *handle = comp;
+ comp->pComponentPrivate = private;
+ }
+
+ *handle = comp;
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}
OMX_ERRORTYPE
OMX_FreeHandle (OMX_HANDLETYPE handle)
{
/** @todo Free private structure? */
- return OMX_ErrorNone;
+ return OMX_ErrorNone;
}