summaryrefslogtreecommitdiffstats
path: root/make/stub_includes/openmax/NVOMX_ComponentBase.h
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2009-06-15 22:57:38 +0000
committerKenneth Russel <[email protected]>2009-06-15 22:57:38 +0000
commita959c53b7ac91e489bf0959391e892790b9ff248 (patch)
tree4664742a4f9f6daa694364292e376ad2e6ee97d1 /make/stub_includes/openmax/NVOMX_ComponentBase.h
parent506b634b780dcd23aa61015c2ceba3e687196abf (diff)
Copied JOGL_2_SANDBOX r1957 on to trunk; JOGL_2_SANDBOX branch is now closed
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@1959 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'make/stub_includes/openmax/NVOMX_ComponentBase.h')
-rwxr-xr-xmake/stub_includes/openmax/NVOMX_ComponentBase.h342
1 files changed, 342 insertions, 0 deletions
diff --git a/make/stub_includes/openmax/NVOMX_ComponentBase.h b/make/stub_includes/openmax/NVOMX_ComponentBase.h
new file mode 100755
index 000000000..00d1d1217
--- /dev/null
+++ b/make/stub_includes/openmax/NVOMX_ComponentBase.h
@@ -0,0 +1,342 @@
+/* Copyright (c) 2007 NVIDIA Corporation. All rights reserved.
+ *
+ * NVIDIA Corporation and its licensors retain all intellectual property
+ * and proprietary rights in and to this software, related documentation
+ * and any modifications thereto. Any use, reproduction, disclosure or
+ * distribution of this software and related documentation without an
+ * express license agreement from NVIDIA Corporation is strictly prohibited.
+ */
+
+/**
+ * @defgroup nv_omx_il_comp_base NVIDIA OMX Component Base Interface
+ *
+ * This is the NVIDIA OMX component base interface. See also \link samp_impl Sample
+ * Implementations\endlink in this document.
+ *
+ * @ingroup nv_omx_il_core
+ * @{
+ */
+
+#ifndef _NVOMX_ComponentBase_h_
+#define _NVOMX_ComponentBase_h_
+
+#include <OMX_Core.h>
+#include <OMX_Component.h>
+
+#define NVOMX_COMPONENT_MAX_PORTS 8 /** Max number of ports NVOMX_Component may have. */
+
+/**
+ Defines a simple port abstraction used in NVOMX_Component.
+ */
+typedef struct NVOMX_Port
+{
+ OMX_PARAM_PORTDEFINITIONTYPE *pPortDef; /**< Holds a pointer to the OMX port definition
+ for this port */
+ OMX_AUDIO_PARAM_PCMMODETYPE *pPCMMode; /**< Holds a pointer to the PCM description of this component, if pertinent. */
+ OMX_BUFFERHEADERTYPE *pCurrentBufferHdr; /**< Holds a pointer to the current
+ buffer on this port, if any. */
+} NVOMX_Port;
+
+/**
+ Defines a simple OMX component template that abstracts most of the
+ complexity away from the user.
+
+ To use:
+ -# Call NVOMX_CreateComponent() from the OMX component's init functions to create this
+ structure.
+ -# Call NVOMX_AddRole() to set what OMX roles this component will fill.
+ -# Call NVOMX_InitPort() once for each port on this component to setup the ports.
+ -# Fill in the function pointers in the NVOMX_Component structure as
+ appropriate -- at a minimum _NVOMX_Component::WorkerFunction and
+ _NVOMX_Component::DeInit must point to valid functions.
+ */
+typedef struct _NVOMX_Component NVOMX_Component;
+/**
+ Defines a simple OMX component.
+ */
+struct _NVOMX_Component
+{
+ OMX_PTR pBase; /**< Internal pointer, do not touch. */
+
+ OMX_U32 nPorts; /**< Holds the number of valid ports for this component. */
+ NVOMX_Port pPorts[NVOMX_COMPONENT_MAX_PORTS]; /**< Holds an array of port structures
+ for this component. */
+
+ OMX_PTR pComponentData; /**< An opaque pointer to any data this component desires
+ to keep track of. */
+
+ /**
+ Frees any remaining memory/resources
+ allocated by the component.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @retval OMX_ERRORTYPE
+ This generally should not have an error, but should return as appropriate.
+ */
+ OMX_ERRORTYPE (*DeInit)(NVOMX_Component *pComp);
+
+ /**
+ Called whenever an OMX_GetParameter has been done on the
+ component.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] nIndex
+ Specifies what type of configuration this is.
+ @param [inout] pComponentParameterStructure
+ Any data associated with this parameter call.
+ @param [out] bHandled
+ OMX_TRUE if this call was processed, otherwise OMX_FALSE.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+ OMX_ERRORTYPE (*GetParameter)(NVOMX_Component *pComp,
+ OMX_INDEXTYPE nParamIndex,
+ OMX_PTR pComponentParameterStructure,
+ OMX_BOOL *bHandled);
+
+ /**
+ Called whenever an OMX_SetParameter has been done on the
+ component.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] nIndex
+ Specifies what type of configuration this is.
+ @param [in] pComponentParameterStructure
+ Any data associated with this parameter call.
+ @param [out] bHandled
+ OMX_TRUE if this call was processed, otherwise OMX_FALSE.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+ OMX_ERRORTYPE (*SetParameter)(NVOMX_Component *pComp,
+ OMX_INDEXTYPE nIndex,
+ OMX_PTR pComponentParameterStructure,
+ OMX_BOOL *bHandled);
+
+ /**
+ Called whenever an OMX_GetConfig has been done on the component.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] nIndex
+ Specifies what type of configuration this is.
+ @param [inout] pComponentConfigStructure
+ Any data associated with this config call.
+ @param [out] bHandled
+ OMX_TRUE if this call was processed, otherwise OMX_FALSE.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+ OMX_ERRORTYPE (*GetConfig)(NVOMX_Component *pComp,
+ OMX_INDEXTYPE nIndex,
+ OMX_PTR pComponentConfigStructure,
+ OMX_BOOL *bHandled);
+
+ /**
+ Called whenever an OMX_SetConfig has been done on the component.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] nIndex
+ Specifies what type of configuration this is.
+ @param [in] pComponentConfigStructure
+ Any data associated with this config call.
+ @param [out] bHandled
+ OMX_TRUE if this call was processed, otherwise OMX_FALSE.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+ OMX_ERRORTYPE (*SetConfig)(NVOMX_Component *pComp,
+ OMX_INDEXTYPE nIndex,
+ OMX_PTR pComponentConfigStructure,
+ OMX_BOOL *bHandled);
+
+ /**
+ Called whenever all ports of this component have a
+ valid buffer and there needs to be work done to process them.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [out] pbMoreWork
+ OMX_TRUE if there is still more work to be done on a given
+ input buffer.
+ @retval OMX_ERRORTYPE
+ This generally should not fail, but returns an appropriate error type.
+ */
+ OMX_ERRORTYPE (*WorkerFunction)(NVOMX_Component *pComp,
+ OMX_BOOL *pbMoreWork);
+
+ /**
+ Called on the transition to OMX_StateIdle (from Loaded).
+ Allocates/acquires any resources in this function.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @retval OMX_ERRORTYPE
+ This generally should not fail, but returns an appropriate error type.
+ @retval OMX_ErrorNotReady
+ If OMX_ErrorNotReady is returned, the component core will retry the
+ transtion periodically until it succeeds. If any other error than
+ OMX_ErrorNone is returned, the error will be sent back to the component.
+ */
+ OMX_ERRORTYPE (*AcquireResources)(NVOMX_Component *pComp);
+
+ /**
+ Called when this component needs to release its hold
+ on any resources acquired by _NVOMX_Component::AcquireResources.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @retval OMX_ERRORTYPE
+ This generally should not fail, but returns an appropriate error type.
+ */
+ OMX_ERRORTYPE (*ReleaseResources)(NVOMX_Component *pComp);
+
+};
+
+/**
+ Creates an NVOMX_Component.
+
+ @param [in] hComponent
+ A pointer to the OMX handle passed into the component's init function.
+ @param [in] nPorts
+ Specifies how many ports this component will have.
+ @param [in] name
+ The name of this component, must be unique
+ @param [out] ppComp
+ A pointer to the created NVOMX_Component; use this for calling any other
+ NVOMX_Component functions.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+OMX_API OMX_ERRORTYPE OMX_APIENTRY NVOMX_CreateComponent(
+ OMX_HANDLETYPE hComponent,
+ OMX_U32 nPorts,
+ OMX_STRING name,
+ NVOMX_Component **ppComp);
+
+/**
+ Adds a role name to this component.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] roleName
+ A pointer to a static char string with the role name.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+OMX_API OMX_ERRORTYPE OMX_APIENTRY NVOMX_AddRole(
+ NVOMX_Component *pComp,
+ OMX_STRING roleName);
+
+/**
+ Registers an index extension with this component.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] indexName
+ A pointer to a static char string with the role name.
+ @param [in] indexType
+ The index to register
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+OMX_API OMX_ERRORTYPE OMX_APIENTRY NVOMX_AddExtensionIndex(
+ NVOMX_Component *pComp,
+ OMX_STRING indexName,
+ OMX_INDEXTYPE indexType);
+
+/**
+ Creates a port structure.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] nPort
+ Specifies the port number to create.
+ @param [in] eDir
+ Specifies the direction (input/output) of the port.
+ @param [in] nBufferCount
+ Specifies the minimum number of buffers to create on this port.
+ @param [in] nBufferSize
+ Specifies the minimum buffer size to create.
+ @param [in] eDomain
+ Specifies what port type (other, image, video, audio) this port will be.
+ @param [in] pFormat
+ A pointer to the format type of the port. May be one of type
+ OMX_OTHER_FORMATTYPE, OMX_AUDIO_CODINGTYPE, OMX_VIDEO_CODINGTYPE, or
+ OMX_IMAGE_CODINGTYPE.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+OMX_API OMX_ERRORTYPE OMX_APIENTRY NVOMX_InitPort(
+ NVOMX_Component *pComp,
+ OMX_U32 nPort,
+ OMX_DIRTYPE eDir,
+ OMX_U32 nBufferCount,
+ OMX_U32 nBufferSize,
+ OMX_PORTDOMAINTYPE eDomain,
+ OMX_PTR pFormat);
+
+/**
+ Copies any buffer metadata (flags, marks, etc.) from one port to another.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] nSourcePort
+ Specifies the source port from which to copy metadata.
+ @param [in] nDestPort
+ Specifies the port to which to copy metadata.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+OMX_API OMX_ERRORTYPE OMX_APIENTRY NVOMX_CopyBufferMetadata(
+ NVOMX_Component *pComp,
+ OMX_U32 nSourcePort,
+ OMX_U32 nDestPort);
+
+/**
+ Gets an empty buffer to an input port.
+ The buffer will be queued for delivery either to the tunneled component
+ associated with the given port, or back to the IL client via the
+ EmptyBufferDone callback.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] nPort
+ Specifies the input port in which to return the buffer.
+ @param [in] pBuffer
+ Specifies the buffer to return to the input port.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+OMX_API OMX_ERRORTYPE OMX_APIENTRY NVOMX_ReleaseEmptyBuffer(
+ NVOMX_Component *pComp,
+ OMX_U32 nPort,
+ OMX_BUFFERHEADERTYPE *pBuffer);
+
+/**
+ Delivers a full buffer to an output port.
+ The buffer will be queued for delivery either to the tunneled component
+ associated with the given port, or back to the IL client via the
+ FillBufferDone callback.
+
+ @param [in] pComp
+ A pointer to the NVOMX_Component structure.
+ @param [in] nPort
+ Specifies the output port in which to deliver the buffer.
+ @param [in] pBuffer
+ Specifies the buffer to deliver to the output port.
+ @retval OMX_ERRORTYPE
+ Returns an appropriate error.
+ */
+OMX_API OMX_ERRORTYPE OMX_APIENTRY NVOMX_DeliverFullBuffer(
+ NVOMX_Component *pComp,
+ OMX_U32 nPort,
+ OMX_BUFFERHEADERTYPE *pBuffer);
+
+#endif
+/** @} */
+