Home | History | Annotate | Download | only in inc
      1 /*--------------------------------------------------------------------------
      2 Copyright (c) 2011 Code Aurora Forum. All rights reserved.
      3 
      4 Redistribution and use in source and binary forms, with or without
      5 modification, are permitted provided that the following conditions are met:
      6     * Redistributions of source code must retain the above copyright
      7       notice, this list of conditions and the following disclaimer.
      8     * Redistributions in binary form must reproduce the above copyright
      9       notice, this list of conditions and the following disclaimer in the
     10       documentation and/or other materials provided with the distribution.
     11     * Neither the name of Code Aurora nor
     12       the names of its contributors may be used to endorse or promote
     13       products derived from this software without specific prior written
     14       permission.
     15 
     16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     17 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     18 IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     19 NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     20 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     21 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     22 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     23 OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     24 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     25 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
     26 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 --------------------------------------------------------------------------*/
     28 
     29 #ifndef __H_QOMX_COREEXTENSIONS_H__
     30 #define __H_QOMX_COREEXTENSIONS_H__
     31 
     32 
     33 
     34 /*========================================================================
     35 
     36                      INCLUDE FILES FOR MODULE
     37 
     38 ========================================================================== */
     39 #include <OMX_Core.h>
     40 
     41 /*========================================================================
     42 
     43                       DEFINITIONS AND DECLARATIONS
     44 
     45 ========================================================================== */
     46 
     47 #if defined( __cplusplus )
     48 extern "C"
     49 {
     50 #endif /* end of macro __cplusplus */
     51 
     52 /**
     53  * Qualcom vendor extensions.
     54  */
     55 #define OMX_QCOM_INDEX_PARAM_INDEXEXTRADATA "OMX.QCOM.index.param.IndexExtraData" /**< reference: QOMX_INDEXEXTRADATATYPE */
     56 #define OMX_QCOM_INDEX_PARAM_HELDBUFFERCOUNT "OMX.QCOM.index.param.HeldBufferCount" /**< reference: QOMX_HELDBUFFERCOUNTTYPE */
     57 
     58 /**
     59  * Buffer header nFlags field extension.
     60  *
     61  * The source of a stream sets the TIMESTAMPINVALID flag to
     62  * indicate that the buffer header nTimeStamp field does not
     63  * hold valid timestamp information. The component that updates
     64  * the nTimeStamp field to reflect a valid timestamp shall clear
     65  * this flag.
     66  */
     67 #define QOMX_BUFFERFLAG_TIMESTAMPINVALID 0x80000000
     68 
     69 /**
     70  * Buffer header nFlags field extension.
     71  *
     72  * The READONLY flag is set when the component emitting the
     73  * buffer on an output port identifies the buffer's contents to
     74  * be read-only. The IL client or input port that receives a
     75  * filled read-only buffer cannot alter the contents of the
     76  * buffer. This flag can be cleared by the component when the
     77  * emptied buffer is returned to it.
     78  */
     79 #define QOMX_BUFFERFLAG_READONLY         0x40000000
     80 
     81 /**
     82  * Buffer header nFlags field extension.
     83  *
     84  * The ENDOFSUBFRAME flag is an optional flag that is set by an
     85  * output port when the last byte that a buffer payload contains
     86  * is an end-of-subframe. Any component that implements setting
     87  * the ENDOFSUBFRAME flag on an output port shall set this flag
     88  * for every buffer sent from the output port containing an
     89  * end-of-subframe.
     90  *
     91  * A subframe is defined by the next level of natural
     92  * partitioning in a logical unit for a given format. For
     93  * example, a subframe in an H.264 access unit is defined as the
     94  * "network abstraction layer" unit, or NAL unit.
     95  */
     96 #define QOMX_BUFFERFLAG_ENDOFSUBFRAME    0x20000000
     97 
     98 /**
     99  * A component sends this error to the IL client (via the EventHandler callback)
    100  * in the event that application of a config or parameter has failed some time
    101  * after the return of OMX_SetConfig or OMX_SetParameter. This may happen when a
    102  * component transitions between states and discovers some incompatibility
    103  * between multiple settings. Configuration indicies sent via extra data may also
    104  * fail when set to a down stream component. The index that failed will be
    105  * included as the nData2 parameter of the EventHandler callback.
    106  */
    107 #define QOMX_ErrorAsyncIndexFailed (OMX_ErrorVendorStartUnused+1)
    108 
    109 /* In some scenarios there may be a possibilty to run out of the storage space
    110  * and components may want to notify this error to IL client to take appropriate
    111  * action by the IL client.
    112  *
    113  * For example, In recording scenario, MUX component can know the available
    114  * space in the recording media and can compute peridically to accommodate the
    115  * meta data before we reach to a stage where we end up no space to write even
    116  * the meta data. When the space limit reached in recording media, MUX component
    117  * would like to notify the IL client with  QOMX_ErrorSpaceLimitReached.
    118  * After this error all the buffers that are returned will have nFilledLen
    119  * unchanges i.e not consumed.
    120  */
    121 #define QOMX_ErrorStorageLimitReached (OMX_ErrorVendorStartUnused + 2)
    122 
    123 /**
    124  * This structure is used to enable/disable the generation or
    125  * consumption of the QOMX_ExtraDataOMXIndex extra data type for
    126  * the specified OpenMax index.
    127  *
    128  * STRUCT MEMBERS:
    129  *  nSize      : Size of the structure in bytes
    130  *  nVersion   : OMX specification version info
    131  *  nPortIndex : Port that this structure applies to
    132  *  bEnabled   : Enable/Disable the extra data processing
    133  *  nIndex     : The index associated with the extra data
    134  */
    135 typedef struct QOMX_INDEXEXTRADATATYPE {
    136     OMX_U32 nSize;
    137     OMX_VERSIONTYPE nVersion;
    138     OMX_U32 nPortIndex;
    139     OMX_BOOL bEnabled;
    140     OMX_INDEXTYPE nIndex;
    141 } QOMX_INDEXEXTRADATATYPE;
    142 
    143 /**
    144  * This structure is used to indicate the maximum number of buffers
    145  * that a port will hold during data flow.
    146  *
    147  * STRUCT MEMBERS:
    148  *  nSize              : Size of the structure in bytes
    149  *  nVersion           : OMX specification version info
    150  *  nPortIndex         : Port that this structure applies to
    151  *  nHeldBufferCount   : Read-only, maximum number of buffers that will be held
    152  */
    153 typedef struct QOMX_HELDBUFFERCOUNTTYPE {
    154     OMX_U32 nSize;
    155     OMX_VERSIONTYPE nVersion;
    156     OMX_U32 nPortIndex;
    157     OMX_U32 nHeldBufferCount;
    158 } QOMX_HELDBUFFERCOUNTTYPE;
    159 
    160 #if defined( __cplusplus )
    161 }
    162 #endif /* end of macro __cplusplus */
    163 
    164 #endif /* end of macro __H_QOMX_COREEXTENSIONS_H__ */
    165