• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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