Codec

概述

Codec模块接口定义。

Codec模块涉及自定义类型、音视频编解码组件初始化、参数设置、数据的轮转和控制等。

Since:

3.1

Version:

2.0

汇总

文件

名称 描述
codec_callback_if.h 主要包括回调函数接口定义。
codec_common_type.h Codec模块接口定义中使用的自定义数据类型。
codec_component_if.h 主要包括Codec组件接口定义。
codec_component_manager.h 主要包括Codec组件管理类接口。
codec_component_type.h Codec模块接口定义中使用的自定义数据类型。

名称 描述
CodecCallbackType struct
Codec回调接口定义。
Alignment struct
对齐结构定义,包含宽高的对齐值。
Rect struct
矩形的定义。
RangeValue struct
取值范围的定义。
CodecComponentType struct
Codec组件接口定义。
CodecComponentManager struct
Codec组件管理类接口定义。
VideoPortCap struct
定义视频编解码能力。
AudioPortCap struct
定义音频编解码能力。
PortCap union
定义音视频编解码能力。
CodecCompCapability struct
定义Codec编解码能力。
OmxCodecBuffer struct
Codec buffer信息的定义。
CompVerInfo struct
定义组件版本信息。
EventInfo struct
定义事件上报信息。
SupportBufferType struct
SupportBuffer类型定义。
UseBufferType struct
UseBuffer类型定义。
GetBufferHandleUsageParams struct
BufferHandleUsage类型定义。

宏定义

名称 描述
SAMPLE_FMT_NUM   32 采样格式最大值。
UUID_LENGTH   128 定义UUID长度。
PIX_FORMAT_NUM   16 支持的像素格式数组大小。
SAMPLE_FORMAT_NUM   12 支持的音频采样格式数组大小。
SAMPLE_RATE_NUM   16 支持的音频采样率数组大小。
CHANNEL_NUM   16 支持的音频通道数组大小。
NAME_LENGTH   32 组件名称大小。
PROFILE_NUM   256 支持的profile数组大小。

枚举

名称 描述
CodecType { VIDEO_DECODER, VIDEO_ENCODER, AUDIO_DECODER, AUDIO_ENCODER,   INVALID_TYPE } 枚举编解码的类型。
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规格。
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 } 枚举音频采样率。
CodecCapsMask { CODEC_CAP_ADAPTIVE_PLAYBACK = 0x1, CODEC_CAP_SECURE_PLAYBACK = 0x2, CODEC_CAP_TUNNEL_PLAYBACK = 0x4, CODEC_CAP_MULTI_PLANE = 0x10000 } 枚举播放能力。
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 } 枚举编解码处理模式。
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 } 枚举音视频编解码组件类型。
AudioSampleFormat {
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
}
枚举音频采样格式。
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类型。
ShareMemTypes { READ_WRITE_TYPE = 0x1, READ_ONLY_TYPE = 0x2 } 枚举共享内存类型。
OmxIndexCodecExType { OMX_IndexExtBufferTypeStartUnused = OMX_IndexKhronosExtensions + 0x00a00000, OMX_IndexParamSupportBufferType, OMX_IndexParamUseBufferType, OMX_IndexParamGetBufferHandleUsage } 枚举Codec扩展index。
OmxVideoExType { OMX_VIDEO_CodingHEVC = 11 } 枚举Codec扩展编码类型。

函数

名称 描述
CodecCallbackTypeGet (struct HdfRemoteService *remote) struct CodecCallbackType *
实例化CodecCallbackType对象。
CodecCallbackTypeRelease (struct CodecCallbackType *instance) void
释放CodecCallbackType对象。
CodecComponentTypeGet (struct HdfRemoteService *remote) struct CodecComponentType *
实例化CodecComponentType对象。
CodecComponentTypeRelease (struct CodecComponentType *instance) void
释放CodecComponentType对象。
GetCodecComponentManager (void) struct CodecComponentManager *
实例化CodecComponentManager对象。
CodecComponentManagerRelease (void) void
释放CodecComponentManager对象。

宏定义说明

CHANNEL_NUM

#define CHANNEL_NUM   16

描述:

支持的音频通道数组大小。

NAME_LENGTH

#define NAME_LENGTH   32

描述:

组件名称大小。

PIX_FORMAT_NUM

#define PIX_FORMAT_NUM   16

描述:

支持的像素格式数组大小。

PROFILE_NUM

#define PROFILE_NUM   256

描述:

