Home | History | Annotate | Download | only in inc
      1 /*
      2  * Copyright (c) 2010, Texas Instruments Incorporated
      3  * All rights reserved.
      4  *
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions
      7  * are met:
      8  *
      9  * *  Redistributions of source code must retain the above copyright
     10  *    notice, this list of conditions and the following disclaimer.
     11  *
     12  * *  Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  *
     16  * *  Neither the name of Texas Instruments Incorporated nor the names of
     17  *    its contributors may be used to endorse or promote products derived
     18  *    from this software without specific prior written permission.
     19  *
     20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     31  */
     32 
     33 /**
     34  *  @file  omx_ti_common.h
     35  *
     36  *
     37  *  @path \OMAPSW_SysDev\multimedia\omx\khronos1_1\omx_core\inc
     38  *
     39  *  @rev 1.0
     40  */
     41 
     42 /*==============================================================
     43  *! Revision History
     44  *! ============================
     45  *! 20-Dec-2008 x0052661 (at) ti.com, initial version
     46  *================================================================*/
     47 
     48 #ifndef _OMX_TI_COMMON_H_
     49 #define _OMX_TI_COMMON_H_
     50 
     51 #ifdef __cplusplus
     52 extern "C" {
     53 #endif /* __cplusplus */
     54 
     55 /******************************************************************
     56  *   INCLUDE FILES
     57  ******************************************************************/
     58 #include <OMX_Core.h>
     59 
     60 /*******************************************************************
     61  * EXTERNAL REFERENCE NOTE: only use if not found in header file
     62  *******************************************************************/
     63 /*----------         function prototypes      ------------------- */
     64 /*----------         data declarations        ------------------- */
     65 /*******************************************************************
     66  * PUBLIC DECLARATIONS: defined here, used elsewhere
     67  *******************************************************************/
     68 /*----------         function prototypes      ------------------- */
     69 /*----------         data declarations        ------------------- */
     70 #define OMX_BUFFERHEADERFLAG_MODIFIED 0x00000100
     71 
     72 #define OMX_TI_BUFFERFLAG_READONLY 0x00000200
     73 
     74 /* TI extra data will be passed in the platform private structure rather than
     75  * appended at the end of the buffer. Adding a new custom flag to indicate
     76  * this.*/
     77 #define OMX_TI_BUFFERFLAG_DETACHEDEXTRADATA 0x00000400
     78 
     79 typedef struct OMX_CONFIG_CHANNELNAME {
     80 
     81 	OMX_U32 nSize; /**< Size of the structure in bytes */
     82 	OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
     83 	OMX_U32 nPortIndex; /**< Index of the port */
     84 	OMX_STRING cChannelName; /**< Channel name  */
     85 
     86 } OMX_CONFIG_CHANNELNAME;
     87 
     88 typedef struct OMX_TI_PLATFORMPRIVATE
     89 {
     90 	OMX_U32 nSize;
     91 	OMX_PTR pExtendedPlatformPrivate;
     92 	OMX_BOOL bReadViaCPU;
     93 	OMX_BOOL bWriteViaCPU;
     94 	OMX_PTR pMetaDataBuffer;
     95 	OMX_U32 nMetaDataSize;
     96 	OMX_PTR pAuxBuf1;
     97 	OMX_U32 pAuxBufSize1;
     98 }OMX_TI_PLATFORMPRIVATE;
     99 
    100 /*===============================================================*/
    101 /** OMX_TI_PARAM_BUFFERPREANNOUNCE    : This parameter is used to enable/disable
    102  *                                      buffer pre announcement. Buffer pre
    103  *                                      announcement is enabled by default i.e.
    104  *                                      if buffer is being allocated by client
    105  *                                      then the buffer ptrs will be made known
    106  *                                      to the component at the time of
    107  *                                      UseBuffer and these will not change in
    108  *                                      lifetime of the component. If pre
    109  *                                      announcement is disabled then new
    110  *                                      buffers can be allocated by the client
    111  *                                      at runtime and passed in ETB/FTB. This
    112  *                                      parameter is valid only in cases where
    113  *                                      client allocates the buffer
    114  *                                      (i.e. UseBuffer cases).
    115  *
    116  *  @ param nSize                     : Size of the structure.
    117  *  @ param nVersion                  : Version.
    118  *  @ param nPortIndex                : Port index on which the parameter will
    119  *                                      be applied.
    120  *  @ param bEnabled                  : Whether buffer pre announcement is
    121  *                                      enabled or not. Set to TRUE (enabled)
    122  *                                      by default.
    123  */
    124 /*===============================================================*/
    125 typedef struct OMX_TI_PARAM_BUFFERPREANNOUNCE
    126 {
    127     OMX_U32 nSize;
    128     OMX_VERSIONTYPE nVersion;
    129     OMX_U32 nPortIndex;
    130     OMX_BOOL bEnabled;
    131 }OMX_TI_PARAM_BUFFERPREANNOUNCE;
    132 
    133 
    134 
    135 /*===============================================================*/
    136 /** OMX_TI_CONFIG_BUFFERREFCOUNTNOTIFYTYPE : This config is used to
    137  *                                           enable/disable notification when
    138  *                                           reference count of a buffer changes
    139  *                                           This happens usually when buffers
    140  *                                           are locked/unlocked by codecs. By
    141  *                                           DEFAULT all notifications are
    142  *                                           DISABLED.
    143  *
    144  *  @ param nSize                          : Size of the structure.
    145  *  @ param nVersion                       : Version.
    146  *  @ param nPortIndex                     : Port index on which the config will
    147  *                                           be applied.
    148  *  @param bNotifyOnIncrease              : Enable notification when reference
    149  *                                           count is increased.
    150  *  @ param bNotifyOnDecrease              : Enable notification when reference
    151  *                                           count is decreased.
    152  *  @ param nCountForNotification          : Count at which to trigger
    153  *                                           notification. Count indicates no.
    154  *                                           of copies of the buffer in
    155  *                                           circulation e.g.
    156  *                                           1 - Only the original buffer is in
    157  *                                               circulation i.e. no buffers are
    158  *                                               currently locked.
    159  *                                           2 - There are two copies of the
    160  *                                               buffer i.e. one original and
    161  *                                               one copy which has been locked
    162  *                                               by the codec.
    163  *                                           And so on
    164  *                                           SPECIAL CASE
    165  *                                           0 - Indicates notify always
    166  *                                               irrespective of count value.
    167  */
    168 /*===============================================================*/
    169 typedef struct OMX_TI_CONFIG_BUFFERREFCOUNTNOTIFYTYPE
    170 {
    171     OMX_U32 nSize;
    172     OMX_VERSIONTYPE nVersion;
    173     OMX_U32 nPortIndex;
    174     OMX_BOOL bNotifyOnIncrease;
    175     OMX_BOOL bNotifyOnDecrease;
    176     OMX_U32 nCountForNotification;
    177 }OMX_TI_CONFIG_BUFFERREFCOUNTNOTIFYTYPE;
    178 
    179 
    180 
    181 
    182 
    183 /* OMX_TI_SEVERITYTYPE enumeration is used to indicate severity level of errors returned by TI OpenMax components.
    184    Critcal      Requires reboot/reset DSP
    185    Severe       Have to unload components and free memory and try again
    186    Major        Can be handled without unloading the component
    187    Minor        Essentially informational
    188 */
    189 typedef enum OMX_TI_SEVERITYTYPE {
    190     OMX_TI_ErrorCritical=1,
    191     OMX_TI_ErrorSevere,
    192     OMX_TI_ErrorMajor,
    193     OMX_TI_ErrorMinor
    194 } OMX_TI_SEVERITYTYPE;
    195 
    196 /* ============================================================================= */
    197 /*
    198 @brief OMX_TI_PARAM_METADATABUFFERINFO : Structure to access metadata buffer info needed
    199          by proxy to allocate metadat buffers.
    200 
    201 */
    202 /* ============================================================================= */
    203 typedef struct OMX_TI_PARAM_METADATABUFFERINFO {
    204     OMX_U32 nSize;
    205     OMX_VERSIONTYPE nVersion;
    206     OMX_U32 nPortIndex;
    207     OMX_BOOL bIsMetaDataEnabledOnPort;
    208     OMX_U32 nMetaDataSize;
    209 } OMX_TI_PARAM_METADATABUFFERINFO;
    210 
    211 /*******************************************************************
    212  * PRIVATE DECLARATIONS: defined here, used only here
    213  *******************************************************************/
    214 /*----------          data declarations        ------------------- */
    215 /*----------          function prototypes      ------------------- */
    216 
    217 #ifdef __cplusplus
    218 }
    219 #endif /* __cplusplus */
    220 
    221 #endif /* _OMX_TI_COMMON_H_ */
    222