diff options
Diffstat (limited to 'make/stub_includes/openmax/NVOMX_ComponentBase.h')
-rwxr-xr-x | make/stub_includes/openmax/NVOMX_ComponentBase.h | 342 |
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 +/** @} */ + |