Files
Sam Protsenko d70d919c01 Add original Samsung hardware projects
Change-Id: I79380bc91acf57ca5f3e56fb64af76f4c45f6566
Signed-off-by: Sam Protsenko <joe.skb7@gmail.com>
2023-09-09 08:33:16 +02:00

1299 lines
56 KiB
C

/*
*
* Copyright 2012 Samsung Electronics S.LSI Co. LTD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @file Exynos_OMX_Def.h
* @brief Exynos_OMX specific define
* @author SeungBeom Kim (sbcrux.kim@samsung.com)
* @version 2.0.0
* @history
* 2012.02.20 : Create
*/
#ifndef EXYNOS_OMX_DEF
#define EXYNOS_OMX_DEF
//#define PERFORMANCE_DEBUG
#include "OMX_Types.h"
#include "OMX_IVCommon.h"
#include "OMX_Video.h"
#include "OMX_VideoExt.h"
#include "OMX_IndexExt.h"
#include "OMX_Component.h"
#define VERSIONMAJOR_NUMBER 1
#define VERSIONMINOR_NUMBER 1
#define REVISION_NUMBER 2
#define STEP_NUMBER 0
#ifdef MAX_COMPONENT_NUM
#define RESOURCE_VIDEO_DEC MAX_COMPONENT_NUM
#define RESOURCE_VIDEO_ENC MAX_COMPONENT_NUM
#else
#define RESOURCE_VIDEO_DEC 16
#define RESOURCE_VIDEO_ENC 16
#endif
#define RESOURCE_AUDIO_DEC 10
#define MAX_OMX_COMPONENT_NUM 40
#define MAX_OMX_COMPONENT_ROLE_NUM 10
#define MAX_OMX_COMPONENT_NAME_SIZE OMX_MAX_STRINGNAME_SIZE
#define MAX_OMX_COMPONENT_ROLE_SIZE OMX_MAX_STRINGNAME_SIZE
#define MAX_OMX_COMPONENT_LIBNAME_SIZE OMX_MAX_STRINGNAME_SIZE * 2
#define MAX_OMX_MIMETYPE_SIZE OMX_MAX_STRINGNAME_SIZE
#define MAX_BUFFER_REF 40
#define MAX_TIMESTAMP MAX_BUFFER_REF
#define MAX_FLAGS MAX_BUFFER_REF
#define MAX_BUFFER_PLANE 3
#define INDEX_AFTER_EOS 0xE05
#define INDEX_AFTER_DRC 0xD5C
#define INDEX_HEADER_DATA 0xC5D
#define DEFAULT_TIMESTAMP_VAL (-1010101010)
#define RESET_TIMESTAMP_VAL (-1001001001)
// The largest metadata buffer size advertised
// when metadata buffer mode is used
#define MAX_METADATA_BUFFER_SIZE (64)
#define MAX_VENDOR_EXT_NUM (32)
#define PREFIX_COMPONENT_NAME "OMX.Exynos."
#define IS_CUSTOM_COMPONENT(name) (((char)(name[((int)sizeof(PREFIX_COMPONENT_NAME))-1]) >= 0x61)? OMX_TRUE:OMX_FALSE)
#define IS_64BIT_OS (((sizeof(int) != sizeof(void *))? OMX_TRUE:OMX_FALSE))
/* for image converter(MSRND) */
#define OMX_BUFFERFLAG_CONVERTEDIMAGE 0x00000100
typedef enum _EXYNOS_CODEC_TYPE
{
SW_CODEC,
HW_VIDEO_DEC_CODEC,
HW_VIDEO_ENC_CODEC,
HW_VIDEO_DEC_SECURE_CODEC,
HW_VIDEO_ENC_SECURE_CODEC,
HW_AUDIO_DEC_CODEC,
HW_AUDIO_ENC_CODEC
} EXYNOS_CODEC_TYPE;
#define PLANE_MAX_NUM 3
typedef enum _PLANE_TYPE {
PLANE_MULTIPLE = 0x00,
PLANE_SINGLE = 0x11,
PLANE_SINGLE_USER = 0x12,
} PLANE_TYPE;
typedef enum _EXYNOS_OMX_INDEXTYPE
{
#define EXYNOS_INDEX_CONFIG_VIDEO_INTRAPERIOD "OMX.SEC.index.VideoIntraPeriod"
OMX_IndexConfigVideoIntraPeriod = 0x7F000002,
#ifdef USE_S3D_SUPPORT
#define EXYNOS_INDEX_PARAM_GET_S3D "OMX.SEC.index.S3DMode"
OMX_IndexVendorS3DMode = 0x7F000003,
#endif
#define EXYNOS_INDEX_PARAM_NEED_CONTIG_MEMORY "OMX.SEC.index.NeedContigMemory" /* for HDCP */
OMX_IndexVendorNeedContigMemory = 0x7F000004,
#define EXYNOS_INDEX_CONFIG_GET_BUFFER_FD "OMX.SEC.index.GetBufferFD" /* for HDCP */
OMX_IndexVendorGetBufferFD = 0x7F000005,
#define EXYNOS_INDEX_PARAM_SET_DTS_MODE "OMX.SEC.index.SetDTSMode" /* for decoding DTS contents */
OMX_IndexVendorSetDTSMode = 0x7F000006,
#define EXYNOS_INDEX_PARAM_ENABLE_THUMBNAIL "OMX.SEC.index.enableThumbnailMode"
OMX_IndexParamEnableThumbnailMode = 0x7F000007,
#define EXYNOS_INDEX_PARAM_VIDEO_QPRANGE_TYPE "OMX.SEC.indexParam.VideoQPRange"
OMX_IndexParamVideoQPRange = 0x7F000008,
#define EXYNOS_INDEX_CONFIG_VIDEO_QPRANGE_TYPE "OMX.SEC.indexConfig.VideoQPRange"
OMX_IndexConfigVideoQPRange = 0x7F000009,
#define EXYNOS_INDEX_CONFIG_VIDEO_TEMPORALSVC "OMX.SEC.index.TemporalSVC"
OMX_IndexConfigVideoTemporalSVC = 0x7F000010,
#define EXYNOS_INDEX_PARAM_VIDEO_AVC_ENABLE_TEMPORALSVC "OMX.SEC.index.AVC.enableTemporalSVC"
OMX_IndexParamVideoAVCEnableTemporalSVC = 0x7F000011,
#define EXYNOS_INDEX_PARAM_ENABLE_BLUR_FILTER "OMX.SEC.indexParam.enableBlurFilter"
OMX_IndexParamEnableBlurFilter = 0x7F000014,
#define EXYNOS_INDEX_CONFIG_BLUR_INFO "OMX.SEC.indexConfig.BlurInfo"
OMX_IndexConfigBlurInfo = 0x7F000015,
#define EXYNOS_INDEX_PARAM_VIDEO_HEVC_ENABLE_TEMPORALSVC "OMX.SEC.index.Hevc.enableTemporalSVC"
OMX_IndexParamVideoHevcEnableTemporalSVC = 0x7F000016,
#define EXYNOS_INDEX_CONFIG_VIDEO_ROIINFO "OMX.SEC.index.RoiInfo"
OMX_IndexConfigVideoRoiInfo = 0x7F000017,
#define EXYNOS_INDEX_PARAM_VIDEO_ENABLE_ROIINFO "OMX.SEC.index.enableRoiInfo"
OMX_IndexParamVideoEnableRoiInfo = 0x7F000018,
#define EXYNOS_INDEX_PARAM_ROATION_INFO "OMX.SEC.indexParam.RotationInfo"
OMX_IndexParamRotationInfo = 0x7F000019,
#define EXYNOS_INDEX_PARAM_ENABLE_PVC "OMX.SEC.indexParam.enablePVC"
OMX_IndexParamVideoEnablePVC = 0x7F000020,
#define EXYNOS_INDEX_CONFIG_BLACK_BAR_CROP_INFO "OMX.SEC.index.BlackBarCrop"
OMX_IndexConfigBlackBarCrop = 0x7F000021,
#define EXYNOS_INDEX_CONFIG_SEARCH_BLACK_BAR "OMX.SEC.index.SearchBlackBar"
OMX_IndexConfigSearchBlackBar = 0x7F000022,
#define EXYNOS_CUSTOM_INDEX_PARAM_REORDER_MODE "OMX.SEC.CUSTOM.index.ReorderMode"
OMX_IndexExynosParamReorderMode = 0x7F000023,
#define EXYNOS_INDEX_CONFIG_IFRAME_RATIO "OMX.SEC.index.IFrameRatio"
OMX_IndexConfigIFrameRatio = 0x7F000024,
#define EXYNOS_INDEX_PARAM_REF_NUM_PFRAMES "OMX.SEC.index.NumberRefPframes"
OMX_IndexParamNumberRefPframes = 0x7F000025,
#define EXYNOS_INDEX_PARAM_VIDEO_ENABLE_GPB "OMX.SEC.index.enableGPB"
OMX_IndexParamVideoEnableGPB = 0x7F000026,
#define EXYNOS_INDEX_PARAM_VIDEO_DROP_CONTROL "OMX.SEC.index.enableDropControl"
OMX_IndexParamVideoDropControl = 0x7F000027,
#define EXYNOS_INDEX_PARAM_VIDEO_COMP_COLOR_FORMAT "OMX.SEC.index.setCompressedColorFormat"
OMX_IndexParamVideoCompressedColorFormat = 0x7F000028,
#define EXYNOS_INDEX_PARAM_VIDEO_DISABLE_DFR "OMX.SEC.index.disableDFR"
OMX_IndexParamVideoDisableDFR = 0x7F000029,
#define EXYNOS_INDEX_PARAM_VIDEO_CHROMA_QP "OMX.SEC.index.chromaQP"
OMX_IndexParamVideoChromaQP = 0x7F000030,
#define EXYNOS_INDEX_PARAM_VIDEO_DISABLE_HBENCODING "OMX.SEC.index.disableHBEncoding"
OMX_IndexParamVideoDisableHBEncoding = 0x7F000031,
////////////////////////////////////////////////////////////////////////////////////////////////
// for extension codec spec
////////////////////////////////////////////////////////////////////////////////////////////////
OMX_IndexExtensionStartUnused = 0x7F020000,
#ifdef USE_KHRONOS_OMX_HEADER
#define EXYNOS_INDEX_PARAM_VIDEO_HEVC_TYPE "OMX.SEC.index.VideoHevcType"
OMX_IndexParamVideoHevc = 0x7F020000,
#define EXYNOS_INDEX_PARAM_VIDEO_VP9_TYPE "OMX.SEC.index.VideoVp9Type"
OMX_IndexParamVideoVp9 = 0x7F020001,
#endif
#ifndef USE_KHRONOS_OMX_1_2
#define EXYNOS_INDEX_PARAM_VIDEO_VC1_TYPE "OMX.SEC.index.VideoVc1Type"
OMX_IndexParamVideoVC1 = 0x7F021000,
#endif
////////////////////////////////////////////////////////////////////////////////////////////////
// for android platform
////////////////////////////////////////////////////////////////////////////////////////////////
OMX_IndexAndroidStartUnused = 0x7F030000,
/* query using get_extension_index */
#define EXYNOS_INDEX_PARAM_USE_ANB "OMX.google.android.index.useAndroidNativeBuffer" /* no more used */
OMX_IndexParamUseAndroidNativeBuffer = 0x7F030001,
#define EXYNOS_INDEX_PARAM_USE_ANB2 "OMX.google.android.index.useAndroidNativeBuffer2" /* no more used */
OMX_IndexParamUseAndroidNativeBuffer2 = 0x7F030002,
#define EXYNOS_INDEX_PARAM_GET_ANB "OMX.google.android.index.getAndroidNativeBufferUsage"
OMX_IndexParamGetAndroidNativeBuffer = 0x7F030003,
#define EXYNOS_INDEX_PARAM_ENABLE_ANB "OMX.google.android.index.enableAndroidNativeBuffers"
OMX_IndexParamEnableAndroidBuffers = 0x7F030004,
#define EXYNOS_INDEX_PARAM_STORE_METADATA_BUFFER "OMX.google.android.index.storeMetaDataInBuffers"
OMX_IndexParamStoreMetaDataBuffer = 0x7F030005,
#define EXYNOS_INDEX_PARAM_PREPEND_SPSPPS_TO_IDR "OMX.google.android.index.prependSPSPPSToIDRFrames"
OMX_IndexParamPrependSPSPPSToIDR = 0x7F030006,
#define EXYNOS_INDEX_PARAM_ALLOCATE_NATIVE_HANDLE "OMX.google.android.index.allocateNativeHandle"
OMX_IndexParamAllocateNativeHandle = 0x7F030007,
#define EXYNOS_INDEX_PARAM_DESCRIBE_COLOR_FORMAT "OMX.google.android.index.describeColorFormat"
OMX_IndexParamDescribeColorFormat = 0x7F030008,
#define EXYNOS_INDEX_CONFIG_VIDEO_HDR_STATIC_INFO "OMX.google.android.index.describeHDRStaticInfo"
OMX_IndexConfigVideoHdrStaticInfo = 0x7F030009,
#define EXYNOS_INDEX_CONFIG_VIDEO_COLOR_ASPECTS_INFO "OMX.google.android.index.describeColorAspects"
OMX_IndexConfigVideoColorAspects = 0x7F030010,
#define EXYNOS_INDEX_CONFIG_VIDEO_HDR10_PLUS_INFO "OMX.google.android.index.describeHDR10PlusInfo"
OMX_IndexConfigVideoHdr10PlusInfo = 0x7F030011,
#define EXYNOS_INDEX_PARAM_SET_ANB_CONSUMER_USAGE "OMX.google.android.index.AndroidNativeBufferConsumerUsage"
OMX_IndexParamAndroidNatvieBufferConsumerUsage = 0x7F030012,
#ifdef USE_KHRONOS_OMX_HEADER
/* not query, just uses index */
#define EXYNOS_INDEX_CONFIG_ANDROID_VENDOR_EXT "OMX.google.android.index.androidVendorExtension"
OMX_IndexConfigAndroidVendorExtension = 0x7F031001,
#define EXYNOS_INDEX_PARAM_VIDEO_ANDROID_VP8_ENCODER "OMX.SEC.index.VideoAndroidVP8Encoder"
OMX_IndexParamVideoAndroidVp8Encoder = 0x7F032001,
#define EXYNOS_INDEX_PARAM_SLICE_SEGMENTS "OMX.SEC.index.SliceSegments" /* not supported yet */
OMX_IndexParamSliceSegments = 0x7F032002,
#define EXYNOS_INDEX_CONFIG_ANDROID_INTRA_REFRESH "OMX.SEC.index.AndroidIntraRefresh" /* not supported yet */
OMX_IndexConfigAndroidIntraRefresh = 0x7F032003,
#define EXYNOS_INDEX_PARAM_ANDROID_VIDEO_TEMPORAL "OMX.SEC.index.param.TemporalLayering"
OMX_IndexParamAndroidVideoTemporalLayering = 0x7F032004,
#define EXYNOS_INDEX_CONFIG_ANDROID_VIDEO_TEMPORAL "OMX.SEC.index.config.TemporalLayering"
OMX_IndexConfigAndroidVideoTemporalLayering = 0x7F032005,
#define EXYNOS_INDEX_PARAM_MAX_FRAME_DURATION "OMX.SEC.index.maxDurationForBitratecontrol" /* not supported yet */
OMX_IndexParamMaxFrameDurationForBitrateControl = 0x7F032006,
#define EXYNOS_INDEX_PARAM_VIDEO_ANDROID_VP9_ENCODER "OMX.SEC.index.VideoAndroidVp9Encoder" /* not supported yet */
OMX_IndexParamVideoAndroidVp9Encoder = 0x7F032007,
#define EXYNOS_INDEX_CONFIG_OPERATING_RATE "OMX.SEC.index.OperatingRate"
OMX_IndexConfigOperatingRate = 0x7F033001,
#define EXYNOS_INDEX_PARAM_CONSUMER_USAGE_BITS "OMX.SEC.index.ConsumerUsageBits"
OMX_IndexParamConsumerUsageBits = 0x7F033002,
#define EXYNOS_INDEX_CONFIG_PRIORTIY "OMX.SEC.index.Priority"
OMX_IndexConfigPriority = 0x7F033003,
#endif // USE_KHRONOS_OMX_HEADER
////////////////////////////////////////////////////////////////////////////////////////////////
// for linux platform
////////////////////////////////////////////////////////////////////////////////////////////////
OMX_IndexLinuxStartUnused = 0x7F040000,
#define EXYNOS_CUSTOM_INDEX_PARAM_IMAGE_CROP "OMX.SEC.CUSTOM.index.ImageCrop"
OMX_IndexExynosParamImageCrop = 0x7F040002,
////////////////////////////////////////////////////////////////////////////////////////////////
// for custom component
////////////////////////////////////////////////////////////////////////////////////////////////
OMX_IndexCustomStartUnused = 0x7F050000,
#define EXYNOS_CUSTOM_INDEX_CONFIG_PTS_MODE "OMX.SEC.CUSTOM.index.PTSMode"
OMX_IndexExynosConfigPTSMode = 0x7F050001,
#define EXYNOS_CUSTOM_INDEX_CONFIG_DISPLAY_DELAY "OMX.SEC.CUSTOM.index.DisplayDelay"
OMX_IndexExynosConfigDisplayDelay = 0x7F050002,
#define EXYNOS_CUSTOM_INDEX_PARAM_CORRUPTEDHEADER "OMX.SEC.CUSTOM.index.CorruptedHeader"
OMX_IndexExynosParamCorruptedHeader = 0x7F050003,
#define EXYNOS_CUSTOM_INDEX_PARAM_DISPLAY_DELAY "OMX.SEC.CUSTOM.index.DisplayDelay2" /* Compatibility with OMX.SEC.CUSTOM.index.DisplayDelay */
OMX_IndexExynosParamDisplayDelay = 0x7F050004,
#define EXYNOS_CUSTOM_INDEX_PARAM_USE_BUFFERCOPY "OMX.SEC.CUSTOM.index.BufferCopy"
OMX_IndexExynosParamBufferCopy = 0x7F050005,
#define EXYNOS_CUSTOM_INDEX_PARAM_USE_IMG_CONV "OMX.SEC.CUSTOM.index.ImageConvert"
OMX_IndexExynosParamImageConvert = 0x7F050006,
#define EXYNOS_CUSTOM_INDEX_PARAM_USE_IMG_CONV_MODE "OMX.SEC.CUSTOM.index.ImageConvertMode"
OMX_IndexExynosParamImageConvertMode = 0x7F050007,
////////////////////////////////////////////////////////////////////////////////////////////////
// for Skype HD
////////////////////////////////////////////////////////////////////////////////////////////////
OMX_IndexSkypeStartUnused = 0x7F060000,
#define OMX_MS_SKYPE_PARAM_DRIVERVER "OMX.microsoft.skype.index.driverversion"
OMX_IndexSkypeParamDriverVersion = 0x7F060001,
#if 0
#define OMX_MS_SKYPE_PARAM_DECODERSETTING "OMX.microsoft.skype.index.decodersetting"
OMX_IndexSkypeParamDecoderSetting = 0x7F060002,
#define OMX_MS_SKYPE_PARAM_DECODERCAP "OMX.microsoft.skype.index.decodercapability"
OMX_IndexSkypeParamDecoderCapability = 0x7F060003,
#define OMX_MS_SKYPE_PARAM_ENCODERSETTING "OMX.microsoft.skype.index.encodersetting"
OMX_IndexSkypeParamEncoderSetting = 0x7F060004,
#define OMX_MS_SKYPE_PARAM_ENCODERCAP "OMX.microsoft.skype.index.encodercapability"
OMX_IndexSkypeParamEncoderCapability = 0x7F060005,
#endif
#define OMX_MS_SKYPE_CONFIG_MARKLTRFRAME "OMX.microsoft.skype.index.markltrframe"
OMX_IndexSkypeConfigMarkLTRFrame = 0x7F060006,
#define OMX_MS_SKYPE_CONFIG_USELTRFRAME "OMX.microsoft.skype.index.useltrframe"
OMX_IndexSkypeConfigUseLTRFrame = 0x7F060007,
#define OMX_MS_SKYPE_CONFIG_QP "OMX.microsoft.skype.index.qp"
OMX_IndexSkypeConfigQP = 0x7F060008,
#if 0
#define OMX_MS_SKYPE_CONFIG_TEMPORALLAYERCOUNT "OMX.microsoft.skype.index.temporallayercount"
OMX_IndexSkypeConfigTemporalLayerCount = 0x7F060009,
#endif
#define OMX_MS_SKYPE_CONFIG_BASELAYERPID "OMX.microsoft.skype.index.basepid"
OMX_IndexSkypeConfigBasePid = 0x7F06000a,
/* common */
OMX_IndexSkypeParamLowLatency = 0x7F060010,
/* encoder */
OMX_IndexSkypeParamEncoderMaxTemporalLayerCount = 0x7F061000,
OMX_IndexSkypeParamEncoderMaxLTR = 0x7F061001,
OMX_IndexSkypeParamEncoderLTR = 0x7F061002,
OMX_IndexSkypeParamEncoderPreprocess = 0x7F061003,
OMX_IndexSkypeParamEncoderSar = 0x7F061004,
OMX_IndexSkypeParamEncoderInputControl = 0x7F061005,
OMX_IndexSkypeConfigEncoderLTR = 0x7F061006,
OMX_IndexSkypeConfigEncoderInputTrigger = 0x7F061007,
OMX_IndexSkypeParamVideoBitrate = 0x7F061008,
OMX_IndexExynosEndUnused = 0x7F05FFFF,
} EXYNOS_OMX_INDEXTYPE;
typedef enum _EXYNOS_OMX_ERRORTYPE
{
OMX_ErrorNoEOF = (OMX_S32) 0x90000001,
OMX_ErrorInputDataDecodeYet = (OMX_S32) 0x90000002,
OMX_ErrorInputDataEncodeYet = (OMX_S32) 0x90000003,
OMX_ErrorCodecInit = (OMX_S32) 0x90000004,
OMX_ErrorCodecDecode = (OMX_S32) 0x90000005,
OMX_ErrorCodecEncode = (OMX_S32) 0x90000006,
OMX_ErrorCodecFlush = (OMX_S32) 0x90000007,
OMX_ErrorOutputBufferUseYet = (OMX_S32) 0x90000008,
OMX_ErrorCorruptedFrame = (OMX_S32) 0x90000009,
OMX_ErrorNeedNextHeaderInfo = (OMX_S32) 0x90000010,
OMX_ErrorNoneSrcSetupFinish = (OMX_S32) 0x90000011,
OMX_ErrorCorruptedHeader = (OMX_S32) OMX_ErrorStreamCorrupt, /* 0x90000012, */
OMX_ErrorNoneExpiration = (OMX_S32) 0x90000013,
OMX_ErrorNoneReuseBuffer = (OMX_S32) 0x90000014,
} EXYNOS_OMX_ERRORTYPE;
typedef enum _EXYNOS_OMX_COMMANDTYPE
{
EXYNOS_OMX_CommandComponentDeInit = 0x7F000001,
EXYNOS_OMX_CommandEmptyBuffer,
EXYNOS_OMX_CommandFillBuffer,
EXYNOS_OMX_CommandFakeBuffer,
Exynos_OMX_CommandSendEvent,
} EXYNOS_OMX_COMMANDTYPE;
typedef enum _EXYNOS_OMX_TRANS_STATETYPE {
EXYNOS_OMX_TransStateInvalid,
EXYNOS_OMX_TransStateLoadedToIdle,
EXYNOS_OMX_TransStateIdleToExecuting,
EXYNOS_OMX_TransStateExecutingToIdle,
EXYNOS_OMX_TransStateIdleToLoaded,
EXYNOS_OMX_TransStateMax = 0X7FFFFFFF
} EXYNOS_OMX_TRANS_STATETYPE;
typedef enum _EXYNOS_OMX_PORT_STATETYPE {
EXYNOS_OMX_PortStateInvalid,
EXYNOS_OMX_PortStateFlushing,
EXYNOS_OMX_PortStateFlushingForDisable,
EXYNOS_OMX_PortStateDisabling,
EXYNOS_OMX_PortStateEnabling,
EXYNOS_OMX_PortStateIdle,
EXYNOS_OMX_PortStateLoaded,
EXYNOS_OMX_PortStateMax = 0X7FFFFFFF
} EXYNOS_OMX_PORT_STATETYPE;
typedef enum _EXYNOS_OMX_COLOR_FORMATTYPE {
OMX_SEC_COLOR_FormatNV12TPhysicalAddress = 0x7F000001, /* unused */
OMX_SEC_COLOR_FormatNV12LPhysicalAddress = 0x7F000002, /* unused */
OMX_SEC_COLOR_FormatNV12LVirtualAddress = 0x7F000003, /* unused */
OMX_SEC_COLOR_FormatNV21LPhysicalAddress = 0x7F000010, /* unused */
OMX_SEC_COLOR_FormatNV21Linear = 0x7F000011,
OMX_SEC_COLOR_FormatYVU420Planar = 0x7F000012,
OMX_SEC_COLOR_Format32bitABGR8888 = 0x7F000013, /* unused */
OMX_SEC_COLOR_FormatYUV420SemiPlanarInterlace = 0x7F000014, /* unused */
OMX_SEC_COLOR_Format10bitYUV420SemiPlanar = 0x7F000015, /* unused */
OMX_SEC_COLOR_FormatS10bitYUV420SemiPlanar = 0x7F000016, /* S10B : Y/CbCr */
OMX_SEC_COLOR_Format10bitYVU420SemiPlanar = 0x7F000017, /* unused */
OMX_SEC_COLOR_FormatS10bitYVU420SemiPlanar = 0x7F000018, /* S10B : Y/CrCb */
OMX_SEC_COLOR_FormatYUV420SemiPlanarSBWC = 0x7F000019, /* SBWC : Y/CbCr */
OMX_SEC_COLOR_FormatYVU420SemiPlanarSBWC = 0x7F000020, /* SBWC : Y/CrCb */
OMX_SEC_COLOR_Format10bitYUV420SemiPlanarSBWC = 0x7F000021, /* SBWC 10B : Y/CbCr */
OMX_SEC_COLOR_Format10bitYVU420SemiPlanarSBWC = 0x7F000022, /* SBWC 10B : Y/CrCb */
OMX_SEC_COLOR_FormatYUV420SemiPlanarSBWC_L50 = 0x7F000023, /* SBWC L50 : Y/CbCr */
OMX_SEC_COLOR_FormatYUV420SemiPlanarSBWC_L75 = 0x7F000024, /* SBWC L75 : Y/CbCr */
OMX_SEC_COLOR_Format10bitYUV420SemiPlanarSBWC_L40 = 0x7F000025, /* SBWC 10B L40 : Y/CbCr */
OMX_SEC_COLOR_Format10bitYUV420SemiPlanarSBWC_L60 = 0x7F000026, /* SBWC 10B L60 : Y/CbCr */
OMX_SEC_COLOR_Format10bitYUV420SemiPlanarSBWC_L80 = 0x7F000027, /* SBWC 10B L80 : Y/CbCr */
/* to copy a encoded data for drm component using gsc or fimc */
OMX_SEC_COLOR_FormatEncodedData = OMX_COLOR_FormatYCbYCr,
#ifdef USE_KHRONOS_OMX_HEADER
OMX_COLOR_FormatAndroidOpaque = 0x7F000789,
OMX_COLOR_Format32BitRGBA8888 = 0x7F00A000,
OMX_SEC_COLOR_FormatNV12Tiled = 0x7FC00002, /* unused */
OMX_COLOR_FormatYUV420Flexible = 0x7F420888,
// 10-bit or 12-bit YUV format, LSB-justified (0's on higher bits)
OMX_COLOR_FormatYUV420Planar16 = 0x7F42016B, /* P010 */
#endif
}EXYNOS_OMX_COLOR_FORMATTYPE;
typedef enum _EXYNOS_OMX_SUPPORTFORMAT_TYPE
{
supportFormat_0 = 0x00,
supportFormat_1,
supportFormat_2,
supportFormat_3,
supportFormat_4,
supportFormat_5,
supportFormat_6,
supportFormat_7,
} EXYNOS_OMX_SUPPORTFORMAT_TYPE;
typedef enum _EXYNOS_OMX_BUFFERPROCESS_TYPE
{
BUFFER_DEFAULT = 0x00,
BUFFER_COPY = 0x01,
BUFFER_SHARE = 0x02,
BUFFER_COPY_FORCE = 0x10,
} EXYNOS_OMX_BUFFERPROCESS_TYPE;
#ifdef USE_S3D_SUPPORT
typedef enum _EXYNOS_OMX_FPARGMT_TYPE
{
OMX_SEC_FPARGMT_INVALID = -1,
OMX_SEC_FPARGMT_CHECKERBRD_INTERL = 0x00,
OMX_SEC_FPARGMT_COLUMN_INTERL = 0x01,
OMX_SEC_FPARGMT_ROW_INTERL = 0x02,
OMX_SEC_FPARGMT_SIDE_BY_SIDE = 0x03,
OMX_SEC_FPARGMT_TOP_BOTTOM = 0x04,
OMX_SEC_FPARGMT_TEMPORAL_INTERL = 0x05,
OMX_SEC_FPARGMT_NONE = 0x0A
} EXYNOS_OMX_FPARGMT_TYPE;
#endif
typedef enum _EXYNOS_OMX_EVENTTYPE
{
OMX_EventVendorStart = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
#ifdef USE_KHRONOS_OMX_HEADER
OMX_EventDataSpaceChanged,
#endif
#ifdef USE_S3D_SUPPORT
OMX_EventS3DInformation,
#endif
} EXYNOS_OMX_EVENTTYPE;
typedef enum __EVENT_COMMAD_TYPE {
EVENT_CMD_STATE_TO_LOAD_STATE,
EVENT_CMD_STATE_TO_IDLE_STATE,
EVENT_CMD_ENABLE_INPUT_PORT,
EVENT_CMD_ENABLE_OUTPUT_PORT,
EVENT_CMD_DISABLE_INPUT_PORT,
EVENT_CMD_DISABLE_OUTPUT_PORT,
} EVENT_COMMAD_TYPE;
typedef enum _EXYNOS_METADATA_TYPE {
METADATA_TYPE_DISABLED = 0x0000, /* 1. data buffer(ex: yuv, rgb) */
METADATA_TYPE_DATA = 0x0001, /* 2. uses meta struct(type, [fd|handle|id]) */
METADATA_TYPE_HANDLE = 0x0002, /* 3. naitve handle(fd) */
METADATA_TYPE_BUFFER_LOCK = 0x0100, /* need to lock to get va */
METADATA_TYPE_BUFFER_ID = 0x1000, /* need to get fd from id */
METADATA_TYPE_GRAPHIC = (METADATA_TYPE_DATA | METADATA_TYPE_BUFFER_LOCK), /* 4. uses meta struct(type, handle) */
METADATA_TYPE_GRAPHIC_HANDLE = (METADATA_TYPE_HANDLE | METADATA_TYPE_BUFFER_LOCK), /* 5. graphic buffer handle(fd) */
METADATA_TYPE_UBM_BUFFER = (METADATA_TYPE_DATA | METADATA_TYPE_BUFFER_LOCK | METADATA_TYPE_BUFFER_ID), /* 6. uses meta struct(type, id) */
} EXYNOS_METADATA_TYPE;
typedef enum _EXYNOS_OMX_VIDEO_CONTROLRATETYPE {
OMX_Video_ControlRateVendorStart = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
OMX_Video_ControlRateConstantVTCall = 0x7F000001,
} EXYNOS_OMX_VIDEO_CONTROLRATETYPE;
typedef struct _EXYNOS_OMX_PRIORITYMGMTTYPE
{
OMX_U32 nGroupPriority; /* the value 0 represents the highest priority */
/* for a group of components */
OMX_U32 nGroupID;
} EXYNOS_OMX_PRIORITYMGMTTYPE;
typedef struct _EXYNOS_OMX_VIDEO_PROFILELEVEL
{
OMX_S32 profile;
OMX_S32 level;
} EXYNOS_OMX_VIDEO_PROFILELEVEL;
typedef struct _EXYNOS_OMX_LOCK_RANGE
{
OMX_U32 nWidth;
OMX_U32 nHeight;
OMX_COLOR_FORMATTYPE eColorFormat;
} EXYNOS_OMX_LOCK_RANGE;
typedef struct _EXYNOS_OMX_VIDEO_PARAM_PORTMEMTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bNeedContigMem;
} EXYNOS_OMX_VIDEO_PARAM_PORTMEMTYPE;
typedef struct _EXYNOS_OMX_VIDEO_CONFIG_BUFFERINFO {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_PTR OMX_IN pVirAddr;
OMX_S32 OMX_OUT fd;
} EXYNOS_OMX_VIDEO_CONFIG_BUFFERINFO;
typedef struct _EXYNOS_OMX_VIDEO_PARAM_DTSMODE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_BOOL bDTSMode;
} EXYNOS_OMX_VIDEO_PARAM_DTSMODE;
typedef struct _EXYNOS_OMX_VIDEO_THUMBNAILMODE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bEnable;
} EXYNOS_OMX_VIDEO_THUMBNAILMODE;
typedef struct _OMX_VIDEO_QPRANGE {
OMX_U32 nMinQP;
OMX_U32 nMaxQP;
} OMX_VIDEO_QPRANGE;
typedef struct _OMX_VIDEO_QPRANGETYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_QPRANGE qpRangeI;
OMX_VIDEO_QPRANGE qpRangeP;
OMX_VIDEO_QPRANGE qpRangeB; /* H.264, HEVC, MPEG4 */
} OMX_VIDEO_QPRANGETYPE;
typedef struct __OMX_VIDEO_PARAM_CHROMA_QP_OFFSET { /* H.264, HEVC */
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_S32 nCr;
OMX_S32 nCb;
} OMX_VIDEO_PARAM_CHROMA_QP_OFFSET;
/* Temporal SVC */
/* Maximum number of temporal layers */
#define OMX_VIDEO_MAX_TEMPORAL_LAYERS 7
#define OMX_VIDEO_MAX_TEMPORAL_LAYERS_WITH_LTR 3
#define OMX_VIDEO_MAX_AVC_TEMPORAL_LAYERS 7
#define OMX_VIDEO_MAX_AVC_TEMPORAL_LAYERS_FOR_B (OMX_VIDEO_MAX_AVC_TEMPORAL_LAYERS - 1)
#define OMX_VIDEO_MAX_HEVC_TEMPORAL_LAYERS 7
#define OMX_VIDEO_MAX_HEVC_TEMPORAL_LAYERS_FOR_B (OMX_VIDEO_MAX_HEVC_TEMPORAL_LAYERS - 1)
typedef enum _EXYNOS_OMX_HIERARCHICAL_CODING_TYPE
{
EXYNOS_OMX_Hierarchical_P = 0x00,
EXYNOS_OMX_Hierarchical_B,
} EXYNOS_OMX_HIERARCHICAL_CODING_TYPE;
typedef struct _EXYNOS_OMX_VIDEO_PARAM_ENABLE_TEMPORALSVC {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bEnableTemporalSVC;
} EXYNOS_OMX_VIDEO_PARAM_ENABLE_TEMPORALSVC;
typedef struct _EXYNOS_OMX_VIDEO_CONFIG_TEMPORALSVC {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nKeyFrameInterval;
OMX_U32 nTemporalLayerCount;
OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_TEMPORAL_LAYERS];
OMX_U32 nMinQuantizer;
OMX_U32 nMaxQuantizer;
} EXYNOS_OMX_VIDEO_CONFIG_TEMPORALSVC;
typedef enum _EXYNOS_OMX_BLUR_MODE
{
BLUR_MODE_NONE = 0x00,
BLUR_MODE_DOWNUP = 0x01,
BLUR_MODE_COEFFICIENT = 0x02,
} EXYNOS_OMX_BLUR_MODE;
typedef enum _EXYNOS_OMX_BLUR_RESOL
{
BLUR_RESOL_240 = 426 * 240, /* 426 x 240 */
BLUR_RESOL_480 = 854 * 480, /* 854 x 480 */
BLUR_RESOL_720 = 1280 * 720, /* 1280 x 720 */
BLUR_RESOL_960 = 1920 * 960, /* 1920 x 960 */
BLUR_RESOL_1080 = 1920 * 1080, /* 1920 x 1080 */
} EXYNOS_OMX_BLUR_RESOL;
typedef struct _EXYNOS_OMX_VIDEO_PARAM_ENABLE_BLURFILTER {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bUseBlurFilter;
} EXYNOS_OMX_VIDEO_PARAM_ENABLE_BLURFILTER;
typedef struct _EXYNOS_OMX_VIDEO_CONFIG_BLURINFO {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
EXYNOS_OMX_BLUR_MODE eBlurMode;
EXYNOS_OMX_BLUR_RESOL eTargetResol;
} EXYNOS_OMX_VIDEO_CONFIG_BLURINFO;
/* ROI Information */
typedef struct _EXYNOS_OMX_VIDEO_CONFIG_ROIINFO {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_S32 nUpperQpOffset;
OMX_S32 nLowerQpOffset;
OMX_BOOL bUseRoiInfo;
OMX_S32 nRoiMBInfoSize;
OMX_PTR pRoiMBInfo;
} EXYNOS_OMX_VIDEO_CONFIG_ROIINFO;
typedef struct _EXYNOS_OMX_VIDEO_PARAM_ENABLE_ROIINFO {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bEnableRoiInfo;
} EXYNOS_OMX_VIDEO_PARAM_ENABLE_ROIINFO;
typedef enum _EXYNOS_OMX_ROTATION_TYPE
{
ROTATE_0 = 0,
ROTATE_90 = 90,
ROTATE_180 = 180,
ROTATE_270 = 270,
} EXYNOS_OMX_ROTATION_TYPE;
typedef struct _EXYNOS_OMX_VIDEO_PARAM_ROTATION_INFO {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
EXYNOS_OMX_ROTATION_TYPE eRotationType;
} EXYNOS_OMX_VIDEO_PARAM_ROTATION_INFO;
typedef struct _EXYNOS_OMX_VIDEO_PARAM_REORDERMODE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_BOOL bReorderMode;
} EXYNOS_OMX_VIDEO_PARAM_REORDERMODE;
typedef enum _EXYNOS_OMX_IMG_CROP_PORT
{
IMG_CROP_INPUT_PORT = 0x00, //OMX_IndexConfigCommonInputCrop
IMG_CROP_OUTPUT_PORT, //OMX_IndexConfigCommonOutputCrop
IMG_CROP_PORT_MAX,
} EXYNOS_OMX_IMG_CROP_PORT;
/* EXYNOS_OMX_IMG_INFO */
/* nStride
* ------------------------------------
* | nImageWidth | padding |
* | | xxxxxxx |
* | (top.left)---------| xxxxxxx |
* | | width | xxxxxxx |
* nImageHeight | | cccccc | xxxxxxx |
* | height | cccccc | xxxxxxx | nSliceHeight
* | | cccccc | xxxxxxx |
* | ---------| xxxxxxx |
* --|--------------------| xxxxxxx |
* | xxxxxxxxxxxxxxxxxxxxxxxxxxxx |
* ----------------------------------
*/
typedef struct __EXYNOS_OMX_IMG_INFO {
OMX_S32 nStride;
OMX_S32 nSliceHeight;
OMX_S32 nImageWidth;
OMX_S32 nImageHeight;
/* crop */
OMX_S32 nLeft;
OMX_S32 nTop;
OMX_S32 nWidth;
OMX_S32 nHeight;
} EXYNOS_OMX_IMG_INFO;
typedef OMX_CONFIG_BOOLEANTYPE EXYNOS_OMX_VIDEO_PARAM_IMAGE_CROP;
// codec specific
typedef enum _EXYNOS_OMX_VIDEO_CODINGTYPE {
#ifdef USE_KHRONOS_OMX_HEADER
OMX_VIDEO_CodingVP9 = OMX_VIDEO_CodingVP8 + 1, /**< Google VP9 */
OMX_VIDEO_CodingHEVC, /**< ITU H.265/HEVC */
#endif
OMX_VIDEO_VendorCodingMAX = 0x7FFFFFFF,
} EXYNOS_OMX_VIDEO_CODINGTYPE;
/* for AVC */
#ifdef USE_KHRONOS_OMX_HEADER
typedef enum _EXYNOS_OMX_VIDEO_AVCPROFILETYPE {
OMX_VIDEO_AVCProfileConstrainedBaseline = 0x10000,
OMX_VIDEO_AVCProfileConstrainedHigh = 0x80000,
} OMX_VIDEO_AVCPROFILEEXTTYPE;
typedef enum _EXYNOS_OMX_VIDEO_AVCLEVELTYPE {
OMX_VIDEO_AVCLevel52 = 0x10000, /**< Level 5.2 */
} EXYNOS_OMX_VIDEO_AVCLEVELTYPE;
#endif
// AVC end
/* for Mpeg4 */
#ifdef USE_KHRONOS_OMX_HEADER
typedef enum _EXYNOS_OMX_VIDEO_MPEG4LEVELTYPE {
OMX_VIDEO_MPEG4Level3b = 0x18, /**< Level 3a */
OMX_VIDEO_MPEG4Level6 = 0x100, /**< Level 6 */
} EXYNOS_OMX_VIDEO_MPEG4LEVELTYPE;
#endif
// Mpeg4 end
/* for Mpeg2 */
#ifdef USE_KHRONOS_OMX_HEADER
typedef enum _EXYNOS_OMX_VIDEO_MPEG2LEVELTYPE {
OMX_VIDEO_MPEG2LevelHP = OMX_VIDEO_MPEG2LevelHL + 1, /**< HighP Level */
} EXYNOS_OMX_VIDEO_MPEG2LEVELTYPE;
#endif
// Mpeg2 end
/* for HEVC */
#ifdef USE_KHRONOS_OMX_HEADER
typedef enum _OMX_VIDEO_HEVCPROFILETYPE {
OMX_VIDEO_HEVCProfileUnknown = 0x0,
OMX_VIDEO_HEVCProfileMain = 0x1, /**< Main profile */
OMX_VIDEO_HEVCProfileMain10 = 0x2, /**< Main 10 profile */
OMX_VIDEO_HEVCProfileMainStillPicture = 0x4, /**< Main Still Picture */
// Main10 profile with HDR SEI support.
OMX_VIDEO_HEVCProfileMain10HDR10 = 0x1000, /**< Main10 profile with HDR SEI support */
OMX_VIDEO_HEVCProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_VIDEO_HEVCProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
OMX_VIDEO_HEVCProfileMax = 0x7FFFFFFF
} OMX_VIDEO_HEVCPROFILETYPE;
/** HEVC Level enum type */
typedef enum _OMX_VIDEO_HEVCLEVELTYPE {
OMX_VIDEO_HEVCLevelUnknown = 0x00000000,
OMX_VIDEO_HEVCMainTierLevel1 = 0x00000001, /**< Level 1 */
OMX_VIDEO_HEVCHighTierLevel1 = 0x00000002,
OMX_VIDEO_HEVCMainTierLevel2 = 0x00000004, /**< Level 2 */
OMX_VIDEO_HEVCHighTierLevel2 = 0x00000008,
OMX_VIDEO_HEVCMainTierLevel21 = 0x00000010, /**< Level 2.1 */
OMX_VIDEO_HEVCHighTierLevel21 = 0x00000020,
OMX_VIDEO_HEVCMainTierLevel3 = 0x00000040, /**< Level 3 */
OMX_VIDEO_HEVCHighTierLevel3 = 0x00000080,
OMX_VIDEO_HEVCMainTierLevel31 = 0x00000100, /**< Level 3.1 */
OMX_VIDEO_HEVCHighTierLevel31 = 0x00000200,
OMX_VIDEO_HEVCMainTierLevel4 = 0x00000400, /**< Level 4 */
OMX_VIDEO_HEVCHighTierLevel4 = 0x00000800,
OMX_VIDEO_HEVCMainTierLevel41 = 0x00001000, /**< Level 4.1 */
OMX_VIDEO_HEVCHighTierLevel41 = 0x00002000,
OMX_VIDEO_HEVCMainTierLevel5 = 0x00004000, /**< Level 5 */
OMX_VIDEO_HEVCHighTierLevel5 = 0x00008000,
OMX_VIDEO_HEVCMainTierLevel51 = 0x00010000, /**< Level 5.1 */
OMX_VIDEO_HEVCHighTierLevel51 = 0x00020000,
OMX_VIDEO_HEVCMainTierLevel52 = 0x00040000, /**< Level 5.2 */
OMX_VIDEO_HEVCHighTierLevel52 = 0x00080000,
OMX_VIDEO_HEVCMainTierLevel6 = 0x00100000, /**< Level 6 */
OMX_VIDEO_HEVCHighTierLevel6 = 0x00200000,
OMX_VIDEO_HEVCMainTierLevel61 = 0x00400000, /**< Level 6.1 */
OMX_VIDEO_HEVCHighTierLevel61 = 0x00800000,
OMX_VIDEO_HEVCMainTierLevel62 = 0x01000000, /**< Level 6.2 */
OMX_VIDEO_HEVCHighTierLevel62 = 0x02000000,
OMX_VIDEO_HEVCLevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_VIDEO_HEVCLevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
OMX_VIDEO_HEVCHighMAX = 0x7FFFFFFF
} OMX_VIDEO_HEVCLEVELTYPE;
/** Structure for controlling HEVC video encoding and decoding */
typedef struct _OMX_VIDEO_PARAM_HEVCTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_HEVCPROFILETYPE eProfile;
OMX_VIDEO_HEVCLEVELTYPE eLevel;
OMX_U32 nKeyFrameInterval; // distance between consecutive I-frames (including one
// of the I frames). 0 means interval is unspecified and
// can be freely chosen by the codec. 1 means a stream of
// only I frames.
} OMX_VIDEO_PARAM_HEVCTYPE;
#endif // hevc end
/* for VP9 */
#ifdef USE_KHRONOS_OMX_HEADER
typedef enum _OMX_VIDEO_VP9PROFILETYPE {
OMX_VIDEO_VP9Profile0 = 0x0,
OMX_VIDEO_VP9Profile1 = 0x1,
OMX_VIDEO_VP9Profile2 = 0x2,
OMX_VIDEO_VP9Profile3 = 0x4,
// HDR profiles also support passing HDR metadata
OMX_VIDEO_VP9Profile2HDR = 0x1000,
OMX_VIDEO_VP9Profile3HDR = 0x2000,
OMX_VIDEO_VP9Profile2HDR10Plus = 0x4000,
OMX_VIDEO_VP9Profile3HDR10Plus = 0x8000,
OMX_VIDEO_VP9ProfileUnknown = 0x6EFFFFFF,
OMX_VIDEO_VP9ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_VIDEO_VP9ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
OMX_VIDEO_VP9ProfileMax = 0x7FFFFFFF
} OMX_VIDEO_VP9PROFILETYPE;
/* VP9 levels */
typedef enum _OMX_VIDEO_VP9LEVELTYPE {
OMX_VIDEO_VP9Level1 = 0x0,
OMX_VIDEO_VP9Level11 = 0x1,
OMX_VIDEO_VP9Level2 = 0x2,
OMX_VIDEO_VP9Level21 = 0x4,
OMX_VIDEO_VP9Level3 = 0x8,
OMX_VIDEO_VP9Level31 = 0x10,
OMX_VIDEO_VP9Level4 = 0x20,
OMX_VIDEO_VP9Level41 = 0x40,
OMX_VIDEO_VP9Level5 = 0x80,
OMX_VIDEO_VP9Level51 = 0x100,
OMX_VIDEO_VP9Level52 = 0x200,
OMX_VIDEO_VP9Level6 = 0x400,
OMX_VIDEO_VP9Level61 = 0x800,
OMX_VIDEO_VP9Level62 = 0x1000,
OMX_VIDEO_VP9LevelUnknown = 0x6EFFFFFF,
OMX_VIDEO_VP9LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_VIDEO_VP9LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
OMX_VIDEO_VP9LevelMax = 0x7FFFFFFF
} OMX_VIDEO_VP9LEVELTYPE;
typedef struct _OMX_VIDEO_PARAM_VP9TYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_VP9PROFILETYPE eProfile;
OMX_VIDEO_VP9LEVELTYPE eLevel;
OMX_BOOL bErrorResilientMode;
} OMX_VIDEO_PARAM_VP9TYPE;
#endif // vp9 end
#ifndef USE_KHRONOS_OMX_1_2
/* WMV codec */
/** WMV Profile enum type */
typedef enum _OMX_VIDEO_WMVPROFILETYPE {
OMX_VIDEO_WMVProfileSimple = 0,
OMX_VIDEO_WMVProfileMain,
OMX_VIDEO_WMVProfileAdvanced,
OMX_VIDEO_WMVProfileUnknown = 0x6EFFFFFF,
OMX_VIDEO_WMVProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_VIDEO_WMVProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
} OMX_VIDEO_WMVPROFILETYPE;
/** WMV Level enum type */
typedef enum _OMX_VIDEO_WMVLEVELTYPE {
OMX_VIDEO_WMVLevelLow = 0,
OMX_VIDEO_WMVLevelMedium,
OMX_VIDEO_WMVLevelHigh,
OMX_VIDEO_WMVLevelL0,
OMX_VIDEO_WMVLevelL1,
OMX_VIDEO_WMVLevelL2,
OMX_VIDEO_WMVLevelL3,
OMX_VIDEO_WMVLevelL4,
OMX_VIDEO_WMVLevelUnknown = 0x6EFFFFFF,
OMX_VIDEO_WMVLevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_VIDEO_WMVLevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
} OMX_VIDEO_WMVLEVELTYPE;
/* VC1 codec */
/** VC1 Profile enum type */
typedef enum _OMX_VIDEO_VC1PROFILETYPE {
OMX_VIDEO_VC1ProfileUnused = 0,
OMX_VIDEO_VC1ProfileSimple,
OMX_VIDEO_VC1ProfileMain,
OMX_VIDEO_VC1ProfileAdvanced,
OMX_VIDEO_VC1ProfileUnknown = 0x6EFFFFFF,
OMX_VIDEO_VC1ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_VIDEO_VC1ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
OMX_VIDEO_VC1ProfileMax
} OMX_VIDEO_VC1PROFILETYPE;
/** VC1 Level enum type */
typedef enum _OMX_VIDEO_VC1LEVELTYPE {
OMX_VIDEO_VC1LevelUnused = 0,
OMX_VIDEO_VC1LevelLow,
OMX_VIDEO_VC1LevelMedium,
OMX_VIDEO_VC1LevelHigh,
OMX_VIDEO_VC1Level0,
OMX_VIDEO_VC1Level1,
OMX_VIDEO_VC1Level2,
OMX_VIDEO_VC1Level3,
OMX_VIDEO_VC1Level4,
OMX_VIDEO_VC1LevelUnknown = 0x6EFFFFFF,
OMX_VIDEO_VC1LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_VIDEO_VC1LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
OMX_VIDEO_VC1LevelMax
} OMX_VIDEO_VC1LEVELTYPE;
/** Structure for controlling VC1 video encoding and decoding */
typedef struct _OMX_VIDEO_PARAM_VC1TYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_VC1PROFILETYPE eProfile;
OMX_VIDEO_VC1LEVELTYPE eLevel;
} OMX_VIDEO_PARAM_VC1TYPE;
#endif // USE_KHRONOS_OMX_1_2
// codec specific end
// for android
typedef struct _EXYNOS_OMX_VIDEO_PRIMARIES {
OMX_U16 x;
OMX_U16 y;
} EXYNOS_OMX_VIDEO_PRIMARIES;
typedef struct _EXYNOS_OMX_VIDEO_HDRSTATICINFO {
OMX_U32 nMaxPicAverageLight;
OMX_U32 nMaxContentLight;
OMX_U32 nMaxDisplayLuminance;
OMX_U32 nMinDisplayLuminance;
EXYNOS_OMX_VIDEO_PRIMARIES red;
EXYNOS_OMX_VIDEO_PRIMARIES green;
EXYNOS_OMX_VIDEO_PRIMARIES blue;
EXYNOS_OMX_VIDEO_PRIMARIES white;
} EXYNOS_OMX_VIDEO_HDRSTATICINFO;
typedef struct _EXYNOS_OMX_VIDEO_COLORASPECTS {
OMX_U32 nRangeType;
OMX_U32 nPrimaryType;
OMX_U32 nTransferType;
OMX_U32 nCoeffType;
OMX_U32 nDataSpace;
} EXYNOS_OMX_VIDEO_COLORASPECTS;
#define MAX_HDR10PLUS_SIZE 1024
typedef struct _EXYNOS_OMX_VIDEO_HDR10PLUS_INFO {
OMX_BOOL bOccupied;
OMX_U32 nTag;
OMX_PTR pHDR10PlusInfo;
} EXYNOS_OMX_VIDEO_HDR10PLUS_INFO;
#ifdef USE_KHRONOS_OMX_HEADER
/**
* Structure for configuring video compression intra refresh period
*
* STRUCT MEMBERS:
* nSize : Size of the structure in bytes
* nVersion : OMX specification version information
* nPortIndex : Port that this structure applies to
* nRefreshPeriod : Intra refreh period in frames. Value 0 means disable intra refresh
*/
typedef struct _OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nRefreshPeriod;
} OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE;
/** Maximum number of VP8 temporal layers */
#define OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS 3
/** VP8 temporal layer patterns */
typedef enum _OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE {
OMX_VIDEO_VPXTemporalLayerPatternNone = 0,
OMX_VIDEO_VPXTemporalLayerPatternWebRTC = 1,
OMX_VIDEO_VPXTemporalLayerPatternMax = 0x7FFFFFFF
} OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE;
/**
* Android specific VP8/VP9 encoder params
*
* STRUCT MEMBERS:
* nSize : Size of the structure in bytes
* nVersion : OMX specification version information
* nPortIndex : Port that this structure applies to
* nKeyFrameInterval : Key frame interval in frames
* eTemporalPattern : Type of temporal layer pattern
* nTemporalLayerCount : Number of temporal coding layers
* nTemporalLayerBitrateRatio : Bitrate ratio allocation between temporal
* streams in percentage
* nMinQuantizer : Minimum (best quality) quantizer
* nMaxQuantizer : Maximum (worst quality) quantizer
*/
typedef struct _OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nKeyFrameInterval; // distance between consecutive key_frames (including one
// of the key_frames). 0 means interval is unspecified and
// can be freely chosen by the codec. 1 means a stream of
// only key_frames.
OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE eTemporalPattern;
OMX_U32 nTemporalLayerCount;
OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS];
OMX_U32 nMinQuantizer;
OMX_U32 nMaxQuantizer;
} OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE;
/** Structure to define if dependent slice segments should be used */
typedef struct _OMX_VIDEO_SLICESEGMENTSTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bDepedentSegments;
OMX_BOOL bEnableLoopFilterAcrossSlices;
} OMX_VIDEO_SLICESEGMENTSTYPE;
#define OMX_MAX_STRINGVALUE_SIZE OMX_MAX_STRINGNAME_SIZE
#define OMX_MAX_ANDROID_VENDOR_PARAMCOUNT 32
typedef enum _OMX_ANDROID_VENDOR_VALUETYPE {
OMX_AndroidVendorValueInt32 = 0, /*<< int32_t value */
OMX_AndroidVendorValueInt64, /*<< int64_t value */
OMX_AndroidVendorValueString, /*<< string value */
OMX_AndroidVendorValueEndUnused,
} OMX_ANDROID_VENDOR_VALUETYPE;
/**
* Structure describing a single value of an Android vendor extension.
*
* STRUCTURE MEMBERS:
* cKey : parameter value name.
* eValueType : parameter value type
* bSet : if false, the parameter is not set (for OMX_GetConfig) or is unset (OMX_SetConfig)
* if true, the parameter is set to the corresponding value below
* nInt64 : int64 value
* cString : string value
*/
typedef struct _OMX_CONFIG_ANDROID_VENDOR_PARAMTYPE {
OMX_U8 cKey[OMX_MAX_STRINGNAME_SIZE];
OMX_ANDROID_VENDOR_VALUETYPE eValueType;
OMX_BOOL bSet;
union {
OMX_S32 nInt32;
OMX_S64 nInt64;
OMX_U8 cString[OMX_MAX_STRINGVALUE_SIZE];
};
} OMX_CONFIG_ANDROID_VENDOR_PARAMTYPE;
/**
* OMX_CONFIG_ANDROID_VENDOR_EXTENSIONTYPE is the structure for an Android vendor extension
* supported by the component. This structure enumerates the various extension parameters and their
* values.
*
* Android vendor extensions have a name and one or more parameter values - each with a string key -
* that are set together. The values are exposed to Android applications via a string key that is
* the concatenation of 'vendor', the extension name and the parameter key, each separated by dot
* (.), with any trailing '.value' suffix(es) removed (though optionally allowed).
*
* Extension names and parameter keys are subject to the following rules:
* - Each SHALL contain a set of lowercase alphanumeric (underscore allowed) tags separated by
* dot (.) or dash (-).
* - The first character of the first tag, and any tag following a dot SHALL not start with a
* digit.
* - Tags 'value', 'vendor', 'omx' and 'android' (even if trailed and/or followed by any number
* of underscores) are prohibited in the extension name.
* - Tags 'vendor', 'omx' and 'android' (even if trailed and/or followed by any number
* of underscores) are prohibited in parameter keys.
* - The tag 'value' (even if trailed and/or followed by any number
* of underscores) is prohibited in parameter keys with the following exception:
* the parameter key may be exactly 'value'
* - The parameter key for extensions with a single parameter value SHALL be 'value'
* - No two extensions SHALL have the same name
* - No extension's name SHALL start with another extension's NAME followed by a dot (.)
* - No two parameters of an extension SHALL have the same key
*
* This config can be used with both OMX_GetConfig and OMX_SetConfig. In the OMX_GetConfig
* case, the caller specifies nIndex and nParamSizeUsed. The component fills in cName,
* eDir and nParamCount. Additionally, if nParamSizeUsed is not less than nParamCount, the
* component fills out the parameter values (nParam) with the current values for each parameter
* of the vendor extension.
*
* The value of nIndex goes from 0 to N-1, where N is the number of Android vendor extensions
* supported by the component. The component does not need to report N as the caller can determine
* N by enumerating all extensions supported by the component. The component may not support any
* extensions. If there are no more extensions, OMX_GetParameter returns OMX_ErrorNoMore. The
* component supplies extensions in the order it wants clients to set them.
*
* The component SHALL return OMX_ErrorNone for all cases where nIndex is less than N (specifically
* even in the case of where nParamCount is greater than nParamSizeUsed).
*
* In the OMX_SetConfig case the field nIndex is ignored. If the component supports an Android
* vendor extension with the name in cName, it SHALL configure the parameter values for that
* extension according to the parameters in nParam. nParamCount is the number of valid parameters
* in the nParam array, and nParamSizeUsed is the size of the nParam array. (nParamSizeUsed
* SHALL be at least nParamCount) Parameters that are part of a vendor extension but are not
* in the nParam array are assumed to be unset (this is different from not changed).
* All parameter values SHALL have distinct keys in nParam (the component can assume that this
* is the case. Otherwise, the actual value for the parameters that are multiply defined can
* be any of the set values.)
*
* Return values in case of OMX_SetConfig:
* OMX_ErrorUnsupportedIndex: the component does not support the extension specified by cName
* OMX_ErrorUnsupportedSetting: the component does not support some or any of the parameters
* (names) specified in nParam
* OMX_ErrorBadParameter: the parameter is invalid (e.g. nParamCount is greater than
* nParamSizeUsed, or some parameter value has invalid type)
*
* STRUCTURE MEMBERS:
* nSize : size of the structure in bytes
* nVersion : OMX specification version information
* cName : name of vendor extension
* nParamCount : the number of parameter values that are part of this vendor extension
* nParamSizeUsed : the size of nParam
* (must be at least 1 and at most OMX_MAX_ANDROID_VENDOR_PARAMCOUNT)
* param : the parameter values
*/
typedef struct _OMX_CONFIG_ANDROID_VENDOR_EXTENSIONTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nIndex;
OMX_U8 cName[OMX_MAX_STRINGNAME_SIZE];
OMX_DIRTYPE eDir;
OMX_U32 nParamCount;
OMX_U32 nParamSizeUsed;
OMX_CONFIG_ANDROID_VENDOR_PARAMTYPE param[1];
} OMX_CONFIG_ANDROID_VENDOR_EXTENSIONTYPE;
/** Maximum number of temporal layers supported by AVC/HEVC */
#define OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS 8
/** temporal layer patterns */
typedef enum OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE {
OMX_VIDEO_AndroidTemporalLayeringPatternNone = 0,
// pattern as defined by WebRTC
OMX_VIDEO_AndroidTemporalLayeringPatternWebRTC = 1 << 0,
// pattern where frames in any layer other than the base layer only depend on at most the very
// last frame from each preceding layer (other than the base layer.)
OMX_VIDEO_AndroidTemporalLayeringPatternAndroid = 1 << 1,
} OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE;
/**
* Android specific param for configuration of temporal layering.
* Android only supports temporal layering where successive layers each double the
* previous layer's framerate.
* NOTE: Reading this parameter at run-time SHALL return actual run-time values.
*
* nSize : Size of the structure in bytes
* nVersion : OMX specification version information
* nPortIndex : Port that this structure applies to (output port for encoders)
* eSupportedPatterns : A bitmask of supported layering patterns
* nLayerCountMax : Max number of temporal coding layers supported
* by the encoder (must be at least 1, 1 meaning temporal layering
* is NOT supported)
* nBLayerCountMax : Max number of layers that can contain B frames
* (0) to (nLayerCountMax - 1)
* ePattern : Layering pattern.
* nPLayerCountActual : Number of temporal layers to be coded with non-B frames,
* starting from and including the base-layer.
* (1 to nLayerCountMax - nBLayerCountActual)
* If nPLayerCountActual is 1 and nBLayerCountActual is 0, temporal
* layering is disabled. Otherwise, it is enabled.
* nBLayerCountActual : Number of temporal layers to be coded with B frames,
* starting after non-B layers.
* (0 to nBLayerCountMax)
* bBitrateRatiosSpecified : Flag to indicate if layer-wise bitrate
* distribution is specified.
* nBitrateRatios : Bitrate ratio (100 based) per layer (index 0 is base layer).
* Honored if bBitrateRatiosSpecified is set.
* i.e for 4 layers with desired distribution (25% 25% 25% 25%),
* nBitrateRatio = {25, 50, 75, 100, ... }
* Values in indices not less than 'the actual number of layers
* minus 1' MAY be ignored and assumed to be 100.
*/
typedef struct OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE eSupportedPatterns;
OMX_U32 nLayerCountMax;
OMX_U32 nBLayerCountMax;
OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE ePattern;
OMX_U32 nPLayerCountActual;
OMX_U32 nBLayerCountActual;
OMX_BOOL bBitrateRatiosSpecified;
OMX_U32 nBitrateRatios[OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS];
} OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE;
/**
* Android specific config for changing the temporal-layer count or
* bitrate-distribution at run-time.
*
* nSize : Size of the structure in bytes
* nVersion : OMX specification version information
* nPortIndex : Port that this structure applies to (output port for encoders)
* ePattern : Layering pattern.
* nPLayerCountActual : Number of temporal layers to be coded with non-B frames.
* (same OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE limits apply.)
* nBLayerCountActual : Number of temporal layers to be coded with B frames.
* (same OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE limits apply.)
* bBitrateRatiosSpecified : Flag to indicate if layer-wise bitrate
* distribution is specified.
* nBitrateRatios : Bitrate ratio (100 based, Q16 values) per layer (0 is base layer).
* Honored if bBitrateRatiosSpecified is set.
* (same OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE limits apply.)
*/
typedef struct OMX_VIDEO_CONFIG_ANDROID_TEMPORALLAYERINGTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE ePattern;
OMX_U32 nPLayerCountActual;
OMX_U32 nBLayerCountActual;
OMX_BOOL bBitrateRatiosSpecified;
OMX_U32 nBitrateRatios[OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS];
} OMX_VIDEO_CONFIG_ANDROID_TEMPORALLAYERINGTYPE;
#endif
// android end
// for custom component
typedef struct _EXYNOS_OMX_VIDEO_PARAM_CORRUPTEDHEADER {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_BOOL bDiscardEvent;
} EXYNOS_OMX_VIDEO_PARAM_CORRUPTEDHEADER;
typedef struct _OMX_VIDEO_PARAM_IMG_CONV {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bEnable;
OMX_U32 nWidth;
OMX_U32 nHeight;
} OMX_VIDEO_PARAM_IMG_CONV;
// custom component end
// for Skype HD
typedef struct OMX_VIDEO_PARAM_DRIVERVER {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U64 nDriverVersion;
} OMX_VIDEO_PARAM_DRIVERVER;
typedef struct OMX_VIDEO_CONFIG_MARKLTRFRAME {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nLongTermFrmIdx;
} OMX_VIDEO_CONFIG_MARKLTRFRAME;
typedef struct OMX_VIDEO_CONFIG_USELTRFRAME {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U16 nUsedLTRFrameBM;
} OMX_VIDEO_CONFIG_USELTRFRAME;
typedef struct OMX_VIDEO_CONFIG_QP {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nQP;
} OMX_VIDEO_CONFIG_QP;
typedef struct OMX_VIDEO_CONFIG_BASELAYERPID{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nPID;
} OMX_VIDEO_CONFIG_BASELAYERPID;
typedef struct __OMX_PARAM_ENC_MAX_TEMPORALLAYER_COUNT {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nMaxCountP;
OMX_U32 nMaxCountB;
} OMX_PARAM_ENC_MAX_TEMPORALLAYER_COUNT;
typedef struct __OMX_PARAM_ENC_PREPROCESS {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nResize;
OMX_U32 nRotation;
} OMX_PARAM_ENC_PREPROCESS;
typedef struct __OMX_PARAM_ENC_SAR {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nWidth;
OMX_U32 nHeight;
} OMX_PARAM_ENC_SAR;
typedef struct __OMX_CONFIG_ENC_TRIGGER_TS {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_S64 nTimestamp;
} OMX_CONFIG_ENC_TRIGGER_TS;
#ifndef __OMX_EXPORTS
#define __OMX_EXPORTS
#define EXYNOS_EXPORT_REF __attribute__((visibility("default")))
#define EXYNOS_IMPORT_REF __attribute__((visibility("default")))
#endif
#endif