支持的profile数组大小。

SAMPLE_FMT_NUM

#define SAMPLE_FMT_NUM   32

描述:

采样格式最大值。

SAMPLE_FORMAT_NUM

#define SAMPLE_FORMAT_NUM   12

描述:

支持的音频采样格式数组大小。

SAMPLE_RATE_NUM

#define SAMPLE_RATE_NUM   16

描述:

支持的音频采样率数组大小。

UUID_LENGTH

#define UUID_LENGTH   128

描述:

定义UUID长度。

枚举类型说明

AudioSampleFormat

enum AudioSampleFormat

描述:

枚举音频采样格式。

对于planar的采样格式,每个声道的数据是独立存储在data中; 对于packed的采样格式,只使用第一个data,每个声道的数据是交错存储的。

枚举值 描述
AUDIO_SAMPLE_FMT_U8 无符号8位整型,打包格式。
AUDIO_SAMPLE_FMT_S16 带符号16位整型, 打包格式。
AUDIO_SAMPLE_FMT_S32 带符号32位整型, 打包格式。
AUDIO_SAMPLE_FMT_FLOAT 浮点型, 打包格式。
AUDIO_SAMPLE_FMT_DOUBLE 双精度浮点型, 打包格式。
AUDIO_SAMPLE_FMT_U8P 无符号8位整型, 平面格式。
AUDIO_SAMPLE_FMT_S16P 带符号16位整型, 平面格式。
AUDIO_SAMPLE_FMT_S32P 带符号32位整型, 平面格式。
AUDIO_SAMPLE_FMT_FLOATP 浮点型, 平面格式。
AUDIO_SAMPLE_FMT_DOUBLEP 双精度浮点型, 平面格式。
AUDIO_SAMPLE_FMT_INVALID 无效采样格式。

AudioSampleRate

enum AudioSampleRate

描述:

枚举音频采样率。

枚举值 描述
AUD_SAMPLE_RATE_8000 8K采样率。
AUD_SAMPLE_RATE_12000 12K采样率。
AUD_SAMPLE_RATE_11025 11.025K采样率。
AUD_SAMPLE_RATE_16000 16K采样率。
AUD_SAMPLE_RATE_22050 22.050K采样率。
AUD_SAMPLE_RATE_24000 24K采样率。
AUD_SAMPLE_RATE_32000 32K采样率。
AUD_SAMPLE_RATE_44100 44.1K采样率。
AUD_SAMPLE_RATE_48000 48K采样率。
AUD_SAMPLE_RATE_64000 64K采样率。
AUD_SAMPLE_RATE_96000 96K采样率。
AUD_SAMPLE_RATE_INVALID 无效采样率。

AvCodecRole

enum AvCodecRole

描述:

枚举音视频编解码组件类型。

枚举值 描述
MEDIA_ROLETYPE_IMAGE_JPEG 图像JPEG媒体类型。
MEDIA_ROLETYPE_VIDEO_AVC 视频H.264媒体类型。
MEDIA_ROLETYPE_VIDEO_HEVC 视频H.265媒体类型。
MEDIA_ROLETYPE_AUDIO_FIRST 音频编解码器类型。
MEDIA_ROLETYPE_AUDIO_AAC 音频AAC媒体类型。
MEDIA_ROLETYPE_AUDIO_G711A 音频G711A媒体类型。
MEDIA_ROLETYPE_AUDIO_G711U 音频G711U媒体类型。
MEDIA_ROLETYPE_AUDIO_G726 音频G726媒体类型。
MEDIA_ROLETYPE_AUDIO_PCM 音频PCM媒体类型。
MEDIA_ROLETYPE_AUDIO_MP3 音频MP3媒体类型。
MEDIA_ROLETYPE_INVALID 无效媒体类型。

CodecBufferType

enum CodecBufferType

描述:

定义buffer类型。

枚举值 描述
CODEC_BUFFER_TYPE_INVALID 无效buffer类型。
CODEC_BUFFER_TYPE_VIRTUAL_ADDR 虚拟地址类型。
CODEC_BUFFER_TYPE_AVSHARE_MEM_FD 共享内存类型。
CODEC_BUFFER_TYPE_HANDLE handle类型。
CODEC_BUFFER_TYPE_DYNAMIC_HANDLE 动态handle类型。

CodecCapsMask

enum CodecCapsMask

描述:

枚举播放能力。

