1# CodecBase 2 3 4## 概述 5 6CodecBase模块提供运行音视频编解码通用的结构体、字符常量、枚举。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。 7 8\@syscap SystemCapability.Multimedia.Media.CodecBase 9 10**起始版本:** 11 129 13 14 15## 汇总 16 17 18### 文件 19 20| 名称 | 描述 | 21| -------- | -------- | 22| [native_avcodec_base.h](native__avcodec__base_8h.md) | 声明运行音视频编解码通用的结构体、字符常量、枚举。<br/>**引用文件**:<multimedia/player_framework/native_avcodec_base.h> <br>**库**:libnative_media_codecbase.so| 23 24 25### 结构体 26 27| 名称 | 描述 | 28| -------- | -------- | 29| [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | 定义OH_AVCodec的缓冲区描述信息。 | 30| [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | OH_AVCodec中所有异步回调函数指针的集合。 | 31 32 33### 类型定义 34 35| 名称 | 描述 | 36| -------- | -------- | 37| [OH_AVCodecBufferFlags](#oh_avcodecbufferflags) | 枚举OH_AVCodec缓冲区标记的类别。 | 38| [OH_AVOutputFormat](#oh_avoutputformat) | 枚举封装器的输出文件格式。 | 39| [OH_AVCodecBufferAttr](#oh_avcodecbufferattr) | 定义OH_AVCodec的缓冲区描述信息。 | 40| (\*[OH_AVCodecOnError](#oh_avcodeconerror)) (OH_AVCodec \*codec, int32_t errorCode, void \*userData) | 当OH_AVCodec实例运行出错时,会调用来上报具体的错误信息的函数指针。 | 41| (\*[OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged)) (OH_AVCodec \*codec, OH_AVFormat \*format, void \*userData) | 当输出流发生变化时,将调用此函数指针报告新的流描述信息。 | 42| (\*[OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata)) (OH_AVCodec \*codec, uint32_t index, OH_AVMemory \*data, void \*userData) | 当OH_AVCodec在运行过程中需要新的输入数据时,将调用此函数指针,并携带可用的缓冲区来填充新的输入数据。 | 43| (\*[OH_AVCodecOnNewOutputData](#oh_avcodeconnewoutputdata)) (OH_AVCodec \*codec, uint32_t index, OH_AVMemory \*data, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) \*attr, void \*userData) | 当OH_AVCodec运行过程中生成新的输出数据时,将调用此函数指针,并携带包含新输出数据的缓冲区。 | 44| [OH_AVCodecAsyncCallback](#oh_avcodecasynccallback) | OH_AVCodec中所有异步回调函数指针的集合。 | 45| [OH_MediaType](#oh_mediatype) | 媒体类型。 | 46| [OH_AVCProfile](#oh_avcprofile) | AVC Profile枚举。 | 47| [OH_HEVCProfile](#oh_hevcprofile) | HEVC Profile枚举。 | 48| [OH_AACProfile](#oh_aacprofile) | AAC Profile枚举。 | 49| [OH_AVSeekMode](#oh_avseekmode) | 跳转模式。 | 50| [OH_ColorPrimary](#oh_colorprimary) | 原色。 | 51| [OH_TransferCharacteristic](#oh_transfercharacteristic) | 转移特性。 | 52| [OH_MatrixCoefficient](#oh_matrixcoefficient) | 矩阵系数。 | 53| [OH_BitsPerSample](#oh_bitspersample) | 枚举每个编码样本的音频位数。 | 54 55 56### 枚举 57 58| 名称 | 描述 | 59| -------- | -------- | 60| [OH_AVCodecBufferFlags](#oh_avcodecbufferflags) {<br/> **AVCODEC_BUFFER_FLAGS_NONE** = 0,<br/> **AVCODEC_BUFFER_FLAGS_EOS** = 1 << 0,<br/> **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 << 1,<br/> **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 << 2,<br/> **AVCODEC_BUFFER_FLAGS_CODEC_DATA** = 1 << 3<br/>} | 枚举OH_AVCodec缓冲区标记的类别。 | 61| [OH_AVOutputFormat](#oh_avoutputformat) {<br/> **AV_OUTPUT_FORMAT_DEFAULT** = 0,<br/> **AV_OUTPUT_FORMAT_MPEG_4** = 2,<br/> **AV_OUTPUT_FORMAT_M4A** = 6<br/>} | 枚举封装器的输出文件格式。 | 62| [OH_MediaType](#oh_mediatype) {<br/> **MEDIA_TYPE_AUD** = 0,<br/> **MEDIA_TYPE_VID** = 1<br/>} | 媒体类型。 | 63| [OH_AVCProfile](#oh_avcprofile) {<br/> **AVC_PROFILE_BASELINE** = 0,<br/> **AVC_PROFILE_HIGH** = 4,<br/> **AVC_PROFILE_MAIN** = 8<br/>} | AVC Profile枚举。 | 64| [OH_HEVCProfile](#oh_hevcprofile) {<br/> **HEVC_PROFILE_MAIN** = 0,<br/> **HEVC_PROFILE_MAIN_10** = 1,<br/> **HEVC_PROFILE_MAIN_STILL** = 2,<br/> **HEVC_PROFILE_MAIN_10_HDR10** = 3,<br/> **HEVC_PROFILE_MAIN_10_HDR10_PLUS** = 4<br/>} | HEVC Profile枚举。 | 65| [OH_AACProfile](#oh_aacprofile) {<br/> **AAC_PROFILE_LC** = 0<br/>} | AAC Profile枚举。 | 66| [OH_AVSeekMode](#oh_avseekmode) {<br/> **SEEK_MODE_NEXT_SYNC** = 0,<br/> **SEEK_MODE_PREVIOUS_SYNC**,<br/> **SEEK_MODE_CLOSEST_SYNC**<br/>} | 跳转模式。 | 67| [OH_ColorPrimary](#oh_colorprimary) {<br/> **COLOR_PRIMARY_BT709** = 1,<br/> **COLOR_PRIMARY_UNSPECIFIED** = 2,<br/> **COLOR_PRIMARY_BT470_M** = 4,<br/> **COLOR_PRIMARY_BT601_625** = 5,<br/> **COLOR_PRIMARY_BT601_525** = 6,<br/> **COLOR_PRIMARY_SMPTE_ST240** = 7,<br/> **COLOR_PRIMARY_GENERIC_FILM** = 8,<br/> **COLOR_PRIMARY_BT2020** = 9,<br/> **COLOR_PRIMARY_SMPTE_ST428** = 10,<br/> **COLOR_PRIMARY_P3DCI** = 11,<br/> **COLOR_PRIMARY_P3D65** = 12<br/>} | 原色。 | 68| [OH_TransferCharacteristic](#oh_transfercharacteristic) {<br/> **TRANSFER_CHARACTERISTIC_BT709** = 1,<br/> **TRANSFER_CHARACTERISTIC_UNSPECIFIED** = 2,<br/> **TRANSFER_CHARACTERISTIC_GAMMA_2_2** = 4,<br/> **TRANSFER_CHARACTERISTIC_GAMMA_2_8** = 5,<br/> **TRANSFER_CHARACTERISTIC_BT601** = 6,<br/> **TRANSFER_CHARACTERISTIC_SMPTE_ST240** = 7,<br/> **TRANSFER_CHARACTERISTIC_LINEAR** = 8,<br/> **TRANSFER_CHARACTERISTIC_LOG** = 9,<br/> **TRANSFER_CHARACTERISTIC_LOG_SQRT** = 10,<br/> **TRANSFER_CHARACTERISTIC_IEC_61966_2_4** = 11,<br/> **TRANSFER_CHARACTERISTIC_BT1361** = 12,<br/> **TRANSFER_CHARACTERISTIC_IEC_61966_2_1** = 13,<br/> **TRANSFER_CHARACTERISTIC_BT2020_10BIT** = 14,<br/> **TRANSFER_CHARACTERISTIC_BT2020_12BIT** = 15,<br/> **TRANSFER_CHARACTERISTIC_PQ** = 16,<br/> **TRANSFER_CHARACTERISTIC_SMPTE_ST428** = 17,<br/> **TRANSFER_CHARACTERISTIC_HLG** = 18<br/>} | 转移特性。 | 69| [OH_MatrixCoefficient](#oh_matrixcoefficient) {<br/> **MATRIX_COEFFICIENT_IDENTITY** = 0,<br/> **MATRIX_COEFFICIENT_BT709** = 1,<br/> **MATRIX_COEFFICIENT_UNSPECIFIED** = 2,<br/> **MATRIX_COEFFICIENT_FCC** = 4,<br/> **MATRIX_COEFFICIENT_BT601_625** = 5,<br/> **MATRIX_COEFFICIENT_BT601_525** = 6,<br/> **MATRIX_COEFFICIENT_SMPTE_ST240** = 7,<br/> **MATRIX_COEFFICIENT_YCGCO** = 8,<br/> **MATRIX_COEFFICIENT_BT2020_NCL** = 9,<br/> **MATRIX_COEFFICIENT_BT2020_CL** = 10,<br/> **MATRIX_COEFFICIENT_SMPTE_ST2085** = 11,<br/> **MATRIX_COEFFICIENT_CHROMATICITY_NCL** = 12,<br/> **MATRIX_COEFFICIENT_CHROMATICITY_CL** = 13,<br/> **MATRIX_COEFFICIENT_ICTCP** = 14<br/>} | 矩阵系数。 | 70| [OH_BitsPerSample](#oh_bitspersample) {<br/> **SAMPLE_U8** = 0,<br/> **SAMPLE_S16LE** = 1,<br/> **SAMPLE_S24LE** = 2,<br/> **SAMPLE_S32LE** = 3,<br/> **SAMPLE_F32LE** = 4,<br/> **SAMPLE_U8P** = 5,<br/> **SAMPLE_S16P** = 6,<br/> **SAMPLE_S24P** = 7,<br/> **SAMPLE_S32P** = 8,<br/> **SAMPLE_F32P** = 9,<br/> **INVALID_WIDTH** = -1<br/>} | 枚举每个编码样本的音频位数。 | 71 72 73### 变量 74 75| 名称 | 描述 | 76| -------- | -------- | 77| [OH_AVCodecBufferAttr::pts](_o_h___a_v_codec_buffer_attr.md#pts) | 此缓冲区的显示时间戳(以微秒为单位) | 78| [OH_AVCodecBufferAttr::size](_o_h___a_v_codec_buffer_attr.md#size) | 缓冲区中包含的数据的大小(以字节为单位) | 79| [OH_AVCodecBufferAttr::offset](_o_h___a_v_codec_buffer_attr.md#offset) | 此缓冲区中有效数据的起始偏移量 | 80| [OH_AVCodecBufferAttr::flags](_o_h___a_v_codec_buffer_attr.md#flags) | 此缓冲区具有的标志,也是多个[OH_AVCodecBufferFlags](#oh_avcodecbufferflags)的组合。 | 81| [OH_AVCodecAsyncCallback::onError](_o_h___a_v_codec_async_callback.md#onerror) | 监控编解码器操作错误,请参见[OH_AVCodecOnError](#oh_avcodeconerror) | 82| [OH_AVCodecAsyncCallback::onStreamChanged](_o_h___a_v_codec_async_callback.md#onstreamchanged) | 监控编解码器流变化,请参见[OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged) | 83| [OH_AVCodecAsyncCallback::onNeedInputData](_o_h___a_v_codec_async_callback.md#onneedinputdata) | 监控编解码器需要输入数据,请参见[OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata) | 84| [OH_AVCodecAsyncCallback::onNeedOutputData](_o_h___a_v_codec_async_callback.md#onneedinputdata) | 监控编解码器已生成输出数据,请参见[OH_AVCodecOnNewOutputData](#oh_avcodeconnewoutputdata) | 85| \*[OH_AVCODEC_MIMETYPE_VIDEO_AVC](#oh_avcodec_mimetype_video_avc) | AVC视频编解码器的MIME类型。 | 86| \*[OH_AVCODEC_MIMETYPE_AUDIO_AAC](#oh_avcodec_mimetype_audio_aac) | AAC音频编解码器的MIME类型。 | 87| \*[OH_AVCODEC_MIMETYPE_VIDEO_MPEG4](#oh_avcodec_mimetype_video_mpeg4) | MPEG4视频编解码器的MIME类型。 | 88| \*[OH_AVCODEC_MIMETYPE_VIDEO_HEVC](#oh_avcodec_mimetype_video_hevc) | HEVC视频编解码器的MIME类型。 | 89| \*[OH_AVCODEC_MIMETYPE_AUDIO_MPEG](#oh_avcodec_mimetype_audio_mpeg) | MPEG音频编解码器的MIME类型。 | 90| \*[OH_AVCODEC_MIMETYPE_IMAGE_JPG](#oh_avcodec_mimetype_image_jpg) | JPG图片编解码器的MIME类型。 | 91| \*[OH_AVCODEC_MIMETYPE_IMAGE_PNG](#oh_avcodec_mimetype_image_png) | PNG图片编解码器的MIME类型。 | 92| \*[OH_AVCODEC_MIMETYPE_IMAGE_BMP](#oh_avcodec_mimetype_image_bmp) | BMP图片编解码器的MIME类型。 | 93| \*[OH_AVCODEC_MIMETYPE_AUDIO_FLAC](#oh_avcodec_mimetype_audio_flac) | FLAC音频编解码器的MIME类型。 | 94| \*[OH_AVCODEC_MIMETYPE_AUDIO_VORBIS](#oh_avcodec_mimetype_audio_vorbis) | VORBIS音频编解码器的MIME类型。 | 95| \*[OH_ED_KEY_TIME_STAMP](#oh_ed_key_time_stamp) | 表面的额外数据中时间戳的键,值类型为int64 | 96| \*[OH_ED_KEY_EOS](#oh_ed_key_eos) | 表面的额外数据中流结束符的键,值类型为bool | 97| \*[OH_MD_KEY_TRACK_TYPE](#oh_md_key_track_type) | 提供统一容器,用于存储媒体描述。 | 98| \*[OH_MD_KEY_CODEC_MIME](#oh_md_key_codec_mime) | 编解码器mime类型的键,值类型为字符串。 | 99| \*[OH_MD_KEY_DURATION](#oh_md_key_duration) | 持续时间键,值类型为int64_t。 | 100| \*[OH_MD_KEY_BITRATE](#oh_md_key_bitrate) | 比特率的键,值类型为uint32_t。视频编码需要额外设置 [OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](#oh_md_key_video_encode_bitrate_mode) 以完成比特率设置。 | 101| \*[OH_MD_KEY_MAX_INPUT_SIZE](#oh_md_key_max_input_size) | 最大输入大小的键,值类型为uint32_t | 102| \*[OH_MD_KEY_WIDTH](#oh_md_key_width) | 视频宽度的键,值类型为uint32_t | 103| \*[OH_MD_KEY_HEIGHT](#oh_md_key_height) | 视频高度键,值类型为uint32_t | 104| \*[OH_MD_KEY_PIXEL_FORMAT](#oh_md_key_pixel_format) | 视频像素格式的键,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat) | 105| \*[OH_MD_KEY_RANGE_FLAG](#oh_md_key_range_flag) | 视频YUV取值范围标志的键,值类型为bool | 106| \*[OH_MD_KEY_COLOR_PRIMARIES](#oh_md_key_color_primaries) | 视频颜色原色键, 值类型为int32_t | 107| \*[OH_MD_KEY_TRANSFER_CHARACTERISTICS](#oh_md_key_transfer_characteristics) | 视频转移特性的键,值类型为int32_t | 108| \*[OH_MD_KEY_MATRIX_COEFFICIENTS](#oh_md_key_matrix_coefficients) | 视频矩阵系数的键,值类型为int32_t | 109| \*[OH_MD_KEY_AUDIO_SAMPLE_FORMAT](#oh_md_key_audio_sample_format) | 音频原始格式的键,值类型为uint32_t | 110| \*[OH_MD_KEY_FRAME_RATE](#oh_md_key_frame_rate) | 视频帧率的键,值类型为双精度浮点。 | 111| \*[OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](#oh_md_key_video_encode_bitrate_mode) | 视频编码码率模式,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) | 112| \*[OH_MD_KEY_PROFILE](#oh_md_key_profile) | 编码模板,值类型为数字,具体见[OH_AVCProfile](#oh_avcprofile),[OH_AACProfile](#oh_aacprofile)或[OH_HEVCProfile](#oh_hevcprofile) | 113| \*[OH_MD_KEY_AUD_CHANNEL_COUNT](#oh_md_key_aud_channel_count) | 音频通道计数键,值类型为uint32_t | 114| \*[OH_MD_KEY_AUD_SAMPLE_RATE](#oh_md_key_aud_sample_rate) | 音频采样率键,值类型为uint32_t | 115| \*[OH_MD_KEY_I_FRAME_INTERVAL](#oh_md_key_i_frame_interval) | 关键帧间隔的键,值类型为int32_t,单位为毫秒。 | 116| \*[OH_MD_KEY_ROTATION](#oh_md_key_rotation) | 表面旋转角度的键。值类型为int32_t:应为{0, 90, 180, 270},默认值为0。 | 117| \*[OH_MD_KEY_CODEC_CONFIG](#oh_md_key_codec_config) | 编解码器特定数据的键,值类型为uint8_t\*。 | 118| \*[OH_MD_KEY_REQUEST_I_FRAME](#oh_md_key_request_i_frame) | 请求立即编码I帧的键。值类型为布尔值 | 119| \*[OH_MD_KEY_QUALITY](#oh_md_key_quality) | 所需编码质量的键。值类型为uint32_t,此键仅适用于配置在恒定质量模式下的编码器 | 120| \*[OH_MD_KEY_CHANNEL_LAYOUT](#oh_md_key_channel_layout) | 所需编码通道布局的键。值类型为int64_t,此键仅适用于编码器。 | 121| \*[OH_MD_KEY_BITS_PER_CODED_SAMPLE](#oh_md_key_bits_per_coded_sample) | 每个编码样本位数的键,值类型为uint32_t,支持flac编码器,请参见 [OH_BitsPerSample](#oh_bitspersample)。 | 122| \*[OH_MD_KEY_AAC_IS_ADTS](#oh_md_key_aac_is_adts) | aac格式的键,值类型为uint32_t,aac解码器支持。 | 123| \*[OH_MD_KEY_SBR](#oh_md_key_sbr) | aac sbr模式的键,值类型为uint32_t,aac编码器支持。 | 124| \*[OH_MD_KEY_COMPLIANCE_LEVEL](#oh_md_key_compliance_level) | flac合规性级别的键,值类型为int32_t。 | 125| \*[OH_MD_KEY_IDENTIFICATION_HEADER](#oh_md_key_identification_header) | vorbis标识头的键,值类型为uint8_t\*,仅vorbis解码器支持。 | 126| \*[OH_MD_KEY_SETUP_HEADER](#oh_md_key_setup_header) | vorbis设置头的键,值类型为uint8_t\*,仅vorbis解码器支持。 | 127| \*[OH_MD_KEY_TITLE](#oh_md_key_title) | 源格式标题的键,值类型为字符串 | 128| \*[OH_MD_KEY_ARTIST](#oh_md_key_artist) | 艺术家的源格式Key,值类型为字符串 | 129| \*[OH_MD_KEY_ALBUM](#oh_md_key_album) | 相册的源格式键,值类型为字符串 | 130| \*[OH_MD_KEY_ALBUM_ARTIST](#oh_md_key_album_artist) | 源格式专辑_artist的键,值类型为字符串 | 131| \*[OH_MD_KEY_DATE](#oh_md_key_date) | 源格式日期的键,值类型为字符串 | 132| \*[OH_MD_KEY_COMMENT](#oh_md_key_comment) | 源格式注释的键,值类型为字符串 | 133| \*[OH_MD_KEY_GENRE](#oh_md_key_genre) | 源格式类型的键,值类型为字符串 | 134| \*[OH_MD_KEY_COPYRIGHT](#oh_md_key_copyright) | 源格式版权的键,值类型为字符串 | 135| \*[OH_MD_KEY_LANGUAGE](#oh_md_key_language) | 源格式语言的键,值类型为字符串 | 136| \*[OH_MD_KEY_DESCRIPTION](#oh_md_key_description) | 源格式描述的键,值类型为字符串 | 137| \*[OH_MD_KEY_LYRICS](#oh_md_key_lyrics) | 源格式歌词的键,值类型为字符串 | 138| \*[OH_MD_KEY_TRACK_COUNT](#oh_md_key_track_count) | 源格式轨道计数的键,值类型为uint32_t | 139 140 141## 类型定义说明 142 143 144### OH_AACProfile 145 146 147``` 148typedef enum OH_AACProfile OH_AACProfile 149``` 150 151**描述:** 152 153AAC Profile枚举。 154 155\@syscap SystemCapability.Multimedia.Media.CodecBase 156 157 158### OH_AVCodecAsyncCallback 159 160 161``` 162typedef struct OH_AVCodecAsyncCallback OH_AVCodecAsyncCallback 163``` 164 165**描述:** 166 167OH_AVCodec中所有异步回调函数指针的集合。将该结构体的实例注册到OH_AVCodec实例中, 并处理回调上报的信息,以保证OH_AVCodec的正常运行。 168 169\@syscap SystemCapability.Multimedia.Media.CodecBase 170 171**参数:** 172 173| 名称 | 描述 | 174| -------- | -------- | 175| [onError](_o_h___a_v_codec_async_callback.md#onerror) | 监控编解码器操作错误,请参见[OH_AVCodecOnError](#oh_avcodeconerror) | 176| [onStreamChanged](_o_h___a_v_codec_async_callback.md#onstreamchanged) | 监控编解码器流变化,请参见[OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged) | 177| [onNeedInputData](_o_h___a_v_codec_async_callback.md#onneedinputdata) | 监控编解码器需要输入数据,请参见[OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata) | 178| [onNeedOutputData](_o_h___a_v_codec_async_callback.md#onneedoutputdata) | 监控编解码器已生成输出数据,请参见[OH_AVCodecOnNewOutputData](#oh_avcodeconnewoutputdata) | 179 180 181### OH_AVCodecBufferAttr 182 183 184``` 185typedef struct OH_AVCodecBufferAttr OH_AVCodecBufferAttr 186``` 187 188**描述:** 189 190定义OH_AVCodec的缓冲区描述信息。 191 192\@syscap SystemCapability.Multimedia.Media.CodecBase 193 194 195### OH_AVCodecBufferFlags 196 197 198``` 199typedef enum OH_AVCodecBufferFlags OH_AVCodecBufferFlags 200``` 201 202**描述:** 203 204枚举OH_AVCodec缓冲区标记的类别。 205 206\@syscap SystemCapability.Multimedia.Media.CodecBase 207 208 209### OH_AVCodecOnError 210 211 212``` 213typedef void (*OH_AVCodecOnError) (OH_AVCodec *codec, int32_t errorCode, void *userData) 214``` 215 216**描述:** 217 218当OH_AVCodec实例运行出错时,会调用来上报具体的错误信息的函数指针。 219 220\@syscap SystemCapability.Multimedia.Media.CodecBase 221 222**参数:** 223 224| 名称 | 描述 | 225| -------- | -------- | 226| codec | OH_AVCodec实例 | 227| errorCode | 特定错误代码 | 228| userData | 用户特定数据 | 229 230 231### OH_AVCodecOnNeedInputData 232 233 234``` 235typedef void (*OH_AVCodecOnNeedInputData) (OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData) 236``` 237 238**描述:** 239 240当OH_AVCodec在运行过程中需要新的输入数据时,将调用此函数指针,并携带可用的缓冲区来填充新的输入数据。 241 242\@syscap SystemCapability.Multimedia.Media.CodecBase 243 244**参数:** 245 246| 名称 | 描述 | 247| -------- | -------- | 248| codec | OH_AVCodec实例 | 249| index | 与新可用的输入缓冲区相对应的索引 | 250| data | 新的可用输入缓冲区 | 251| userData | 用户特定数据 | 252 253 254### OH_AVCodecOnNewOutputData 255 256 257``` 258typedef void (*OH_AVCodecOnNewOutputData) (OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr, void *userData) 259``` 260 261**描述:** 262 263当OH_AVCodec运行过程中生成新的输出数据时,将调用此函数指针,并携带包含新输出数据的缓冲区。 需要注意的是,OH_AVCodecBufferAttr指针的生命周期仅在调用函数指针时有效,这将禁止调用结束后继续访问。 264 265\@syscap SystemCapability.Multimedia.Media.CodecBase 266 267**参数:** 268 269| 名称 | 描述 | 270| -------- | -------- | 271| codec | OH_AVCodec实例 | 272| index | 与新输出缓冲区对应的索引 | 273| data | 包含新输出数据的缓冲区 | 274| attr | 新输出缓冲区的说明,请参见[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | 275| userData | 用户特定数据 | 276 277 278### OH_AVCodecOnStreamChanged 279 280 281``` 282typedef void (*OH_AVCodecOnStreamChanged) (OH_AVCodec *codec, OH_AVFormat *format, void *userData) 283``` 284 285**描述:** 286 287当输出流发生变化时,将调用此函数指针报告新的流描述信息。需要注意的是, OH_AVFormat指针的生命周期只有在函数指针被调用时才有效,调用结束后禁止继续访问。 288 289\@syscap SystemCapability.Multimedia.Media.CodecBase 290 291**参数:** 292 293| 名称 | 描述 | 294| -------- | -------- | 295| codec | OH_AVCodec实例 | 296| format | 新输出流描述信息 | 297| userData | 用户特定数据 | 298 299**format 携载字段:** 300| Key | 描述 | 301| ---------------------- | --------------- | 302| OH_MD_KEY_WIDTH | 视频输出宽度 | 303| OH_MD_KEY_HEIGHT | 视频输出高度 | 304| OH_MD_KEY_PIXEL_FORMAT | 视频输出像素格式 | 305 306### OH_AVCProfile 307 308 309``` 310typedef enum OH_AVCProfile OH_AVCProfile 311``` 312 313**描述:** 314 315AVC Profile枚举。 316 317\@syscap SystemCapability.Multimedia.Media.CodecBase 318 319 320### OH_AVOutputFormat 321 322 323``` 324typedef enum OH_AVOutputFormat OH_AVOutputFormat 325``` 326 327**描述:** 328 329枚举封装器的输出文件格式。 330 331 332### OH_AVSeekMode 333 334 335``` 336typedef enum OH_AVSeekMode OH_AVSeekMode 337``` 338 339**描述:** 340 341跳转模式。 342 343\@syscap SystemCapability.Multimedia.Media.CodecBase 344 345 346### OH_BitsPerSample 347 348 349``` 350typedef enum OH_BitsPerSample OH_BitsPerSample 351``` 352 353**描述:** 354 355枚举每个编码样本的音频位数。 356 357\@syscap SystemCapability.Multimedia.Media.CodecBase 358 359 360### OH_ColorPrimary 361 362 363``` 364typedef enum OH_ColorPrimary OH_ColorPrimary 365``` 366 367**描述:** 368 369原色。 370 371\@syscap SystemCapability.Multimedia.Media.CodecBase 372 373 374### OH_HEVCProfile 375 376 377``` 378typedef enum OH_HEVCProfile OH_HEVCProfile 379``` 380 381**描述:** 382 383HEVC Profile枚举。 384 385\@syscap SystemCapability.Multimedia.Media.CodecBase 386 387 388### OH_MatrixCoefficient 389 390 391``` 392typedef enum OH_MatrixCoefficient OH_MatrixCoefficient 393``` 394 395**描述:** 396 397矩阵系数。 398 399\@syscap SystemCapability.Multimedia.Media.CodecBase 400 401 402### OH_MediaType 403 404 405``` 406typedef enum OH_MediaType OH_MediaType 407``` 408 409**描述:** 410 411媒体类型。 412 413\@syscap SystemCapability.Multimedia.Media.CodecBase 414 415 416### OH_TransferCharacteristic 417 418 419``` 420typedef enum OH_TransferCharacteristic OH_TransferCharacteristic 421``` 422 423**描述:** 424 425转移特性。 426 427\@syscap SystemCapability.Multimedia.Media.CodecBase 428 429 430## 枚举类型说明 431 432 433### OH_AACProfile 434 435 436``` 437enum OH_AACProfile 438``` 439 440**描述:** 441 442AAC Profile枚举。 443 444\@syscap SystemCapability.Multimedia.Media.CodecBase 445 446 447### OH_AVCodecBufferFlags 448 449 450``` 451enum OH_AVCodecBufferFlags 452``` 453 454**描述:** 455 456枚举OH_AVCodec缓冲区标记的类别。 457 458\@syscap SystemCapability.Multimedia.Media.CodecBase 459 460 461### OH_AVCProfile 462 463 464``` 465enum OH_AVCProfile 466``` 467 468**描述:** 469 470AVC Profile枚举。 471 472\@syscap SystemCapability.Multimedia.Media.CodecBase 473 474 475### OH_AVOutputFormat 476 477 478``` 479enum OH_AVOutputFormat 480``` 481 482**描述:** 483 484枚举封装器的输出文件格式。 485 486 487### OH_AVSeekMode 488 489 490``` 491enum OH_AVSeekMode 492``` 493 494**描述:** 495 496跳转模式。 497 498\@syscap SystemCapability.Multimedia.Media.CodecBase 499 500 501### OH_BitsPerSample 502 503 504``` 505enum OH_BitsPerSample 506``` 507 508**描述:** 509 510枚举每个编码样本的音频位数。 511 512\@syscap SystemCapability.Multimedia.Media.CodecBase 513 514 515### OH_ColorPrimary 516 517 518``` 519enum OH_ColorPrimary 520``` 521 522**描述:** 523 524原色。 525 526\@syscap SystemCapability.Multimedia.Media.CodecBase 527 528 529### OH_HEVCProfile 530 531 532``` 533enum OH_HEVCProfile 534``` 535 536**描述:** 537 538HEVC Profile枚举。 539 540\@syscap SystemCapability.Multimedia.Media.CodecBase 541 542 543### OH_MatrixCoefficient 544 545 546``` 547enum OH_MatrixCoefficient 548``` 549 550**描述:** 551 552矩阵系数。 553 554\@syscap SystemCapability.Multimedia.Media.CodecBase 555 556 557### OH_MediaType 558 559 560``` 561enum OH_MediaType 562``` 563 564**描述:** 565 566媒体类型。 567 568\@syscap SystemCapability.Multimedia.Media.CodecBase 569 570 571### OH_TransferCharacteristic 572 573 574``` 575enum OH_TransferCharacteristic 576``` 577 578**描述:** 579 580转移特性。 581 582\@syscap SystemCapability.Multimedia.Media.CodecBase 583 584 585## 变量说明 586 587 588### OH_AVCODEC_MIMETYPE_AUDIO_AAC 589 590 591``` 592const char* OH_AVCODEC_MIMETYPE_AUDIO_AAC 593``` 594 595**描述:** 596 597AAC音频编解码器的MIME类型。 598 599\@syscap SystemCapability.Multimedia.Media.CodecBase 600 601 602### OH_AVCODEC_MIMETYPE_AUDIO_FLAC 603 604 605``` 606const char* OH_AVCODEC_MIMETYPE_AUDIO_FLAC 607``` 608 609**描述:** 610 611FLAC音频编解码器的MIME类型。 612 613\@syscap SystemCapability.Multimedia.Media.CodecBase 614 615 616### OH_AVCODEC_MIMETYPE_AUDIO_MPEG 617 618 619``` 620const char* OH_AVCODEC_MIMETYPE_AUDIO_MPEG 621``` 622 623**描述:** 624 625MPEG音频编解码器的MIME类型。 626 627\@syscap SystemCapability.Multimedia.Media.CodecBase 628 629 630### OH_AVCODEC_MIMETYPE_AUDIO_VORBIS 631 632 633``` 634const char* OH_AVCODEC_MIMETYPE_AUDIO_VORBIS 635``` 636 637**描述:** 638 639VORBIS音频编解码器的MIME类型。 640 641\@syscap SystemCapability.Multimedia.Media.CodecBase 642 643 644### OH_AVCODEC_MIMETYPE_IMAGE_BMP 645 646 647``` 648const char* OH_AVCODEC_MIMETYPE_IMAGE_BMP 649``` 650 651**描述:** 652 653BMP图片编解码器的MIME类型。 654 655\@syscap SystemCapability.Multimedia.Media.CodecBase 656 657 658### OH_AVCODEC_MIMETYPE_IMAGE_JPG 659 660 661``` 662const char* OH_AVCODEC_MIMETYPE_IMAGE_JPG 663``` 664 665**描述:** 666 667JPG图片编解码器的MIME类型。 668 669\@syscap SystemCapability.Multimedia.Media.CodecBase 670 671 672### OH_AVCODEC_MIMETYPE_IMAGE_PNG 673 674 675``` 676const char* OH_AVCODEC_MIMETYPE_IMAGE_PNG 677``` 678 679**描述:** 680 681PNG图片编解码器的MIME类型。 682 683\@syscap SystemCapability.Multimedia.Media.CodecBase 684 685 686### OH_AVCODEC_MIMETYPE_VIDEO_AVC 687 688 689``` 690const char* OH_AVCODEC_MIMETYPE_VIDEO_AVC 691``` 692 693**描述:** 694 695AVC视频编解码器的MIME类型。 696 697\@syscap SystemCapability.Multimedia.Media.CodecBase 698 699 700### OH_AVCODEC_MIMETYPE_VIDEO_HEVC 701 702 703``` 704const char* OH_AVCODEC_MIMETYPE_VIDEO_HEVC 705``` 706 707**描述:** 708 709HEVC视频编解码器的MIME类型。 710 711\@syscap SystemCapability.Multimedia.Media.CodecBase 712 713 714### OH_AVCODEC_MIMETYPE_VIDEO_MPEG4 715 716 717``` 718const char* OH_AVCODEC_MIMETYPE_VIDEO_MPEG4 719``` 720 721**描述:** 722 723MPEG4视频编解码器的MIME类型。 724 725\@syscap SystemCapability.Multimedia.Media.CodecBase 726 727 728### OH_ED_KEY_EOS 729 730 731``` 732const char* OH_ED_KEY_EOS 733``` 734 735**描述:** 736 737表面的额外数据中流结束符的键,值类型为bool 738 739\@syscap SystemCapability.Multimedia.Media.CodecBase 740 741 742### OH_ED_KEY_TIME_STAMP 743 744 745``` 746const char* OH_ED_KEY_TIME_STAMP 747``` 748 749**描述:** 750 751表面的额外数据中时间戳的键,值类型为int64 752 753\@syscap SystemCapability.Multimedia.Media.CodecBase 754 755 756### OH_MD_KEY_AAC_IS_ADTS 757 758 759``` 760const char* OH_MD_KEY_AAC_IS_ADTS 761``` 762 763**描述:** 764 765aac格式的键,值类型为uint32_t,aac解码器支持。 766 767 768### OH_MD_KEY_ALBUM 769 770 771``` 772const char* OH_MD_KEY_ALBUM 773``` 774 775**描述:** 776 777相册的源格式键,值类型为字符串 778 779 780### OH_MD_KEY_ALBUM_ARTIST 781 782 783``` 784const char* OH_MD_KEY_ALBUM_ARTIST 785``` 786 787**描述:** 788 789源格式专辑_artist的键,值类型为字符串 790 791 792### OH_MD_KEY_ARTIST 793 794 795``` 796const char* OH_MD_KEY_ARTIST 797``` 798 799**描述:** 800 801艺术家的源格式Key,值类型为字符串 802 803 804### OH_MD_KEY_AUD_CHANNEL_COUNT 805 806 807``` 808const char* OH_MD_KEY_AUD_CHANNEL_COUNT 809``` 810 811**描述:** 812 813音频通道计数键,值类型为uint32_t 814 815 816### OH_MD_KEY_AUD_SAMPLE_RATE 817 818 819``` 820const char* OH_MD_KEY_AUD_SAMPLE_RATE 821``` 822 823**描述:** 824 825音频采样率键,值类型为uint32_t 826 827 828### OH_MD_KEY_AUDIO_SAMPLE_FORMAT 829 830 831``` 832const char* OH_MD_KEY_AUDIO_SAMPLE_FORMAT 833``` 834 835**描述:** 836 837音频原始格式的键,值类型为uint32_t 838 839 840### OH_MD_KEY_BITRATE 841 842 843``` 844const char* OH_MD_KEY_BITRATE 845``` 846 847**描述:** 848 849比特率的键,值类型为uint32_t。视频编码需要额外设置 [OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](#oh_md_key_video_encode_bitrate_mode) 以完成比特率设置。 850 851 852### OH_MD_KEY_BITS_PER_CODED_SAMPLE 853 854 855``` 856const char* OH_MD_KEY_BITS_PER_CODED_SAMPLE 857``` 858 859**描述:** 860 861每个编码样本位数的键,值类型为uint32_t,支持flac编码器。 862 863 864### OH_MD_KEY_CHANNEL_LAYOUT 865 866 867``` 868const char* OH_MD_KEY_CHANNEL_LAYOUT 869``` 870 871**描述:** 872 873所需编码通道布局的键。值类型为int64_t,此键仅适用于编码器。 874 875 876### OH_MD_KEY_CODEC_CONFIG 877 878 879``` 880const char* OH_MD_KEY_CODEC_CONFIG 881``` 882 883**描述:** 884 885编解码器特定数据的键,值类型为uint8_t\*。 886 887 888### OH_MD_KEY_CODEC_MIME 889 890 891``` 892const char* OH_MD_KEY_CODEC_MIME 893``` 894 895**描述:** 896 897编解码器mime类型的键,值类型为字符串。 898 899 900### OH_MD_KEY_COLOR_PRIMARIES 901 902 903``` 904const char* OH_MD_KEY_COLOR_PRIMARIES 905``` 906 907**描述:** 908 909视频颜色原色键, 值类型为int32_t 910 911 912### OH_MD_KEY_COMMENT 913 914 915``` 916const char* OH_MD_KEY_COMMENT 917``` 918 919**描述:** 920 921源格式注释的键,值类型为字符串 922 923 924### OH_MD_KEY_COMPLIANCE_LEVEL 925 926 927``` 928const char* OH_MD_KEY_COMPLIANCE_LEVEL 929``` 930 931**描述:** 932 933flac合规性级别的键,值类型为int32_t。 934 935 936### OH_MD_KEY_COPYRIGHT 937 938 939``` 940const char* OH_MD_KEY_COPYRIGHT 941``` 942 943**描述:** 944 945源格式版权的键,值类型为字符串 946 947 948### OH_MD_KEY_DATE 949 950 951``` 952const char* OH_MD_KEY_DATE 953``` 954 955**描述:** 956 957源格式日期的键,值类型为字符串 958 959 960### OH_MD_KEY_DESCRIPTION 961 962 963``` 964const char* OH_MD_KEY_DESCRIPTION 965``` 966 967**描述:** 968 969源格式描述的键,值类型为字符串 970 971 972### OH_MD_KEY_DURATION 973 974 975``` 976const char* OH_MD_KEY_DURATION 977``` 978 979**描述:** 980 981持续时间键,值类型为int64_t。 982 983 984### OH_MD_KEY_FRAME_RATE 985 986 987``` 988const char* OH_MD_KEY_FRAME_RATE 989``` 990 991**描述:** 992 993视频帧率的键,值类型为双精度浮点。 994 995 996### OH_MD_KEY_GENRE 997 998 999``` 1000const char* OH_MD_KEY_GENRE 1001``` 1002 1003**描述:** 1004 1005源格式类型的键,值类型为字符串 1006 1007 1008### OH_MD_KEY_HEIGHT 1009 1010 1011``` 1012const char* OH_MD_KEY_HEIGHT 1013``` 1014 1015**描述:** 1016 1017视频高度键,值类型为uint32_t 1018 1019 1020### OH_MD_KEY_I_FRAME_INTERVAL 1021 1022 1023``` 1024const char* OH_MD_KEY_I_FRAME_INTERVAL 1025``` 1026 1027**描述:** 1028 1029关键帧间隔的键,值类型为int32_t,单位为毫秒。 1030 1031 1032### OH_MD_KEY_IDENTIFICATION_HEADER 1033 1034 1035``` 1036const char* OH_MD_KEY_IDENTIFICATION_HEADER 1037``` 1038 1039**描述:** 1040 1041vorbis标识头的键,值类型为uint8_t\*,仅vorbis解码器支持。 1042 1043 1044### OH_MD_KEY_LANGUAGE 1045 1046 1047``` 1048const char* OH_MD_KEY_LANGUAGE 1049``` 1050 1051**描述:** 1052 1053源格式语言的键,值类型为字符串 1054 1055 1056### OH_MD_KEY_LYRICS 1057 1058 1059``` 1060const char* OH_MD_KEY_LYRICS 1061``` 1062 1063**描述:** 1064 1065源格式歌词的键,值类型为字符串 1066 1067 1068### OH_MD_KEY_MATRIX_COEFFICIENTS 1069 1070 1071``` 1072const char* OH_MD_KEY_MATRIX_COEFFICIENTS 1073``` 1074 1075**描述:** 1076 1077视频矩阵系数的键,值类型为int32_t 1078 1079 1080### OH_MD_KEY_MAX_INPUT_SIZE 1081 1082 1083``` 1084const char* OH_MD_KEY_MAX_INPUT_SIZE 1085``` 1086 1087**描述:** 1088 1089最大输入大小的键,值类型为uint32_t 1090 1091 1092### OH_MD_KEY_PIXEL_FORMAT 1093 1094 1095``` 1096const char* OH_MD_KEY_PIXEL_FORMAT 1097``` 1098 1099**描述:** 1100 1101视频像素格式的键,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat) 1102 1103 1104### OH_MD_KEY_PROFILE 1105 1106 1107``` 1108const char* OH_MD_KEY_PROFILE 1109``` 1110 1111**描述:** 1112 1113编码模板,值类型为数字,具体见[OH_AVCProfile](#oh_avcprofile),[OH_AACProfile](#oh_aacprofile)或[OH_HEVCProfile](#oh_hevcprofile)。 1114 1115 1116### OH_MD_KEY_QUALITY 1117 1118 1119``` 1120const char* OH_MD_KEY_QUALITY 1121``` 1122 1123**描述:** 1124 1125所需编码质量的键。值类型为uint32_t,此键仅适用于配置在恒定质量模式下的编码器 1126 1127 1128### OH_MD_KEY_RANGE_FLAG 1129 1130 1131``` 1132const char* OH_MD_KEY_RANGE_FLAG 1133``` 1134 1135**描述:** 1136 1137视频YUV取值范围标志的键,值类型为bool 1138 1139 1140### OH_MD_KEY_REQUEST_I_FRAME 1141 1142 1143``` 1144const char* OH_MD_KEY_REQUEST_I_FRAME 1145``` 1146 1147**描述:** 1148 1149请求立即编码I帧的键。值类型为布尔值 1150 1151 1152### OH_MD_KEY_ROTATION 1153 1154 1155``` 1156const char* OH_MD_KEY_ROTATION 1157``` 1158 1159**描述:** 1160 1161表面旋转角度的键。值类型为int32_t:应为{0, 90, 180, 270},默认值为0。 1162 1163 1164### OH_MD_KEY_SBR 1165 1166 1167``` 1168const char* OH_MD_KEY_SBR 1169``` 1170 1171**描述:** 1172 1173aac sbr模式的键,值类型为uint32_t,aac编码器支持。 1174 1175 1176### OH_MD_KEY_SETUP_HEADER 1177 1178 1179``` 1180const char* OH_MD_KEY_SETUP_HEADER 1181``` 1182 1183**描述:** 1184 1185vorbis设置头的键,值类型为uint8_t\*,仅vorbis解码器支持。 1186 1187 1188### OH_MD_KEY_TITLE 1189 1190 1191``` 1192const char* OH_MD_KEY_TITLE 1193``` 1194 1195**描述:** 1196 1197源格式标题的键,值类型为字符串 1198 1199 1200### OH_MD_KEY_TRACK_COUNT 1201 1202 1203``` 1204const char* OH_MD_KEY_TRACK_COUNT 1205``` 1206 1207**描述:** 1208 1209源格式轨道计数的键,值类型为uint32_t 1210 1211 1212### OH_MD_KEY_TRACK_TYPE 1213 1214 1215``` 1216const char* OH_MD_KEY_TRACK_TYPE 1217``` 1218 1219**描述:** 1220 1221提供统一容器,用于存储媒体描述。 1222 1223\@syscap SystemCapability.Multimedia.Media.CodecBase 1224 1225 1226### OH_MD_KEY_TRANSFER_CHARACTERISTICS 1227 1228 1229``` 1230const char* OH_MD_KEY_TRANSFER_CHARACTERISTICS 1231``` 1232 1233**描述:** 1234 1235视频转移特性的键,值类型为int32_t 1236 1237 1238### OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE 1239 1240 1241``` 1242const char* OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE 1243``` 1244 1245**描述:** 1246 1247视频编码码率模式,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) 1248 1249 1250### OH_MD_KEY_WIDTH 1251 1252 1253``` 1254const char* OH_MD_KEY_WIDTH 1255``` 1256 1257**描述:** 1258 1259视频宽度的键,值类型为uint32_t 1260