blob: 9addb90ca0c645b39909023484309f340ed5e9dd [file] [log] [blame]
/*--------------------------------------------------------------------------
Copyright (c) 2011 The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of The Linux Foundation nor
the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------*/
#ifndef __H_QOMX_COREEXTENSIONS_H__
#define __H_QOMX_COREEXTENSIONS_H__
/*========================================================================
INCLUDE FILES FOR MODULE
========================================================================== */
#include <OMX_Core.h>
/*========================================================================
DEFINITIONS AND DECLARATIONS
========================================================================== */
#if defined( __cplusplus )
extern "C"
{
#endif /* end of macro __cplusplus */
/**
* Qualcom vendor extensions.
*/
#define OMX_QCOM_INDEX_PARAM_INDEXEXTRADATA "OMX.QCOM.index.param.IndexExtraData" /**< reference: QOMX_INDEXEXTRADATATYPE */
#define OMX_QCOM_INDEX_PARAM_HELDBUFFERCOUNT "OMX.QCOM.index.param.HeldBufferCount" /**< reference: QOMX_HELDBUFFERCOUNTTYPE */
/**
* Buffer header nFlags field extension.
*
* The source of a stream sets the TIMESTAMPINVALID flag to
* indicate that the buffer header nTimeStamp field does not
* hold valid timestamp information. The component that updates
* the nTimeStamp field to reflect a valid timestamp shall clear
* this flag.
*/
#define QOMX_BUFFERFLAG_TIMESTAMPINVALID 0x80000000
/**
* Buffer header nFlags field extension.
*
* The READONLY flag is set when the component emitting the
* buffer on an output port identifies the buffer's contents to
* be read-only. The IL client or input port that receives a
* filled read-only buffer cannot alter the contents of the
* buffer. This flag can be cleared by the component when the
* emptied buffer is returned to it.
*/
#define QOMX_BUFFERFLAG_READONLY 0x40000000
/**
* Buffer header nFlags field extension.
*
* The ENDOFSUBFRAME flag is an optional flag that is set by an
* output port when the last byte that a buffer payload contains
* is an end-of-subframe. Any component that implements setting
* the ENDOFSUBFRAME flag on an output port shall set this flag
* for every buffer sent from the output port containing an
* end-of-subframe.
*
* A subframe is defined by the next level of natural
* partitioning in a logical unit for a given format. For
* example, a subframe in an H.264 access unit is defined as the
* "network abstraction layer" unit, or NAL unit.
*/
#define QOMX_BUFFERFLAG_ENDOFSUBFRAME 0x20000000
/**
* A component sends this error to the IL client (via the EventHandler callback)
* in the event that application of a config or parameter has failed some time
* after the return of OMX_SetConfig or OMX_SetParameter. This may happen when a
* component transitions between states and discovers some incompatibility
* between multiple settings. Configuration indicies sent via extra data may also
* fail when set to a down stream component. The index that failed will be
* included as the nData2 parameter of the EventHandler callback.
*/
#define QOMX_ErrorAsyncIndexFailed (OMX_ErrorVendorStartUnused+1)
/* In some scenarios there may be a possibilty to run out of the storage space
* and components may want to notify this error to IL client to take appropriate
* action by the IL client.
*
* For example, In recording scenario, MUX component can know the available
* space in the recording media and can compute peridically to accommodate the
* meta data before we reach to a stage where we end up no space to write even
* the meta data. When the space limit reached in recording media, MUX component
* would like to notify the IL client with QOMX_ErrorSpaceLimitReached.
* After this error all the buffers that are returned will have nFilledLen
* unchanges i.e not consumed.
*/
#define QOMX_ErrorStorageLimitReached (OMX_ErrorVendorStartUnused + 2)
/**
* This structure is used to enable/disable the generation or
* consumption of the QOMX_ExtraDataOMXIndex extra data type for
* the specified OpenMax index.
*
* STRUCT MEMBERS:
* nSize : Size of the structure in bytes
* nVersion : OMX specification version info
* nPortIndex : Port that this structure applies to
* bEnabled : Enable/Disable the extra data processing
* nIndex : The index associated with the extra data
*/
typedef struct QOMX_INDEXEXTRADATATYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bEnabled;
OMX_INDEXTYPE nIndex;
} QOMX_INDEXEXTRADATATYPE;
/**
* This structure is used to indicate the maximum number of buffers
* that a port will hold during data flow.
*
* STRUCT MEMBERS:
* nSize : Size of the structure in bytes
* nVersion : OMX specification version info
* nPortIndex : Port that this structure applies to
* nHeldBufferCount : Read-only, maximum number of buffers that will be held
*/
typedef struct QOMX_HELDBUFFERCOUNTTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nHeldBufferCount;
} QOMX_HELDBUFFERCOUNTTYPE;
#if defined( __cplusplus )
}
#endif /* end of macro __cplusplus */
#endif /* end of macro __H_QOMX_COREEXTENSIONS_H__ */