harmony 鸿蒙Codec

2022-10-28 浏览 (1375)

Codec

概述

Codec模块接口定义。

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

Since:

3.1

Version:

2.0

汇总

文件

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

名称描述
CodecCallbackTypeCodec回调接口定义。
Alignment对齐结构定义,包含宽高的对齐值。
Rect矩形的定义。
RangeValue取值范围的定义。
CodecComponentTypeCodec组件接口定义。
CodecComponentManagerCodec组件管理类接口定义。
VideoPortCap定义视频编解码能力。
AudioPortCap定义音频编解码能力。
PortCap定义音视频编解码能力。
CodecCompCapability定义Codec编解码能力。
OmxCodecBufferCodec buffer信息的定义。
CompVerInfo定义组件版本信息。
EventInfo定义事件上报信息。
SupportBufferTypeSupportBuffer类型定义。
UseBufferTypeUseBuffer类型定义。
GetBufferHandleUsageParamsBufferHandleUsage类型定义。

宏定义

名称描述
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_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 }枚举音频采样格式。
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)实例化CodecCallbackType对象。
CodecCallbackTypeRelease (struct CodecCallbackType *instance)释放CodecCallbackType对象。
CodecComponentTypeGet (struct HdfRemoteService *remote)实例化CodecComponentType对象。
CodecComponentTypeRelease (struct CodecComponentType *instance)释放CodecComponentType对象。
GetCodecComponentManager (void)实例化CodecComponentManager对象。
CodecComponentManagerRelease (void)释放CodecComponentManager对象。

枚举类型说明

AudioSampleFormat

enum AudioSampleFormat

描述:

枚举音频采样格式。

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

枚举值描述
AUDIO_SAMPLE_FORMAT_S88bit位宽有符号交织样本。
AUDIO_SAMPLE_FORMAT_S8P8bit位宽有符号非交织样本。
AUDIO_SAMPLE_FORMAT_U88bit位宽无符号交织样本。
AUDIO_SAMPLE_FORMAT_U8P8bit位宽无符号非交织样本。
AUDIO_SAMPLE_FORMAT_S1616bit位宽有符号交织样本。
AUDIO_SAMPLE_FORMAT_S16P16bit位宽有符号非交织样本。
AUDIO_SAMPLE_FORMAT_U1616bit位宽无符号交织样本。
AUDIO_SAMPLE_FORMAT_U16P16bit位宽无符号非交织样本。
AUDIO_SAMPLE_FORMAT_S2424bit位宽有符号交织样本。
AUDIO_SAMPLE_FORMAT_S24P24bit位宽有符号非交织样本。
AUDIO_SAMPLE_FORMAT_U2424bit位宽无符号交织样本。
AUDIO_SAMPLE_FORMAT_U24P24bit位宽无符号非交织样本。
AUDIO_SAMPLE_FORMAT_S3232bit位宽有符号交织样本。
AUDIO_SAMPLE_FORMAT_S32P32bit位宽有符号非交织样本。
AUDIO_SAMPLE_FORMAT_U3232bit位宽无符号交织样本。
AUDIO_SAMPLE_FORMAT_U32P32bit位宽无符号非交织样本。
AUDIO_SAMPLE_FORMAT_S6464bit位宽有符号交织样本。
AUDIO_SAMPLE_FORMAT_S64P64bit位宽有符号非交织样本。
AUDIO_SAMPLE_FORMAT_U6464bit位宽无符号交织样本。
AUDIO_SAMPLE_FORMAT_U64P64bit位宽无符号非交织样本。
AUDIO_SAMPLE_FORMAT_F3232bit位宽浮点型交织样本。
AUDIO_SAMPLE_FORMAT_F32P64bit位宽浮点型非交织样本。
AUDIO_SAMPLE_FORMAT_F6464bit位宽双精度浮点型交织样本。
AUDIO_SAMPLE_FORMAT_F64P64bit位宽双精度浮点型非交织样本。
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_80008K采样率。
AUD_SAMPLE_RATE_1200012K采样率。
AUD_SAMPLE_RATE_1102511.025K采样率。
AUD_SAMPLE_RATE_1600016K采样率。
AUD_SAMPLE_RATE_2205022.050K采样率。
AUD_SAMPLE_RATE_2400024K采样率。
AUD_SAMPLE_RATE_3200032K采样率。
AUD_SAMPLE_RATE_4410044.1K采样率。
AUD_SAMPLE_RATE_4800048K采样率。
AUD_SAMPLE_RATE_6400064K采样率。
AUD_SAMPLE_RATE_9600096K采样率。
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_HANDLEhandle类型。
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_IndexExtBufferTypeStartUnusedBufferType 扩展index。
OMX_IndexParamSupportBufferTypeSupportBuffer类型。
OMX_IndexParamUseBufferTypeUseBuffer类型。
OMX_IndexParamGetBufferHandleUsageGetBufferHandleUsage类型。

OmxVideoExType

enum OmxVideoExType

描述:

枚举Codec扩展编码类型。

枚举值描述
OMX_VIDEO_CodingHEVCHEVC编码类型。

Profile

enum Profile

描述:

枚举Codec规格。

枚举值描述
INVALID_PROFILE无效的规格。
AAC_LC_PROFILEAAC低复杂度规格。
AAC_MAIN_PROFILEAAC主规格。
AAC_HE_V1_PROFILEAAC高效率和频带重现规格,又称为HEAAC,AAC+,或者AACPlusV1。
AAC_HE_V2_PROFILEAAC高效率和频带重现以及变量立体声规格,又称为AAC++或者AACPlusV2。
AAC_LD_PROFILEAAC低延迟规格。
AAC_ELD_PROFILEAAC增强型低延迟规格。
AVC_BASELINE_PROFILEH.264低规格。
AVC_MAIN_PROFILEH.264主规格。
AVC_HIGH_PROFILEH.264高规格。
HEVC_MAIN_PROFILEH.265主规格。
HEVC_MAIN_10_PROFILEH.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对象。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙HDI 参数参考

harmony 鸿蒙ActRecognitionEvent

harmony 鸿蒙Alignment

harmony 鸿蒙AllocInfo

harmony 鸿蒙Audio

harmony 鸿蒙AudioAdapter

harmony 鸿蒙AudioAdapterDescriptor

harmony 鸿蒙AudioAttribute

harmony 鸿蒙AudioCapture

harmony 鸿蒙AudioControl

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/66a34b75c57946008f13d041b5c95531