枚举值 描述
CODEC_CAP_ADAPTIVE_PLAYBACK 自适应播放能力。
CODEC_CAP_SECURE_PLAYBACK 安全播放能力。
CODEC_CAP_TUNNEL_PLAYBACK 通道播放能力。
CODEC_CAP_MULTI_PLANE 视频图像平面/音频通道平面能力。

CodecProcessMode

enum CodecProcessMode

描述:

枚举编解码处理模式。

枚举值 描述
PROCESS_BLOCKING_INPUT_BUFFER 同步模式输入buffer。
PROCESS_BLOCKING_OUTPUT_BUFFER 同步模式输出buffer。
PROCESS_BLOCKING_CONTROL_FLOW 同步模式控制流。
PROCESS_NONBLOCKING_INPUT_BUFFER 异步模式输入buffer。
PROCESS_NONBLOCKING_OUTPUT_BUFFER 异步模式输出buffer。
PROCESS_NONBLOCKING_CONTROL_FLOW 异步模式控制流。

CodecType

enum CodecType

描述:

枚举编解码的类型。

枚举值 描述
VIDEO_DECODER 视频解码类型。
VIDEO_ENCODER 视频编码类型。
AUDIO_DECODER 音频解码类型。
AUDIO_ENCODER 音频编码类型。
INVALID_TYPE 无效类型。

OmxIndexCodecExType

enum OmxIndexCodecExType

描述:

枚举Codec扩展index。

枚举值 描述
OMX_IndexExtBufferTypeStartUnused BufferType 扩展index。
OMX_IndexParamSupportBufferType SupportBuffer类型。
OMX_IndexParamUseBufferType UseBuffer类型。
OMX_IndexParamGetBufferHandleUsage GetBufferHandleUsage类型。

OmxVideoExType

enum OmxVideoExType

描述:

枚举Codec扩展编码类型。

枚举值 描述
OMX_VIDEO_CodingHEVC HEVC编码类型。

Profile

enum Profile

描述:

枚举Codec规格。

枚举值 描述
INVALID_PROFILE 无效的规格。
AAC_LC_PROFILE AAC低复杂度规格。
AAC_MAIN_PROFILE AAC主规格。
AAC_HE_V1_PROFILE AAC高效率和频带重现规格,又称为HEAAC,AAC+,或者AACPlusV1。
AAC_HE_V2_PROFILE AAC高效率和频带重现以及变量立体声规格,又称为AAC++或者AACPlusV2。
AAC_LD_PROFILE AAC低延迟规格。
AAC_ELD_PROFILE AAC增强型低延迟规格。
AVC_BASELINE_PROFILE H.264低规格。
AVC_MAIN_PROFILE H.264主规格。
AVC_HIGH_PROFILE H.264高规格。
HEVC_MAIN_PROFILE H.265主规格。
HEVC_MAIN_10_PROFILE H.265 10比特主规格。

ShareMemTypes

enum ShareMemTypes

描述:

枚举共享内存类型。

枚举值 描述
READ_WRITE_TYPE 可读可写的共享内存类型。
READ_ONLY_TYPE 可读的共享内存类型。

函数说明

CodecCallbackTypeGet()

struct CodecCallbackType * CodecCallbackTypeGet (struct HdfRemoteService * remote)

描述:

实例化CodecCallbackType对象。

参数:

名称 描述
remote 输入参数,指向HdfRemoteService的指针。

返回:

实例化CodecCallbackType对象。

CodecCallbackTypeRelease()

void CodecCallbackTypeRelease (struct CodecCallbackType * instance)

描述:

释放CodecCallbackType对象。

参数:

名称 描述
instance 输入参数,指向CodecCallbackType实例的指针。

CodecComponentManagerRelease()

void CodecComponentManagerRelease (void )

描述:

释放CodecComponentManager对象。

CodecComponentTypeGet()

struct CodecComponentType * CodecComponentTypeGet (struct HdfRemoteService * remote)

描述:

实例化CodecComponentType对象。

参数:

名称 描述
remote 输入参数,指向RemoteService的指针。

返回:

实例化的CodecComponentType对象。

CodecComponentTypeRelease()

void CodecComponentTypeRelease (struct CodecComponentType * instance)

描述:

释放CodecComponentType对象。

参数:

名称 描述
instance 输入参数,指向CodecComponentType实例的指针。

GetCodecComponentManager()

struct CodecComponentManager * GetCodecComponentManager (void )

描述:

实例化CodecComponentManager对象。

返回:

实例化的CodecComponentManager对象。