1# Codec 2 3 4## **概述** 5 6Codec模块接口定义。 7 8Codec模块涉及自定义类型、音视频编解码组件初始化、参数设置、数据的轮转和控制等。 9 10**Since**: 11 123.1 13 14**Version**: 15 162.0 17 18 19## **汇总** 20 21 22### 文件 23 24 | 名称 | 描述 | 25| -------- | -------- | 26| [codec_callback_if.h](codec_callback_if_h.md) | 主要包括回调函数接口定义。 | 27| [codec_common_type.h](codec_common_type_h.md) | Codec模块接口定义中使用的自定义数据类型。 | 28| [codec_component_if.h](codec_component_if_h.md) | 主要包括Codec组件接口定义。 | 29| [codec_component_manager.h](codec__component__manager_h.md) | 主要包括Codec组件管理类接口。 | 30| [codec_component_type.h](codec__component__type_h.md) | Codec模块接口定义中使用的自定义数据类型。 | 31 32 33### 类 34 35 | 名称 | 描述 | 36| -------- | -------- | 37| [CodecCallbackType](_codec_callback_type.md) | Codec回调接口定义。 | 38| [Alignment](_alignment.md) | 对齐结构定义,包含宽高的对齐值。 | 39| [Rect](_rect.md) | 矩形的定义。 | 40| [RangeValue](_range_value.md) | 取值范围的定义。 | 41| [CodecComponentType](_codec_component_type.md) | Codec组件接口定义。 | 42| [CodecComponentManager](_codec_component_manager.md) | Codec组件管理类接口定义。 | 43| [VideoPortCap](_video_port_cap.md) | 定义视频编解码能力。 | 44| [AudioPortCap](audio_portcap.md) | 定义音频编解码能力。 | 45| [PortCap](union_port_cap.md) | 定义音视频编解码能力。 | 46| [CodecCompCapability](_codec_comp_capability.md) | 定义Codec编解码能力。 | 47| [OmxCodecBuffer](_omx_codec_buffer.md) | Codec buffer信息的定义。 | 48| [CompVerInfo](_comp_ver_info.md) | 定义组件版本信息。 | 49| [EventInfo](_event_info.md) | 定义事件上报信息。 | 50| [SupportBufferType](_support_buffer_type.md) | SupportBuffer类型定义。 | 51| [UseBufferType](_use_buffer_type.md) | UseBuffer类型定义。 | 52| [GetBufferHandleUsageParams](_get_buffer_handle_usage_params.md) | BufferHandleUsage类型定义。 | 53 54 55### 宏定义 56 57 | 名称 | 描述 | 58| -------- | -------- | 59| SAMPLE_FMT_NUM 32 | 采样格式最大值。 | 60| UUID_LENGTH 128 | 定义UUID长度。 | 61| PIX_FORMAT_NUM 16 | 支持的像素格式数组大小。 | 62| SAMPLE_FORMAT_NUM 12 | 支持的音频采样格式数组大小。 | 63| SAMPLE_RATE_NUM 16 | 支持的音频采样率数组大小。 | 64| CHANNEL_NUM 16 | 支持的音频通道数组大小。 | 65| NAME_LENGTH 32 | 组件名称大小。 | 66| PROFILE_NUM 256 | 支持的profile数组大小。 | 67 68 69### 枚举 70 71 | 名称 | 描述 | 72| -------- | -------- | 73| [CodecType](#codectype) { VIDEO_DECODER, VIDEO_ENCODER, AUDIO_DECODER, AUDIO_ENCODER, INVALID_TYPE } | 枚举编解码的类型。 | 74| [Profile](#profile) { INVALID_PROFILE = 0, AAC_LC_PROFILE = 0x1000, AAC_MAIN_PROFILE, AAC_HE_V1_PROFILE, AAC_HE_V2_PROFILE, AAC_LD_PROFILE, AAC_ELD_PROFILE, AVC_BASELINE_PROFILE = 0x2000, AVC_MAIN_PROFILE, AVC_HIGH_PROFILE, HEVC_MAIN_PROFILE = 0x3000, HEVC_MAIN_10_PROFILE } | 枚举Codec规格。 | 75| [AudioSampleRate](#audiosamplerate) { AUD_SAMPLE_RATE_8000 = 8000, AUD_SAMPLE_RATE_12000 = 12000, AUD_SAMPLE_RATE_11025 = 11025, AUD_SAMPLE_RATE_16000 = 16000, AUD_SAMPLE_RATE_22050 = 22050, AUD_SAMPLE_RATE_24000 = 24000, AUD_SAMPLE_RATE_32000 = 32000, AUD_SAMPLE_RATE_44100 = 44100, AUD_SAMPLE_RATE_48000 = 48000, AUD_SAMPLE_RATE_64000 = 64000, AUD_SAMPLE_RATE_96000 = 96000, AUD_SAMPLE_RATE_INVALID } | 枚举音频采样率。 | 76| [CodecCapsMask](#codeccapsmask) { CODEC_CAP_ADAPTIVE_PLAYBACK = 0x1, CODEC_CAP_SECURE_PLAYBACK = 0x2, CODEC_CAP_TUNNEL_PLAYBACK = 0x4, CODEC_CAP_MULTI_PLANE = 0x10000 } | 枚举播放能力。 | 77| [CodecProcessMode](#codecprocessmode) { PROCESS_BLOCKING_INPUT_BUFFER = 0X1, PROCESS_BLOCKING_OUTPUT_BUFFER = 0X2, PROCESS_BLOCKING_CONTROL_FLOW = 0X4, PROCESS_NONBLOCKING_INPUT_BUFFER = 0X100, PROCESS_NONBLOCKING_OUTPUT_BUFFER = 0X200, PROCESS_NONBLOCKING_CONTROL_FLOW = 0X400 } | 枚举编解码处理模式。 | 78| [AvCodecRole](#avcodecrole) { MEDIA_ROLETYPE_IMAGE_JPEG = 0, MEDIA_ROLETYPE_VIDEO_AVC, MEDIA_ROLETYPE_VIDEO_HEVC, MEDIA_ROLETYPE_AUDIO_FIRST = 0x10000, MEDIA_ROLETYPE_AUDIO_AAC = 0x10000, MEDIA_ROLETYPE_AUDIO_G711A, MEDIA_ROLETYPE_AUDIO_G711U, MEDIA_ROLETYPE_AUDIO_G726, MEDIA_ROLETYPE_AUDIO_PCM, MEDIA_ROLETYPE_AUDIO_MP3, MEDIA_ROLETYPE_INVALID } | 枚举音视频编解码组件类型。 | 79| [AudioSampleFormat](#audiosampleformat) { AUDIO_SAMPLE_FORMAT_S8 = 0, AUDIO_SAMPLE_FORMAT_S8P = 1, AUDIO_SAMPLE_FORMAT_U8 = 2, AUDIO_SAMPLE_FORMAT_U8P = 3, AUDIO_SAMPLE_FORMAT_S16 = 4, AUDIO_SAMPLE_FORMAT_S16P = 5, AUDIO_SAMPLE_FORMAT_U16 = 6, AUDIO_SAMPLE_FORMAT_U16P = 7, AUDIO_SAMPLE_FORMAT_S24 = 8, AUDIO_SAMPLE_FORMAT_S24P = 9, AUDIO_SAMPLE_FORMAT_U24 = 10, AUDIO_SAMPLE_FORMAT_U24P = 11, AUDIO_SAMPLE_FORMAT_S32 = 12, AUDIO_SAMPLE_FORMAT_S32P = 13, AUDIO_SAMPLE_FORMAT_U32 = 14, AUDIO_SAMPLE_FORMAT_U32P = 15, AUDIO_SAMPLE_FORMAT_S64 = 16, AUDIO_SAMPLE_FORMAT_S64P = 17, AUDIO_SAMPLE_FORMAT_U64 = 18, AUDIO_SAMPLE_FORMAT_U64P = 19, AUDIO_SAMPLE_FORMAT_F32 = 20, AUDIO_SAMPLE_FORMAT_F32P = 21, AUDIO_SAMPLE_FORMAT_F64 = 22, AUDIO_SAMPLE_FORMAT_F64P = 23, AUDIO_SAMPLE_FMT_U8, AUDIO_SAMPLE_FMT_S16, AUDIO_SAMPLE_FMT_S32, AUDIO_SAMPLE_FMT_FLOAT, AUDIO_SAMPLE_FMT_DOUBLE, AUDIO_SAMPLE_FMT_U8P, AUDIO_SAMPLE_FMT_S16P, AUDIO_SAMPLE_FMT_S32P, AUDIO_SAMPLE_FMT_FLOATP, AUDIO_SAMPLE_FMT_DOUBLEP, AUDIO_SAMPLE_FMT_INVALID } | 枚举音频采样格式。 | 80| [CodecBufferType](#codecbuffertype) { CODEC_BUFFER_TYPE_INVALID = 0, CODEC_BUFFER_TYPE_VIRTUAL_ADDR = 0x1, CODEC_BUFFER_TYPE_AVSHARE_MEM_FD = 0x2, CODEC_BUFFER_TYPE_HANDLE = 0x4, CODEC_BUFFER_TYPE_DYNAMIC_HANDLE = 0x8 } | 定义buffer类型。 | 81| [ShareMemTypes](#sharememtypes) { READ_WRITE_TYPE = 0x1, READ_ONLY_TYPE = 0x2 } | 枚举共享内存类型。 | 82| [OmxIndexCodecExType](#omxindexcodecextype) { OMX_IndexExtBufferTypeStartUnused = OMX_IndexKhronosExtensions + 0x00a00000, OMX_IndexParamSupportBufferType, OMX_IndexParamUseBufferType, OMX_IndexParamGetBufferHandleUsage } | 枚举Codec扩展index。 | 83| [OmxVideoExType](#omxvideoextype) { OMX_VIDEO_CodingHEVC = 11 } | 枚举Codec扩展编码类型。 | 84 85 86### 函数 87 88 | 名称 | 描述 | 89| -------- | -------- | 90| [CodecCallbackTypeGet](#codeccallbacktypeget) (struct HdfRemoteService \*remote) | 实例化CodecCallbackType对象。 | 91| [CodecCallbackTypeRelease](#codeccallbacktyperelease) (struct [CodecCallbackType](_codec_callback_type.md) \*instance) | 释放CodecCallbackType对象。 | 92| [CodecComponentTypeGet](#codeccomponenttypeget) (struct HdfRemoteService \*remote) | 实例化CodecComponentType对象。 | 93| [CodecComponentTypeRelease](#codeccomponenttyperelease) (struct [CodecComponentType](_codec_component_type.md) \*instance) | 释放CodecComponentType对象。 | 94| [GetCodecComponentManager](#getcodeccomponentmanager) (void) | 实例化CodecComponentManager对象。 | 95| [CodecComponentManagerRelease](#codeccomponentmanagerrelease) (void) | 释放CodecComponentManager对象。 | 96 97 98## **枚举类型说明** 99 100 101### AudioSampleFormat 102 103 104``` 105enum AudioSampleFormat 106``` 107 108**描述:** 109 110枚举音频采样格式。 111 112对于planar的采样格式,每个声道的数据是独立存储在data中;对于packed的采样格式,只使用第一个data,每个声道的数据是交错存储的。 113 114 | 枚举值 | 描述 | 115| -------- | -------- | 116| AUDIO_SAMPLE_FORMAT_S8 | 8bit位宽有符号交织样本。 | 117| AUDIO_SAMPLE_FORMAT_S8P | 8bit位宽有符号非交织样本。 | 118| AUDIO_SAMPLE_FORMAT_U8 | 8bit位宽无符号交织样本。 | 119| AUDIO_SAMPLE_FORMAT_U8P | 8bit位宽无符号非交织样本。 | 120| AUDIO_SAMPLE_FORMAT_S16 | 16bit位宽有符号交织样本。 | 121| AUDIO_SAMPLE_FORMAT_S16P | 16bit位宽有符号非交织样本。 | 122| AUDIO_SAMPLE_FORMAT_U16 | 16bit位宽无符号交织样本。 | 123| AUDIO_SAMPLE_FORMAT_U16P | 16bit位宽无符号非交织样本。 | 124| AUDIO_SAMPLE_FORMAT_S24 | 24bit位宽有符号交织样本。 | 125| AUDIO_SAMPLE_FORMAT_S24P | 24bit位宽有符号非交织样本。 | 126| AUDIO_SAMPLE_FORMAT_U24 | 24bit位宽无符号交织样本。 | 127| AUDIO_SAMPLE_FORMAT_U24P | 24bit位宽无符号非交织样本。 | 128| AUDIO_SAMPLE_FORMAT_S32 | 32bit位宽有符号交织样本。 | 129| AUDIO_SAMPLE_FORMAT_S32P | 32bit位宽有符号非交织样本。 | 130| AUDIO_SAMPLE_FORMAT_U32 | 32bit位宽无符号交织样本。 | 131| AUDIO_SAMPLE_FORMAT_U32P | 32bit位宽无符号非交织样本。 | 132| AUDIO_SAMPLE_FORMAT_S64 | 64bit位宽有符号交织样本。 | 133| AUDIO_SAMPLE_FORMAT_S64P | 64bit位宽有符号非交织样本。 | 134| AUDIO_SAMPLE_FORMAT_U64 | 64bit位宽无符号交织样本。 | 135| AUDIO_SAMPLE_FORMAT_U64P | 64bit位宽无符号非交织样本。 | 136| AUDIO_SAMPLE_FORMAT_F32 | 32bit位宽浮点型交织样本。 | 137| AUDIO_SAMPLE_FORMAT_F32P | 64bit位宽浮点型非交织样本。 | 138| AUDIO_SAMPLE_FORMAT_F64 | 64bit位宽双精度浮点型交织样本。 | 139| AUDIO_SAMPLE_FORMAT_F64P | 64bit位宽双精度浮点型非交织样本。 | 140| AUDIO_SAMPLE_FMT_U8 | 无符号8位整型,打包格式。 | 141| AUDIO_SAMPLE_FMT_S16 | 带符号16位整型,打包格式。 | 142| AUDIO_SAMPLE_FMT_S32 | 带符号32位整型,打包格式。 | 143| AUDIO_SAMPLE_FMT_FLOAT | 浮点型,打包格式。 | 144| AUDIO_SAMPLE_FMT_DOUBLE | 双精度浮点型,打包格式。 | 145| AUDIO_SAMPLE_FMT_U8P | 无符号8位整型,平面格式。 | 146| AUDIO_SAMPLE_FMT_S16P | 带符号16位整型,平面格式。 | 147| AUDIO_SAMPLE_FMT_S32P | 带符号32位整型,平面格式。 | 148| AUDIO_SAMPLE_FMT_FLOATP | 浮点型,平面格式。 | 149| AUDIO_SAMPLE_FMT_DOUBLEP | 双精度浮点型,平面格式。 | 150| AUDIO_SAMPLE_FMT_INVALID | 无效采样格式。 | 151 152 153### AudioSampleRate 154 155 156``` 157enum AudioSampleRate 158``` 159 160**描述:** 161 162枚举音频采样率。 163 164 | 枚举值 | 描述 | 165| -------- | -------- | 166| AUD_SAMPLE_RATE_8000 | 8K采样率。 | 167| AUD_SAMPLE_RATE_12000 | 12K采样率。 | 168| AUD_SAMPLE_RATE_11025 | 11.025K采样率。 | 169| AUD_SAMPLE_RATE_16000 | 16K采样率。 | 170| AUD_SAMPLE_RATE_22050 | 22.050K采样率。 | 171| AUD_SAMPLE_RATE_24000 | 24K采样率。 | 172| AUD_SAMPLE_RATE_32000 | 32K采样率。 | 173| AUD_SAMPLE_RATE_44100 | 44.1K采样率。 | 174| AUD_SAMPLE_RATE_48000 | 48K采样率。 | 175| AUD_SAMPLE_RATE_64000 | 64K采样率。 | 176| AUD_SAMPLE_RATE_96000 | 96K采样率。 | 177| AUD_SAMPLE_RATE_INVALID | 无效采样率。 | 178 179 180### AvCodecRole 181 182 183``` 184enum AvCodecRole 185``` 186 187**描述:** 188 189枚举音视频编解码组件类型。 190 191 | 枚举值 | 描述 | 192| -------- | -------- | 193| MEDIA_ROLETYPE_IMAGE_JPEG | 图像JPEG媒体类型。 | 194| MEDIA_ROLETYPE_VIDEO_AVC | 视频H.264媒体类型。 | 195| MEDIA_ROLETYPE_VIDEO_HEVC | 视频H.265媒体类型。 | 196| MEDIA_ROLETYPE_AUDIO_FIRST | 音频编解码器类型。 | 197| MEDIA_ROLETYPE_AUDIO_AAC | 音频AAC媒体类型。 | 198| MEDIA_ROLETYPE_AUDIO_G711A | 音频G711A媒体类型。 | 199| MEDIA_ROLETYPE_AUDIO_G711U | 音频G711U媒体类型。 | 200| MEDIA_ROLETYPE_AUDIO_G726 | 音频G726媒体类型。 | 201| MEDIA_ROLETYPE_AUDIO_PCM | 音频PCM媒体类型。 | 202| MEDIA_ROLETYPE_AUDIO_MP3 | 音频MP3媒体类型。 | 203| MEDIA_ROLETYPE_INVALID | 无效媒体类型。 | 204 205 206### CodecBufferType 207 208 209``` 210enum CodecBufferType 211``` 212 213**描述:** 214 215定义buffer类型。 216 217 | 枚举值 | 描述 | 218| -------- | -------- | 219| CODEC_BUFFER_TYPE_INVALID | 无效buffer类型。 | 220| CODEC_BUFFER_TYPE_VIRTUAL_ADDR | 虚拟地址类型。 | 221| CODEC_BUFFER_TYPE_AVSHARE_MEM_FD | 共享内存类型。 | 222| CODEC_BUFFER_TYPE_HANDLE | handle类型。 | 223| CODEC_BUFFER_TYPE_DYNAMIC_HANDLE | 动态handle类型。 | 224 225 226### CodecCapsMask 227 228 229``` 230enum CodecCapsMask 231``` 232 233**描述:** 234 235枚举播放能力。 236 237 | 枚举值 | 描述 | 238| -------- | -------- | 239| CODEC_CAP_ADAPTIVE_PLAYBACK | 自适应播放能力。 | 240| CODEC_CAP_SECURE_PLAYBACK | 安全播放能力。 | 241| CODEC_CAP_TUNNEL_PLAYBACK | 通道播放能力。 | 242| CODEC_CAP_MULTI_PLANE | 视频图像平面/音频通道平面能力。 | 243 244 245### CodecProcessMode 246 247 248``` 249enum CodecProcessMode 250``` 251 252**描述:** 253 254枚举编解码处理模式。 255 256 | 枚举值 | 描述 | 257| -------- | -------- | 258| PROCESS_BLOCKING_INPUT_BUFFER | 同步模式输入buffer。 | 259| PROCESS_BLOCKING_OUTPUT_BUFFER | 同步模式输出buffer。 | 260| PROCESS_BLOCKING_CONTROL_FLOW | 同步模式控制流。 | 261| PROCESS_NONBLOCKING_INPUT_BUFFER | 异步模式输入buffer。 | 262| PROCESS_NONBLOCKING_OUTPUT_BUFFER | 异步模式输出buffer。 | 263| PROCESS_NONBLOCKING_CONTROL_FLOW | 异步模式控制流。 | 264 265 266### CodecType 267 268 269``` 270enum CodecType 271``` 272 273**描述:** 274 275枚举编解码的类型。 276 277 | 枚举值 | 描述 | 278| -------- | -------- | 279| VIDEO_DECODER | 视频解码类型。 | 280| VIDEO_ENCODER | 视频编码类型。 | 281| AUDIO_DECODER | 音频解码类型。 | 282| AUDIO_ENCODER | 音频编码类型。 | 283| INVALID_TYPE | 无效类型。 | 284 285 286### OmxIndexCodecExType 287 288 289``` 290enum OmxIndexCodecExType 291``` 292 293**描述:** 294 295枚举Codec扩展index。 296 297 | 枚举值 | 描述 | 298| -------- | -------- | 299| OMX_IndexExtBufferTypeStartUnused | BufferType 扩展index。 | 300| OMX_IndexParamSupportBufferType | SupportBuffer类型。 | 301| OMX_IndexParamUseBufferType | UseBuffer类型。 | 302| OMX_IndexParamGetBufferHandleUsage | GetBufferHandleUsage类型。 | 303 304 305### OmxVideoExType 306 307 308``` 309enum OmxVideoExType 310``` 311 312**描述:** 313 314枚举Codec扩展编码类型。 315 316 | 枚举值 | 描述 | 317| -------- | -------- | 318| OMX_VIDEO_CodingHEVC | HEVC编码类型。 | 319 320 321### Profile 322 323 324``` 325enum Profile 326``` 327 328**描述:** 329 330枚举Codec规格。 331 332 | 枚举值 | 描述 | 333| -------- | -------- | 334| INVALID_PROFILE | 无效的规格。 | 335| AAC_LC_PROFILE | AAC低复杂度规格。 | 336| AAC_MAIN_PROFILE | AAC主规格。 | 337| AAC_HE_V1_PROFILE | AAC高效率和频带重现规格,又称为HEAAC,AAC+,或者AACPlusV1。 | 338| AAC_HE_V2_PROFILE | AAC高效率和频带重现以及变量立体声规格,又称为AAC++或者AACPlusV2。 | 339| AAC_LD_PROFILE | AAC低延迟规格。 | 340| AAC_ELD_PROFILE | AAC增强型低延迟规格。 | 341| AVC_BASELINE_PROFILE | H.264低规格。 | 342| AVC_MAIN_PROFILE | H.264主规格。 | 343| AVC_HIGH_PROFILE | H.264高规格。 | 344| HEVC_MAIN_PROFILE | H.265主规格。 | 345| HEVC_MAIN_10_PROFILE | H.265 10比特主规格。 | 346 347 348### ShareMemTypes 349 350 351``` 352enum ShareMemTypes 353``` 354 355**描述:** 356 357枚举共享内存类型。 358 359 | 枚举值 | 描述 | 360| -------- | -------- | 361| READ_WRITE_TYPE | 可读可写的共享内存类型。 | 362| READ_ONLY_TYPE | 可读的共享内存类型。 | 363 364 365## **函数说明** 366 367 368### CodecCallbackTypeGet() 369 370 371``` 372struct CodecCallbackType* CodecCallbackTypeGet (struct HdfRemoteService * remote) 373``` 374 375**描述:** 376 377实例化CodecCallbackType对象。 378 379**参数:** 380 381 | 名称 | 描述 | 382| -------- | -------- | 383| remote | 输入参数,指向HdfRemoteService的指针。 | 384 385**返回:** 386 387实例化CodecCallbackType对象。 388 389 390### CodecCallbackTypeRelease() 391 392 393``` 394void CodecCallbackTypeRelease (struct CodecCallbackType * instance) 395``` 396 397**描述:** 398 399释放CodecCallbackType对象。 400 401**参数:** 402 403 | 名称 | 描述 | 404| -------- | -------- | 405| instance | 输入参数,指向CodecCallbackType实例的指针。 | 406 407 408### CodecComponentManagerRelease() 409 410 411``` 412void CodecComponentManagerRelease (void ) 413``` 414 415**描述:** 416 417释放CodecComponentManager对象。 418 419 420### CodecComponentTypeGet() 421 422 423``` 424struct CodecComponentType* CodecComponentTypeGet (struct HdfRemoteService * remote) 425``` 426 427**描述:** 428 429实例化CodecComponentType对象。 430 431**参数:** 432 433 | 名称 | 描述 | 434| -------- | -------- | 435| remote | 输入参数,指向RemoteService的指针。 | 436 437**返回:** 438 439实例化的CodecComponentType对象。 440 441 442### CodecComponentTypeRelease() 443 444 445``` 446void CodecComponentTypeRelease (struct CodecComponentType * instance) 447``` 448 449**描述:** 450 451释放CodecComponentType对象。 452 453**参数:** 454 455 | 名称 | 描述 | 456| -------- | -------- | 457| instance | 输入参数,指向CodecComponentType实例的指针。 | 458 459 460### GetCodecComponentManager() 461 462 463``` 464struct CodecComponentManager* GetCodecComponentManager (void ) 465``` 466 467**描述:** 468 469实例化CodecComponentManager对象。 470 471**返回:** 472 473实例化的CodecComponentManager对象。 474