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_8h.md) | 主要包括回调函数接口定义。 | 27| [codec_common_type.h](codec__common__type_8h.md) | Codec模块接口定义中使用的自定义数据类型。 | 28| [codec_component_if.h](codec__component__if_8h.md) | 主要包括Codec组件接口定义。 | 29| [codec_component_manager.h](codec__component__manager_8h.md) | 主要包括Codec组件管理类接口。 | 30| [codec_component_type.h](codec__component__type_8h.md) | Codec模块接口定义中使用的自定义数据类型。 | 31 32 33### 类 34 35 | 名称 | 描述 | 36| -------- | -------- | 37| [CodecCallbackType](_codec_callback_type.md) | struct<br/>Codec回调接口定义。 | 38| [Alignment](_alignment.md) | struct<br/>对齐结构定义,包含宽高的对齐值。 | 39| [Rect](_rect.md) | struct<br/>矩形的定义。 | 40| [RangeValue](_range_value.md) | struct<br/>取值范围的定义。 | 41| [CodecComponentType](_codec_component_type.md) | struct<br/>Codec组件接口定义。 | 42| [CodecComponentManager](_codec_component_manager.md) | struct<br/>Codec组件管理类接口定义。 | 43| [VideoPortCap](_video_port_cap.md) | struct<br/>定义视频编解码能力。 | 44| [AudioPortCap](_audio_port_cap.md) | struct<br/>定义音频编解码能力。 | 45| [PortCap](union_port_cap.md) | union<br/>定义音视频编解码能力。 | 46| [CodecCompCapability](_codec_comp_capability.md) | struct<br/>定义Codec编解码能力。 | 47| [OmxCodecBuffer](_omx_codec_buffer.md) | struct<br/>Codec buffer信息的定义。 | 48| [CompVerInfo](_comp_ver_info.md) | struct<br/>定义组件版本信息。 | 49| [EventInfo](_event_info.md) | struct<br/>定义事件上报信息。 | 50| [SupportBufferType](_support_buffer_type.md) | struct<br/>SupportBuffer类型定义。 | 51| [UseBufferType](_use_buffer_type.md) | struct<br/>UseBuffer类型定义。 | 52| [GetBufferHandleUsageParams](_get_buffer_handle_usage_params.md) | struct<br/>BufferHandleUsage类型定义。 | 53 54 55### 宏定义 56 57 | 名称 | 描述 | 58| -------- | -------- | 59| [SAMPLE_FMT_NUM](#sample_fmt_num) 32 | 采样格式最大值。 | 60| [UUID_LENGTH](#uuid_length) 128 | 定义UUID长度。 | 61| [PIX_FORMAT_NUM](#pix_format_num) 16 | 支持的像素格式数组大小。 | 62| [SAMPLE_FORMAT_NUM](#sample_format_num) 12 | 支持的音频采样格式数组大小。 | 63| [SAMPLE_RATE_NUM](#sample_rate_num) 16 | 支持的音频采样率数组大小。 | 64| [CHANNEL_NUM](#channel_num) 16 | 支持的音频通道数组大小。 | 65| [NAME_LENGTH](#name_length) 32 | 组件名称大小。 | 66| [PROFILE_NUM](#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) {<br/>AUDIO_SAMPLE_FMT_U8 , AUDIO_SAMPLE_FMT_S16 , AUDIO_SAMPLE_FMT_S32 , AUDIO_SAMPLE_FMT_FLOAT ,<br/>AUDIO_SAMPLE_FMT_DOUBLE , AUDIO_SAMPLE_FMT_U8P , AUDIO_SAMPLE_FMT_S16P , AUDIO_SAMPLE_FMT_S32P ,<br/>AUDIO_SAMPLE_FMT_FLOATP , AUDIO_SAMPLE_FMT_DOUBLEP , AUDIO_SAMPLE_FMT_INVALID<br/>} | 枚举音频采样格式。 | 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) | struct [CodecCallbackType](_codec_callback_type.md) \*<br/>实例化CodecCallbackType对象。 | 91| [CodecCallbackTypeRelease](#codeccallbacktyperelease) (struct [CodecCallbackType](_codec_callback_type.md) \*instance) | void<br/>释放CodecCallbackType对象。 | 92| [CodecComponentTypeGet](#codeccomponenttypeget) (struct HdfRemoteService \*remote) | struct [CodecComponentType](_codec_component_type.md) \*<br/>实例化CodecComponentType对象。 | 93| [CodecComponentTypeRelease](#codeccomponenttyperelease) (struct [CodecComponentType](_codec_component_type.md) \*instance) | void<br/>释放CodecComponentType对象。 | 94| [GetCodecComponentManager](#getcodeccomponentmanager) (void) | struct [CodecComponentManager](_codec_component_manager.md) \*<br/>实例化CodecComponentManager对象。 | 95| [CodecComponentManagerRelease](#codeccomponentmanagerrelease) (void) | void<br/>释放CodecComponentManager对象。 | 96 97 98## 宏定义说明 99 100 101### CHANNEL_NUM 102 103 104``` 105#define CHANNEL_NUM 16 106``` 107 108**描述:** 109 110支持的音频通道数组大小。 111 112 113### NAME_LENGTH 114 115 116``` 117#define NAME_LENGTH 32 118``` 119 120**描述:** 121 122组件名称大小。 123 124 125### PIX_FORMAT_NUM 126 127 128``` 129#define PIX_FORMAT_NUM 16 130``` 131 132**描述:** 133 134支持的像素格式数组大小。 135 136 137### PROFILE_NUM 138 139 140``` 141#define PROFILE_NUM 256 142``` 143 144**描述:** 145 146支持的profile数组大小。 147 148 149### SAMPLE_FMT_NUM 150 151 152``` 153#define SAMPLE_FMT_NUM 32 154``` 155 156**描述:** 157 158采样格式最大值。 159 160 161### SAMPLE_FORMAT_NUM 162 163 164``` 165#define SAMPLE_FORMAT_NUM 12 166``` 167 168**描述:** 169 170支持的音频采样格式数组大小。 171 172 173### SAMPLE_RATE_NUM 174 175 176``` 177#define SAMPLE_RATE_NUM 16 178``` 179 180**描述:** 181 182支持的音频采样率数组大小。 183 184 185### UUID_LENGTH 186 187 188``` 189#define UUID_LENGTH 128 190``` 191 192**描述:** 193 194定义UUID长度。 195 196 197## 枚举类型说明 198 199 200### AudioSampleFormat 201 202 203``` 204enum AudioSampleFormat 205``` 206 207**描述:** 208 209枚举音频采样格式。 210 211对于planar的采样格式,每个声道的数据是独立存储在data中; 对于packed的采样格式,只使用第一个data,每个声道的数据是交错存储的。 212 213 | 枚举值 | 描述 | 214| -------- | -------- | 215| AUDIO_SAMPLE_FMT_U8 | 无符号8位整型,打包格式。 | 216| AUDIO_SAMPLE_FMT_S16 | 带符号16位整型, 打包格式。 | 217| AUDIO_SAMPLE_FMT_S32 | 带符号32位整型, 打包格式。 | 218| AUDIO_SAMPLE_FMT_FLOAT | 浮点型, 打包格式。 | 219| AUDIO_SAMPLE_FMT_DOUBLE | 双精度浮点型, 打包格式。 | 220| AUDIO_SAMPLE_FMT_U8P | 无符号8位整型, 平面格式。 | 221| AUDIO_SAMPLE_FMT_S16P | 带符号16位整型, 平面格式。 | 222| AUDIO_SAMPLE_FMT_S32P | 带符号32位整型, 平面格式。 | 223| AUDIO_SAMPLE_FMT_FLOATP | 浮点型, 平面格式。 | 224| AUDIO_SAMPLE_FMT_DOUBLEP | 双精度浮点型, 平面格式。 | 225| AUDIO_SAMPLE_FMT_INVALID | 无效采样格式。 | 226 227 228### AudioSampleRate 229 230 231``` 232enum AudioSampleRate 233``` 234 235**描述:** 236 237枚举音频采样率。 238 239 | 枚举值 | 描述 | 240| -------- | -------- | 241| AUD_SAMPLE_RATE_8000 | 8K采样率。 | 242| AUD_SAMPLE_RATE_12000 | 12K采样率。 | 243| AUD_SAMPLE_RATE_11025 | 11.025K采样率。 | 244| AUD_SAMPLE_RATE_16000 | 16K采样率。 | 245| AUD_SAMPLE_RATE_22050 | 22.050K采样率。 | 246| AUD_SAMPLE_RATE_24000 | 24K采样率。 | 247| AUD_SAMPLE_RATE_32000 | 32K采样率。 | 248| AUD_SAMPLE_RATE_44100 | 44.1K采样率。 | 249| AUD_SAMPLE_RATE_48000 | 48K采样率。 | 250| AUD_SAMPLE_RATE_64000 | 64K采样率。 | 251| AUD_SAMPLE_RATE_96000 | 96K采样率。 | 252| AUD_SAMPLE_RATE_INVALID | 无效采样率。 | 253 254 255### AvCodecRole 256 257 258``` 259enum AvCodecRole 260``` 261 262**描述:** 263 264枚举音视频编解码组件类型。 265 266 | 枚举值 | 描述 | 267| -------- | -------- | 268| MEDIA_ROLETYPE_IMAGE_JPEG | 图像JPEG媒体类型。 | 269| MEDIA_ROLETYPE_VIDEO_AVC | 视频H.264媒体类型。 | 270| MEDIA_ROLETYPE_VIDEO_HEVC | 视频H.265媒体类型。 | 271| MEDIA_ROLETYPE_AUDIO_FIRST | 音频编解码器类型。 | 272| MEDIA_ROLETYPE_AUDIO_AAC | 音频AAC媒体类型。 | 273| MEDIA_ROLETYPE_AUDIO_G711A | 音频G711A媒体类型。 | 274| MEDIA_ROLETYPE_AUDIO_G711U | 音频G711U媒体类型。 | 275| MEDIA_ROLETYPE_AUDIO_G726 | 音频G726媒体类型。 | 276| MEDIA_ROLETYPE_AUDIO_PCM | 音频PCM媒体类型。 | 277| MEDIA_ROLETYPE_AUDIO_MP3 | 音频MP3媒体类型。 | 278| MEDIA_ROLETYPE_INVALID | 无效媒体类型。 | 279 280 281### CodecBufferType 282 283 284``` 285enum CodecBufferType 286``` 287 288**描述:** 289 290定义buffer类型。 291 292 | 枚举值 | 描述 | 293| -------- | -------- | 294| CODEC_BUFFER_TYPE_INVALID | 无效buffer类型。 | 295| CODEC_BUFFER_TYPE_VIRTUAL_ADDR | 虚拟地址类型。 | 296| CODEC_BUFFER_TYPE_AVSHARE_MEM_FD | 共享内存类型。 | 297| CODEC_BUFFER_TYPE_HANDLE | handle类型。 | 298| CODEC_BUFFER_TYPE_DYNAMIC_HANDLE | 动态handle类型。 | 299 300 301### CodecCapsMask 302 303 304``` 305enum CodecCapsMask 306``` 307 308**描述:** 309 310枚举播放能力。 311 312 | 枚举值 | 描述 | 313| -------- | -------- | 314| CODEC_CAP_ADAPTIVE_PLAYBACK | 自适应播放能力。 | 315| CODEC_CAP_SECURE_PLAYBACK | 安全播放能力。 | 316| CODEC_CAP_TUNNEL_PLAYBACK | 通道播放能力。 | 317| CODEC_CAP_MULTI_PLANE | 视频图像平面/音频通道平面能力。 | 318 319 320### CodecProcessMode 321 322 323``` 324enum CodecProcessMode 325``` 326 327**描述:** 328 329枚举编解码处理模式。 330 331 | 枚举值 | 描述 | 332| -------- | -------- | 333| PROCESS_BLOCKING_INPUT_BUFFER | 同步模式输入buffer。 | 334| PROCESS_BLOCKING_OUTPUT_BUFFER | 同步模式输出buffer。 | 335| PROCESS_BLOCKING_CONTROL_FLOW | 同步模式控制流。 | 336| PROCESS_NONBLOCKING_INPUT_BUFFER | 异步模式输入buffer。 | 337| PROCESS_NONBLOCKING_OUTPUT_BUFFER | 异步模式输出buffer。 | 338| PROCESS_NONBLOCKING_CONTROL_FLOW | 异步模式控制流。 | 339 340 341### CodecType 342 343 344``` 345enum CodecType 346``` 347 348**描述:** 349 350枚举编解码的类型。 351 352 | 枚举值 | 描述 | 353| -------- | -------- | 354| VIDEO_DECODER | 视频解码类型。 | 355| VIDEO_ENCODER | 视频编码类型。 | 356| AUDIO_DECODER | 音频解码类型。 | 357| AUDIO_ENCODER | 音频编码类型。 | 358| INVALID_TYPE | 无效类型。 | 359 360 361### OmxIndexCodecExType 362 363 364``` 365enum OmxIndexCodecExType 366``` 367 368**描述:** 369 370枚举Codec扩展index。 371 372 | 枚举值 | 描述 | 373| -------- | -------- | 374| OMX_IndexExtBufferTypeStartUnused | BufferType 扩展index。 | 375| OMX_IndexParamSupportBufferType | SupportBuffer类型。 | 376| OMX_IndexParamUseBufferType | UseBuffer类型。 | 377| OMX_IndexParamGetBufferHandleUsage | GetBufferHandleUsage类型。 | 378 379 380### OmxVideoExType 381 382 383``` 384enum OmxVideoExType 385``` 386 387**描述:** 388 389枚举Codec扩展编码类型。 390 391 | 枚举值 | 描述 | 392| -------- | -------- | 393| OMX_VIDEO_CodingHEVC | HEVC编码类型。 | 394 395 396### Profile 397 398 399``` 400enum Profile 401``` 402 403**描述:** 404 405枚举Codec规格。 406 407 | 枚举值 | 描述 | 408| -------- | -------- | 409| INVALID_PROFILE | 无效的规格。 | 410| AAC_LC_PROFILE | AAC低复杂度规格。 | 411| AAC_MAIN_PROFILE | AAC主规格。 | 412| AAC_HE_V1_PROFILE | AAC高效率和频带重现规格,又称为HEAAC,AAC+,或者AACPlusV1。 | 413| AAC_HE_V2_PROFILE | AAC高效率和频带重现以及变量立体声规格,又称为AAC++或者AACPlusV2。 | 414| AAC_LD_PROFILE | AAC低延迟规格。 | 415| AAC_ELD_PROFILE | AAC增强型低延迟规格。 | 416| AVC_BASELINE_PROFILE | H.264低规格。 | 417| AVC_MAIN_PROFILE | H.264主规格。 | 418| AVC_HIGH_PROFILE | H.264高规格。 | 419| HEVC_MAIN_PROFILE | H.265主规格。 | 420| HEVC_MAIN_10_PROFILE | H.265 10比特主规格。 | 421 422 423### ShareMemTypes 424 425 426``` 427enum ShareMemTypes 428``` 429 430**描述:** 431 432枚举共享内存类型。 433 434 | 枚举值 | 描述 | 435| -------- | -------- | 436| READ_WRITE_TYPE | 可读可写的共享内存类型。 | 437| READ_ONLY_TYPE | 可读的共享内存类型。 | 438 439 440## 函数说明 441 442 443### CodecCallbackTypeGet() 444 445 446``` 447struct CodecCallbackType * CodecCallbackTypeGet (struct HdfRemoteService * remote) 448``` 449 450**描述:** 451 452实例化CodecCallbackType对象。 453 454**参数:** 455 456 | 名称 | 描述 | 457| -------- | -------- | 458| remote | 输入参数,指向HdfRemoteService的指针。 | 459 460**返回:** 461 462实例化CodecCallbackType对象。 463 464 465### CodecCallbackTypeRelease() 466 467 468``` 469void CodecCallbackTypeRelease (struct CodecCallbackType * instance) 470``` 471 472**描述:** 473 474释放CodecCallbackType对象。 475 476**参数:** 477 478 | 名称 | 描述 | 479| -------- | -------- | 480| instance | 输入参数,指向CodecCallbackType实例的指针。 | 481 482 483### CodecComponentManagerRelease() 484 485 486``` 487void CodecComponentManagerRelease (void ) 488``` 489 490**描述:** 491 492释放CodecComponentManager对象。 493 494 495### CodecComponentTypeGet() 496 497 498``` 499struct CodecComponentType * CodecComponentTypeGet (struct HdfRemoteService * remote) 500``` 501 502**描述:** 503 504实例化CodecComponentType对象。 505 506**参数:** 507 508 | 名称 | 描述 | 509| -------- | -------- | 510| remote | 输入参数,指向RemoteService的指针。 | 511 512**返回:** 513 514实例化的CodecComponentType对象。 515 516 517### CodecComponentTypeRelease() 518 519 520``` 521void CodecComponentTypeRelease (struct CodecComponentType * instance) 522``` 523 524**描述:** 525 526释放CodecComponentType对象。 527 528**参数:** 529 530 | 名称 | 描述 | 531| -------- | -------- | 532| instance | 输入参数,指向CodecComponentType实例的指针。 | 533 534 535### GetCodecComponentManager() 536 537 538``` 539struct CodecComponentManager * GetCodecComponentManager (void ) 540``` 541 542**描述:** 543 544实例化CodecComponentManager对象。 545 546**返回:** 547 548实例化的CodecComponentManager对象。 549