1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#ifndef CODEC_OMX_EXT_H 17094332d3Sopenharmony_ci#define CODEC_OMX_EXT_H 18094332d3Sopenharmony_ci#include <OMX_IVCommon.h> 19094332d3Sopenharmony_ci#include <OMX_Video.h> 20094332d3Sopenharmony_ci#include <stdbool.h> 21094332d3Sopenharmony_ci#ifdef __cplusplus 22094332d3Sopenharmony_ci#if __cplusplus 23094332d3Sopenharmony_ciextern "C" { 24094332d3Sopenharmony_ci#endif 25094332d3Sopenharmony_ci#endif /* __cplusplus */ 26094332d3Sopenharmony_ci 27094332d3Sopenharmony_ci#define PROCESS_NAME_LEN 50 28094332d3Sopenharmony_ci 29094332d3Sopenharmony_ci/** 30094332d3Sopenharmony_ci * @brief Enumerates the extended AVC profile. 31094332d3Sopenharmony_ci */ 32094332d3Sopenharmony_cienum CodecAVCProfileExt { 33094332d3Sopenharmony_ci OMX_VIDEO_AVC_LEVEL52 = 0x10000, /**< Level 5.2 */ 34094332d3Sopenharmony_ci OMX_VIDEO_AVC_LEVEL6 = 0x20000, /**< Level 6 */ 35094332d3Sopenharmony_ci OMX_VIDEO_AVC_LEVEL61 = 0x40000, /**< Level 6.1 */ 36094332d3Sopenharmony_ci OMX_VIDEO_AVC_LEVEL62 = 0x80000, /**< Level 6.2 */ 37094332d3Sopenharmony_ci}; 38094332d3Sopenharmony_ci 39094332d3Sopenharmony_ci/** 40094332d3Sopenharmony_ci * @brief Enumerates the extended codec codingtyps. 41094332d3Sopenharmony_ci */ 42094332d3Sopenharmony_cienum CodecVideoExType { 43094332d3Sopenharmony_ci CODEC_OMX_VIDEO_CodingVP9 = 10, /** VP9 Index in Codec HDI */ 44094332d3Sopenharmony_ci CODEC_OMX_VIDEO_CodingHEVC = 11, /** HEVC Index in Codec HDI */ 45094332d3Sopenharmony_ci CODEC_OMX_VIDEO_CodingVVC = 12, /** VVC Index in Codec HDI */ 46094332d3Sopenharmony_ci}; 47094332d3Sopenharmony_ci 48094332d3Sopenharmony_ci/** 49094332d3Sopenharmony_ci * @brief Enumerates the extended HEVC profile. 50094332d3Sopenharmony_ci */ 51094332d3Sopenharmony_cienum CodecHevcProfile { 52094332d3Sopenharmony_ci CODEC_HEVC_PROFILE_INVALID = 0x0, 53094332d3Sopenharmony_ci CODEC_HEVC_PROFILE_MAIN = 0x1, 54094332d3Sopenharmony_ci CODEC_HEVC_PROFILE_MAIN10 = 0x2, 55094332d3Sopenharmony_ci CODEC_HEVC_PROFILE_MAIN_STILL = 0x3, 56094332d3Sopenharmony_ci // main_10 profile with HDR SEI support. 57094332d3Sopenharmony_ci CODEC_HEVC_PROFILE_MAIN10_HDR10 = 0x1000, 58094332d3Sopenharmony_ci CODEC_HEVC_PROFILE_MAIN10_HDR10_PLUS = 0x2000, 59094332d3Sopenharmony_ci CODEC_HEVC_PROFILE_MAX = 0x7FFFFFFF 60094332d3Sopenharmony_ci}; 61094332d3Sopenharmony_ci 62094332d3Sopenharmony_ci/** 63094332d3Sopenharmony_ci * @brief Enumerates the extended HEVC level. 64094332d3Sopenharmony_ci */ 65094332d3Sopenharmony_cienum CodecHevcLevel { 66094332d3Sopenharmony_ci CODEC_HEVC_LEVEL_INVALID = 0x0, 67094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL1 = 0x1, 68094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL1 = 0x2, 69094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL2 = 0x4, 70094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL2 = 0x8, 71094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL21 = 0x10, 72094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL21 = 0x20, 73094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL3 = 0x40, 74094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL3 = 0x80, 75094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL31 = 0x100, 76094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL31 = 0x200, 77094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL4 = 0x400, 78094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL4 = 0x800, 79094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL41 = 0x1000, 80094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL41 = 0x2000, 81094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL5 = 0x4000, 82094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL5 = 0x8000, 83094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL51 = 0x10000, 84094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL51 = 0x20000, 85094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL52 = 0x40000, 86094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL52 = 0x80000, 87094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL6 = 0x100000, 88094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL6 = 0x200000, 89094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL61 = 0x400000, 90094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL61 = 0x800000, 91094332d3Sopenharmony_ci CODEC_HEVC_MAIN_TIER_LEVEL62 = 0x1000000, 92094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_LEVEL62 = 0x2000000, 93094332d3Sopenharmony_ci CODEC_HEVC_HIGH_TIER_MAX = 0x7FFFFFFF 94094332d3Sopenharmony_ci}; 95094332d3Sopenharmony_ci 96094332d3Sopenharmony_ci/** 97094332d3Sopenharmony_ci * @brief Enumerates the extended codec color format. 98094332d3Sopenharmony_ci */ 99094332d3Sopenharmony_cienum CodecColorFormatExt { 100094332d3Sopenharmony_ci CODEC_COLOR_FORMAT_RGBA8888 = OMX_COLOR_FormatVendorStartUnused + 100, 101094332d3Sopenharmony_ci}; 102094332d3Sopenharmony_ci 103094332d3Sopenharmony_ci/** 104094332d3Sopenharmony_ci * @brief Enumerates the buffer types. 105094332d3Sopenharmony_ci */ 106094332d3Sopenharmony_cienum CodecBufferType { 107094332d3Sopenharmony_ci /** Invalid buffer type. */ 108094332d3Sopenharmony_ci CODEC_BUFFER_TYPE_INVALID = 0, 109094332d3Sopenharmony_ci /** Virtual address type. */ 110094332d3Sopenharmony_ci CODEC_BUFFER_TYPE_VIRTUAL_ADDR = 0x1, 111094332d3Sopenharmony_ci /** Shared memory. */ 112094332d3Sopenharmony_ci CODEC_BUFFER_TYPE_AVSHARE_MEM_FD = 0x2, 113094332d3Sopenharmony_ci /** Handle. */ 114094332d3Sopenharmony_ci CODEC_BUFFER_TYPE_HANDLE = 0x4, 115094332d3Sopenharmony_ci /** Dynamic handle. */ 116094332d3Sopenharmony_ci CODEC_BUFFER_TYPE_DYNAMIC_HANDLE = 0x8, 117094332d3Sopenharmony_ci /** DMA memory. */ 118094332d3Sopenharmony_ci CODEC_BUFFER_TYPE_DMA_MEM_FD = 0x10, 119094332d3Sopenharmony_ci}; 120094332d3Sopenharmony_ci 121094332d3Sopenharmony_ci/** 122094332d3Sopenharmony_ci * @brief Defines the <b>SupportBuffer</b>. 123094332d3Sopenharmony_ci */ 124094332d3Sopenharmony_cistruct SupportBufferType { 125094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 126094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 127094332d3Sopenharmony_ci uint32_t portIndex; /** Port index */ 128094332d3Sopenharmony_ci uint32_t bufferTypes; /** Supported buffer types */ 129094332d3Sopenharmony_ci}; 130094332d3Sopenharmony_ci 131094332d3Sopenharmony_ci/** 132094332d3Sopenharmony_ci * @brief Define the <b>UseBuffer</b>. 133094332d3Sopenharmony_ci */ 134094332d3Sopenharmony_cistruct UseBufferType { 135094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 136094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 137094332d3Sopenharmony_ci uint32_t portIndex; /** Port index */ 138094332d3Sopenharmony_ci uint32_t bufferType; /** Buffer type */ 139094332d3Sopenharmony_ci}; 140094332d3Sopenharmony_ci 141094332d3Sopenharmony_ci/** 142094332d3Sopenharmony_ci * @brief Defines the <b>BufferHandleUsage</b>. 143094332d3Sopenharmony_ci */ 144094332d3Sopenharmony_cistruct GetBufferHandleUsageParams { 145094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 146094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 147094332d3Sopenharmony_ci uint32_t portIndex; /** Port index */ 148094332d3Sopenharmony_ci uint64_t usage; /** Usage */ 149094332d3Sopenharmony_ci}; 150094332d3Sopenharmony_ci 151094332d3Sopenharmony_ci/** 152094332d3Sopenharmony_ci * @brief Defines the <b>CodecVideoPortFormatParam</b>. 153094332d3Sopenharmony_ci */ 154094332d3Sopenharmony_cistruct CodecVideoPortFormatParam { 155094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 156094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 157094332d3Sopenharmony_ci uint32_t portIndex; /** Port index */ 158094332d3Sopenharmony_ci uint32_t codecColorIndex; /** Color format index */ 159094332d3Sopenharmony_ci uint32_t codecColorFormat; /** Color format defined in Display */ 160094332d3Sopenharmony_ci uint32_t codecCompressFormat; /** See */ 161094332d3Sopenharmony_ci uint32_t framerate; /** Q16 format */ 162094332d3Sopenharmony_ci}; 163094332d3Sopenharmony_ci 164094332d3Sopenharmony_ci/** 165094332d3Sopenharmony_ci * @brief Defines the <b>ControlRateConstantQuality</b>. 166094332d3Sopenharmony_ci */ 167094332d3Sopenharmony_cistruct ControlRateConstantQuality { 168094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 169094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 170094332d3Sopenharmony_ci uint32_t portIndex; /** Port index */ 171094332d3Sopenharmony_ci uint32_t qualityValue; /** Control rate constant quality */ 172094332d3Sopenharmony_ci}; 173094332d3Sopenharmony_ci 174094332d3Sopenharmony_ci/** 175094332d3Sopenharmony_ci * @brief Defines the <b>PassthroughParam</b>. 176094332d3Sopenharmony_ci */ 177094332d3Sopenharmony_cistruct PassthroughParam { 178094332d3Sopenharmony_ci int32_t key; /**< Parameter type index */ 179094332d3Sopenharmony_ci void *val; /**< Pointer to the parameter value */ 180094332d3Sopenharmony_ci int size; /**< Parameter value size */ 181094332d3Sopenharmony_ci}; 182094332d3Sopenharmony_ci 183094332d3Sopenharmony_ci/** 184094332d3Sopenharmony_ci * @brief Defines the <b>WorkingFrequencyParam</b>. 185094332d3Sopenharmony_ci */ 186094332d3Sopenharmony_cistruct WorkingFrequencyParam { 187094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 188094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 189094332d3Sopenharmony_ci uint32_t level; /** Working Frequency level */ 190094332d3Sopenharmony_ci}; 191094332d3Sopenharmony_ci 192094332d3Sopenharmony_ci /** 193094332d3Sopenharmony_ci * @brief Defines the <b>ProcessNameParam</b>. 194094332d3Sopenharmony_ci */ 195094332d3Sopenharmony_cistruct ProcessNameParam { 196094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 197094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 198094332d3Sopenharmony_ci char processName[PROCESS_NAME_LEN]; /** Process name array */ 199094332d3Sopenharmony_ci}; 200094332d3Sopenharmony_ci 201094332d3Sopenharmony_ci/** 202094332d3Sopenharmony_ci * @brief Defines the <b>AudioCodecParam</b>. 203094332d3Sopenharmony_ci */ 204094332d3Sopenharmony_cistruct AudioCodecParam { 205094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 206094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 207094332d3Sopenharmony_ci uint32_t sampleRate; /** Sample Rate */ 208094332d3Sopenharmony_ci uint32_t sampleFormat; /** Sample Format */ 209094332d3Sopenharmony_ci uint32_t channels; /** Channels */ 210094332d3Sopenharmony_ci uint32_t bitRate; /** Bit Rate */ 211094332d3Sopenharmony_ci uint32_t reserved; /** reserved word */ 212094332d3Sopenharmony_ci}; 213094332d3Sopenharmony_ci 214094332d3Sopenharmony_ci/** 215094332d3Sopenharmony_ci * @brief Enumerates the extended codec indexes. 216094332d3Sopenharmony_ci */ 217094332d3Sopenharmony_cienum OmxIndexCodecExType { 218094332d3Sopenharmony_ci /** Extended BufferType index */ 219094332d3Sopenharmony_ci OMX_IndexExtBufferTypeStartUnused = OMX_IndexKhronosExtensions + 0x00a00000, 220094332d3Sopenharmony_ci /** SupportBuffer */ 221094332d3Sopenharmony_ci OMX_IndexParamSupportBufferType, 222094332d3Sopenharmony_ci /** UseBuffer */ 223094332d3Sopenharmony_ci OMX_IndexParamUseBufferType, 224094332d3Sopenharmony_ci /** GetBufferHandleUsage */ 225094332d3Sopenharmony_ci OMX_IndexParamGetBufferHandleUsage, 226094332d3Sopenharmony_ci /** CodecVideoPortFormatParam */ 227094332d3Sopenharmony_ci OMX_IndexCodecVideoPortFormat, 228094332d3Sopenharmony_ci /** ControlRateConstantQuality */ 229094332d3Sopenharmony_ci OMX_IndexParamControlRateConstantQuality, 230094332d3Sopenharmony_ci /** PassthroughParam */ 231094332d3Sopenharmony_ci OMX_IndexParamPassthrough, 232094332d3Sopenharmony_ci /** OMX_IndexParamVideoHevc */ 233094332d3Sopenharmony_ci OMX_IndexParamVideoHevc, 234094332d3Sopenharmony_ci /** range/primary/transfer/matrix */ 235094332d3Sopenharmony_ci OMX_IndexColorAspects, 236094332d3Sopenharmony_ci /** WorkingFrequencyParam */ 237094332d3Sopenharmony_ci OMX_IndexParamWorkingFrequency, 238094332d3Sopenharmony_ci /** ProcessNameParam */ 239094332d3Sopenharmony_ci OMX_IndexParamProcessName, 240094332d3Sopenharmony_ci /** AudioCodecParam */ 241094332d3Sopenharmony_ci OMX_IndexParamAudioCodec, 242094332d3Sopenharmony_ci /** CodecParamOverlayBuffer */ 243094332d3Sopenharmony_ci OMX_IndexParamOverlayBuffer, 244094332d3Sopenharmony_ci /** CodecLTRParam/CodecLTRPerFrameParam */ 245094332d3Sopenharmony_ci OMX_IndexParamLTR, 246094332d3Sopenharmony_ci /** CodecQPRangeParam */ 247094332d3Sopenharmony_ci OMX_IndexParamQPRange, 248094332d3Sopenharmony_ci /** OMX_CONFIG_BOOLEANTYPE */ 249094332d3Sopenharmony_ci OMX_IndexParamLowLatency, 250094332d3Sopenharmony_ci /** WirelessLowDelay */ 251094332d3Sopenharmony_ci OMX_IndexParamWirelessLowDelay, 252094332d3Sopenharmony_ci /** OMX_S32 */ 253094332d3Sopenharmony_ci OMX_IndexParamEncOutQp, 254094332d3Sopenharmony_ci /** double */ 255094332d3Sopenharmony_ci OMX_IndexParamEncOutMse, 256094332d3Sopenharmony_ci /** CodecEncOutLTRParam */ 257094332d3Sopenharmony_ci OMX_IndexParamEncOutLTR, 258094332d3Sopenharmony_ci /** CodecTemperalLayerParam */ 259094332d3Sopenharmony_ci OMX_IndexParamTemperalLayer, 260094332d3Sopenharmony_ci /** OMX_CONFIG_BOOLEANTYPE */ 261094332d3Sopenharmony_ci OMX_IndexParamEncParamsFeedback, 262094332d3Sopenharmony_ci /** OMX_S32 */ 263094332d3Sopenharmony_ci OMX_IndexParamEncOutFrameLayer, 264094332d3Sopenharmony_ci /** OMX_S32 */ 265094332d3Sopenharmony_ci OMX_IndexParamQPStsart, 266094332d3Sopenharmony_ci /** OMX_BOOL */ 267094332d3Sopenharmony_ci OMX_IndexParamSkipFrame, 268094332d3Sopenharmony_ci /** OMX_S32 */ 269094332d3Sopenharmony_ci OMX_IndexParamEncOutRealBitrate, 270094332d3Sopenharmony_ci /** CodecEncOutMadParam */ 271094332d3Sopenharmony_ci OMX_IndexParamEncOutMad, 272094332d3Sopenharmony_ci /** OMX_S32 */ 273094332d3Sopenharmony_ci OMX_IndexParamEncOutIRatio, 274094332d3Sopenharmony_ci /** OMX_S32 */ 275094332d3Sopenharmony_ci OMX_IndexParamEncOutFrameQp, 276094332d3Sopenharmony_ci /** OMX_CONFIG_BOOLEANTYPE */ 277094332d3Sopenharmony_ci OMX_IndexParamSupportPackInput, 278094332d3Sopenharmony_ci /** OMX_CONFIG_BOOLEANTYPE */ 279094332d3Sopenharmony_ci OMX_IndexParamIsMvUpload, 280094332d3Sopenharmony_ci}; 281094332d3Sopenharmony_ci 282094332d3Sopenharmony_ci/** 283094332d3Sopenharmony_ci * @brief Enumerates the Other Control Rate Type. 284094332d3Sopenharmony_ci */ 285094332d3Sopenharmony_citypedef enum OmxVideoControlRateVendorExtType { 286094332d3Sopenharmony_ci /** constant bit rate mode with Rlambda */ 287094332d3Sopenharmony_ci OMX_Video_ControlRateConstantWithRlambda = OMX_Video_ControlRateVendorStartUnused + 0x1, 288094332d3Sopenharmony_ci} OmxVideoControlRateVendorExtType; 289094332d3Sopenharmony_ci 290094332d3Sopenharmony_ci/** 291094332d3Sopenharmony_ci * @brief Enumerates the Other extended codec indexes. 292094332d3Sopenharmony_ci */ 293094332d3Sopenharmony_cienum OmxIndexCodecOtherExtType { 294094332d3Sopenharmony_ci /** Extended Config AutoFramerate Conversion */ 295094332d3Sopenharmony_ci OMX_IndexCodecExtConfigAutoFramerateConversion = OMX_IndexOtherStartUnused + 0x1, 296094332d3Sopenharmony_ci /** Extended Config Priority */ 297094332d3Sopenharmony_ci OMX_IndexCodecExtConfigPriority, 298094332d3Sopenharmony_ci /** Extended Config OperatingRate index */ 299094332d3Sopenharmony_ci OMX_IndexCodecExtConfigOperatingRate, 300094332d3Sopenharmony_ci}; 301094332d3Sopenharmony_ci 302094332d3Sopenharmony_cienum OmxIndexCodecVendorExtType { 303094332d3Sopenharmony_ci /** Extended Channel Attributes index */ 304094332d3Sopenharmony_ci OMX_IndexCodecExtChannelAttributes = OMX_IndexVendorStartUnused + 0x1, 305094332d3Sopenharmony_ci /** CodecEnableNativeBufferParams */ 306094332d3Sopenharmony_ci OMX_IndexCodecExtEnableNativeBuffer, 307094332d3Sopenharmony_ci}; 308094332d3Sopenharmony_ci 309094332d3Sopenharmony_ci/** 310094332d3Sopenharmony_ci * @brief Structure for controlling HEVC video encoding 311094332d3Sopenharmony_ci */ 312094332d3Sopenharmony_cistruct CodecVideoParamHevc { 313094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 314094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 315094332d3Sopenharmony_ci uint32_t portIndex; /** Port index */ 316094332d3Sopenharmony_ci enum CodecHevcProfile profile; /** Hevc profile. For details, see {@link CodecHevcProfile}. */ 317094332d3Sopenharmony_ci enum CodecHevcLevel level; /** Hevc level. For details, see {@link CodecHevcLevel}. */ 318094332d3Sopenharmony_ci uint32_t keyFrameInterval; /** Distance between consecutive I-frames (including one of the I frams). 319094332d3Sopenharmony_ci 0 means interval is unspecified and can be freely chosen by the codec. 320094332d3Sopenharmony_ci 1 means a stream of only I frams. other means the real value. */ 321094332d3Sopenharmony_ci}; 322094332d3Sopenharmony_ci 323094332d3Sopenharmony_ci/** 324094332d3Sopenharmony_ci * @brief Defines the <b>CodecEnableNativeBufferParams</b>. 325094332d3Sopenharmony_ci */ 326094332d3Sopenharmony_cistruct CodecEnableNativeBufferParams { 327094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 328094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 329094332d3Sopenharmony_ci uint32_t portIndex; /** Port index */ 330094332d3Sopenharmony_ci bool enable; /** Enable NativeBuffer */ 331094332d3Sopenharmony_ci}; 332094332d3Sopenharmony_ci 333094332d3Sopenharmony_cistruct ColorAspects { 334094332d3Sopenharmony_ci bool range; 335094332d3Sopenharmony_ci uint8_t primaries; 336094332d3Sopenharmony_ci uint8_t transfer; 337094332d3Sopenharmony_ci uint8_t matrixCoeffs; 338094332d3Sopenharmony_ci}; 339094332d3Sopenharmony_ci 340094332d3Sopenharmony_ci/** 341094332d3Sopenharmony_ci * @brief Structure for controlling color space 342094332d3Sopenharmony_ci*/ 343094332d3Sopenharmony_cistruct CodecVideoColorspace { 344094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 345094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 346094332d3Sopenharmony_ci uint32_t portIndex; /** Port index */ 347094332d3Sopenharmony_ci uint32_t requestingDataSpace; 348094332d3Sopenharmony_ci uint32_t dataSpaceChanged; 349094332d3Sopenharmony_ci uint32_t pixeFormat; 350094332d3Sopenharmony_ci uint32_t dataSpace; 351094332d3Sopenharmony_ci struct ColorAspects aspects; 352094332d3Sopenharmony_ci}; 353094332d3Sopenharmony_ci 354094332d3Sopenharmony_ci/** 355094332d3Sopenharmony_ci * @brief Structure for pAppPrivate data of OMX_BUFFERHEADERTYPE 356094332d3Sopenharmony_ci*/ 357094332d3Sopenharmony_cistruct OMXBufferAppPrivateData { 358094332d3Sopenharmony_ci int32_t fd; /** dma fd or secure dma fd allocated by vender */ 359094332d3Sopenharmony_ci uint32_t sizeOfParam; 360094332d3Sopenharmony_ci void *param; 361094332d3Sopenharmony_ci}; 362094332d3Sopenharmony_ci 363094332d3Sopenharmony_cistruct CodecLTRParam { 364094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 365094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 366094332d3Sopenharmony_ci uint32_t ltrFrameListLen; 367094332d3Sopenharmony_ci}; 368094332d3Sopenharmony_ci 369094332d3Sopenharmony_cistruct CodecLTRPerFrameParam { 370094332d3Sopenharmony_ci bool markAsLTR; 371094332d3Sopenharmony_ci bool useLTR; 372094332d3Sopenharmony_ci uint32_t useLTRPoc; 373094332d3Sopenharmony_ci}; 374094332d3Sopenharmony_ci 375094332d3Sopenharmony_cistruct CodecEncOutLTRParam { 376094332d3Sopenharmony_ci bool isLTR; 377094332d3Sopenharmony_ci uint32_t poc; 378094332d3Sopenharmony_ci}; 379094332d3Sopenharmony_ci 380094332d3Sopenharmony_cistruct CodecQPRangeParam { 381094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 382094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 383094332d3Sopenharmony_ci uint32_t minQp; 384094332d3Sopenharmony_ci uint32_t maxQp; 385094332d3Sopenharmony_ci}; 386094332d3Sopenharmony_ci 387094332d3Sopenharmony_cistruct CodecTemperalLayerParam { 388094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 389094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 390094332d3Sopenharmony_ci uint32_t layerCnt; 391094332d3Sopenharmony_ci}; 392094332d3Sopenharmony_ci 393094332d3Sopenharmony_cistruct CodecParamOverlayBuffer { 394094332d3Sopenharmony_ci uint32_t size; /** Size of the structure */ 395094332d3Sopenharmony_ci union OMX_VERSIONTYPE version; /** Component version */ 396094332d3Sopenharmony_ci bool enable; 397094332d3Sopenharmony_ci uint32_t dstX; 398094332d3Sopenharmony_ci uint32_t dstY; 399094332d3Sopenharmony_ci uint32_t dstW; 400094332d3Sopenharmony_ci uint32_t dstH; 401094332d3Sopenharmony_ci void* bufferHandle; 402094332d3Sopenharmony_ci}; 403094332d3Sopenharmony_ci 404094332d3Sopenharmony_cistruct CodecEncOutMadParam { 405094332d3Sopenharmony_ci int32_t frameMadi; 406094332d3Sopenharmony_ci int32_t frameMadp; 407094332d3Sopenharmony_ci int32_t sumMadi; 408094332d3Sopenharmony_ci}; 409094332d3Sopenharmony_ci 410094332d3Sopenharmony_ci#ifdef __cplusplus 411094332d3Sopenharmony_ci#if __cplusplus 412094332d3Sopenharmony_ci} 413094332d3Sopenharmony_ci#endif 414094332d3Sopenharmony_ci#endif /* __cplusplus */ 415094332d3Sopenharmony_ci 416094332d3Sopenharmony_ci#endif // CODEC_OMX_EXT_H