Home | History | Annotate | Download | only in exynos
      1 /*
      2  *
      3  * Copyright 2012 Samsung Electronics S.LSI Co. LTD
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 /*
     19  * @file    Exynos_OMX_Def.h
     20  * @brief   Exynos_OMX specific define
     21  * @author  SeungBeom Kim (sbcrux.kim (at) samsung.com)
     22  * @version    2.0.0
     23  * @history
     24  *   2012.02.20 : Create
     25  */
     26 
     27 #ifndef EXYNOS_OMX_DEF
     28 #define EXYNOS_OMX_DEF
     29 
     30 #include "OMX_Types.h"
     31 #include "OMX_IVCommon.h"
     32 
     33 #define VERSIONMAJOR_NUMBER                1
     34 #define VERSIONMINOR_NUMBER                0
     35 #define REVISION_NUMBER                    0
     36 #define STEP_NUMBER                        0
     37 
     38 
     39 #define MAX_OMX_COMPONENT_NUM              20
     40 #define MAX_OMX_COMPONENT_ROLE_NUM         10
     41 #define MAX_OMX_COMPONENT_NAME_SIZE        OMX_MAX_STRINGNAME_SIZE
     42 #define MAX_OMX_COMPONENT_ROLE_SIZE        OMX_MAX_STRINGNAME_SIZE
     43 #define MAX_OMX_COMPONENT_LIBNAME_SIZE     OMX_MAX_STRINGNAME_SIZE * 2
     44 #define MAX_OMX_MIMETYPE_SIZE              OMX_MAX_STRINGNAME_SIZE
     45 
     46 #define MAX_TIMESTAMP        40
     47 #define MAX_FLAGS            40
     48 #define MAX_BUFFER_REF       40
     49 
     50 #define MAX_BUFFER_PLANE     3
     51 
     52 #define EXYNOS_OMX_INSTALL_PATH "/system/lib/omx/"
     53 
     54 typedef enum _EXYNOS_CODEC_TYPE
     55 {
     56     SW_CODEC,
     57     HW_VIDEO_DEC_CODEC,
     58     HW_VIDEO_ENC_CODEC,
     59     HW_AUDIO_DEC_CODEC,
     60     HW_AUDIO_ENC_CODEC
     61 } EXYNOS_CODEC_TYPE;
     62 
     63 typedef struct _EXYNOS_OMX_PRIORITYMGMTTYPE
     64 {
     65     OMX_U32 nGroupPriority; /* the value 0 represents the highest priority */
     66                             /* for a group of components                   */
     67     OMX_U32 nGroupID;
     68 } EXYNOS_OMX_PRIORITYMGMTTYPE;
     69 
     70 typedef enum _EXYNOS_OMX_INDEXTYPE
     71 {
     72 #define EXYNOS_INDEX_PARAM_ENABLE_THUMBNAIL "OMX.SEC.index.enableThumbnailMode"
     73     OMX_IndexParamEnableThumbnailMode       = 0x7F000001,
     74 #define EXYNOS_INDEX_CONFIG_VIDEO_INTRAPERIOD "OMX.SEC.index.VideoIntraPeriod"
     75     OMX_IndexConfigVideoIntraPeriod         = 0x7F000002,
     76 
     77     /* for Android Native Window */
     78 #define EXYNOS_INDEX_PARAM_ENABLE_ANB "OMX.google.android.index.enableAndroidNativeBuffers"
     79     OMX_IndexParamEnableAndroidBuffers      = 0x7F000011,
     80 #define EXYNOS_INDEX_PARAM_GET_ANB "OMX.google.android.index.getAndroidNativeBufferUsage"
     81     OMX_IndexParamGetAndroidNativeBuffer    = 0x7F000012,
     82 #define EXYNOS_INDEX_PARAM_USE_ANB "OMX.google.android.index.useAndroidNativeBuffer"
     83     OMX_IndexParamUseAndroidNativeBuffer    = 0x7F000013,
     84     /* for Android Store Metadata Inbuffer */
     85 #define EXYNOS_INDEX_PARAM_STORE_METADATA_BUFFER "OMX.google.android.index.storeMetaDataInBuffers"
     86     OMX_IndexParamStoreMetaDataBuffer       = 0x7F000014,
     87     /* prepend SPS/PPS to I/IDR for H.264 Encoder */
     88 #define EXYNOS_INDEX_PARAM_PREPEND_SPSPPS_TO_IDR "OMX.google.android.index.prependSPSPPSToIDRFrames"
     89     OMX_IndexParamPrependSPSPPSToIDR        = 0x7F000015,
     90 
     91     /* for Android PV OpenCore*/
     92     OMX_COMPONENT_CAPABILITY_TYPE_INDEX     = 0xFF7A347
     93 } EXYNOS_OMX_INDEXTYPE;
     94 
     95 typedef enum _EXYNOS_OMX_ERRORTYPE
     96 {
     97     OMX_ErrorNoEOF              = (OMX_S32) 0x90000001,
     98     OMX_ErrorInputDataDecodeYet = (OMX_S32) 0x90000002,
     99     OMX_ErrorInputDataEncodeYet = (OMX_S32) 0x90000003,
    100     OMX_ErrorCodecInit          = (OMX_S32) 0x90000004,
    101     OMX_ErrorCodecDecode        = (OMX_S32) 0x90000005,
    102     OMX_ErrorCodecEncode        = (OMX_S32) 0x90000006,
    103     OMX_ErrorCodecFlush         = (OMX_S32) 0x90000007,
    104     OMX_ErrorOutputBufferUseYet = (OMX_S32) 0x90000008
    105 } EXYNOS_OMX_ERRORTYPE;
    106 
    107 typedef enum _EXYNOS_OMX_COMMANDTYPE
    108 {
    109     EXYNOS_OMX_CommandComponentDeInit = 0x7F000001,
    110     EXYNOS_OMX_CommandEmptyBuffer,
    111     EXYNOS_OMX_CommandFillBuffer,
    112     EXYNOS_OMX_CommandFakeBuffer
    113 } EXYNOS_OMX_COMMANDTYPE;
    114 
    115 typedef enum _EXYNOS_OMX_TRANS_STATETYPE {
    116     EXYNOS_OMX_TransStateInvalid,
    117     EXYNOS_OMX_TransStateLoadedToIdle,
    118     EXYNOS_OMX_TransStateIdleToExecuting,
    119     EXYNOS_OMX_TransStateExecutingToIdle,
    120     EXYNOS_OMX_TransStateIdleToLoaded,
    121     EXYNOS_OMX_TransStateMax = 0X7FFFFFFF
    122 } EXYNOS_OMX_TRANS_STATETYPE;
    123 
    124 typedef enum _EXYNOS_OMX_COLOR_FORMATTYPE {
    125     OMX_SEC_COLOR_FormatNV12TPhysicalAddress        = 0x7F000001, /**< Reserved region for introducing Vendor Extensions */
    126     OMX_SEC_COLOR_FormatNV12LPhysicalAddress        = 0x7F000002,
    127     OMX_SEC_COLOR_FormatNV12LVirtualAddress         = 0x7F000003,
    128     OMX_SEC_COLOR_FormatNV12Tiled                   = 0x7FC00002,  /* 0x7FC00002 */
    129     OMX_SEC_COLOR_FormatNV21LPhysicalAddress        = 0x7F000010,
    130     OMX_SEC_COLOR_FormatNV21Linear                  = 0x7F000011,
    131 
    132     /* to copy a encoded data for drm component using gsc or fimc */
    133     OMX_SEC_COLOR_FormatEncodedData                 = OMX_COLOR_FormatYCbYCr,
    134     /* for Android SurfaceMediaSource*/
    135     OMX_COLOR_FormatAndroidOpaque                   = 0x7F000789
    136 }EXYNOS_OMX_COLOR_FORMATTYPE;
    137 
    138 typedef enum _EXYNOS_OMX_SUPPORTFORMAT_TYPE
    139 {
    140     supportFormat_0 = 0x00,
    141     supportFormat_1,
    142     supportFormat_2,
    143     supportFormat_3,
    144     supportFormat_4,
    145     supportFormat_5,
    146     supportFormat_6,
    147     supportFormat_7
    148 } EXYNOS_OMX_SUPPORTFORMAT_TYPE;
    149 
    150 typedef enum _EXYNOS_OMX_BUFFERPROCESS_TYPE
    151 {
    152     BUFFER_DEFAULT  = 0x00,
    153     BUFFER_COPY     = 0x01,
    154     BUFFER_SHARE    = 0x02,
    155     BUFFER_METADATA = 0x04,
    156     BUFFER_ANBSHARE = 0x08
    157 } EXYNOS_OMX_BUFFERPROCESS_TYPE;
    158 
    159 typedef struct _EXYNOS_OMX_VIDEO_PROFILELEVEL
    160 {
    161     OMX_S32  profile;
    162     OMX_S32  level;
    163 } EXYNOS_OMX_VIDEO_PROFILELEVEL;
    164 
    165 typedef struct _EXYNOS_OMX_VIDEO_THUMBNAILMODE {
    166     OMX_U32 nSize;
    167     OMX_VERSIONTYPE nVersion;
    168     OMX_U32 nPortIndex;
    169     OMX_BOOL bEnable;
    170 } EXYNOS_OMX_VIDEO_THUMBNAILMODE;
    171 
    172 #define OMX_VIDEO_CodingVPX     0x09    /**< Google VPX, formerly known as On2 VP8 */
    173 
    174 #ifndef __OMX_EXPORTS
    175 #define __OMX_EXPORTS
    176 #define EXYNOS_EXPORT_REF __attribute__((visibility("default")))
    177 #define EXYNOS_IMPORT_REF __attribute__((visibility("default")))
    178 #endif
    179 
    180 #endif
    181