未验证 提交 dc2cd5e0 编写于 作者: O openharmony_ci 提交者: Gitee

!19905 add AVCodec native API reference

Merge pull request !19905 from zengyawen/avcodec
......@@ -13,12 +13,15 @@
- [RDB](_r_d_b.md)
- [MindSpore](_mind_spore.md)
- [NeuralNeworkRuntime](_neural_nework_runtime.md)
- [AVCapability](_a_v_capability.md)
- [AudioDecoder](_audio_decoder.md)
- [AudioEncoder](_audio_encoder.md)
- [CodecBase](_codec_base.md)
- [Core](_core.md)
- [VideoDecoder](_video_decoder.md)
- [VideoEncoder](_video_encoder.md)
- [Core](_core.md)
- [AVDemuxer](_a_v_demuxer.md)
- [AVSource](_a_v_source.md)
- [HuksKeyApi](_huks_key_api.md)
- [HuksParamSetApi](_huks_param_set_api.md)
- [HuksTypeApi](_huks_type_api.md)
......@@ -56,14 +59,18 @@
- [types.h](types_8h.md)
- [neural_network_runtime_type.h](neural__network__runtime__type_8h.md)
- [neural_network_runtime.h](neural__network__runtime_8h.md)
- [avcodec_audio_channel_layout.h](avcodec__audio__channel__layout_8h.md)
- [native_avcapability.h](native__avcapability_8h.md)
- [native_avcodec_audiodecoder.h](native__avcodec__audiodecoder_8h.md)
- [native_avcodec_audioencoder.h](native__avcodec__audioencoder_8h.md)
- [native_avcodec_base.h](native__avcodec__base_8h.md)
- [native_avcodec_videodecoder.h](native__avcodec__videodecoder_8h.md)
- [native_avcodec_videoencoder.h](native__avcodec__videoencoder_8h.md)
- [native_avdemuxer.h](native__avdemuxer_8h.md)
- [native_averrors.h](native__averrors_8h.md)
- [native_avformat.h](native__avformat_8h.md)
- [native_avmemory.h](native__avmemory_8h.md)
- [native_avsource.h](native__avsource_8h.md)
- [native_huks_api.h](native__huks__api_8h.md)
- [native_huks_param.h](native__huks__param_8h.md)
- [native_huks_type.h](native__huks__type_8h.md)
......@@ -102,6 +109,7 @@
- [OH_NN_UInt32Array](_o_h___n_n___u_int32_array.md)
- [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)
- [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)
- [OH_AVRange](_o_h___a_v_range.md)
- [OH_Huks_Blob](_o_h___huks___blob.md)
- [OH_Huks_CertChain](_o_h___huks___cert_chain.md)
- [OH_Huks_KeyInfo](_o_h___huks___key_info.md)
......
# AVCapability
## 概述
AVCapability模块提供用于编解码能力查询的函数。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
10
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avcapability.h](native__avcapability_8h.md) | 声明用于编解码能力查询到的Native API。<br>引用文件:<multimedia/native_avcapability.h> |
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVRange](_o_h___a_v_range.md) | 范围包含最小值和最大值。 |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OH_BitrateMode](#oh_bitratemode) | 编码器的比特率模式。 |
| [OH_AVRange](#oh_avrange) | 范围包含最小值和最大值。 |
| [OH_AVCodecCategory](#oh_avcodeccategory) | 编解码器类别。 |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_BitrateMode](#oh_bitratemode) { **BITRATE_MODE_CBR** = 0, **BITRATE_MODE_VBR** = 1, **BITRATE_MODE_CQ** = 2 } | 编码器的比特率模式。 |
| [OH_AVCodecCategory](#oh_avcodeccategory) { **HARDWARE** = 0, **SOFTWARE** } | 编解码器类别。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| \*[OH_AVCodec_GetCapability](#oh_avcodec_getcapability) (const char \*mime, bool isEncoder) | 获取系统推荐的编解码器能力。 |
| \*[OH_AVCodec_GetCapabilityByCategory](#oh_avcodec_getcapabilitybycategory) (const char \*mime, bool isEncoder, [OH_AVCodecCategory](#oh_avcodeccategory) category) | 获取指定类别中的编解码器能力。通过指定类别, 匹配的编解码器仅限于硬件编解码器或软件编解码器。 |
| [OH_AVCapability_IsHardware](#oh_avcapability_ishardware) (OH_AVCapability \*capability) | 检查能力实例是否描述了硬件编解码器。 |
| \*[OH_AVCapability_GetName](#oh_avcapability_getname) (OH_AVCapability \*capability) | 获取编解码器名称。 |
| [OH_AVCapability_GetMaxSupportedInstances](#oh_avcapability_getmaxsupportedinstances) (OH_AVCapability \*capability) | 获取编解码器支持的最大实例数。 |
| [OH_AVCapability_GetEncoderBitrateRange](#oh_avcapability_getencoderbitraterange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*bitrateRange) | 获取编码器支持的比特率范围。 |
| [OH_AVCapability_IsEncoderBitrateModeSupported](#oh_avcapability_isencoderbitratemodesupported) (OH_AVCapability \*capability, [OH_BitrateMode](#oh_bitratemode) bitrateMode) | 检查编码器是否支持特定的比特率模式。 |
| [OH_AVCapability_GetEncoderQualityRange](#oh_avcapability_getencoderqualityrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*qualityRange) | 获取编码器支持的质量范围。 |
| [OH_AVCapability_GetEncoderComplexityRange](#oh_avcapability_getencodercomplexityrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*complexityRange) | 获取编码器支持的编码器复杂性范围。 |
| [OH_AVCapability_GetAudioSupportedSampleRates](#oh_avcapability_getaudiosupportedsamplerates) (OH_AVCapability \*capability, const int32_t \*\*sampleRates, uint32_t \*sampleRateNum) | 获取音频编解码器支持的采样速率。 |
| [OH_AVCapability_GetAudioChannelCountRange](#oh_avcapability_getaudiochannelcountrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*channelCountRange) | 获取音频编解码器支持的音频通道计数范围。 |
| [OH_AVCapability_GetVideoWidthAlignment](#oh_avcapability_getvideowidthalignment) (OH_AVCapability \*capability, int32_t \*widthAlignment) | 获取视频编解码器支持的视频宽度对齐。 |
| [OH_AVCapability_GetVideoHeightAlignment](#oh_avcapability_getvideoheightalignment) (OH_AVCapability \*capability, int32_t \*heightAlignment) | 获取视频编解码器支持的视频高度对齐。 |
| [OH_AVCapability_GetVideoWidthRangeForHeight](#oh_avcapability_getvideowidthrangeforheight) (OH_AVCapability \*capability, int32_t height, [OH_AVRange](_o_h___a_v_range.md) \*widthRange) | 获取指定高度情况下视频编解码器支持的视频宽度范围。 |
| [OH_AVCapability_GetVideoHeightRangeForWidth](#oh_avcapability_getvideoheightrangeforwidth) (OH_AVCapability \*capability, int32_t width, [OH_AVRange](_o_h___a_v_range.md) \*heightRange) | 获取指定宽度情况下视频编解码器支持的视频高度范围。 |
| [OH_AVCapability_GetVideoWidthRange](#oh_avcapability_getvideowidthrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*widthRange) | 获取视频编解码器支持的视频宽度范围。 |
| [OH_AVCapability_GetVideoHeightRange](#oh_avcapability_getvideoheightrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*heightRange) | 获取视频编解码器支持的视频高度范围。 |
| [OH_AVCapability_IsVideoSizeSupported](#oh_avcapability_isvideosizesupported) (OH_AVCapability \*capability, int32_t width, int32_t height) | 检查视频编解码器是否支持特定的视频大小。 |
| [OH_AVCapability_GetVideoFrameRateRange](#oh_avcapability_getvideoframeraterange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*frameRateRange) | 获取视频编解码器支持的视频帧率范围。 |
| [OH_AVCapability_GetVideoFrameRateRangeForSize](#oh_avcapability_getvideoframeraterangeforsize) (OH_AVCapability \*capability, int32_t width, int32_t height, [OH_AVRange](_o_h___a_v_range.md) \*frameRateRange) | 获取指定视频大小的视频编解码器支持的视频帧率范围。 |
| [OH_AVCapability_AreVideoSizeAndFrameRateSupported](#oh_avcapability_arevideosizeandframeratesupported) (OH_AVCapability \*capability, int32_t width, int32_t height, int32_t frameRate) | 检查视频编解码器是否支持视频大小和帧率的特定组合。 |
| [OH_AVCapability_GetVideoSupportedPixelFormats](#oh_avcapability_getvideosupportedpixelformats) (OH_AVCapability \*capability, const int32_t \*\*pixelFormats, uint32_t \*pixelFormatNum) | 获取视频编解码器支持的视频像素格式。 |
| [OH_AVCapability_GetSupportedProfiles](#oh_avcapability_getsupportedprofiles) (OH_AVCapability \*capability, const int32_t \*\*profiles, uint32_t \*profileNum) | 获取编解码器支持的配置文件。 |
| [OH_AVCapability_GetSupportedLevelsForProfile](#oh_avcapability_getsupportedlevelsforprofile) (OH_AVCapability \*capability, int32_t profile, const int32_t \*\*levels, uint32_t \*levelNum) | 获取特定配置文件支持的编解码器级别。 |
| [OH_AVCapability_AreProfileAndLevelSupported](#oh_avcapability_areprofileandlevelsupported) (OH_AVCapability \*capability, int32_t profile, int32_t level) | 检查编解码器是否支持配置文件和级别的特定组合。 |
### 变量
| 名称 | 描述 |
| -------- | -------- |
| **OH_AVRange::minVal** | 范围下限 |
| **OH_AVRange::maxVal** | 范围上限 |
## 类型定义说明
### OH_AVCodecCategory
```
typedef enum OH_AVCodecCategoryOH_AVCodecCategory
```
**描述:**
编解码器类别。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
10
### OH_AVRange
```
typedef struct OH_AVRangeOH_AVRange
```
**描述:**
范围包含最小值和最大值。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
10
### OH_BitrateMode
```
typedef enum OH_BitrateModeOH_BitrateMode
```
**描述:**
编码器的比特率模式。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
10
## 枚举类型说明
### OH_AVCodecCategory
```
enum OH_AVCodecCategory
```
**描述:**
编解码器类别。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
10
| 枚举值 | 描述 |
| -------- | -------- |
| HARDWARE | 硬件编解码。 |
| SOFTWARE | 软件编解码。 |
### OH_BitrateMode
```
enum OH_BitrateMode
```
**描述:**
编码器的比特率模式。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
10
| 枚举值 | 描述 |
| -------- | -------- |
| BITRATE_MODE_CBR | 恒定比特率模式。 |
| BITRATE_MODE_VBR | 可变比特率模式。 |
| BITRATE_MODE_CQ | 恒定质量模式。 |
## 函数说明
### OH_AVCapability_AreProfileAndLevelSupported()
```
bool OH_AVCapability_AreProfileAndLevelSupported (OH_AVCapability *capability, int32_t profile, int32_t level )
```
**描述:**
检查编解码器是否支持配置文件和级别的特定组合。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编解码能力指针 |
| profile | 编解码器配置文件 |
| level | 编解码器级别 |
**返回:**
如果支持配置文件和级别的组合,则返回true。 如果不支持,则为false。
**起始版本:**
10
### OH_AVCapability_AreVideoSizeAndFrameRateSupported()
```
bool OH_AVCapability_AreVideoSizeAndFrameRateSupported (OH_AVCapability *capability, int32_t width, int32_t height, int32_t frameRate )
```
**描述:**
检查视频编解码器是否支持视频大小和帧率的特定组合。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| width | 视频水平像素数。 |
| height | 视频垂直像素数。 |
| frameRate | 每秒帧数。 |
**返回:**
如果支持视频大小和帧率的组合,则返回true。 如果不支持,则为false。
**起始版本:**
10
### OH_AVCapability_GetAudioChannelCountRange()
```
OH_AVErrCode OH_AVCapability_GetAudioChannelCountRange (OH_AVCapability * capability, OH_AVRange * channelCountRange )
```
**描述:**
获取音频编解码器支持的音频通道计数范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 音频编解码能力指针。不能填入视频编解码器能力指针。 |
| channelCountRange | 输出参数。音频通道计数范围。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetAudioSupportedSampleRates()
```
OH_AVErrCode OH_AVCapability_GetAudioSupportedSampleRates (OH_AVCapability * capability, const int32_t ** sampleRates, uint32_t * sampleRateNum )
```
**描述:**
获取音频编解码器支持的采样速率。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 音频编解码能力指针。不能填入视频编解码器能力指针。 |
| sampleRates | 输出参数。指向采样速率数组的指针。 |
| sampleRateNum | 输出参数。采样率数组的元素数目。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetEncoderBitrateRange()
```
OH_AVErrCode OH_AVCapability_GetEncoderBitrateRange (OH_AVCapability * capability, OH_AVRange * bitrateRange )
```
**描述:**
获取编码器支持的比特率范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编码器能力指针。不能填入解码器能力指针。 |
| bitrateRange | 输出参数。编码器码率范围。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetEncoderComplexityRange()
```
OH_AVErrCode OH_AVCapability_GetEncoderComplexityRange (OH_AVCapability * capability, OH_AVRange * complexityRange )
```
**描述:**
获取编码器支持的编码器复杂性范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编码器能力指针。不能填入解码器能力指针。 |
| complexityRange | 输出参数。编码器复杂度范围。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetEncoderQualityRange()
```
OH_AVErrCode OH_AVCapability_GetEncoderQualityRange (OH_AVCapability * capability, OH_AVRange * qualityRange )
```
**描述:**
获取编码器支持的质量范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编码器能力指针。不能填入解码器能力指针。 |
| qualityRange | 输出参数。编码器质量范围。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetMaxSupportedInstances()
```
int32_t OH_AVCapability_GetMaxSupportedInstances (OH_AVCapability * capability)
```
**描述:**
获取编解码器支持的最大实例数。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编解码能力指针。 |
**返回:**
返回支持的最大编解码器实例数。
**起始版本:**
10
### OH_AVCapability_GetName()
```
const char* OH_AVCapability_GetName (OH_AVCapability * capability)
```
**描述:**
获取编解码器名称。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编解码能力指针。 |
**返回:**
返回编解码器名称字符串。
**起始版本:**
10
### OH_AVCapability_GetSupportedLevelsForProfile()
```
OH_AVErrCode OH_AVCapability_GetSupportedLevelsForProfile (OH_AVCapability * capability, int32_t profile, const int32_t ** levels, uint32_t * levelNum )
```
**描述:**
获取特定配置文件支持的编解码器级别。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编解码能力指针。 |
| profile | 编解码器配置文件。 |
| levels | 输出参数。指向级别数组的指针。 |
| levelNum | 输出参数。级别数组的元素数目。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetSupportedProfiles()
```
OH_AVErrCode OH_AVCapability_GetSupportedProfiles (OH_AVCapability * capability, const int32_t ** profiles, uint32_t * profileNum )
```
**描述:**
获取编解码器支持的配置文件。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编解码能力指针。 |
| profiles | 输出参数。指向配置文件数组的指针。 |
| profileNum | 输出参数。配置文件数组的元素数目。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetVideoFrameRateRange()
```
OH_AVErrCode OH_AVCapability_GetVideoFrameRateRange (OH_AVCapability * capability, OH_AVRange * frameRateRange )
```
**描述:**
获取视频编解码器支持的视频帧率范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| frameRateRange | 输出参数。视频帧率范围。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetVideoFrameRateRangeForSize()
```
OH_AVErrCode OH_AVCapability_GetVideoFrameRateRangeForSize (OH_AVCapability * capability, int32_t width, int32_t height, OH_AVRange * frameRateRange )
```
**描述:**
获取指定视频大小的视频编解码器支持的视频帧率范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| width | 视频水平像素数。 |
| height | 视频垂直像素数。 |
| frameRateRange | 输出参数。视频帧率范围。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetVideoHeightAlignment()
```
OH_AVErrCode OH_AVCapability_GetVideoHeightAlignment (OH_AVCapability * capability, int32_t * heightAlignment )
```
**描述:**
获取视频编解码器支持的视频高度对齐。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| heightAlignment | 输出参数。视频高度对齐。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetVideoHeightRange()
```
OH_AVErrCode OH_AVCapability_GetVideoHeightRange (OH_AVCapability * capability, OH_AVRange * heightRange )
```
**描述:**
获取视频编解码器支持的视频高度范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| heightRange | 输出参数。视频高度范围。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetVideoHeightRangeForWidth()
```
OH_AVErrCode OH_AVCapability_GetVideoHeightRangeForWidth (OH_AVCapability * capability, int32_t width, OH_AVRange * heightRange )
```
**描述:**
获取指定宽度情况下视频编解码器支持的视频高度范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| width | 视频水平像素数。 |
| heightRange | 输出参数。视频高度范围。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetVideoSupportedPixelFormats()
```
OH_AVErrCode OH_AVCapability_GetVideoSupportedPixelFormats (OH_AVCapability * capability, const int32_t ** pixelFormats, uint32_t * pixelFormatNum )
```
**描述:**
获取视频编解码器支持的视频像素格式。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| pixelFormats | 输出参数。指向视频像素格式数组的指针。 |
| pixelFormatNum | 输出参数。像素格式数组的元素数目。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetVideoWidthAlignment()
```
OH_AVErrCode OH_AVCapability_GetVideoWidthAlignment (OH_AVCapability * capability, int32_t * widthAlignment )
```
**描述:**
获取视频编解码器支持的视频宽度对齐。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| widthAlignment | 输出参数。视频宽度对齐 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetVideoWidthRange()
```
OH_AVErrCode OH_AVCapability_GetVideoWidthRange (OH_AVCapability * capability, OH_AVRange * widthRange )
```
**描述:**
获取视频编解码器支持的视频宽度范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| widthRange | 输出参数。视频宽度范围 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_GetVideoWidthRangeForHeight()
```
OH_AVErrCode OH_AVCapability_GetVideoWidthRangeForHeight (OH_AVCapability * capability, int32_t height, OH_AVRange * widthRange )
```
**描述:**
获取指定高度情况下视频编解码器支持的视频宽度范围。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| height | 视频垂直像素数。 |
| widthRange | 输出参数。视频宽度范围。 |
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVCapability_IsEncoderBitrateModeSupported()
```
bool OH_AVCapability_IsEncoderBitrateModeSupported (OH_AVCapability * capability, OH_BitrateMode bitrateMode )
```
**描述:**
检查编码器是否支持特定的比特率模式。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编码器能力指针。不能填入解码器能力指针。 |
| bitrateMode | 比特率模式。 |
**返回:**
如果支持该比特率模式,则返回true;如果不支持该比特率模式,则返回false。
**起始版本:**
10
### OH_AVCapability_IsHardware()
```
bool OH_AVCapability_IsHardware (OH_AVCapability * capability)
```
**描述:**
检查能力实例是否描述了硬件编解码器。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 编解码能力指针。 |
**返回:**
如果能力实例描述的是硬件编解码器,则返回true, 如果功能实例描述的是软件编解码器,则为false。
**起始版本:**
10
### OH_AVCapability_IsVideoSizeSupported()
```
bool OH_AVCapability_IsVideoSizeSupported (OH_AVCapability * capability, int32_t width, int32_t height )
```
**描述:**
检查视频编解码器是否支持特定的视频大小。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 |
| width | 视频水平像素数。 |
| height | 视频垂直像素数。 |
**返回:**
如果支持该视频大小,则返回true,如果不支持该视频大小,则返回false。
**起始版本:**
10
### OH_AVCodec_GetCapability()
```
OH_AVCapability* OH_AVCodec_GetCapability (const char * mime, bool isEncoder )
```
**描述:**
获取系统推荐的编解码器能力。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mime | MIME类型。 |
| isEncoder | 编码器为true,解码器为false。 |
**返回:**
如果现有编解码器匹配,则返回能力实例, 如果指定的MIME类型与任何现有编解码器不匹配,则返回NULL。
**起始版本:**
10
### OH_AVCodec_GetCapabilityByCategory()
```
OH_AVCapability* OH_AVCodec_GetCapabilityByCategory (const char * mime, bool isEncoder, OH_AVCodecCategory category )
```
**描述:**
获取指定类别中的编解码器能力。
通过指定类别, 匹配的编解码器仅限于硬件编解码器或软件编解码器。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mime | MIME类型。 |
| isEncoder | 编码器为true,解码器为false。 |
| category | 编解码器类别。 |
**返回:**
如果现有编解码器匹配,则返回能力实例, 如果指定的MIME类型与任何现有编解码器不匹配,则返回NULL。
**起始版本:**
10
# AVDemuxer
## 概述
AVDemuxer模块提供用于音视频解封装功能的函数。
\@syscap SystemCapability.Multimedia.Media.Spliter
**起始版本:**
10
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avdemuxer.h](native__avdemuxer_8h.md) | 声明用于音视频解封装的Native API。<br>引用文件:<multimedia/native_avdemuxer.h> |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| \*[OH_AVDemuxer_CreateWithSource](#oh_avdemuxer_createwithsource) (OH_AVSource \*source) | 通过source实例对象创建OH_AVDemuxer实例对象。 |
| [OH_AVDemuxer_Destroy](#oh_avdemuxer_destroy) (OH_AVDemuxer \*demuxer) | 销毁OH_AVDemuxer实例并清理内部资源。 |
| [OH_AVDemuxer_SelectTrackByID](#oh_avdemuxer_selecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 选中指定轨道,解封装器将会从该轨道中读取数据。 |
| [OH_AVDemuxer_UnselectTrackByID](#oh_avdemuxer_unselecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 取消选择指定轨道,未选中的轨道的数据不会被解封装器读取。 |
| [OH_AVDemuxer_ReadSample](#oh_avdemuxer_readsample) (OH_AVDemuxer \*demuxer, uint32_t trackIndex, OH_AVMemory \*sample, OH_AVCodecBufferAttr \*info) | 从选中轨道中获取当前位置压缩帧及相关信息。 |
| [OH_AVDemuxer_SeekToTime](#oh_avdemuxer_seektotime) (OH_AVDemuxer \*demuxer, int64_t millisecond, OH_AVSeekMode mode) | 根据设定的跳转模式,将所有选中的轨道到指定时间附近。 |
## 函数说明
### OH_AVDemuxer_CreateWithSource()
```
OH_AVDemuxer* OH_AVDemuxer_CreateWithSource (OH_AVSource * source)
```
**描述:**
通过source实例对象创建OH_AVDemuxer实例对象。可以通过调用 OH_AVDemuxer_Destroy 释放实例。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| source | 指向OH_AVSource实例的指针。 |
**返回:**
返回一个指向OH_AVDemuxer实例的指针。
**起始版本:**
10
### OH_AVDemuxer_Destroy()
```
OH_AVErrCode OH_AVDemuxer_Destroy (OH_AVDemuxer * demuxer)
```
**描述:**
销毁OH_AVDemuxer实例并清理内部资源。同一实例只能被销毁一次。
销毁的实例在被重新创建之前不能再被使用.。建议实例销毁成功后将指针置为NULL。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| demuxer | 指向OH_AVDemuxer实例的指针。 |
**返回:**
执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVDemuxer_ReadSample()
```
OH_AVErrCode OH_AVDemuxer_ReadSample (OH_AVDemuxer * demuxer, uint32_t trackIndex, OH_AVMemory * sample, OH_AVCodecBufferAttr * info )
```
**描述:**
从选中轨道中获取当前位置压缩帧及相关信息。
读取轨道帧数据前,轨道必须被选中。调用接口后解封装器 将自动前进到下一帧。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| demuxer | 指向OH_AVDemuxer实例的指针。 |
| trackIndex | 本次读取压缩帧的轨道的索引。 |
| sample | 指向OH_AVMemory实例的指针,用于储存压缩帧数据。 |
| info | 指向OH_AVCodecBufferAttr实例的指针,用于储存压缩帧的相关信息。 |
**返回:**
执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVDemuxer_SeekToTime()
```
OH_AVErrCode OH_AVDemuxer_SeekToTime (OH_AVDemuxer * demuxer, int64_t millisecond, OH_AVSeekMode mode )
```
**描述:**
根据设定的跳转模式,将所有选中的轨道到指定时间附近。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| demuxer | 指向OH_AVDemuxer实例的指针。 |
| millisecond | 期望跳转位置对应的时间,单位为毫秒,该时间戳是相对文件开始的位置。 |
| mode | 跳转的模式,参考**OH_AVSeekMode。** |
**返回:**
执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVDemuxer_SelectTrackByID()
```
OH_AVErrCode OH_AVDemuxer_SelectTrackByID (OH_AVDemuxer * demuxer, uint32_t trackIndex )
```
**描述:**
选中指定轨道,解封装器将会从该轨道中读取数据。
通过多次调用接口并传入不同轨道的索引来 选中多个轨道。
调用OH_AVDemuxer_ReadSample时只会读取被选中的轨道中数据,同一轨道被选择多次时,接口会返回AV_ERR_OK,并且只会生效一次。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| demuxer | 指向OH_AVDemuxer实例的指针。 |
| trackIndex | 需选择的轨道的索引。 |
**返回:**
执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVDemuxer_UnselectTrackByID()
```
OH_AVErrCode OH_AVDemuxer_UnselectTrackByID (OH_AVDemuxer * demuxer, uint32_t trackIndex )
```
**描述:**
取消选择指定轨道,未选中的轨道的数据不会被解封装器读取。
通过多次调用接口并传入不同轨道的索引来取消对多个轨道的选择。
同一轨道被多次取消选择时,接口会返回AV_ERR_OK,并且只会生效一次。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| demuxer | 指向OH_AVDemuxer实例的指针。 |
| trackIndex | 需取消选择的轨道的索引。 |
**返回:**
执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
# AVSource
## 概述
AVSource模块提供用于构造音视频资源对象功能的函数。
\@syscap SystemCapability.Multimedia.Media.Spliter
**起始版本:**
10
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avsource.h](native__avsource_8h.md) | 声明用于构造音视频资源对象的Native API。<br>引用文件:<multimedia/native_avsource.h> |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| \*[OH_AVSource_CreateWithURI](#oh_avsource_createwithuri) (char \*uri) | 为统一资源标识符对应的的资源对象创建OH_AVSource实例对象。 |
| \*[OH_AVSource_CreateWithFD](#oh_avsource_createwithfd) (int32_t fd, int64_t offset, int64_t size) | 为文件描述符对应的资源对象创建OH_AVSource实例对象。 |
| [OH_AVSource_Destroy](#oh_avsource_destroy) (OH_AVSource \*source) | 销毁OH_AVSource实例并清理内部资源。同一实例只能被销毁一次。 |
| \*[OH_AVSource_GetSourceFormat](#oh_avsource_getsourceformat) (OH_AVSource \*source) | 获取媒体资源文件的基础信息。 |
| \*[OH_AVSource_GetTrackFormat](#oh_avsource_gettrackformat) (OH_AVSource \*source, uint32_t trackIndex) | 获取轨道的基础信息。 |
## 函数说明
### OH_AVSource_CreateWithFD()
```
OH_AVSource* OH_AVSource_CreateWithFD (int32_t fd, int64_t offset, int64_t size )
```
**描述:**
为文件描述符对应的资源对象创建OH_AVSource实例对象。
可以通过调用OH_AVSource_Destroy释放实例
该接口如果传入offset不为文件起始位置,或size不为文件大小时,可能会因数据获取不完整导致 OH_AVSource创建失败、后续解封装失败等未定义错误。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| fd | 数据资源的文件描述符。 |
| offset | 开始读取数据的位置。 |
| size | 文件的字节数大小。 |
**返回:**
返回一个指向OH_AVSource实例的指针。
**起始版本:**
10
### OH_AVSource_CreateWithURI()
```
OH_AVSource* OH_AVSource_CreateWithURI (char * uri)
```
**描述:**
为统一资源标识符对应的的资源对象创建OH_AVSource实例对象,可以通过调用OH_AVSource_Destroy释放实例。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| uri | 远程媒体资源的统一资源标识符。 |
**返回:**
返回一个指向OH_AVSource实例的指针。
**起始版本:**
10
### OH_AVSource_Destroy()
```
OH_AVErrCode OH_AVSource_Destroy (OH_AVSource * source)
```
**描述:**
销毁OH_AVSource实例并清理内部资源。
同一实例只能被销毁一次。
销毁的实例在被重新创建之前不能再被使用。建议实例销毁成功后将指针置为NULL。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| source | 指向OH_AVSource实例的指针。 |
**返回:**
执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AVSource_GetSourceFormat()
```
OH_AVFormat* OH_AVSource_GetSourceFormat (OH_AVSource * source)
```
**描述:**
获取媒体资源文件的基础信息。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| source | 指向OH_AVSource实例的指针。 |
**返回:**
返回媒体资源文件的基础信息。
**起始版本:**
10
### OH_AVSource_GetTrackFormat()
```
OH_AVFormat* OH_AVSource_GetTrackFormat (OH_AVSource * source, uint32_t trackIndex )
```
**描述:**
获取轨道的基础信息。
\@syscap SystemCapability.Multimedia.Media.Spliter
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| source | 指向OH_AVSource实例的指针。 |
| trackIndex | 需要获取信息的轨道的索引。 |
**返回:**
返回轨道的基础信息。
**起始版本:**
10
......@@ -3,41 +3,114 @@
## 概述
AudioDecoder模块提供用于音频解码功能的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
AudioDecoder模块提供用于音频解码的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**起始版本:**
9
## 汇总
### 文件
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_audiodecoder.h](native__avcodec__audiodecoder_8h.md) | 声明用于音频解码的Native API。<br>引用文件:<multimedia/player_framework/native_avcodec_audiodecoder.h> |
| [native_avcodec_audiodecoder.h](native__avcodec__audiodecoder_8h.md) | 声明用于音频解码的Native API。<br>引用文件:<multimedia/player_framework/native_avcodec_audiodecoder.h> |
| [avcodec_audio_channel_layout.h](avcodec__audio__channel__layout_8h.md) | 声明用于音频编解码的枚举。<br>引用文件:<multimedia/avcodec_audio_channel_layout.h> |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::Media::AudioChannelSet](#audiochannelset) : uint64_t {<br/>**FRONT_LEFT** = 1ULL &lt;&lt; 0U, **FRONT_RIGHT** = 1ULL &lt;&lt; 1U, **FRONT_CENTER** = 1ULL &lt;&lt; 2U, **LOW_FREQUENCY** = 1ULL &lt;&lt; 3U,<br/>**BACK_LEFT** = 1ULL &lt;&lt; 4U, **BACK_RIGHT** = 1ULL &lt;&lt; 5U, **FRONT_LEFT_OF_CENTER** = 1ULL &lt;&lt; 6U, **FRONT_RIGHT_OF_CENTER** = 1ULL &lt;&lt; 7U,<br/>**BACK_CENTER** = 1ULL &lt;&lt; 8U, **SIDE_LEFT** = 1ULL &lt;&lt; 9U, **SIDE_RIGHT** = 1ULL &lt;&lt; 10U, **TOP_CENTER** = 1ULL &lt;&lt; 11U,<br/>**TOP_FRONT_LEFT** = 1ULL &lt;&lt; 12U, **TOP_FRONT_CENTER** = 1ULL &lt;&lt; 13U, **TOP_FRONT_RIGHT** = 1ULL &lt;&lt; 14U, **TOP_BACK_LEFT** = 1ULL &lt;&lt; 15U,<br/>**TOP_BACK_CENTER** = 1ULL &lt;&lt; 16U, **TOP_BACK_RIGHT** = 1ULL &lt;&lt; 17U, **STEREO_LEFT** = 1ULL &lt;&lt; 29U, **STEREO_RIGHT** = 1ULL &lt;&lt; 30U,<br/>**WIDE_LEFT** = 1ULL &lt;&lt; 31U, **WIDE_RIGHT** = 1ULL &lt;&lt; 32U, **SURROUND_DIRECT_LEFT** = 1ULL &lt;&lt; 33U, **SURROUND_DIRECT_RIGHT** = 1ULL &lt;&lt; 34U,<br/>**LOW_FREQUENCY_2** = 1ULL &lt;&lt; 35U, **TOP_SIDE_LEFT** = 1ULL &lt;&lt; 36U, **TOP_SIDE_RIGHT** = 1ULL &lt;&lt; 37U, **BOTTOM_FRONT_CENTER** = 1ULL &lt;&lt; 38U,<br/>**BOTTOM_FRONT_LEFT** = 1ULL &lt;&lt; 39U, **BOTTOM_FRONT_RIGHT** = 1ULL &lt;&lt; 40U, **AMBISONICS_ACN0** = 1ULL &lt;&lt; 41U, OHOS::Media::AMBISONICS_ACN1 = 1ULL &lt;&lt; 42U,<br/>OHOS::Media::AMBISONICS_ACN2 = 1ULL &lt;&lt; 43U, OHOS::Media::AMBISONICS_ACN3 = 1ULL &lt;&lt; 44U, OHOS::Media::AMBISONICS_W = AMBISONICS_ACN0, OHOS::Media::AMBISONICS_Y = AMBISONICS_ACN1,<br/>OHOS::Media::AMBISONICS_Z = AMBISONICS_ACN2, OHOS::Media::AMBISONICS_X = AMBISONICS_ACN3, OHOS::Media::AMBISONICS_ACN4 = 1ULL &lt;&lt; 45U, OHOS::Media::AMBISONICS_ACN5 = 1ULL &lt;&lt; 46U,<br/>OHOS::Media::AMBISONICS_ACN6 = 1ULL &lt;&lt; 47U, OHOS::Media::AMBISONICS_ACN7 = 1ULL &lt;&lt; 48U, OHOS::Media::AMBISONICS_ACN8 = 1ULL &lt;&lt; 49U, OHOS::Media::AMBISONICS_ACN9 = 1ULL &lt;&lt; 50U,<br/>OHOS::Media::AMBISONICS_ACN10 = 1ULL &lt;&lt; 51U, OHOS::Media::AMBISONICS_ACN11 = 1ULL &lt;&lt; 52U, OHOS::Media::AMBISONICS_ACN12 = 1ULL &lt;&lt; 53U, OHOS::Media::AMBISONICS_ACN13 = 1ULL &lt;&lt; 54U,<br/>OHOS::Media::AMBISONICS_ACN14 = 1ULL &lt;&lt; 55U, OHOS::Media::AMBISONICS_ACN15 = 1ULL &lt;&lt; 56U<br/>} | 音频声道数集合, 将每一个声道数映射为int64的变量。 |
| [OHOS::Media::AudioChannelLayout](#audiochannellayout) : uint64_t {<br/>**UNKNOWN_CHANNEL_LAYOUT** = 0, **MONO** = (AudioChannelSet::FRONT_CENTER), **STEREO** = (AudioChannelSet::FRONT_LEFT \| AudioChannelSet::FRONT_RIGHT), **CH_2POINT1** = (STEREO \| AudioChannelSet::LOW_FREQUENCY),<br/>**CH_2_1** = (STEREO \| AudioChannelSet::BACK_CENTER), **SURROUND** = (STEREO \| AudioChannelSet::FRONT_CENTER), **CH_3POINT1** = (SURROUND \| AudioChannelSet::LOW_FREQUENCY), **CH_4POINT0** = (SURROUND \| AudioChannelSet::BACK_CENTER),<br/>**CH_4POINT1** = (CH_4POINT0 \| AudioChannelSet::LOW_FREQUENCY), **CH_2_2** = (STEREO \| AudioChannelSet::SIDE_LEFT \| AudioChannelSet::SIDE_RIGHT), **QUAD** = (STEREO \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), **CH_5POINT0** = (SURROUND \| AudioChannelSet::SIDE_LEFT \| AudioChannelSet::SIDE_RIGHT),<br/>**CH_5POINT1** = (CH_5POINT0 \| AudioChannelSet::LOW_FREQUENCY), **CH_5POINT0_BACK** = (SURROUND \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), **CH_5POINT1_BACK** = (CH_5POINT0_BACK \| AudioChannelSet::LOW_FREQUENCY), **CH_6POINT0** = (CH_5POINT0 \| AudioChannelSet::BACK_CENTER),<br/>**CH_6POINT0_FRONT** = (CH_2_2 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), **HEXAGONAL** = (CH_5POINT0_BACK \| AudioChannelSet::BACK_CENTER), **CH_6POINT1** = (CH_5POINT1 \| AudioChannelSet::BACK_CENTER), **CH_6POINT1_BACK** = (CH_5POINT1_BACK \| AudioChannelSet::BACK_CENTER),<br/>**CH_6POINT1_FRONT** = (CH_6POINT0_FRONT \| AudioChannelSet::LOW_FREQUENCY), **CH_7POINT0** = (CH_5POINT0 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), **CH_7POINT0_FRONT** = (CH_5POINT0 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), **CH_7POINT1** = (CH_5POINT1 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT),<br/>**CH_7POINT1_WIDE** = (CH_5POINT1 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), **CH_7POINT1_WIDE_BACK**, **CH_3POINT1POINT2** = (CH_3POINT1 \| AudioChannelSet::TOP_FRONT_LEFT \| AudioChannelSet::TOP_FRONT_RIGHT), **CH_5POINT1POINT2** = (CH_5POINT1 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT),<br/>**CH_5POINT1POINT4**, **CH_7POINT1POINT2** = (CH_7POINT1 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT), **CH_7POINT1POINT4**, **CH_9POINT1POINT4** = (CH_7POINT1POINT4 \| AudioChannelSet::WIDE_LEFT \| AudioChannelSet::WIDE_RIGHT),<br/>**CH_9POINT1POINT6** = (CH_9POINT1POINT4 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT), **CH_10POINT2**, **CH_22POINT2**, **OCTAGONAL** = (CH_5POINT0 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_CENTER \| AudioChannelSet::BACK_RIGHT),<br/>**HEXADECAGONAL**, **STEREO_DOWNMIX** = (AudioChannelSet::STEREO_LEFT \| AudioChannelSet::STEREO_RIGHT), **HOA_FIRST**, **HOA_SECOND**,<br/>**HOA_THIRD**<br/>} | 音频声道数类型, 将用户申请的解码器输出格式表示为编解码器的声道类型。 |
### 函数
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| \*[OHOS::Media::OH_AudioDecoder_CreateByMime](#oh_audiodecoder_createbymime) (const char \*mime) | 根据MIME类型创建音频解码器实例,大多数场景下建议使用此方式。 |
| \*[OHOS::Media::OH_AudioDecoder_CreateByName](#oh_audiodecoder_createbyname) (const char \*name) | 通过音频解码器名称创建音频解码器实例,使用此接口的前提是知道解码器的确切名称。 |
| [OHOS::Media::OH_AudioDecoder_Destroy](#oh_audiodecoder_destroy) (OH_AVCodec \*codec) | 清理解码器内部资源,销毁解码器实例。 |
| [OHOS::Media::OH_AudioDecoder_SetCallback](#oh_audiodecoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,使您的应用程序可以响应音频解码器生成的事件。 |
| [OHOS::Media::OH_AudioDecoder_Configure](#oh_audiodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 要配置音频解码器,通常需要配置从容器中提取的音频描述信息。 |
| [OHOS::Media::OH_AudioDecoder_Prepare](#oh_audiodecoder_prepare) (OH_AVCodec \*codec) | 准备解码器的内部资源,在调用此接口之前必须调用Configure接口。 |
| [OHOS::Media::OH_AudioDecoder_Start](#oh_audiodecoder_start) (OH_AVCodec \*codec) | Prepare成功后调用此接口启动解码器。 |
| [OHOS::Media::OH_AudioDecoder_Stop](#oh_audiodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。 |
| [OHOS::Media::OH_AudioDecoder_Flush](#oh_audiodecoder_flush) (OH_AVCodec \*codec) | 清除解码器中缓存的输入和输出数据。 |
| [OHOS::Media::OH_AudioDecoder_Reset](#oh_audiodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例 。 |
| \*[OHOS::Media::OH_AudioDecoder_GetOutputDescription](#oh_audiodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取解码器输出数据的描述信息,详细信息请参见**OH_AVFormat**。 |
| [OHOS::Media::OH_AudioDecoder_SetParameter](#oh_audiodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置解码器的动态参数。注意:该接口必须在解码器启动后才能调用。另外,参数配置错误可能会导致解码失败。 |
| [OHOS::Media::OH_AudioDecoder_PushInputData](#oh_audiodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr) | 将填充有数据的输入缓冲区提交给音频解码器。 |
| [OHOS::Media::OH_AudioDecoder_FreeOutputData](#oh_audiodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回给解码器。 |
| [OHOS::Media::OH_AudioDecoder_IsValid](#oh_audiodecoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前解码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测解码器有效状态。 |
## 枚举类型说明
### AudioChannelLayout
```
enum OHOS::Media::AudioChannelLayout : uint64_t
```
**描述:**
音频声道数类型, 将用户申请的解码器输出格式表示为编解码器的声道类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
10
### AudioChannelSet
```
enum OHOS::Media::AudioChannelSet : uint64_t
```
**描述:**
音频声道数集合, 将每一个声道数映射为int64的变量。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
10
| 枚举值 | 描述 |
| -------- | -------- |
| [OH_AudioDecoder_CreateByMime](#oh_audiodecoder_createbymime) (const char \*mime) | 通过mime类型创建一个音频解码器实例,大多数情况下推荐使用该接口。 |
| [OH_AudioDecoder_CreateByName](#oh_audiodecoder_createbyname) (const char \*name) | 通过音频解码器名称创建一个音频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。 |
| [OH_AudioDecoder_Destroy](#oh_audiodecoder_destroy) (OH_AVCodec \*codec) | 清空解码器内部资源,并销毁解码器实例 |
| [OH_AudioDecoder_SetCallback](#oh_audiodecoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,使得你的应用能够响应音频解码器产生的事件,该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioDecoder_Configure](#oh_audiodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置音频解码器,典型地,需要配置被解码音频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioDecoder_Prepare](#oh_audiodecoder_prepare) (OH_AVCodec \*codec) | 准备解码器内部资源,调用该接口前必须先调用Configure接口。 |
| [OH_AudioDecoder_Start](#oh_audiodecoder_start) (OH_AVCodec \*codec) | 启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。 |
| [OH_AudioDecoder_Stop](#oh_audiodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。 |
| [OH_AudioDecoder_Flush](#oh_audiodecoder_flush) (OH_AVCodec \*codec) | 清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。 |
| [OH_AudioDecoder_Reset](#oh_audiodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。 |
| [OH_AudioDecoder_GetOutputDescription](#oh_audiodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。 |
| [OH_AudioDecoder_SetParameter](#oh_audiodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。 |
| [OH_AudioDecoder_PushInputData](#oh_audiodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | 将填充好数据的输入Buffer提交给音频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入 Codec-Specific-Data,用以初始化解码器的解码过程。 |
| [OH_AudioDecoder_FreeOutputData](#oh_audiodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给解码器。 |
| AMBISONICS_ACN1 | 零阶立体声声道数 0 |
| AMBISONICS_ACN2 | 一阶立体声声道数 1 |
| AMBISONICS_ACN3 | 一阶立体声声道数 2 |
| AMBISONICS_W | 一阶立体声声道数 3 |
| AMBISONICS_Y | 同于零阶立体声声道数 0 |
| AMBISONICS_Z | 同于一阶立体声声道数 1 |
| AMBISONICS_X | 同于一阶立体声声道数 2 |
| AMBISONICS_ACN4 | 同于一阶立体声声道数 3 |
| AMBISONICS_ACN5 | 二阶立体声声道数 4 |
| AMBISONICS_ACN6 | 二阶立体声声道数 5 |
| AMBISONICS_ACN7 | 二阶立体声声道数 6 |
| AMBISONICS_ACN8 | 二阶立体声声道数 7 |
| AMBISONICS_ACN9 | 二阶立体声声道数 8 |
| AMBISONICS_ACN10 | 三阶立体声声道数 9 |
| AMBISONICS_ACN11 | 三阶立体声声道数 10 |
| AMBISONICS_ACN12 | 三阶立体声声道数 11 |
| AMBISONICS_ACN13 | 三阶立体声声道数 12 |
| AMBISONICS_ACN14 | 三阶立体声声道数 13 |
| AMBISONICS_ACN15 | 三阶立体声声道数 14 |
## 函数说明
......@@ -47,334 +120,439 @@ AudioDecoder模块提供用于音频解码功能的函数。该模块在部分
```
OH_AVErrCode OH_AudioDecoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
OH_AVErrCode OHOS::Media::OH_AudioDecoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置音频解码器,典型地,需要配置被解码音频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
要配置音频解码器,通常需要配置从容器中提取的音频描述信息。
在调用Prepare之前,必须调用此接口。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | 指向OH_AVFormat的指针,用以给出待解码音频轨道的描述信息 |
| codec | 指向OH_AVCodec实例的指针 |
| format | 指向OH_AVFormat的指针,给出要解码的音频轨道的描述。 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_AudioDecoder_CreateByMime()
```
OH_AVCodec* OH_AudioDecoder_CreateByMime (const char * mime)
OH_AVCodec* OHOS::Media::OH_AudioDecoder_CreateByMime (const char * mime)
```
**描述:**
通过mime类型创建一个音频解码器实例,大多数情况下推荐使用该接口。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
根据MIME类型创建音频解码器实例,大多数场景下建议使用此方式。
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| mime | mime类型描述字符串,参考[OH_AVCODEC_MIMETYPE_AUDIO_AAC](_codec_base.md#oh_avcodec_mimetype_audio_aac) |
| mime | MIME类型描述字符串,请参阅**AVCODEC_MIME_TYPE** |
**返回:**
**返回**
返回一个指向OH_AVCodec实例的指针
返回指向OH_AVCodec实例的指针。
**起始版本:**
9
### OH_AudioDecoder_CreateByName()
```
OH_AVCodec* OH_AudioDecoder_CreateByName (const char * name)
OH_AVCodec* OHOS::Media::OH_AudioDecoder_CreateByName (const char * name)
```
**描述:**
通过音频解码器名称创建一个音频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
**参数:**
通过音频解码器名称创建音频解码器实例,使用此接口的前提是知道解码器的确切名称。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| name | 音频解码器名称 |
| name | 音频解码器名称 |
**返回:**
**返回**
返回一个指向OH_AVCodec实例的指针
返回指向OH_AVCodec实例的指针。
**起始版本:**
9
### OH_AudioDecoder_Destroy()
```
OH_AVErrCode OH_AudioDecoder_Destroy (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioDecoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空解码器内部资源,并销毁解码器实例
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
清理解码器内部资源,销毁解码器实例。
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_AudioDecoder_Flush()
```
OH_AVErrCode OH_AudioDecoder_Flush (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioDecoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
清除解码器中缓存的输入和输出数据。
**参数:**
调用此接口后,以前通过异步回调上报的所有缓冲区索引都将失效,请确保不要访问这些索引对应的缓冲区。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioDecoder_FreeOutputData()
```
OH_AVErrCode OH_AudioDecoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
OH_AVErrCode OHOS::Media::OH_AudioDecoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给解码器。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
将处理后的输出缓冲区返回给解码器。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输出Buffer对应的索引值 |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输出缓冲区Buffer对应的索引值。 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_AudioDecoder_GetOutputDescription()
```
OH_AVFormat* OH_AudioDecoder_GetOutputDescription (OH_AVCodec * codec)
OH_AVFormat* OHOS::Media::OH_AudioDecoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
获取解码器输出数据的描述信息,详细信息请参见**OH_AVFormat**。 需要注意的是,返回值所指向的OH_AVFormat实例的生命周期需要调用者手动释放。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
返回OH_AVFormat句柄指针,生命周期将使用下一个GetOutputDescription 刷新,或使用OH_AVCodec销毁。
**起始版本:**
9
### OH_AudioDecoder_IsValid()
```
OH_AVErrCode OHOS::Media::OH_AudioDecoder_IsValid (OH_AVCodec * codec, bool * isValid )
```
**描述:**
**返回:**
检查当前解码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测解码器有效状态。
返回OH_AVFormat句柄指针,需调用者手动释放;
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针。 |
| isValid | 指向布尔实例的指针,true:解码器实例有效,false:解码器实例无效。 |
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AudioDecoder_Prepare()
```
OH_AVErrCode OH_AudioDecoder_Prepare (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioDecoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备解码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
**参数:**
准备解码器的内部资源,在调用此接口之前必须调用Configure接口。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioDecoder_PushInputData()
```
OH_AVErrCode OH_AudioDecoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
OH_AVErrCode OHOS::Media::OH_AudioDecoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
```
**描述:**
将填充好数据的输入Buffer提交给音频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入 Codec-Specific-Data,用以初始化解码器的解码过程。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
将填充有数据的输入缓冲区提交给音频解码器。
**OH_AVCodecOnNeedInputData**回调将报告可用的输入缓冲区和相应的索引值。一旦具有指定索引的缓冲区提交到音频解码器,则无法再次访问此缓冲区, 直到再次收到**OH_AVCodecOnNeedInputData**回调,收到相同索引时此缓冲区才可使用。 此外,对于某些解码器,需要在开始时向解码器输入特定配置参数,以初始化解码器的解码过程。
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输入Buffer对应的索引值 |
| attr | 描述该Buffer内所包含数据的信息 |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输入缓冲区Buffer对应的索引值。 |
| attr | 描述缓冲区中包含的数据的信息。 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_AudioDecoder_Reset()
```
OH_AVErrCode OH_AudioDecoder_Reset (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioDecoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。。
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioDecoder_SetCallback()
```
OH_AVErrCode OH_AudioDecoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
OH_AVErrCode OHOS::Media::OH_AudioDecoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
```
**描述:**
设置异步回调函数,使得你的应用能够响应音频解码器产生的事件,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
**参数:**
设置异步回调函数,使您的应用程序可以响应音频解码器生成的事件。
| 名称 | 描述 |
在调用Prepare之前,必须调用此接口。
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据 |
| codec | 指向OH_AVCodec实例的指针。 |
| callback | 所有回调函数的集合,请参见 **OH_AVCodecAsyncCallback**。 |
| userData | 用户特定数据。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioDecoder_SetParameter()
```
OH_AVErrCode OH_AudioDecoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
OH_AVErrCode OHOS::Media::OH_AudioDecoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
配置解码器的动态参数。
注意,该接口必须在解码器启动后才能调用。另外,参数配置错误可能会导致解码失败。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | OH_AVFormat句柄指针 |
| codec | 指向OH_AVCodec实例的指针。 |
| format | OH_AVFormat句柄指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioDecoder_Start()
```
OH_AVErrCode OH_AudioDecoder_Start (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioDecoder_Start (OH_AVCodec * codec)
```
**描述:**
启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
**参数:**
Prepare成功后调用此接口启动解码器。
| 名称 | 描述 |
启动后,解码器将开始上报OH_AVCodecOnNeedInputData事件。
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioDecoder_Stop()
```
OH_AVErrCode OH_AudioDecoder_Stop (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioDecoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**描述:**
停止解码器。
停止后,您可以通过Start重新进入已启动状态,但需要注意的是, 如果解码器之前已输入数据,则需要重新输入解码器数据。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
......@@ -3,41 +3,44 @@
## 概述
AudioEncoder模块提供用于音频编码功能的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
AudioEncoder模块提供用于音频编码的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**起始版本:**
9
## 汇总
### 文件
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_audioencoder.h](native__avcodec__audioencoder_8h.md) | 声明用于音频编码的Native API。<br>引用文件:<multimedia/player_framework/native_avcodec_audioencoder.h> |
### 函数
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AudioEncoder_CreateByMime](#oh_audioencoder_createbymime) (const char \*mime) | 通过mime类型创建一个音频编码器实例,大多数情况下推荐使用该接口。 |
| [OH_AudioEncoder_CreateByName](#oh_audioencoder_createbyname) (const char \*name) | 通过音频编码器名称创建一个音频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。 |
| [OH_AudioEncoder_Destroy](#oh_audioencoder_destroy) (OH_AVCodec \*codec) | 清空编码器内部资源,并销毁编码器实例。 |
| [OH_AudioEncoder_SetCallback](#oh_audioencoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,使得你的应用能够响应音频编码器产生的事件,该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioEncoder_Configure](#oh_audioencoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置音频编码器,典型地,需要配置被编码音频轨道的描述信息,该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioEncoder_Prepare](#oh_audioencoder_prepare) (OH_AVCodec \*codec) | 准备编码器内部资源,调用该接口前必须先调用Configure接口。 |
| [OH_AudioEncoder_Start](#oh_audioencoder_start) (OH_AVCodec \*codec) | 启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。 |
| [OH_AudioEncoder_Stop](#oh_audioencoder_stop) (OH_AVCodec \*codec) | 停止编码器。在停止后可通过Start重新进入Started状态。 |
| [OH_AudioEncoder_Flush](#oh_audioencoder_flush) (OH_AVCodec \*codec) | 清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。 |
| [OH_AudioEncoder_Reset](#oh_audioencoder_reset) (OH_AVCodec \*codec) | 重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。 |
| [OH_AudioEncoder_GetOutputDescription](#oh_audioencoder_getoutputdescription) (OH_AVCodec \*codec) | 获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。 |
| [OH_AudioEncoder_SetParameter](#oh_audioencoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。 |
| [OH_AudioEncoder_PushInputData](#oh_audioencoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | 将填充好数据的输入Buffer提交给音频编码器。[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给编码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。 |
| [OH_AudioEncoder_FreeOutputData](#oh_audioencoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给编码器。 |
| \*[OHOS::Media::OH_AudioEncoder_CreateByMime](#oh_audioencoder_createbymime) (const char \*mime) | 根据MIME类型创建音频编码器实例,大多数场景下建议使用此方式。 |
| \*[OHOS::Media::OH_AudioEncoder_CreateByName](#oh_audioencoder_createbyname) (const char \*name) | 通过音频编码器名称创建音频编码器实例,使用此接口的前提是知道编码器的确切名称。 |
| [OHOS::Media::OH_AudioEncoder_Destroy](#oh_audioencoder_destroy) (OH_AVCodec \*codec) | 清理编码器内部资源,销毁编码器实例。 |
| [OHOS::Media::OH_AudioEncoder_SetCallback](#oh_audioencoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,使您的应用程序可以响应音频编码器生成的事件。 |
| [OHOS::Media::OH_AudioEncoder_Configure](#oh_audioencoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 要配置音频编码器,通常需要配置编码后的音轨的描述信息。 |
| [OHOS::Media::OH_AudioEncoder_Prepare](#oh_audioencoder_prepare) (OH_AVCodec \*codec) | 准备编码器的内部资源,在调用此接口之前必须调用Configure接口。 |
| [OHOS::Media::OH_AudioEncoder_Start](#oh_audioencoder_start) (OH_AVCodec \*codec) | Prepare成功后调用此接口启动编码器。 |
| [OHOS::Media::OH_AudioEncoder_Stop](#oh_audioencoder_stop) (OH_AVCodec \*codec) | 停止编码器。 |
| [OHOS::Media::OH_AudioEncoder_Flush](#oh_audioencoder_flush) (OH_AVCodec \*codec) | 清除编码器中缓存的输入和输出数据。 |
| [OHOS::Media::OH_AudioEncoder_Reset](#oh_audioencoder_reset) (OH_AVCodec \*codec) | 重置编码器。 |
| \*[OHOS::Media::OH_AudioEncoder_GetOutputDescription](#oh_audioencoder_getoutputdescription) (OH_AVCodec \*codec) | 获取编码器输出数据的描述信息,详细信息请参见[OH_AVFormat](native__avformat_8h.md)。 |
| [OHOS::Media::OH_AudioEncoder_SetParameter](#oh_audioencoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置编码器的动态参数。 |
| [OHOS::Media::OH_AudioEncoder_PushInputData](#oh_audioencoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr) | 将填充有数据的输入缓冲区提交给音频编码器。 |
| [OHOS::Media::OH_AudioEncoder_FreeOutputData](#oh_audioencoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回给编码器。 |
| [OHOS::Media::OH_AudioEncoder_IsValid](#oh_audioencoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前编码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测编码器有效状态。 |
## 函数说明
......@@ -47,334 +50,435 @@ AudioEncoder模块提供用于音频编码功能的函数。该模块在部分
```
OH_AVErrCode OH_AudioEncoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
OH_AVErrCode OHOS::Media::OH_AudioEncoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置音频编码器,典型地,需要配置被编码音频轨道的描述信息,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
要配置音频编码器,通常需要配置编码后的音轨的描述信息。
在调用Prepare之前,必须调用此接口。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | OH_AVFormat句柄指针 |
| codec | 指向OH_AVCodec实例的指针 |
| format | 指向OH_AVFormat的指针,给出要编码的音频轨道的描述。 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_AudioEncoder_CreateByMime()
```
OH_AVCodec* OH_AudioEncoder_CreateByMime (const char * mime)
OH_AVCodec* OHOS::Media::OH_AudioEncoder_CreateByMime (const char * mime)
```
**描述:**
通过mime类型创建一个音频编码器实例,大多数情况下推荐使用该接口。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
根据MIME类型创建音频编码器实例,大多数场景下建议使用此方式。
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| mime | mime类型描述字符串,参考[OH_AVCODEC_MIMETYPE_AUDIO_AAC](_codec_base.md#oh_avcodec_mimetype_audio_aac) |
| mime | MIME类型描述字符串,请参阅 **AVCODEC_MIME_TYPE** |
**返回:**
**返回**
返回一个指向OH_AVCodec实例的指针
返回指向OH_AVCodec实例的指针。
**起始版本:**
9
### OH_AudioEncoder_CreateByName()
```
OH_AVCodec* OH_AudioEncoder_CreateByName (const char * name)
OH_AVCodec* OHOS::Media::OH_AudioEncoder_CreateByName (const char * name)
```
**描述:**
通过音频编码器名称创建一个音频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
通过音频编码器名称创建音频编码器实例,使用此接口的前提是知道编码器的确切名称。
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| name | 音频编码器名称 |
| name | 音频编码器名称 |
**返回:**
**返回:**
返回指向OH_AVCodec实例的指针。
**起始版本:**
返回一个指向OH_AVCodec实例的指针
9
### OH_AudioEncoder_Destroy()
```
OH_AVErrCode OH_AudioEncoder_Destroy (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioEncoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空编码器内部资源,并销毁编码器实例。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
清理编码器内部资源,销毁编码器实例。
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_AudioEncoder_Flush()
```
OH_AVErrCode OH_AudioEncoder_Flush (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioEncoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
**参数:**
清除编码器中缓存的输入和输出数据。
| 名称 | 描述 |
调用此接口后,以前通过异步回调上报的所有缓冲区 索引都将失效,请确保不要访问这些索引对应的缓冲区。
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_AudioEncoder_FreeOutputData()
```
OH_AVErrCode OH_AudioEncoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
OH_AVErrCode OHOS::Media::OH_AudioEncoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给编码器。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
**参数:**
将处理后的输出缓冲区返回给编码器。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输出Buffer对应的索引值 |
| codec | 指向OH_AVCodec实例的指针。 |
| index | 输出缓冲区Buffer对应的索引值。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioEncoder_GetOutputDescription()
```
OH_AVFormat* OH_AudioEncoder_GetOutputDescription (OH_AVCodec * codec)
OH_AVFormat* OHOS::Media::OH_AudioEncoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
获取编码器输出数据的描述信息,详细信息请参见[OH_AVFormat](native__avformat_8h.md)
**参数:**
需要注意的是,返回值所指向的OH_AVFormat实例的生命周期需要调用者手动释放。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
返回OH_AVFormat句柄指针,生命周期将使用下一个GetOutputDescription 刷新,或使用OH_AVCodec销毁。
**起始版本:**
**返回:**
9
### OH_AudioEncoder_IsValid()
返回OH_AVFormat句柄指针,需调用者手动释放;
```
OH_AVErrCode OHOS::Media::OH_AudioEncoder_IsValid (OH_AVCodec * codec, bool * isValid )
```
**描述:**
检查当前编码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测编码器有效状态。
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针。 |
| isValid | 指向布尔实例的指针,true:编码器实例有效,false:编码器实例无效。 |
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_AudioEncoder_Prepare()
```
OH_AVErrCode OH_AudioEncoder_Prepare (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioEncoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备编码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
准备编码器的内部资源,在调用此接口之前必须调用Configure接口。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioEncoder_PushInputData()
```
OH_AVErrCode OH_AudioEncoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
OH_AVErrCode OHOS::Media::OH_AudioEncoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
```
**描述:**
将填充好数据的输入Buffer提交给音频编码器。[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给编码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
将填充有数据的输入缓冲区提交给音频编码器。
**OH_AVCodecOnNeedInputData**回调 将报告可用的输入缓冲区和相应的索引值。一旦具有指定索引的缓冲区提交到音频编码器,则无法再次访问此缓冲区, 直到再次收到**OH_AVCodecOnNeedInputData**回调,收到相同索引时此缓冲区才可使用。 此外,对于某些编码器,需要在开始时向编码器输入特定配置参数,以初始化编码器的编码过程。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输入Buffer对应的索引值 |
| attr | 描述该Buffer内所包含数据的信息 |
| codec | 指向OH_AVCodec实例的指针。 |
| index | 输入缓冲区Buffer对应的索引值。 |
| attr | 描述缓冲区中包含的数据的信息。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioEncoder_Reset()
```
OH_AVErrCode OH_AudioEncoder_Reset (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioEncoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
**参数:**
重置编码器。如果要继续编码,需要再次调用Configure接口配置编码器实例。
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
**返回:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针。 |
执行成功返回AV_ERR_OK
**返回:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_SetCallback()
```
OH_AVErrCode OH_AudioEncoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
OH_AVErrCode OHOS::Media::OH_AudioEncoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
```
**描述:**
设置异步回调函数,使得你的应用能够响应音频编码器产生的事件,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
设置异步回调函数,使您的应用程序可以响应音频编码器生成的事件。
在调用Prepare之前,必须调用此接口。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据 |
| codec | 指向OH_AVCodec实例的指针。 |
| callback | 所有回调函数的集合,请参见 **OH_AVCodecAsyncCallback**。 |
| userData | 用户特定数据。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioEncoder_SetParameter()
```
OH_AVErrCode OH_AudioEncoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
OH_AVErrCode OHOS::Media::OH_AudioEncoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
配置编码器的动态参数。
注意,该接口必须在编码器启动后才能调用。另外,参数配置错误可能会导致编码失败。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | OH_AVFormat句柄指针 |
| codec | 指向OH_AVCodec实例的指针。 |
| format | OH_AVFormat句柄指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioEncoder_Start()
```
OH_AVErrCode OH_AudioEncoder_Start (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioEncoder_Start (OH_AVCodec * codec)
```
**描述:**
启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
Prepare成功后调用此接口启动编码器。
启动后,编码器将开始上报OH_AVCodecOnNeedInputData事件。
**参数:**
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_AudioEncoder_Stop()
```
OH_AVErrCode OH_AudioEncoder_Stop (OH_AVCodec * codec)
OH_AVErrCode OHOS::Media::OH_AudioEncoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止编码器。在停止后可通过Start重新进入Started状态。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**描述:**
停止编码器。停止后,您可以通过Start重新进入已启动状态。
\@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
......@@ -5,83 +5,137 @@
CodecBase模块提供运行音视频编解码通用的结构体、字符常量、枚举。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
@syscap SystemCapability.Multimedia.Media.CodecBase
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
9
## 汇总
### 文件
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_base.h](native__avcodec__base_8h.md) | 声明运行音视频编解码通用的结构体、字符常量、枚举。<br>引用文件:<multimedia/player_framework/native_avcodec_base.h> |
| [native_avcodec_base.h](native__avcodec__base_8h.md) | 声明运行音视频编解码通用的结构体、字符常量、枚举。<br/>引用文件:<multimedia/player_framework/native_avcodec_base.h> |
### 结构体
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | 定义OH_AVCodec的Buffer描述信息。 |
| [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告 的信息,以确保AVCodec正常运转。 |
| [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | 定义OH_AVCodec的缓冲区描述信息。 |
| [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | OH_AVCodec中所有异步回调函数指针的集合。 |
### 类型定义
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferFlags](#oh_avcodecbufferflags) | 枚举OH_AVCodec的Buffer标记的类别。 |
| [OH_AVCodecBufferAttr](#oh_avcodecbufferattr) | 定义OH_AVCodec的Buffer描述信息。 |
| (\*[OH_AVCodecOnError](#oh_avcodeconerror)) (OH_AVCodec \*codec, int32_t errorCode, void \*userData) | 当OH_AVCodec实例运行发生错误时,该函数指针会被调用以报告具体错误信息。 |
| (\*[OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged)) (OH_AVCodec \*codec, OH_AVFormat \*format, void \*userData) | 当输出流发生变化时,该函数指针会被调用以报告新的流描述信息。 需要注意的时,OH_AVFormat指针的生命周期仅维持在该函数指针被调用时上有效,禁止在调用结束后继续访问。 |
| (\*[OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata)) (OH_AVCodec \*codec, uint32_t index, OH_AVMemory \*data, void \*userData) | 当AVCodec运行过程中需要新的输入数据时,该函数指针会被调用,并携带一块可用的Buffer以供填入新的输入数据。 |
| (\*[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) | 当AVCodec运行过程中产生了新的输出数据时,该函数指针会被调用,并携带一块包含新输出数据的Buffer, 需要注意的是,OH_AVCodecBufferAttr指针的生命周期仅维持在该函数指针被调用时有效,禁止调用结束后继续访问。 |
| [OH_AVCodecAsyncCallback](#oh_avcodecasynccallback) | AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告 的信息,以确保AVCodec正常运转。 |
| [OH_MediaType](#oh_mediatype) | 媒体类型。 |
| [OH_AVCProfile](#oh_avcprofile) | AVC Profile枚举。 |
| [OH_AACProfile](#oh_aacprofile) | AAC Profile枚举。 |
| [OH_AVCodecBufferFlags](#oh_avcodecbufferflags) | 枚举OH_AVCodec缓冲区标记的类别。 |
| [OH_AVOutputFormat](#oh_avoutputformat) | 枚举封装器的输出文件格式。 |
| [OH_AVCodecBufferAttr](#oh_avcodecbufferattr) | 定义OH_AVCodec的缓冲区描述信息。 |
| (\*[OH_AVCodecOnError](#oh_avcodeconerror)) (OH_AVCodec \*codec, int32_t errorCode, void \*userData) | 当OH_AVCodec实例运行出错时,会调用来上报具体的错误信息的函数指针。 |
| (\*[OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged)) (OH_AVCodec \*codec, OH_AVFormat \*format, void \*userData) | 当输出流发生变化时,将调用此函数指针报告新的流描述信息。 |
| (\*[OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata)) (OH_AVCodec \*codec, uint32_t index, OH_AVMemory \*data, void \*userData) | 当OH_AVCodec在运行过程中需要新的输入数据时,将调用此函数指针,并携带可用的缓冲区来填充新的输入数据。 |
| (\*[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运行过程中生成新的输出数据时,将调用此函数指针,并携带包含新输出数据的缓冲区。 |
| [OH_AVCodecAsyncCallback](#oh_avcodecasynccallback) | OH_AVCodec中所有异步回调函数指针的集合。 |
| [OH_MediaType](#oh_mediatype) | 媒体类型。 |
| [OH_AVCProfile](#oh_avcprofile) | AVC Profile枚举。 |
| [OH_HEVCProfile](#oh_hevcprofile) | HEVC Profile枚举。 |
| [OH_AACProfile](#oh_aacprofile) | AAC Profile枚举。 |
| [OH_AVSeekMode](#oh_avseekmode) | 跳转模式。 |
| [OH_ColorPrimary](#oh_colorprimary) | 原色。 |
| [OH_TransferCharacteristic](#oh_transfercharacteristic) | 转移特性。 |
| [OH_MatrixCoefficient](#oh_matrixcoefficient) | 矩阵系数。 |
| [OH_BitsPerSample](#oh_bitspersample) | 枚举每个编码样本的音频位数。 |
### 枚举
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferFlags](#oh_avcodecbufferflags) {<br/>**AVCODEC_BUFFER_FLAGS_NONE** = 0, **AVCODEC_BUFFER_FLAGS_EOS** = 1 &lt;&lt; 0, **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 &lt;&lt; 1, **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 &lt;&lt; 2, **AVCODEC_BUFFER_FLAGS_CODEC_DATA**= 1 &lt;&lt; 3<br/>} | 枚举OH_AVCodec的Buffer标记的类别。 |
| [OH_MediaType](#oh_mediatype) { **MEDIA_TYPE_AUD** = 0, **MEDIA_TYPE_VID** = 1 } | 媒体类型。 |
| [OH_AVCProfile](#oh_avcprofile) { **AVC_PROFILE_BASELINE** = 0, **AVC_PROFILE_HIGH** = 4, **AVC_PROFILE_MAIN** = 8 } | AVC Profile枚举。 |
| [OH_AACProfile](#oh_aacprofile) { **AAC_PROFILE_LC** = 0 } | AAC Profile枚举。 |
| [OH_AVCodecBufferFlags](#oh_avcodecbufferflags) {<br/>**AVCODEC_BUFFER_FLAGS_NONE** = 0, **AVCODEC_BUFFER_FLAGS_EOS** = 1 &lt;&lt; 0, **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 &lt;&lt; 1, **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 &lt;&lt; 2,<br/>**AVCODEC_BUFFER_FLAGS_CODEC_DATA** = 1 &lt;&lt; 3<br/>} | 枚举OH_AVCodec缓冲区标记的类别。 |
| [OH_AVOutputFormat](#oh_avoutputformat) { **AV_OUTPUT_FORMAT_DEFAULT** = 0, **AV_OUTPUT_FORMAT_MPEG_4** = 2, **AV_OUTPUT_FORMAT_M4A** = 6 } | 枚举封装器的输出文件格式。 |
| [OH_MediaType](#oh_mediatype) { **MEDIA_TYPE_AUD** = 0, **MEDIA_TYPE_VID** = 1 } | 媒体类型。 |
| [OH_AVCProfile](#oh_avcprofile) { **AVC_PROFILE_BASELINE** = 0, **AVC_PROFILE_HIGH** = 4, **AVC_PROFILE_MAIN** = 8 } | AVC Profile枚举。 |
| [OH_HEVCProfile](#oh_hevcprofile) {<br/>**HEVC_PROFILE_MAIN** = 0, **HEVC_PROFILE_MAIN_10** = 1, **HEVC_PROFILE_MAIN_STILL** = 2, **HEVC_PROFILE_MAIN_10_HDR10** = 3,<br/>**HEVC_PROFILE_MAIN_10_HDR10_PLUS** = 4<br/>} | HEVC Profile枚举。 |
| [OH_AACProfile](#oh_aacprofile) { **AAC_PROFILE_LC** = 0 } | AAC Profile枚举。 |
| [OH_AVSeekMode](#oh_avseekmode) { **SEEK_MODE_NEXT_SYNC** = 0, **SEEK_MODE_PREVIOUS_SYNC**, **SEEK_MODE_CLOSEST_SYNC** } | 跳转模式。 |
| [OH_ColorPrimary](#oh_colorprimary) {<br/>**COLOR_PRIMARY_BT709** = 1, **COLOR_PRIMARY_UNSPECIFIED** = 2, **COLOR_PRIMARY_BT470_M** = 4, **COLOR_PRIMARY_BT601_625** = 5,<br/>**COLOR_PRIMARY_BT601_525** = 6, **COLOR_PRIMARY_SMPTE_ST240** = 7, **COLOR_PRIMARY_GENERIC_FILM** = 8, **COLOR_PRIMARY_BT2020** = 9,<br/>**COLOR_PRIMARY_SMPTE_ST428** = 10, **COLOR_PRIMARY_P3DCI** = 11, **COLOR_PRIMARY_P3D65** = 12<br/>} | 原色。 |
| [OH_TransferCharacteristic](#oh_transfercharacteristic) {<br/>**TRANSFER_CHARACTERISTIC_BT709** = 1, **TRANSFER_CHARACTERISTIC_UNSPECIFIED** = 2, **TRANSFER_CHARACTERISTIC_GAMMA_2_2** = 4, **TRANSFER_CHARACTERISTIC_GAMMA_2_8** = 5,<br/>**TRANSFER_CHARACTERISTIC_BT601** = 6, **TRANSFER_CHARACTERISTIC_SMPTE_ST240** = 7, **TRANSFER_CHARACTERISTIC_LINEAR** = 8, **TRANSFER_CHARACTERISTIC_LOG** = 9,<br/>**TRANSFER_CHARACTERISTIC_LOG_SQRT** = 10, **TRANSFER_CHARACTERISTIC_IEC_61966_2_4** = 11, **TRANSFER_CHARACTERISTIC_BT1361** = 12, **TRANSFER_CHARACTERISTIC_IEC_61966_2_1** = 13,<br/>**TRANSFER_CHARACTERISTIC_BT2020_10BIT** = 14, **TRANSFER_CHARACTERISTIC_BT2020_12BIT** = 15, **TRANSFER_CHARACTERISTIC_PQ** = 16, **TRANSFER_CHARACTERISTIC_SMPTE_ST428** = 17,<br/>**TRANSFER_CHARACTERISTIC_HLG** = 18<br/>} | 转移特性。 |
| [OH_MatrixCoefficient](#oh_matrixcoefficient) {<br/>**MATRIX_COEFFICIENT_IDENTITY** = 0, **MATRIX_COEFFICIENT_BT709** = 1, **MATRIX_COEFFICIENT_UNSPECIFIED** = 2, **MATRIX_COEFFICIENT_FCC** = 4,<br/>**MATRIX_COEFFICIENT_BT601_625** = 5, **MATRIX_COEFFICIENT_BT601_525** = 6, **MATRIX_COEFFICIENT_SMPTE_ST240** = 7, **MATRIX_COEFFICIENT_YCGCO** = 8,<br/>**MATRIX_COEFFICIENT_BT2020_NCL** = 9, **MATRIX_COEFFICIENT_BT2020_CL** = 10, **MATRIX_COEFFICIENT_SMPTE_ST2085** = 11, **MATRIX_COEFFICIENT_CHROMATICITY_NCL** = 12,<br/>**MATRIX_COEFFICIENT_CHROMATICITY_CL** = 13, **MATRIX_COEFFICIENT_ICTCP** = 14<br/>} | 矩阵系数。 |
| [OH_BitsPerSample](#oh_bitspersample) {<br/>**SAMPLE_U8** = 0, **SAMPLE_S16LE** = 1, **SAMPLE_S24LE** = 2, **SAMPLE_S32LE** = 3,<br/>**SAMPLE_F32LE** = 4, **SAMPLE_U8P** = 5, **SAMPLE_S16P** = 6, **SAMPLE_S24P** = 7,<br/>**SAMPLE_S32P** = 8, **SAMPLE_F32P** = 9, **INVALID_WIDTH** = -1<br/>} | 枚举每个编码样本的音频位数。 |
### 变量
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferAttr::pts](#pts) | 以微秒为单位表示的该Buffer的Presentation时间戳 |
| [OH_AVCodecBufferAttr::size](#size) | 以字节为单位表示的该Buffer内所包含数据的大小 |
| [OH_AVCodecBufferAttr::offset](#offset) | 有效数据在该Buffer内的起始偏移量 |
| [OH_AVCodecBufferAttr::flags](#flags) | u该Buffer具有的标记,也是多个[OH_AVCodecBufferFlags](#oh_avcodecbufferflags)的组合 |
| [OH_AVCODEC_MIMETYPE_VIDEO_AVC](#oh_avcodec_mimetype_video_avc) | AVC视频编解码器的MIME类型。 |
| [OH_AVCODEC_MIMETYPE_AUDIO_AAC](#oh_avcodec_mimetype_audio_aac) | AAC音频编解码器的MIME类型。 |
| [OH_ED_KEY_TIME_STAMP](#oh_ed_key_time_stamp) | 提供统一的surface Buffer附属数据的字符描述符。 |
| [OH_ED_KEY_EOS](#oh_ed_key_eos) | surface附属数据中结束流的字符描述符,值类型为bool |
| [OH_MD_KEY_TRACK_TYPE](#oh_md_key_track_type) | 为媒体播放框架提供统一的字符描述符。 |
| [OH_MD_KEY_CODEC_MIME](#oh_md_key_codec_mime) | mime类型的字符描述符,值类型为string |
| [OH_MD_KEY_DURATION](#oh_md_key_duration) | duration的字符描述符,值类型为int64_t |
| [OH_MD_KEY_BITRATE](#oh_md_key_bitrate) | 比特率的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_MAX_INPUT_SIZE](#oh_md_key_max_input_size) | 最大输入尺寸的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_WIDTH](#oh_md_key_width) | 视频宽度的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_HEIGHT](#oh_md_key_height) | 视频高度的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_PIXEL_FORMAT](#oh_md_key_pixel_format) | 视频像素格式的字符描述符,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat) |
| [OH_MD_KEY_AUDIO_SAMPLE_FORMAT](#oh_md_key_audio_sample_format) | 音频采样格式的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_FRAME_RATE](#oh_md_key_frame_rate) | 视频帧率的字符描述符,值类型为double |
| [OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](#oh_md_key_video_encode_bitrate_mode) | 视频编码比特率模式的字符描述符,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) |
| [OH_MD_KEY_PROFILE](#oh_md_key_profile) | 音视频编码能力的字符描述符,值类型为int32_t,具体见[OH_AVCProfile](#oh_avcprofile)[OH_AACProfile](#oh_aacprofile) |
| [OH_MD_KEY_AUD_CHANNEL_COUNT](#oh_md_key_aud_channel_count) | 音频声道数的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_AUD_SAMPLE_RATE](#oh_md_key_aud_sample_rate) | 音频采样率的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_I_FRAME_INTERVAL](#oh_md_key_i_frame_interval) | I帧间隔时长的字符描述符,值类型为int32_t,单位是毫秒 |
| [OH_MD_KEY_ROTATION](#oh_md_key_rotation) | surface旋转角度的字符描述符,值类型为int32_t,限于{0, 90, 180, 270},默认值为0 |
| [OH_AVCodecBufferAttr::pts](_o_h___a_v_codec_buffer_attr.md#pts) | 此缓冲区的显示时间戳(以微秒为单位) |
| [OH_AVCodecBufferAttr::size](_o_h___a_v_codec_buffer_attr.md#size) | 缓冲区中包含的数据的大小(以字节为单位) |
| [OH_AVCodecBufferAttr::offset](_o_h___a_v_codec_buffer_attr.md#offset) | 此缓冲区中有效数据的起始偏移量 |
| [OH_AVCodecBufferAttr::flags](_o_h___a_v_codec_buffer_attr.md#flags) | 此缓冲区具有的标志,也是多个[OH_AVCodecBufferFlags](#oh_avcodecbufferflags)的组合。 |
| [OH_AVCodecAsyncCallback::onError](_o_h___a_v_codec_async_callback.md#onerror) | 监控编解码器操作错误,请参见[OH_AVCodecOnError](#oh_avcodeconerror) |
| [OH_AVCodecAsyncCallback::onStreamChanged](_o_h___a_v_codec_async_callback.md#onstreamchanged) | 监控编解码器流变化,请参见[OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged) |
| [OH_AVCodecAsyncCallback::onNeedInputData](_o_h___a_v_codec_async_callback.md#onneedinputdata) | 监控编解码器需要输入数据,请参见[OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata) |
| [OH_AVCodecAsyncCallback::onNeedOutputData](_o_h___a_v_codec_async_callback.md#onneedinputdata) | 监控编解码器已生成输出数据,请参见[OH_AVCodecOnNewOutputData](#oh_avcodeconnewoutputdata) |
| \*[OH_AVCODEC_MIMETYPE_VIDEO_AVC](#oh_avcodec_mimetype_video_avc) | AVC视频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_AUDIO_AAC](#oh_avcodec_mimetype_audio_aac) | AAC音频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_VIDEO_MPEG4](#oh_avcodec_mimetype_video_mpeg4) | MPEG4视频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_VIDEO_HEVC](#oh_avcodec_mimetype_video_hevc) | HEVC视频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_AUDIO_MPEG](#oh_avcodec_mimetype_audio_mpeg) | MPEG音频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_IMAGE_JPG](#oh_avcodec_mimetype_image_jpg) | JPG图片编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_IMAGE_PNG](#oh_avcodec_mimetype_image_png) | PNG图片编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_IMAGE_BMP](#oh_avcodec_mimetype_image_bmp) | BMP图片编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_AUDIO_FLAC](#oh_avcodec_mimetype_audio_flac) | FLAC音频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_AUDIO_VORBIS](#oh_avcodec_mimetype_audio_vorbis) | VORBIS音频编解码器的MIME类型。 |
| \*[OH_ED_KEY_TIME_STAMP](#oh_ed_key_time_stamp) | 表面的额外数据中时间戳的键,值类型为int64 |
| \*[OH_ED_KEY_EOS](#oh_ed_key_eos) | 表面的额外数据中流结束符的键,值类型为bool |
| \*[OH_MD_KEY_TRACK_TYPE](#oh_md_key_track_type) | 提供统一容器,用于存储媒体描述。 |
| \*[OH_MD_KEY_CODEC_MIME](#oh_md_key_codec_mime) | 编解码器mime类型的键,值类型为字符串。 |
| \*[OH_MD_KEY_DURATION](#oh_md_key_duration) | 持续时间键,值类型为int64_t。 |
| \*[OH_MD_KEY_BITRATE](#oh_md_key_bitrate) | 比特率的键,值类型为uint32_t。 |
| \*[OH_MD_KEY_MAX_INPUT_SIZE](#oh_md_key_max_input_size) | 最大输入大小的键,值类型为uint32_t |
| \*[OH_MD_KEY_WIDTH](#oh_md_key_width) | 视频宽度的键,值类型为uint32_t |
| \*[OH_MD_KEY_HEIGHT](#oh_md_key_height) | 视频高度键,值类型为uint32_t |
| \*[OH_MD_KEY_PIXEL_FORMAT](#oh_md_key_pixel_format) | 视频像素格式的键,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat) |
| \*[OH_MD_KEY_RANGE_FLAG](#oh_md_key_range_flag) | 视频YUV取值范围标志的键,值类型为bool |
| \*[OH_MD_KEY_COLOR_PRIMARIES](#oh_md_key_color_primaries) | 视频颜色原色键, 值类型为int32_t |
| \*[OH_MD_KEY_TRANSFER_CHARACTERISTICS](#oh_md_key_transfer_characteristics) | 视频转移特性的键,值类型为int32_t |
| \*[OH_MD_KEY_MATRIX_COEFFICIENTS](#oh_md_key_matrix_coefficients) | 视频矩阵系数的键,值类型为int32_t |
| \*[OH_MD_KEY_AUDIO_SAMPLE_FORMAT](#oh_md_key_audio_sample_format) | 音频原始格式的键,值类型为uint32_t |
| \*[OH_MD_KEY_FRAME_RATE](#oh_md_key_frame_rate) | 视频帧率的键,值类型为双精度浮点。 |
| \*[OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](#oh_md_key_video_encode_bitrate_mode) | 视频编码码率模式,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) |
| \*[OH_MD_KEY_PROFILE](#oh_md_key_profile) | 编码模板,值类型为数字,具体见[OH_AVCProfile](#oh_avcprofile)[OH_AACProfile](#oh_aacprofile)[OH_HEVCProfile](#oh_hevcprofile) |
| \*[OH_MD_KEY_AUD_CHANNEL_COUNT](#oh_md_key_aud_channel_count) | 音频通道计数键,值类型为uint32_t |
| \*[OH_MD_KEY_AUD_SAMPLE_RATE](#oh_md_key_aud_sample_rate) | 音频采样率键,值类型为uint32_t |
| \*[OH_MD_KEY_I_FRAME_INTERVAL](#oh_md_key_i_frame_interval) | 关键帧间隔的键,值类型为int32_t,单位为毫秒。 |
| \*[OH_MD_KEY_ROTATION](#oh_md_key_rotation) | 表面旋转角度的键。值类型为int32_t:应为{0, 90, 180, 270},默认值为0。 |
| \*[OH_MD_KEY_CODEC_CONFIG](#oh_md_key_codec_config) | 编解码器特定数据的键,值类型为uint8_t\*。 |
| \*[OH_MD_KEY_REQUEST_I_FRAME](#oh_md_key_request_i_frame) | 请求立即编码I帧的键。值类型为布尔值 |
| \*[OH_MD_KEY_QUALITY](#oh_md_key_quality) | 所需编码质量的键。值类型为uint32_t,此键仅适用于配置在恒定质量模式下的编码器 |
| \*[OH_MD_KEY_CHANNEL_LAYOUT](#oh_md_key_channel_layout) | 所需编码通道布局的键。值类型为int64_t,此键仅适用于编码器。 |
| \*[OH_MD_KEY_BITS_PER_CODED_SAMPLE](#oh_md_key_bits_per_coded_sample) | 每个编码样本位数的键,值类型为uint32_t,支持flac编码器,请参见\@OH_BitsPerSample。 |
| \*[OH_MD_KEY_AAC_IS_ADTS](#oh_md_key_aac_is_adts) | aac格式的键,值类型为uint32_t,aac解码器支持。 |
| \*[OH_MD_KEY_SBR](#oh_md_key_sbr) | aac sbr模式的键,值类型为uint32_t,aac编码器支持。 |
| \*[OH_MD_KEY_COMPLIANCE_LEVEL](#oh_md_key_compliance_level) | flac合规性级别的键,值类型为int32_t。 |
| \*[OH_MD_KEY_IDENTIFICATION_HEADER](#oh_md_key_identification_header) | vorbis标识头的键,值类型为uint8_t\*,仅vorbis解码器支持。 |
| \*[OH_MD_KEY_SETUP_HEADER](#oh_md_key_setup_header) | vorbis设置头的键,值类型为uint8_t\*,仅vorbis解码器支持。 |
| \*[OH_MD_KEY_TITLE](#oh_md_key_title) | 源格式标题的键,值类型为字符串 |
| \*[OH_MD_KEY_ARTIST](#oh_md_key_artist) | 艺术家的源格式Key,值类型为字符串 |
| \*[OH_MD_KEY_ALBUM](#oh_md_key_album) | 相册的源格式键,值类型为字符串 |
| \*[OH_MD_KEY_ALBUM_ARTIST](#oh_md_key_album_artist) | 源格式专辑_artist的键,值类型为字符串 |
| \*[OH_MD_KEY_DATE](#oh_md_key_date) | 源格式日期的键,值类型为字符串 |
| \*[OH_MD_KEY_COMMENT](#oh_md_key_comment) | 源格式注释的键,值类型为字符串 |
| \*[OH_MD_KEY_GENRE](#oh_md_key_genre) | 源格式类型的键,值类型为字符串 |
| \*[OH_MD_KEY_COPYRIGHT](#oh_md_key_copyright) | 源格式版权的键,值类型为字符串 |
| \*[OH_MD_KEY_LANGUAGE](#oh_md_key_language) | 源格式语言的键,值类型为字符串 |
| \*[OH_MD_KEY_DESCRIPTION](#oh_md_key_description) | 源格式描述的键,值类型为字符串 |
| \*[OH_MD_KEY_LYRICS](#oh_md_key_lyrics) | 源格式歌词的键,值类型为字符串 |
| \*[OH_MD_KEY_TRACK_COUNT](#oh_md_key_track_count) | 源格式轨道计数的键,值类型为uint32_t |
## 类型定义说明
......@@ -93,10 +147,12 @@ CodecBase模块提供运行音视频编解码通用的结构体、字符常量
```
typedef enum OH_AACProfileOH_AACProfile
```
**描述:**
**描述:**
AAC Profile枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCodecAsyncCallback
......@@ -105,19 +161,21 @@ AAC Profile枚举。
```
typedef struct OH_AVCodecAsyncCallbackOH_AVCodecAsyncCallback
```
**描述:**
AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告 的信息,以确保AVCodec正常运转。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
**参数:**
OH_AVCodec中所有异步回调函数指针的集合。将该结构体的实例注册到OH_AVCodec实例中, 并处理回调上报的信息,以保证OH_AVCodec的正常运行。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| onError | 监听AVCodec运行错误,参考[OH_AVCodecOnError](#oh_avcodeconerror) |
| onStreamChanged | 监听编解码流信息,参考[OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged) |
| onNeedInputData | 监听编解码需要输入数据,参考[OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata) |
| onNeedInputData | 监听编解码产生输出数据,参考[OH_AVCodecOnNewOutputData](#oh_avcodeconnewoutputdata) |
| [onError](_o_h___a_v_codec_async_callback.md#onerror) | 监控编解码器操作错误,请参见[OH_AVCodecOnError](#oh_avcodeconerror) |
| [onStreamChanged](_o_h___a_v_codec_async_callback.md#onstreamchanged) | 监控编解码器流变化,请参见[OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged) |
| [onNeedInputData](_o_h___a_v_codec_async_callback.md#onneedinputdata) | 监控编解码器需要输入数据,请参见[OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata) |
| [onNeedOutputData](_o_h___a_v_codec_async_callback.md#onneedoutputdata) | 监控编解码器已生成输出数据,请参见[OH_AVCodecOnNewOutputData](#oh_avcodeconnewoutputdata) |
### OH_AVCodecBufferAttr
......@@ -126,10 +184,12 @@ AVCodec所有的异步回调函数指针集合。注册一个该结构体实例
```
typedef struct OH_AVCodecBufferAttrOH_AVCodecBufferAttr
```
**描述:**
定义OH_AVCodec的Buffer描述信息。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
定义OH_AVCodec的缓冲区描述信息。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCodecBufferFlags
......@@ -138,10 +198,12 @@ typedef struct OH_AVCodecBufferAttrOH_AVCodecBufferAttr
```
typedef enum OH_AVCodecBufferFlagsOH_AVCodecBufferFlags
```
**描述:**
枚举OH_AVCodec的Buffer标记的类别。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
枚举OH_AVCodec缓冲区标记的类别。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCodecOnError
......@@ -150,18 +212,20 @@ typedef enum OH_AVCodecBufferFlagsOH_AVCodecBufferFlags
```
typedef void(* OH_AVCodecOnError) (OH_AVCodec *codec, int32_t errorCode, void *userData)
```
**描述:**
当OH_AVCodec实例运行发生错误时,该函数指针会被调用以报告具体错误信息。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
当OH_AVCodec实例运行出错时,会调用来上报具体的错误信息的函数指针。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | OH_AVCodec实例 |
| errorCode | 具体错误码 |
| userData | 用户特定数据 |
| codec | OH_AVCodec实例 |
| errorCode | 特定错误代码 |
| userData | 用户特定数据 |
### OH_AVCodecOnNeedInputData
......@@ -170,19 +234,21 @@ typedef void(* OH_AVCodecOnError) (OH_AVCodec *codec, int32_t errorCode, void *u
```
typedef void(* OH_AVCodecOnNeedInputData) (OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData)
```
**描述:**
当AVCodec运行过程中需要新的输入数据时,该函数指针会被调用,并携带一块可用的Buffer以供填入新的输入数据。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
**参数:**
当OH_AVCodec在运行过程中需要新的输入数据时,将调用此函数指针,并携带可用的缓冲区来填充新的输入数据。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | OH_AVCodec实例 |
| index | 新的可用的输入Buffer对应的索引 |
| data | 新的可用的输入Buffer |
| userData | 用户特定数据 |
| codec | OH_AVCodec实例 |
| index | 与新可用的输入缓冲区相对应的索引 |
| data | 新的可用输入缓冲区 |
| userData | 用户特定数据 |
### OH_AVCodecOnNewOutputData
......@@ -191,20 +257,22 @@ typedef void(* OH_AVCodecOnNeedInputData) (OH_AVCodec *codec, uint32_t index, OH
```
typedef void(* OH_AVCodecOnNewOutputData) (OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr, void *userData)
```
**描述:**
当AVCodec运行过程中产生了新的输出数据时,该函数指针会被调用,并携带一块包含新输出数据的Buffer, 需要注意的是,OH_AVCodecBufferAttr指针的生命周期仅维持在该函数指针被调用时有效,禁止调用结束后继续访问。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
当OH_AVCodec运行过程中生成新的输出数据时,将调用此函数指针,并携带包含新输出数据的缓冲区。 需要注意的是,OH_AVCodecBufferAttr指针的生命周期仅在调用函数指针时有效,这将禁止调用结束后继续访问。
**参数:**
\@syscap SystemCapability.Multimedia.Media.CodecBase
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | OH_AVCodec实例 |
| index | 新的输出Buffer对应的索引 |
| data | 包含新的输出数据的Buffer |
| attr | 新的输出Buffer的描述信息,具体参考[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) |
| userData | specified data |
| codec | OH_AVCodec实例 |
| index | 与新输出缓冲区对应的索引 |
| data | 包含新输出数据的缓冲区 |
| attr | 新输出缓冲区的说明,请参见[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) |
| userData | 用户特定数据 |
### OH_AVCodecOnStreamChanged
......@@ -213,18 +281,20 @@ typedef void(* OH_AVCodecOnNewOutputData) (OH_AVCodec *codec, uint32_t index, OH
```
typedef void(* OH_AVCodecOnStreamChanged) (OH_AVCodec *codec, OH_AVFormat *format, void *userData)
```
**描述:**
当输出流发生变化时,该函数指针会被调用以报告新的流描述信息。 需要注意的时,OH_AVFormat指针的生命周期仅维持在该函数指针被调用时上有效,禁止在调用结束后继续访问。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
当输出流发生变化时,将调用此函数指针报告新的流描述信息。需要注意的是, OH_AVFormat指针的生命周期只有在函数指针被调用时才有效,调用结束后禁止继续访问。
**参数:**
\@syscap SystemCapability.Multimedia.Media.CodecBase
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | OH_AVCodec实例 |
| format | 新的输出流描述信息 |
| userData | 用户特定数据 |
| codec | OH_AVCodec实例 |
| format | 新输出流描述信息 |
| userData | 用户特定数据 |
### OH_AVCProfile
......@@ -233,10 +303,94 @@ typedef void(* OH_AVCodecOnStreamChanged) (OH_AVCodec *codec, OH_AVFormat *forma
```
typedef enum OH_AVCProfileOH_AVCProfile
```
**描述:**
**描述:**
AVC Profile枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVOutputFormat
```
typedef enum OH_AVOutputFormatOH_AVOutputFormat
```
**描述:**
枚举封装器的输出文件格式。
### OH_AVSeekMode
```
typedef enum OH_AVSeekModeOH_AVSeekMode
```
**描述:**
跳转模式。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_BitsPerSample
```
typedef enum OH_BitsPerSampleOH_BitsPerSample
```
**描述:**
枚举每个编码样本的音频位数。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_ColorPrimary
```
typedef enum OH_ColorPrimaryOH_ColorPrimary
```
**描述:**
原色。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_HEVCProfile
```
typedef enum OH_HEVCProfileOH_HEVCProfile
```
**描述:**
HEVC Profile枚举。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MatrixCoefficient
```
typedef enum OH_MatrixCoefficientOH_MatrixCoefficient
```
**描述:**
矩阵系数。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MediaType
......@@ -245,10 +399,26 @@ AVC Profile枚举。
```
typedef enum OH_MediaTypeOH_MediaType
```
**描述:**
**描述:**
媒体类型。
@syscap SystemCapability.Multimedia.Media.CodecBase
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_TransferCharacteristic
```
typedef enum OH_TransferCharacteristicOH_TransferCharacteristic
```
**描述:**
转移特性。
\@syscap SystemCapability.Multimedia.Media.CodecBase
## 枚举类型说明
......@@ -260,10 +430,12 @@ typedef enum OH_MediaTypeOH_MediaType
```
enum OH_AACProfile
```
**描述:**
**描述:**
AAC Profile枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCodecBufferFlags
......@@ -272,17 +444,12 @@ AAC Profile枚举。
```
enum OH_AVCodecBufferFlags
```
**描述:**
枚举OH_AVCodec的Buffer标记的类别。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
| 枚举值 | 描述 |
| -------- | -------- |
| AVCODEC_BUFFER_FLAGS_EOS | 表明该Buffer是End-of-Stream帧 |
| AVCODEC_BUFFER_FLAGS_SYNC_FRAME | 表明该Buffer内包含关键帧 |
| AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME | 表明该Buffer内包含的数据仅仅为一帧的一部分 |
| AVCODEC_BUFFER_FLAGS_CODEC_DATA | 表明该Buffer包含Codec-Specific-Data |
枚举OH_AVCodec缓冲区标记的类别。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCProfile
......@@ -291,10 +458,94 @@ enum OH_AVCodecBufferFlags
```
enum OH_AVCProfile
```
**描述:**
**描述:**
AVC Profile枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVOutputFormat
```
enum OH_AVOutputFormat
```
**描述:**
枚举封装器的输出文件格式。
### OH_AVSeekMode
```
enum OH_AVSeekMode
```
**描述:**
跳转模式。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_BitsPerSample
```
enum OH_BitsPerSample
```
**描述:**
枚举每个编码样本的音频位数。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_ColorPrimary
```
enum OH_ColorPrimary
```
**描述:**
原色。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_HEVCProfile
```
enum OH_HEVCProfile
```
**描述:**
HEVC Profile枚举。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MatrixCoefficient
```
enum OH_MatrixCoefficient
```
**描述:**
矩阵系数。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MediaType
......@@ -303,50 +554,127 @@ AVC Profile枚举。
```
enum OH_MediaType
```
**描述:**
**描述:**
媒体类型。
@syscap SystemCapability.Multimedia.Media.CodecBase
\@syscap SystemCapability.Multimedia.Media.CodecBase
| 枚举值 | 描述 |
| -------- | -------- |
| MEDIA_TYPE_AUD | 音频轨道 |
| MEDIA_TYPE_VID | 视频轨道 |
### OH_TransferCharacteristic
```
enum OH_TransferCharacteristic
```
**描述:**
转移特性。
\@syscap SystemCapability.Multimedia.Media.CodecBase
## 变量说明
### flags
### OH_AVCODEC_MIMETYPE_AUDIO_AAC
```
uint32_t OH_AVCodecBufferAttr::flags
const char* OH_AVCODEC_MIMETYPE_AUDIO_AAC
```
**描述:**
该Buffer具有的标记,也是多个[OH_AVCodecBufferFlags](#oh_avcodecbufferflags)的组合
**描述:**
### offset
AAC音频编解码器的MIME类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_AUDIO_FLAC
```
int32_t OH_AVCodecBufferAttr::offset
const char* OH_AVCODEC_MIMETYPE_AUDIO_FLAC
```
**描述:**
有效数据在该Buffer内的起始偏移量
**描述:**
FLAC音频编解码器的MIME类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_AUDIO_AAC
### OH_AVCODEC_MIMETYPE_AUDIO_MPEG
```
const char* OH_AVCODEC_MIMETYPE_AUDIO_AAC
const char* OH_AVCODEC_MIMETYPE_AUDIO_MPEG
```
**描述:**
AAC音频编解码器的MIME类型。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
MPEG音频编解码器的MIME类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_AUDIO_VORBIS
```
const char* OH_AVCODEC_MIMETYPE_AUDIO_VORBIS
```
**描述:**
VORBIS音频编解码器的MIME类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_IMAGE_BMP
```
const char* OH_AVCODEC_MIMETYPE_IMAGE_BMP
```
**描述:**
BMP图片编解码器的MIME类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_IMAGE_JPG
```
const char* OH_AVCODEC_MIMETYPE_IMAGE_JPG
```
**描述:**
JPG图片编解码器的MIME类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_IMAGE_PNG
```
const char* OH_AVCODEC_MIMETYPE_IMAGE_PNG
```
**描述:**
PNG图片编解码器的MIME类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_VIDEO_AVC
......@@ -355,10 +683,40 @@ AAC音频编解码器的MIME类型。
```
const char* OH_AVCODEC_MIMETYPE_VIDEO_AVC
```
**描述:**
**描述:**
AVC视频编解码器的MIME类型。
@syscap SystemCapability.Multimedia.Media.CodecBase
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_VIDEO_HEVC
```
const char* OH_AVCODEC_MIMETYPE_VIDEO_HEVC
```
**描述:**
HEVC视频编解码器的MIME类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_VIDEO_MPEG4
```
const char* OH_AVCODEC_MIMETYPE_VIDEO_MPEG4
```
**描述:**
MPEG4视频编解码器的MIME类型。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_ED_KEY_EOS
......@@ -367,8 +725,12 @@ AVC视频编解码器的MIME类型。
```
const char* OH_ED_KEY_EOS
```
**描述:**
surface附属数据中结束流的字符描述符,值类型为bool
**描述:**
表面的额外数据中流结束符的键,值类型为bool
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_ED_KEY_TIME_STAMP
......@@ -377,10 +739,60 @@ surface附属数据中结束流的字符描述符,值类型为bool
```
const char* OH_ED_KEY_TIME_STAMP
```
**描述:**
提供统一的surface Buffer附属数据的字符描述符。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
表面的额外数据中时间戳的键,值类型为int64
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MD_KEY_AAC_IS_ADTS
```
const char* OH_MD_KEY_AAC_IS_ADTS
```
**描述:**
aac格式的键,值类型为uint32_t,aac解码器支持。
### OH_MD_KEY_ALBUM
```
const char* OH_MD_KEY_ALBUM
```
**描述:**
相册的源格式键,值类型为字符串
### OH_MD_KEY_ALBUM_ARTIST
```
const char* OH_MD_KEY_ALBUM_ARTIST
```
**描述:**
源格式专辑_artist的键,值类型为字符串
### OH_MD_KEY_ARTIST
```
const char* OH_MD_KEY_ARTIST
```
**描述:**
艺术家的源格式Key,值类型为字符串
### OH_MD_KEY_AUD_CHANNEL_COUNT
......@@ -389,8 +801,10 @@ const char* OH_ED_KEY_TIME_STAMP
```
const char* OH_MD_KEY_AUD_CHANNEL_COUNT
```
**描述:**
音频声道数的字符描述符,值类型为uint32_t
**描述:**
音频通道计数键,值类型为uint32_t
### OH_MD_KEY_AUD_SAMPLE_RATE
......@@ -399,8 +813,10 @@ const char* OH_MD_KEY_AUD_CHANNEL_COUNT
```
const char* OH_MD_KEY_AUD_SAMPLE_RATE
```
**描述:**
音频采样率的字符描述符,值类型为uint32_t
**描述:**
音频采样率键,值类型为uint32_t
### OH_MD_KEY_AUDIO_SAMPLE_FORMAT
......@@ -409,8 +825,10 @@ const char* OH_MD_KEY_AUD_SAMPLE_RATE
```
const char* OH_MD_KEY_AUDIO_SAMPLE_FORMAT
```
**描述:**
音频采样格式的字符描述符,值类型为uint32_t
**描述:**
音频原始格式的键,值类型为uint32_t
### OH_MD_KEY_BITRATE
......@@ -419,8 +837,46 @@ const char* OH_MD_KEY_AUDIO_SAMPLE_FORMAT
```
const char* OH_MD_KEY_BITRATE
```
**描述:**
比特率的字符描述符,值类型为uint32_t
**描述:**
比特率的键,值类型为uint32_t。
### OH_MD_KEY_BITS_PER_CODED_SAMPLE
```
const char* OH_MD_KEY_BITS_PER_CODED_SAMPLE
```
**描述:**
每个编码样本位数的键,值类型为uint32_t,支持flac编码器。
### OH_MD_KEY_CHANNEL_LAYOUT
```
const char* OH_MD_KEY_CHANNEL_LAYOUT
```
**描述:**
所需编码通道布局的键。值类型为int64_t,此键仅适用于编码器。
### OH_MD_KEY_CODEC_CONFIG
```
const char* OH_MD_KEY_CODEC_CONFIG
```
**描述:**
编解码器特定数据的键,值类型为uint8_t\*
### OH_MD_KEY_CODEC_MIME
......@@ -429,8 +885,82 @@ const char* OH_MD_KEY_BITRATE
```
const char* OH_MD_KEY_CODEC_MIME
```
**描述:**
mime类型的字符描述符,值类型为string
**描述:**
编解码器mime类型的键,值类型为字符串。
### OH_MD_KEY_COLOR_PRIMARIES
```
const char* OH_MD_KEY_COLOR_PRIMARIES
```
**描述:**
视频颜色原色键, 值类型为int32_t
### OH_MD_KEY_COMMENT
```
const char* OH_MD_KEY_COMMENT
```
**描述:**
源格式注释的键,值类型为字符串
### OH_MD_KEY_COMPLIANCE_LEVEL
```
const char* OH_MD_KEY_COMPLIANCE_LEVEL
```
**描述:**
flac合规性级别的键,值类型为int32_t。
### OH_MD_KEY_COPYRIGHT
```
const char* OH_MD_KEY_COPYRIGHT
```
**描述:**
源格式版权的键,值类型为字符串
### OH_MD_KEY_DATE
```
const char* OH_MD_KEY_DATE
```
**描述:**
源格式日期的键,值类型为字符串
### OH_MD_KEY_DESCRIPTION
```
const char* OH_MD_KEY_DESCRIPTION
```
**描述:**
源格式描述的键,值类型为字符串
### OH_MD_KEY_DURATION
......@@ -439,8 +969,10 @@ mime类型的字符描述符,值类型为string
```
const char* OH_MD_KEY_DURATION
```
**描述:**
duration的字符描述符,值类型为int64_t
**描述:**
持续时间键,值类型为int64_t。
### OH_MD_KEY_FRAME_RATE
......@@ -449,8 +981,22 @@ duration的字符描述符,值类型为int64_t
```
const char* OH_MD_KEY_FRAME_RATE
```
**描述:**
视频帧率的字符描述符,值类型为double
**描述:**
视频帧率的键,值类型为双精度浮点。
### OH_MD_KEY_GENRE
```
const char* OH_MD_KEY_GENRE
```
**描述:**
源格式类型的键,值类型为字符串
### OH_MD_KEY_HEIGHT
......@@ -459,8 +1005,10 @@ const char* OH_MD_KEY_FRAME_RATE
```
const char* OH_MD_KEY_HEIGHT
```
**描述:**
视频高度的字符描述符,值类型为uint32_t
**描述:**
视频高度键,值类型为uint32_t
### OH_MD_KEY_I_FRAME_INTERVAL
......@@ -469,8 +1017,58 @@ const char* OH_MD_KEY_HEIGHT
```
const char* OH_MD_KEY_I_FRAME_INTERVAL
```
**描述:**
I帧间隔时长的字符描述符,值类型为int32_t,单位是毫秒
**描述:**
关键帧间隔的键,值类型为int32_t,单位为毫秒。
### OH_MD_KEY_IDENTIFICATION_HEADER
```
const char* OH_MD_KEY_IDENTIFICATION_HEADER
```
**描述:**
vorbis标识头的键,值类型为uint8_t\*,仅vorbis解码器支持。
### OH_MD_KEY_LANGUAGE
```
const char* OH_MD_KEY_LANGUAGE
```
**描述:**
源格式语言的键,值类型为字符串
### OH_MD_KEY_LYRICS
```
const char* OH_MD_KEY_LYRICS
```
**描述:**
源格式歌词的键,值类型为字符串
### OH_MD_KEY_MATRIX_COEFFICIENTS
```
const char* OH_MD_KEY_MATRIX_COEFFICIENTS
```
**描述:**
视频矩阵系数的键,值类型为int32_t
### OH_MD_KEY_MAX_INPUT_SIZE
......@@ -479,8 +1077,10 @@ I帧间隔时长的字符描述符,值类型为int32_t,单位是毫秒
```
const char* OH_MD_KEY_MAX_INPUT_SIZE
```
**描述:**
最大输入尺寸的字符描述符,值类型为uint32_t
**描述:**
最大输入大小的键,值类型为uint32_t
### OH_MD_KEY_PIXEL_FORMAT
......@@ -489,8 +1089,10 @@ const char* OH_MD_KEY_MAX_INPUT_SIZE
```
const char* OH_MD_KEY_PIXEL_FORMAT
```
**描述:**
视频像素格式的字符描述符,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat)
**描述:**
视频像素格式的键,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat)
### OH_MD_KEY_PROFILE
......@@ -499,8 +1101,46 @@ const char* OH_MD_KEY_PIXEL_FORMAT
```
const char* OH_MD_KEY_PROFILE
```
**描述:**
音视频编码能力的字符描述符,值类型为int32_t,具体见[OH_AVCProfile](#oh_avcprofile)[OH_AACProfile](#oh_aacprofile)
**描述:**
编码模板,值类型为数字,具体见[OH_AVCProfile](#oh_avcprofile)[OH_AACProfile](#oh_aacprofile)[OH_HEVCProfile](#oh_hevcprofile)
### OH_MD_KEY_QUALITY
```
const char* OH_MD_KEY_QUALITY
```
**描述:**
所需编码质量的键。值类型为uint32_t,此键仅适用于配置在恒定质量模式下的编码器
### OH_MD_KEY_RANGE_FLAG
```
const char* OH_MD_KEY_RANGE_FLAG
```
**描述:**
视频YUV取值范围标志的键,值类型为bool
### OH_MD_KEY_REQUEST_I_FRAME
```
const char* OH_MD_KEY_REQUEST_I_FRAME
```
**描述:**
请求立即编码I帧的键。值类型为布尔值
### OH_MD_KEY_ROTATION
......@@ -509,57 +1149,105 @@ const char* OH_MD_KEY_PROFILE
```
const char* OH_MD_KEY_ROTATION
```
**描述:**
surface旋转角度的字符描述符,值类型为int32_t,限于{0, 90, 180, 270},默认值为0
**描述:**
表面旋转角度的键。值类型为int32_t:应为{0, 90, 180, 270},默认值为0。
### OH_MD_KEY_TRACK_TYPE
### OH_MD_KEY_SBR
```
const char* OH_MD_KEY_TRACK_TYPE
const char* OH_MD_KEY_SBR
```
**描述:**
为媒体播放框架提供统一的字符描述符。
@syscap SystemCapability.Multimedia.Media.CodecBase
**描述:**
aac sbr模式的键,值类型为uint32_t,aac编码器支持。
### OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE
### OH_MD_KEY_SETUP_HEADER
```
const char* OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE
const char* OH_MD_KEY_SETUP_HEADER
```
**描述:**
视频编码比特率模式的字符描述符,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode)
**描述:**
vorbis设置头的键,值类型为uint8_t\*,仅vorbis解码器支持。
### OH_MD_KEY_WIDTH
### OH_MD_KEY_TITLE
```
const char* OH_MD_KEY_WIDTH
const char* OH_MD_KEY_TITLE
```
**描述:**
源格式标题的键,值类型为字符串
### OH_MD_KEY_TRACK_COUNT
```
const char* OH_MD_KEY_TRACK_COUNT
```
**描述:**
视频宽度的字符描述符,值类型为uint32_t
**描述:**
### pts
源格式轨道计数的键,值类型为uint32_t
### OH_MD_KEY_TRACK_TYPE
```
int64_t OH_AVCodecBufferAttr::pts
const char* OH_MD_KEY_TRACK_TYPE
```
**描述:**
以微秒为单位表示的该Buffer的Presentation时间戳
**描述:**
### size
提供统一容器,用于存储媒体描述。
\@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MD_KEY_TRANSFER_CHARACTERISTICS
```
int32_t OH_AVCodecBufferAttr::size
const char* OH_MD_KEY_TRANSFER_CHARACTERISTICS
```
**描述:**
视频转移特性的键,值类型为int32_t
### OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE
```
**描述:**
以字节为单位表示的该Buffer内所包含数据的大小
const char* OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE
```
**描述:**
视频编码码率模式,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode)
### OH_MD_KEY_WIDTH
```
const char* OH_MD_KEY_WIDTH
```
**描述:**
视频宽度的键,值类型为uint32_t
......@@ -5,17 +5,19 @@
Core模块提供用于播放框架的基础骨干能力,包含内存、错误码、格式载体等相关函数。
@syscap SystemCapability.Multimedia.Media.Core
\@syscap SystemCapability.Multimedia.Media.Core
**起始版本:**
9
## 汇总
### 文件
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [native_averrors.h](native__averrors_8h.md) | 声明了媒体播放框架的错误码。<br>引用文件:<multimedia/player_framework/native_averrors.h> |
| [native_avformat.h](native__avformat_8h.md) | 声明了格式相关的函数和枚举。<br>引用文件:<multimedia/player_framework/native_avformat.h> |
......@@ -24,42 +26,46 @@ Core模块提供用于播放框架的基础骨干能力,包含内存、错误
### 类型定义
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](#oh_averrcode) | 音视频错误码。 |
| [OH_AVPixelFormat](#oh_avpixelformat) | AVPixel 格式的枚举 |
| [OH_AVErrCode](#oh_averrcode) | 音视频错误码。 |
| [OH_AVPixelFormat](#oh_avpixelformat) | AVPixel 格式的枚举类。 |
### 枚举
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](#oh_averrcode) {<br/>**AV_ERR_OK** = 0, **AV_ERR_NO_MEMORY** = 1, **AV_ERR_OPERATE_NOT_PERMIT** = 2, **AV_ERR_INVALID_VAL** = 3, **AV_ERR_IO** = 4, **AV_ERR_TIMEOUT** = 5, **AV_ERR_UNKNOWN** = 6, **AV_ERR_SERVICE_DIED** = 7, **AV_ERR_INVALID_STATE** = 8, **AV_ERR_UNSUPPORT** = 9, **AV_ERR_EXTEND_START** = 100<br/>} | 音视频错误码。 |
| [OH_AVPixelFormat](#oh_avpixelformat) {<br/>**AV_PIXEL_FORMAT_YUVI420** = 1, **AV_PIXEL_FORMAT_NV12** = 2, **AV_PIXEL_FORMAT_NV21** = 3, **AV_PIXEL_FORMAT_SURFACE_FORMAT** = 4, **AV_PIXEL_FORMAT_RGBA** = 5<br/>} | AVPixel 格式的枚举。 |
| [OH_AVErrCode](#oh_averrcode) {<br/>AV_ERR_OK = 0, AV_ERR_NO_MEMORY = 1, AV_ERR_OPERATE_NOT_PERMIT = 2, AV_ERR_INVALID_VAL = 3,<br/>AV_ERR_IO = 4, AV_ERR_TIMEOUT = 5, AV_ERR_UNKNOWN = 6, AV_ERR_SERVICE_DIED = 7,<br/>AV_ERR_INVALID_STATE = 8, AV_ERR_UNSUPPORT = 9, AV_ERR_EXTEND_START = 100<br/>} | 音视频错误码。 |
| [OH_AVPixelFormat](#oh_avpixelformat) {<br/>AV_PIXEL_FORMAT_YUVI420 = 1, AV_PIXEL_FORMAT_NV12 = 2, AV_PIXEL_FORMAT_NV21 = 3, AV_PIXEL_FORMAT_SURFACE_FORMAT = 4,<br/>AV_PIXEL_FORMAT_RGBA = 5<br/>} | AVPixel 格式的枚举类。 |
### 函数
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVFormat_Create](#oh_avformat_create) (void) | 创建一个OH_AVFormat句柄指针,用以读写数据。 |
| [OH_AVFormat_Destroy](#oh_avformat_destroy) (struct OH_AVFormat \*format) | 销毁指定OH_AVFormat句柄资源。 |
| [OH_AVFormat_Copy](#oh_avformat_copy) (struct OH_AVFormat \*to, struct OH_AVFormat \*from) | 拷贝OH_AVFormat句柄资源. |
| [OH_AVFormat_SetIntValue](#oh_avformat_setintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t value) | 向OH_AVFormat写入Int数据. |
| [OH_AVFormat_SetLongValue](#oh_avformat_setlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t value) | 向OH_AVFormat写入Long数据。 |
| [OH_AVFormat_SetFloatValue](#oh_avformat_setfloatvalue) (struct OH_AVFormat \*format, const char \*key, float value) | 向OH_AVFormat写入Float数据。 |
| [OH_AVFormat_SetDoubleValue](#oh_avformat_setdoublevalue) (struct OH_AVFormat \*format, const char \*key, double value) | 向OH_AVFormat写入Double数据。 |
| [OH_AVFormat_SetStringValue](#oh_avformat_setstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*value) | 向OH_AVFormat写入String数据。 |
| [OH_AVFormat_SetBuffer](#oh_avformat_setbuffer) (struct OH_AVFormat \*format, const char \*key, const uint8_t \*addr, size_t size) | 向OH_AVFormat写入一块指定长度的数据。 |
| [OH_AVFormat_GetIntValue](#oh_avformat_getintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t \*out) | 从OH_AVFormat读取Int数据。 |
| [OH_AVFormat_GetLongValue](#oh_avformat_getlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t \*out) | 从OH_AVFormat读取Long数据。 |
| [OH_AVFormat_GetFloatValue](#oh_avformat_getfloatvalue) (struct OH_AVFormat \*format, const char \*key, float \*out) | 从OH_AVFormat读取Float数据。 |
| [OH_AVFormat_GetDoubleValue](#oh_avformat_getdoublevalue) (struct OH_AVFormat \*format, const char \*key, double \*out) | 从OH_AVFormat读取Double数据。 |
| [OH_AVFormat_GetStringValue](#oh_avformat_getstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*\*out) | 从OH_AVFormat读取Double数据。 |
| [OH_AVFormat_GetBuffer](#oh_avformat_getbuffer) (struct OH_AVFormat \*format, const char \*key, uint8_t \*\*addr, size_t \*size) | 从OH_AVFormat读取一块指定长度的数据。 |
| [OH_AVFormat_DumpInfo](#oh_avformat_dumpinfo) (struct OH_AVFormat \*format) | 以字符串的形式输出OH_AVFormat所包含的信息。 |
| [OH_AVMemory_GetAddr](#oh_avmemory_getaddr) (struct OH_AVMemory \*mem) | 获取入参的内存虚拟地址。 |
| [OH_AVMemory_GetSize](#oh_avmemory_getsize) (struct OH_AVMemory \*mem) | 获取入参的内存长度。 |
| \*[OH_AVFormat_Create](#oh_avformat_create) (void) | 创建OH_AVFormat句柄,用于读取数据。 |
| \*[OH_AVFormat_CreateAudioFormat](#oh_avformat_createaudioformat) (const char \*mimeType, int32_t sampleRate, int32_t channelCount) | 创建音频OH_AVFormat句柄指针,用于读写数据。 |
| \*[OH_AVFormat_CreateVideoFormat](#oh_avformat_createvideoformat) (const char \*mimeType, int32_t width, int32_t height) | 创建视频OH_AVFormat句柄指针,用于读写数据。 |
| [OH_AVFormat_Destroy](#oh_avformat_destroy) (struct OH_AVFormat \*format) | 销毁OH_AVFormat句柄。 |
| [OH_AVFormat_Copy](#oh_avformat_copy) (struct OH_AVFormat \*to, struct OH_AVFormat \*from) | 复制OH_AVFormat句柄。 |
| [OH_AVFormat_SetIntValue](#oh_avformat_setintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t value) | 将int数据写入OH_AVFormat。 |
| [OH_AVFormat_SetLongValue](#oh_avformat_setlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t value) | 将long数据写入OH_AVFormat。 |
| [OH_AVFormat_SetFloatValue](#oh_avformat_setfloatvalue) (struct OH_AVFormat \*format, const char \*key, float value) | 将float数据写入OH_AVFormat。 |
| [OH_AVFormat_SetDoubleValue](#oh_avformat_setdoublevalue) (struct OH_AVFormat \*format, const char \*key, double value) | 将double数据写入OH_AVFormat。 |
| [OH_AVFormat_SetStringValue](#oh_avformat_setstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*value) | 将string数据写入OH_AVFormat。 |
| [OH_AVFormat_SetBuffer](#oh_avformat_setbuffer) (struct OH_AVFormat \*format, const char \*key, const uint8_t \*addr, size_t size) | 将指定长度的数据块写入OH_AVFormat。 |
| [OH_AVFormat_GetIntValue](#oh_avformat_getintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t \*out) | 从OH_AVFormat读取int数据。 |
| [OH_AVFormat_GetLongValue](#oh_avformat_getlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t \*out) | 从OH_AVFormat读取long数据。 |
| [OH_AVFormat_GetFloatValue](#oh_avformat_getfloatvalue) (struct OH_AVFormat \*format, const char \*key, float \*out) | 从OH_AVFormat读取float数据。 |
| [OH_AVFormat_GetDoubleValue](#oh_avformat_getdoublevalue) (struct OH_AVFormat \*format, const char \*key, double \*out) | 从OH_AVFormat读取double数据。 |
| [OH_AVFormat_GetStringValue](#oh_avformat_getstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*\*out) | 从OH_AVFormat读取string数据。 |
| [OH_AVFormat_GetBuffer](#oh_avformat_getbuffer) (struct OH_AVFormat \*format, const char \*key, uint8_t \*\*addr, size_t \*size) | 从OH_AVFormat中读取指定长度的数据块。 |
| \*[OH_AVFormat_DumpInfo](#oh_avformat_dumpinfo) (struct OH_AVFormat \*format) | 输出OH_AVFormat中包含的字符串。 |
| \*[OH_AVMemory_Create](#oh_avmemory_create) (int32_t size) | 创建OH_AVMemory实例的指针。 |
| \*[OH_AVMemory_GetAddr](#oh_avmemory_getaddr) (struct OH_AVMemory \*mem) | 获取入参的内存虚拟地址。 |
| [OH_AVMemory_GetSize](#oh_avmemory_getsize) (struct OH_AVMemory \*mem) | 获取入参的内存长度。 |
| [OH_AVMemory_Destroy](#oh_avmemory_destroy) (struct OH_AVMemory \*mem) | 释放OH_AVMemory实例指针的资源。 |
## 类型定义说明
......@@ -71,10 +77,16 @@ Core模块提供用于播放框架的基础骨干能力,包含内存、错误
```
typedef enum OH_AVErrCodeOH_AVErrCode
```
**描述:**
**描述:**
音视频错误码。
@syscap SystemCapability.Multimedia.Media.Core
\@syscap SystemCapability.Multimedia.Media.Core
**起始版本:**
9
### OH_AVPixelFormat
......@@ -83,10 +95,16 @@ typedef enum OH_AVErrCodeOH_AVErrCode
```
typedef enum OH_AVPixelFormatOH_AVPixelFormat
```
**描述:**
AVPixel 格式的枚举。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
视频像素格式的枚举类。
\@syscap SystemCapability.Multimedia.Media.Core
**起始版本:**
9
## 枚举类型说明
......@@ -98,24 +116,30 @@ AVPixel 格式的枚举。
```
enum OH_AVErrCode
```
**描述:**
**描述:**
音视频错误码。
@syscap SystemCapability.Multimedia.Media.Core
\@syscap SystemCapability.Multimedia.Media.Core
**起始版本:**
| 枚举值 | 描述 |
9
| 枚举值 | 描述 |
| -------- | -------- |
| AV_ERR_OK | 操作成功 |
| AV_ERR_NO_MEMORY | 无内存 |
| AV_ERR_OPERATE_NOT_PERMIT | 无效参数 |
| AV_ERR_INVALID_VAL | 无效值 |
| AV_ERR_IO | IO 错误 |
| AV_ERR_TIMEOUT | 超时错误 |
| AV_ERR_UNKNOWN | 未知错误 |
| AV_ERR_SERVICE_DIED | 媒体服务死亡 |
| AV_ERR_INVALID_STATE | 当前状态不支持此操作 |
| AV_ERR_UNSUPPORT | 未支持的接口 |
| AV_ERR_EXTEND_START | 扩展错误码初始值 |
| AV_ERR_OK | 操作成功 |
| AV_ERR_NO_MEMORY | 无内存 |
| AV_ERR_OPERATE_NOT_PERMIT | 操作不允许 |
| AV_ERR_INVALID_VAL | 无效值 |
| AV_ERR_IO | IO错误 |
| AV_ERR_TIMEOUT | 超时错误 |
| AV_ERR_UNKNOWN | 未知错误 |
| AV_ERR_SERVICE_DIED | 服务死亡 |
| AV_ERR_INVALID_STATE | 当前状态不支持此操作 |
| AV_ERR_UNSUPPORT | 未支持的接口 |
| AV_ERR_EXTEND_START | 扩展错误码初始值 |
### OH_AVPixelFormat
......@@ -124,18 +148,24 @@ enum OH_AVErrCode
```
enum OH_AVPixelFormat
```
**描述:**
AVPixel 格式的枚举。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
视频像素格式的枚举类。
\@syscap SystemCapability.Multimedia.Media.Core
**起始版本:**
9
| 枚举值 | 描述 |
| 枚举值 | 描述 |
| -------- | -------- |
| AV_PIXEL_FORMAT_YUVI420 | yuv 420 planar |
| AV_PIXEL_FORMAT_NV12 | NV12. yuv 420 semiplanar |
| AV_PIXEL_FORMAT_NV21 | NV21. yvu 420 semiplanar |
| AV_PIXEL_FORMAT_SURFACE_FORMAT | surface格式 |
| AV_PIXEL_FORMAT_RGBA | RGBA8888 |
| AV_PIXEL_FORMAT_YUVI420 | yuv 420 planar |
| AV_PIXEL_FORMAT_NV12 | NV12. yuv 420 semiplanar |
| AV_PIXEL_FORMAT_NV21 | NV21. yvu 420 semiplanar |
| AV_PIXEL_FORMAT_SURFACE_FORMAT | surface格式 |
| AV_PIXEL_FORMAT_RGBA | RGBA8888 |
## 函数说明
......@@ -147,23 +177,27 @@ AVPixel 格式的枚举。
```
bool OH_AVFormat_Copy (struct OH_AVFormat * to, struct OH_AVFormat * from )
```
**描述:**
拷贝OH_AVFormat句柄资源.
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
**参数:**
复制OH_AVFormat句柄。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| to | 接收数据的OH_AVFormat句柄指针 |
| from | 被拷贝数据的OH_AVFormat句柄指针 |
| to | OH_AVFormat句柄,用于接收数据 |
| from | 指向复制数据的OH_AVFormat句柄的指针 |
**返回:**
**返回:**
返回值为true表示成功,为false表示失败
返回值为TRUE表示成功
**起始版本:**
返回值为FALSE表示失败
9
### OH_AVFormat_Create()
......@@ -172,14 +206,80 @@ bool OH_AVFormat_Copy (struct OH_AVFormat * to, struct OH_AVFormat * from )
```
struct OH_AVFormat* OH_AVFormat_Create (void )
```
**描述:**
创建一个OH_AVFormat句柄指针,用以读写数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
创建OH_AVFormat句柄,用于读取数据。
\@syscap SystemCapability.Multimedia.Media.Core
**返回:**
返回指向OH_AVFormat实例的指针
**起始版本:**
9
### OH_AVFormat_CreateAudioFormat()
```
struct OH_AVFormat* OH_AVFormat_CreateAudioFormat (const char * mimeType, int32_t sampleRate, int32_t channelCount )
```
**描述:**
**返回:**
创建音频OH_AVFormat句柄指针,用于读写数据。
返回OH_AVFormat实例的指针
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mimeType | MIME类型 |
| sampleRate | 采样率,单位Hz。 |
| channelCount | 声道个数,如1为单声道,2为双声道。 |
**返回:**
返回指向OH_AVFormat实例的指针。
**起始版本:**
10
### OH_AVFormat_CreateVideoFormat()
```
struct OH_AVFormat* OH_AVFormat_CreateVideoFormat (const char * mimeType, int32_t width, int32_t height )
```
**描述:**
创建视频OH_AVFormat句柄指针,用于读写数据。
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mimeType | MIME类型 |
| width | 宽度,单位为px。 |
| height | 高度,单位为px。 |
**返回:**
返回指向OH_AVFormat实例的指针。
**起始版本:**
10
### OH_AVFormat_Destroy()
......@@ -188,20 +288,22 @@ struct OH_AVFormat* OH_AVFormat_Create (void )
```
void OH_AVFormat_Destroy (struct OH_AVFormat * format)
```
**描述:**
销毁指定OH_AVFormat句柄资源。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
销毁OH_AVFormat句柄。
**参数:**
\@syscap SystemCapability.Multimedia.Media.Core
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| format | 指向OH_AVFormat实例的指针 |
**返回:**
**起始版本:**
void
9
### OH_AVFormat_DumpInfo()
......@@ -210,20 +312,26 @@ void
```
const char* OH_AVFormat_DumpInfo (struct OH_AVFormat * format)
```
**描述:**
以字符串的形式输出OH_AVFormat所包含的信息。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
**参数:**
输出OH_AVFormat中包含的字符串。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| format | 指向OH_AVFormat实例的指针 |
**返回:**
**返回:**
返回一个由key和data组成的字符串。
返回由键值和数据组成的字符串指针
**起始版本:**
9
### OH_AVFormat_GetBuffer()
......@@ -232,25 +340,29 @@ const char* OH_AVFormat_DumpInfo (struct OH_AVFormat * format)
```
bool OH_AVFormat_GetBuffer (struct OH_AVFormat * format, const char * key, uint8_t ** addr, size_t * size )
```
**描述:**
从OH_AVFormat读取一块指定长度的数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
**参数:**
从OH_AVFormat中读取指定长度的数据块。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读写数据的键值 |
| addr | 生命周期是format持有,伴随format销毁,如果调用者需要长期持有,必须进行内存拷贝 |
| size | 读写数据的长度 |
| format | 指向OH_AVFormat实例的指针。 |
| key | 读写数据的键。 |
| addr | 生命周期与format相同,与format一同销毁。 如果调用者需要长时间保持它,必须进行内存拷贝。 |
| size | 读写数据的长度。 |
**返回:**
**返回:**
返回值为true表示成功,为false表示失败。
返回值为TRUE表示成功
**起始版本:**
返回值为FALSE表示失败
9
### OH_AVFormat_GetDoubleValue()
......@@ -259,24 +371,28 @@ bool OH_AVFormat_GetBuffer (struct OH_AVFormat * format, const char * key, uint8
```
bool OH_AVFormat_GetDoubleValue (struct OH_AVFormat * format, const char * key, double * out )
```
**描述:**
从OH_AVFormat读取Double数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
从OH_AVFormat读取double数据。
**参数:**
\@syscap SystemCapability.Multimedia.Media.Core
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键 |
| out | 读取的数据 |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键 |
| out | 读取数据的值 |
**返回:**
**返回**
返回值为TRUE表示成功
返回值为true表示成功,为false表示失败
返回值为FALSE表示失败
**起始版本:**
9
### OH_AVFormat_GetFloatValue()
......@@ -285,24 +401,28 @@ bool OH_AVFormat_GetDoubleValue (struct OH_AVFormat * format, const char * key,
```
bool OH_AVFormat_GetFloatValue (struct OH_AVFormat * format, const char * key, float * out )
```
**描述:**
**描述:**
从OH_AVFormat读取Float数据。
@syscap SystemCapability.Multimedia.Media.Core
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键 |
| out | 读取数据的值 |
**返回:**
**返回:**
返回值为true表示成功,为false表示失败
返回值为TRUE表示成功
**起始版本:**
返回值为FALSE表示失败
9
### OH_AVFormat_GetIntValue()
......@@ -311,24 +431,24 @@ bool OH_AVFormat_GetFloatValue (struct OH_AVFormat * format, const char * key, f
```
bool OH_AVFormat_GetIntValue (struct OH_AVFormat * format, const char * key, int32_t * out )
```
**描述:**
从OH_AVFormat读取Int数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
**参数:**
从OH_AVFormat读取int数据。
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
**返回:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键 |
| out | 读取数据的值 |
返回值为TRUE表示成功
**返回:**
返回值为FALSE表示失败
返回值为true表示成功,为false表示失败
### OH_AVFormat_GetLongValue()
......@@ -337,24 +457,28 @@ bool OH_AVFormat_GetIntValue (struct OH_AVFormat * format, const char * key, int
```
bool OH_AVFormat_GetLongValue (struct OH_AVFormat * format, const char * key, int64_t * out )
```
**描述:**
从OH_AVFormat读取Long数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
从OH_AVFormat读取long数据。
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键 |
| out | 读取的数据 |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键 |
| out | 读取数据的值 |
**返回:**
**返回**
返回值为TRUE表示成功
返回值为true表示成功,为false表示失败
返回值为FALSE表示失败
**起始版本:**
9
### OH_AVFormat_GetStringValue()
......@@ -363,24 +487,28 @@ bool OH_AVFormat_GetLongValue (struct OH_AVFormat * format, const char * key, in
```
bool OH_AVFormat_GetStringValue (struct OH_AVFormat * format, const char * key, const char ** out )
```
**描述:**
从OH_AVFormat读取Double数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
**参数:**
从OH_AVFormat读取string数据。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的字符串指针,指向的数据生命周期伴随GetString更新,伴随format销毁,如果调用者需要长期持有,必须进行内存拷贝 |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键 |
| out | 读取string指针,out数据的生命周期与format内string对应。 如果调用者需要长时间保持它,必须内存拷贝 |
**返回:**
**返回:**
返回值为true表示成功,为false表示失败
返回值为TRUE表示成功
**起始版本:**
返回值为FALSE表示失败
9
### OH_AVFormat_SetBuffer()
......@@ -389,25 +517,29 @@ bool OH_AVFormat_GetStringValue (struct OH_AVFormat * format, const char * key,
```
bool OH_AVFormat_SetBuffer (struct OH_AVFormat * format, const char * key, const uint8_t * addr, size_t size )
```
**描述:**
向OH_AVFormat写入一块指定长度的数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
将指定长度的数据块写入OH_AVFormat。
**参数:**
\@syscap SystemCapability.Multimedia.Media.Core
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| addr | 写入的数据地址 |
| size | 写入的数据长度 |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| addr | 写入数据的地址 |
| size | 写入数据的长度 |
**返回:**
**返回**
返回值为TRUE表示成功
返回值为true表示成功,为false表示失败
返回值为FALSE表示失败
**起始版本:**
9
### OH_AVFormat_SetDoubleValue()
......@@ -416,24 +548,28 @@ bool OH_AVFormat_SetBuffer (struct OH_AVFormat * format, const char * key, const
```
bool OH_AVFormat_SetDoubleValue (struct OH_AVFormat * format, const char * key, double value )
```
**描述:**
向OH_AVFormat写入Double数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
将double数据写入OH_AVFormat。
**参数:**
\@syscap SystemCapability.Multimedia.Media.Core
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| value | 写入数据的值 |
**返回:**
**返回:**
返回值为true表示成功,为false表示失败
返回值为TRUE表示成功
**起始版本:**
返回值为FALSE表示失败
9
### OH_AVFormat_SetFloatValue()
......@@ -442,24 +578,28 @@ bool OH_AVFormat_SetDoubleValue (struct OH_AVFormat * format, const char * key,
```
bool OH_AVFormat_SetFloatValue (struct OH_AVFormat * format, const char * key, float value )
```
**描述:**
向OH_AVFormat写入Float数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
将float数据写入OH_AVFormat。
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| value | 写入的数据 |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| value | 写入数据的值 |
**返回:**
**返回**
返回值为TRUE表示成功
返回值为true表示成功,为false表示失败
返回值为FALSE表示失败
**起始版本:**
9
### OH_AVFormat_SetIntValue()
......@@ -468,24 +608,28 @@ bool OH_AVFormat_SetFloatValue (struct OH_AVFormat * format, const char * key, f
```
bool OH_AVFormat_SetIntValue (struct OH_AVFormat * format, const char * key, int32_t value )
```
**描述:**
向OH_AVFormat写入Int数据.
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
**参数:**
将int数据写入OH_AVFormat。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| value | 写入的数据 |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| value | 写入数据的值 |
**返回:**
**返回**
返回值为TRUE表示成功
返回值为true表示成功,为false表示失败
返回值为FALSE表示失败
**起始版本:**
9
### OH_AVFormat_SetLongValue()
......@@ -494,24 +638,28 @@ bool OH_AVFormat_SetIntValue (struct OH_AVFormat * format, const char * key, int
```
bool OH_AVFormat_SetLongValue (struct OH_AVFormat * format, const char * key, int64_t value )
```
**描述:**
向OH_AVFormat写入Long数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
将long数据写入OH_AVFormat。
**参数:**
\@syscap SystemCapability.Multimedia.Media.Core
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| value | 写入的数据 |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| value | 写入数据的值 |
**返回:**
**返回**
返回值为TRUE表示成功
返回值为true表示成功,为false表示失败
返回值为FALSE表示失败
**起始版本:**
9
### OH_AVFormat_SetStringValue()
......@@ -520,24 +668,84 @@ bool OH_AVFormat_SetLongValue (struct OH_AVFormat * format, const char * key, in
```
bool OH_AVFormat_SetStringValue (struct OH_AVFormat * format, const char * key, const char * value )
```
**描述:**
向OH_AVFormat写入String数据。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
将string数据写入OH_AVFormat。
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| value | 写入的数据 |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键 |
| value | 写入数据的值 |
**返回:**
**返回**
返回值为TRUE表示成功
返回值为true表示成功,为false表示失败
返回值为FALSE表示失败
**起始版本:**
9
### OH_AVMemory_Create()
```
OH_AVMemory* OH_AVMemory_Create (int32_t size)
```
**描述:**
创建OH_AVMemory实例的指针
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| size | 创建内存的大小,单位字节 |
**返回:**
如果创建成功返回OH_AVMemory实例的指针,如果失败,返回nullptr, 使用结束后需要通过OH_AVMemory_Destroy释放内存
**起始版本:**
10
### OH_AVMemory_Destroy()
```
OH_AVErrCode OH_AVMemory_Destroy (struct OH_AVMemory * mem)
```
**描述:**
释放OH_AVMemory实例指针的资源
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mem | 指向OH_AVMemory实例的指针 |
**返回:**
如果释放成功返回AV_ERR_OK, 如果失败返回具体错误码, 参考[OH_AVErrCode](#oh_averrcode)
**起始版本:**
10
### OH_AVMemory_GetAddr()
......@@ -546,22 +754,26 @@ bool OH_AVFormat_SetStringValue (struct OH_AVFormat * format, const char * key,
```
uint8_t* OH_AVMemory_GetAddr (struct OH_AVMemory * mem)
```
**描述:**
获取入参的内存虚拟地址。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
获取入参的内存虚拟地址
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| mem | 指向OH_AVMemory实例的指针 |
| mem | 指向OH_AVMemory实例的指针 |
**返回:**
**返回**
如果内存有效,返回内存的虚拟地址
如果内存有效,返回内存的虚拟地址,如果内存无效,返回nullptr
如果内存无效,返回nullptr
**起始版本:**
9
### OH_AVMemory_GetSize()
......@@ -570,19 +782,23 @@ uint8_t* OH_AVMemory_GetAddr (struct OH_AVMemory * mem)
```
int32_t OH_AVMemory_GetSize (struct OH_AVMemory * mem)
```
**描述:**
获取入参的内存长度。
@syscap SystemCapability.Multimedia.Media.Core
**描述:**
**参数:**
获取入参的内存长度
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mem | 指向OH_AVMemory实例的指针 |
| mem | 指向OH_AVMemory实例的指针 |
**返回:**
**返回**
如果内存有效,返回内存长度
如果内存有效,返回内存长度,如果内存无效,返回-1
如果内存无效,返回-1
**起始版本:**
9
......@@ -3,14 +3,15 @@
## 概述
AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告的信息,以确保AVCodec正常运转。
OH_AVCodec中所有异步回调函数指针的集合。将该结构体的实例注册到OH_AVCodec实例中, 并处理回调上报的信息,以保证OH_AVCodec的正常运行。
\@syscap SystemCapability.Multimedia.Media.CodecBase
@syscap SystemCapability.Multimedia.Media.CodecBase
参数
**起始版本:**
9
**相关模块:**
**相关模块**
[CodecBase](_codec_base.md)
......@@ -20,9 +21,76 @@ AVCodec所有的异步回调函数指针集合。注册一个该结构体实例
### 成员变量
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| **onError** | 监听AVCodec运行错误,参考[OH_AVCodecOnError](_codec_base.md#oh_avcodeconerror) |
| **onStreamChanged** | 监听编解码流信息,参考[OH_AVCodecOnStreamChanged](_codec_base.md#oh_avcodeconstreamchanged) |
| **onNeedInputData** | 监听编解码需要输入数据,参考[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) |
| **onNeedOutputData** | 监听编解码产生输出数据,参考[OH_AVCodecOnNewOutputData](_codec_base.md#oh_avcodeconnewoutputdata) |
| [onError](#onerror) | 监控编解码器操作错误,请参见[OH_AVCodecOnError](_codec_base.md#oh_avcodeconerror) |
| [onStreamChanged](#onstreamchanged) | 监控编解码器流变化,请参见[OH_AVCodecOnStreamChanged](_codec_base.md#oh_avcodeconstreamchanged) |
| [onNeedInputData](#onneedinputdata) | 监控编解码器需要输入数据,请参见[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) |
| [onNeedOutputData](#onneedoutputdata) | 监控编解码器已生成输出数据,请参见[OH_AVCodecOnNewOutputData](_codec_base.md#oh_avcodeconnewoutputdata) |
## 结构体成员变量说明
### onError
```
OH_AVCodecOnError onError
```
**描述:**
监控编解码器操作错误,请参见[OH_AVCodecOnError](_codec_base.md#oh_avcodeconerror)
**起始版本:**
9
### onNeedInputData
```
OH_AVCodecOnNeedInputData onNeedInputData
```
**描述:**
监控编解码器需要输入数据,请参见[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)
**起始版本:**
9
### onNeedOutputData
```
OH_AVCodecOnNewOutputData onNeedOutputData
```
**描述:**
监控编解码器已生成输出数据,请参见[OH_AVCodecOnNewOutputData](_codec_base.md#oh_avcodeconnewoutputdata)
**起始版本:**
9
### onStreamChanged
```
OH_AVCodecOnStreamChanged onStreamChanged
```
**描述:**
监控编解码器流变化,请参见[OH_AVCodecOnStreamChanged](_codec_base.md#oh_avcodeconstreamchanged)
**起始版本:**
9
......@@ -3,14 +3,15 @@
## 概述
定义OH_AVCodec的Buffer描述信息。
定义OH_AVCodec的缓冲区描述信息。
@syscap SystemCapability.Multimedia.Media.CodecBase
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
9
**相关模块:**
**相关模块**
[CodecBase](_codec_base.md)
......@@ -20,9 +21,76 @@
### 成员变量
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [pts](_codec_base.md#pts) | 以微秒为单位表示的该Buffer的Presentation时间戳 |
| [size](_codec_base.md#size) | 以字节为单位表示的该Buffer内所包含数据的大小 |
| [offset](_codec_base.md#offset) | 有效数据在该Buffer内的起始偏移量 |
| [flags](_codec_base.md#flags) | 该Buffer具有的标记,也是多个[OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags)的组合 |
| [pts](#pts) | 此缓冲区的显示时间戳(以微秒为单位) |
| [size](#size) | 缓冲区中包含的数据的大小(以字节为单位) |
| [offset](#offset) | 此缓冲区中有效数据的起始偏移量 |
| [flags](#flags) | 此缓冲区具有的标志,也是多个[OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags)的组合。 |
## 结构体成员变量说明
### pts
```
int64_t pts
```
**描述:**
此缓冲区的显示时间戳(以微秒为单位)
**起始版本:**
9
### size
```
int32_t size
```
**描述:**
缓冲区中包含的数据的大小(以字节为单位)
**起始版本:**
9
### offset
```
int32_t offset
```
**描述:**
此缓冲区中有效数据的起始偏移量
**起始版本:**
9
### flags
```
uint32_t flags
```
**描述:**
此缓冲区具有的标志,也是多个[OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags)的组合。
**起始版本:**
9
# OH_AVRange
## 概述
范围包含最小值和最大值。
\@syscap SystemCapability.Multimedia.Media.CodecBase
**起始版本:**
10
**相关模块:**
[AVCapability](_a_v_capability.md)
## 汇总
### 成员变量
| 名称 | 描述 |
| -------- | -------- |
| [minVal](#minval) | 范围下限 |
| [maxVal](#maxval) | 范围上限 |
## 结构体成员变量说明
### minVal
```
int32_t minVal
```
**描述:**
范围下限
**起始版本:**
10
### maxVal
```
int32_t maxVal
```
**描述:**
范围上限
**起始版本:**
10
......@@ -3,11 +3,12 @@
## 概述
VideoDecoder模块提供用于视频解码功能的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认
VideoDecoder模块提供用于视频解码的函数
@syscap SystemCapability.Multimedia.Media.VideoDecoder
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**起始版本:**
9
......@@ -16,31 +17,32 @@ VideoDecoder模块提供用于视频解码功能的函数。该模块在部分
### 文件
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_videodecoder.h](native__avcodec__videodecoder_8h.md) | 声明用于视频解码的Native API。<br>引用文件:<multimedia/player_framework/native_avcodec_videodecoder.h> |
### 函数
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoDecoder_CreateByMime](#oh_videodecoder_createbymime) (const char \*mime) | 通过mime类型创建一个视频解码器实例,大多数情况下推荐使用该接口。 |
| [OH_VideoDecoder_CreateByName](#oh_videodecoder_createbyname) (const char \*name) | 通过视频解码器名称创建一个视频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。 |
| [OH_VideoDecoder_Destroy](#oh_videodecoder_destroy) (OH_AVCodec \*codec) | 清空解码器内部资源,并销毁解码器实例。 |
| [OH_VideoDecoder_SetCallback](#oh_videodecoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,使得你的应用能够响应视频解码器产生的事件,该接口被调用必须是在Prepare被调用前。 |
| [OH_VideoDecoder_SetSurface](#oh_videodecoder_setsurface) (OH_AVCodec \*codec, OHNativeWindow \*window) | 指定输出Surface,以提供视频解码输出,该接口被调用必须是在Prepare被调用前。 |
| [OH_VideoDecoder_Configure](#oh_videodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置视频解码器,典型地,需要配置被解码视频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。 |
| [OH_VideoDecoder_Prepare](#oh_videodecoder_prepare) (OH_AVCodec \*codec) | 准备解码器内部资源,调用该接口前必须先调用Configure接口。 |
| [OH_VideoDecoder_Start](#oh_videodecoder_start) (OH_AVCodec \*codec) | 启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。 |
| [OH_VideoDecoder_Stop](#oh_videodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。 |
| [OH_VideoDecoder_Flush](#oh_videodecoder_flush) (OH_AVCodec \*codec) | 清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。 |
| [OH_VideoDecoder_Reset](#oh_videodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。 |
| [OH_VideoDecoder_GetOutputDescription](#oh_videodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期 将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。 |
| [OH_VideoDecoder_SetParameter](#oh_videodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。 |
| [OH_VideoDecoder_PushInputData](#oh_videodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | 将填充好数据的输入Buffer提交给视频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入 Codec-Specific-Data,用以初始化解码器的解码过程,例如H264格式的PPS/SPS数据。 |
| [OH_VideoDecoder_RenderOutputData](#oh_videodecoder_renderoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给解码器,并通知解码器完成将该Buffer内包含的解码后的数据在输出Surface上渲染。 如果先前未配置输出Surface,调用该接口仅仅将指定索引对应的输出Buffer交还给解码器。 |
| [OH_VideoDecoder_FreeOutputData](#oh_videodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给解码器。 |
| \*[OH_VideoDecoder_CreateByMime](#oh_videodecoder_createbymime) (const char \*mime) | 从MIME类型创建视频解码器实例,大多数情况下建议使用。 |
| \*[OH_VideoDecoder_CreateByName](#oh_videodecoder_createbyname) (const char \*name) | 通过视频解码器名称创建视频解码器实例。 使用此接口的前提是知道解码器的确切名称。 |
| [OH_VideoDecoder_Destroy](#oh_videodecoder_destroy) (OH_AVCodec \*codec) | 清理解码器内部资源,销毁解码器实例。 |
| [OH_VideoDecoder_SetCallback](#oh_videodecoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,以便您的应用程序可以响应视频解码器生成的事件。 |
| [OH_VideoDecoder_SetSurface](#oh_videodecoder_setsurface) (OH_AVCodec \*codec, OHNativeWindow \*window) | 指定输出表面以提供视频解码输出,必须在调用Prepare之前调用此接口。 |
| [OH_VideoDecoder_Configure](#oh_videodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置视频解码器,通常需要配置解码视频轨迹的描述信息,这些信息可以从容器中提取。 |
| [OH_VideoDecoder_Prepare](#oh_videodecoder_prepare) (OH_AVCodec \*codec) | 要准备解码器的内部资源,在调用该接口之前,必须调用Configure接口。 |
| [OH_VideoDecoder_Start](#oh_videodecoder_start) (OH_AVCodec \*codec) | 启动解码器,准备成功后必须调用此接口。 |
| [OH_VideoDecoder_Stop](#oh_videodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。 |
| [OH_VideoDecoder_Flush](#oh_videodecoder_flush) (OH_AVCodec \*codec) | 清除解码器中缓存的输入和输出数据。 |
| [OH_VideoDecoder_Reset](#oh_videodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。 |
| \*[OH_VideoDecoder_GetOutputDescription](#oh_videodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取解码器输出数据的描述信息。 |
| [OH_VideoDecoder_SetParameter](#oh_videodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 设置解码器的动态参数。 |
| [OH_VideoDecoder_PushInputData](#oh_videodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr) | 将填充数据的输入缓冲区提交给视频解码器。 |
| [OH_VideoDecoder_RenderOutputData](#oh_videodecoder_renderoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出Buffer返回给解码器,并通知解码器完成在输出表面上渲染Buffer中包含的解码数据。 |
| [OH_VideoDecoder_FreeOutputData](#oh_videodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回到解码器。 |
| [OH_VideoDecoder_IsValid](#oh_videodecoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前编解码实例是否有效。 |
## 函数说明
......@@ -52,23 +54,29 @@ VideoDecoder模块提供用于视频解码功能的函数。该模块在部分
```
OH_AVErrCode OH_VideoDecoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置视频解码器,典型地,需要配置被解码视频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
配置视频解码器,通常需要配置解码视频轨迹的描述信息,这些信息可以从容器中提取。
在调用准备之前,必须调用此接口。
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | 指向OH_AVFormat的指针,用以给出待解码视频轨道的描述信息 |
| codec | 指向OH_AVCodec实例的指针 |
| format | 指向OH_AVFormat的指针,用于给出要解码的视频轨道的描述 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoDecoder_CreateByMime()
......@@ -77,20 +85,26 @@ OH_AVErrCode OH_VideoDecoder_Configure (OH_AVCodec * codec, OH_AVFormat * format
```
OH_AVCodec* OH_VideoDecoder_CreateByMime (const char * mime)
```
**描述:**
通过mime类型创建一个视频解码器实例,大多数情况下推荐使用该接口。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
**参数:**
从MIME类型创建视频解码器实例,大多数情况下建议使用。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mime | mime类型描述字符串,参考[OH_AVCODEC_MIMETYPE_VIDEO_AVC](_codec_base.md#oh_avcodec_mimetype_video_avc) |
| mime | MIME类型描述字符串,请参阅{\@链接AVCODEC_MIME_TYPE}。 |
**返回:**
**返回**
返回一个指向OH_AVCodec实例的指针
返回一个指向OH_AVCodec实例的指针。
**起始版本:**
9
### OH_VideoDecoder_CreateByName()
......@@ -99,20 +113,26 @@ OH_AVCodec* OH_VideoDecoder_CreateByMime (const char * mime)
```
OH_AVCodec* OH_VideoDecoder_CreateByName (const char * name)
```
**描述:**
通过视频解码器名称创建一个视频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
通过视频解码器名称创建视频解码器实例。 使用此接口的前提是知道解码器的确切名称。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| name | 视频解码器名称 |
| name | 视频编解码器名称。 |
**返回:**
**返回:**
返回指向OH_AVCodec实例的指针。
返回一个指向OH_AVCodec实例的指针
**起始版本:**
9
### OH_VideoDecoder_Destroy()
......@@ -121,22 +141,26 @@ OH_AVCodec* OH_VideoDecoder_CreateByName (const char * name)
```
OH_AVErrCode OH_VideoDecoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空解码器内部资源,并销毁解码器实例。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
清理解码器内部资源,销毁解码器实例。
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoDecoder_Flush()
......@@ -145,22 +169,28 @@ OH_AVErrCode OH_VideoDecoder_Destroy (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoDecoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
清除解码器中缓存的输入和输出数据。
**参数:**
调用此接口后,以前通过异步回调上报的所有缓冲区索引都将失效, 请确保不要访问这些索引对应的缓冲区。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoDecoder_FreeOutputData()
......@@ -169,23 +199,27 @@ OH_AVErrCode OH_VideoDecoder_Flush (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoDecoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给解码器。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
将处理后的输出缓冲区返回到解码器。
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输出Buffer对应的索引值 |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输出Buffer对应的索引值 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoDecoder_GetOutputDescription()
......@@ -194,20 +228,57 @@ OH_AVErrCode OH_VideoDecoder_FreeOutputData (OH_AVCodec * codec, uint32_t index
```
OH_AVFormat* OH_VideoDecoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期 将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
获取解码器输出数据的描述信息,参见{\@链接OH_AVFormat}。
需要注意的是,返回值指向的OH_AVFormat实例的生命周期需要调用者手动释放。
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
返回指向OH_AVFormat实例的指针。
**起始版本:**
9
### OH_VideoDecoder_IsValid()
```
OH_AVErrCode OH_VideoDecoder_IsValid (OH_AVCodec * codec, bool * isValid )
```
**描述:**
检查当前编解码实例是否有效。可用于后台故障恢复或APP回切。
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
| isVaild | 输出参数。指向布尔实例的指针,如果编解码器实例有效,则为true,如果编解码器实例无效,则为false。 |
**返回:**
**返回**
返回AVFormat实例的指针
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_VideoDecoder_Prepare()
......@@ -216,22 +287,26 @@ OH_AVFormat* OH_VideoDecoder_GetOutputDescription (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoDecoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备解码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
要准备解码器的内部资源,在调用该接口之前,必须调用Configure接口。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoDecoder_PushInputData()
......@@ -240,24 +315,34 @@ OH_AVErrCode OH_VideoDecoder_Prepare (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoDecoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
```
**描述:**
将填充好数据的输入Buffer提交给视频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入 Codec-Specific-Data,用以初始化解码器的解码过程,例如H264格式的PPS/SPS数据。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
将填充数据的输入缓冲区提交给视频解码器。
**OH_AVCodecOnNeedInputData**回调将报告可用的输入缓冲区和相应的索引值。
一旦具有指定索引的缓冲区提交到视频解码器,则无法再次访问缓冲区,直到再次收到**OH_AVCodecOnNeedInputData**回调,报告具有相同索引的缓冲区可用。
**参数:**
此外,对于某些解码器,需要在开始时向解码器输入编解码特定数据,以初始化解码器的解码过程,如H264格式的PPS/SPS数据。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输入Buffer对应的索引值 |
| attr | 描述该Buffer内所包含数据的信息 |
| codec | 指向OH_AVCodec实例的指针。 |
| index | 输入Buffer对应的索引值。 |
| attr | 描述缓冲区中包含的数据的信息。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoDecoder_RenderOutputData()
......@@ -266,23 +351,29 @@ OH_AVErrCode OH_VideoDecoder_PushInputData (OH_AVCodec * codec, uint32_t index,
```
OH_AVErrCode OH_VideoDecoder_RenderOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给解码器,并通知解码器完成将该Buffer内包含的解码后的数据在输出Surface上渲染。 如果先前未配置输出Surface,调用该接口仅仅将指定索引对应的输出Buffer交还给解码器。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
将处理后的输出Buffer返回给解码器,并通知解码器完成在输出表面上渲染Buffer中包含的解码数据。
如果之前没有配置输出表面,则调用此接口仅将指定索引对应的输出缓冲区返回给解码器。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输出Buffer对应的索引值 |
| codec | 指向OH_AVCodec实例的指针。 |
| index | 输出Buffer对应的索引值。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoDecoder_Reset()
......@@ -291,22 +382,26 @@ OH_AVErrCode OH_VideoDecoder_RenderOutputData (OH_AVCodec * codec, uint32_t inde
```
OH_AVErrCode OH_VideoDecoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoDecoder_SetCallback()
......@@ -315,24 +410,30 @@ OH_AVErrCode OH_VideoDecoder_Reset (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoDecoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
```
**描述:**
设置异步回调函数,使得你的应用能够响应视频解码器产生的事件,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
设置异步回调函数,以便您的应用程序可以响应视频解码器生成的事件。
**参数:**
在调用Prepare之前,必须调用此接口。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据 |
| codec | 指向OH_AVCodec实例的指针 |
| callback | 所有回调函数的集合,请参见{\@链接OH_AVCodecAsyncCallback}。 |
| userData | 用户特定数据 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoDecoder_SetParameter()
......@@ -341,23 +442,29 @@ OH_AVErrCode OH_VideoDecoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCal
```
OH_AVErrCode OH_VideoDecoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
设置解码器的动态参数。
注意,该接口只能在解码器启动后调用。 同时,参数配置错误可能会导致解码失败。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | 指向OH_AVFormat实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
| format | 指向OH_AVFormat实例的指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoDecoder_SetSurface()
......@@ -366,23 +473,27 @@ OH_AVErrCode OH_VideoDecoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * for
```
OH_AVErrCode OH_VideoDecoder_SetSurface (OH_AVCodec * codec, OHNativeWindow * window )
```
**描述:**
指定输出Surface,以提供视频解码输出,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
**参数:**
指定输出表面以提供视频解码输出,必须在调用Prepare之前调用此接口。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| window | 指向一个OHNativeWindow实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
| window | 指向OHNativeWindow实例的指针,请参见{\@链接OHNativeWindow}。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoDecoder_Start()
......@@ -391,22 +502,28 @@ OH_AVErrCode OH_VideoDecoder_SetSurface (OH_AVCodec * codec, OHNativeWindow * wi
```
OH_AVErrCode OH_VideoDecoder_Start (OH_AVCodec * codec)
```
**描述:**
启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
启动解码器,准备成功后必须调用此接口。
成功启动后,解码器将开始报告NeedInputData事件。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoDecoder_Stop()
......@@ -415,19 +532,25 @@ OH_AVErrCode OH_VideoDecoder_Start (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoDecoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**描述:**
停止解码器。停止后,您可以通过Start重新进入Started状态。
但需要注意的是,如果编解码器特定数据以前已输入到解码器,则需要再次输入。
\@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
......@@ -3,56 +3,61 @@
## 概述
VideoEncoder模块提供用于视频编码功能的函数和枚举。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认
VideoEncoder模块提供用于视频编码功能的函数。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
\@syscap SystemCapability.Multimedia.Avcodec.VideoEncoder
**起始版本:**
9
## 汇总
### 文件
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_videoencoder.h](native__avcodec__videoencoder_8h.md) | 声明用于视频编码的Native API。<br>引用文件:<multimedia/player_framework/native_avcodec_videoencoder.h> |
### 类型定义
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncodeBitrateMode](#oh_videoencodebitratemode) | 视频编码的比特率模式。 |
| [OH_VideoEncodeBitrateMode](#oh_videoencodebitratemode) | 视频编码器的比特率模式。 |
### 枚举
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncodeBitrateMode](#oh_videoencodebitratemode) { **CBR** = 0, **VBR** = 1, **CQ** = 2 } | 视频编码的比特率模式。 |
| [OH_VideoEncodeBitrateMode](#oh_videoencodebitratemode) { **CBR** = 0, **VBR** = 1, **CQ** = 2 } | 视频编码器的比特率模式。 |
### 函数
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncoder_CreateByMime](#oh_videoencoder_createbymime) (const char \*mime) | 通过mime类型创建一个视频编码器实例,大多数情况下推荐使用该接口。 |
| [OH_VideoEncoder_CreateByName](#oh_videoencoder_createbyname) (const char \*name) | 通过视频编码器名称创建一个视频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。 |
| [OH_VideoEncoder_Destroy](#oh_videoencoder_destroy) (OH_AVCodec \*codec) | 清空编码器内部资源,并销毁编码器实例。 |
| [OH_VideoEncoder_SetCallback](#oh_videoencoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,使得你的应用能够响应视频编码器产生的事件,该接口被调用必须是在Prepare被调用前。 |
| [OH_VideoEncoder_Configure](#oh_videoencoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置视频编码器,典型地,需要配置被编码视频轨道的描述信息,该接口被调用必须是在Prepare被调用前。 |
| [OH_VideoEncoder_Prepare](#oh_videoencoder_prepare) (OH_AVCodec \*codec) | 准备编码器内部资源,调用该接口前必须先调用Configure接口。 |
| [OH_VideoEncoder_Start](#oh_videoencoder_start) (OH_AVCodec \*codec) | 启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。 |
| [OH_VideoEncoder_Stop](#oh_videoencoder_stop) (OH_AVCodec \*codec) | 停止编码器。在停止后可通过Start重新进入Started状态。 |
| [OH_VideoEncoder_Flush](#oh_videoencoder_flush) (OH_AVCodec \*codec) | 清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。 |
| [OH_VideoEncoder_Reset](#oh_videoencoder_reset) (OH_AVCodec \*codec) | 重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。 |
| [OH_VideoEncoder_GetOutputDescription](#oh_videoencoder_getoutputdescription) (OH_AVCodec \*codec) | 获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期 将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。 |
| [OH_VideoEncoder_SetParameter](#oh_videoencoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。 |
| [OH_VideoEncoder_GetSurface](#oh_videoencoder_getsurface) (OH_AVCodec \*codec, OHNativeWindow \*\*window) | 从视频编码器获取输入Surface, 该接口被调用必须是在Prepare被调用前。 |
| [OH_VideoEncoder_FreeOutputData](#oh_videoencoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给编码器。 |
| [OH_VideoEncoder_NotifyEndOfStream](#oh_videoencoder_notifyendofstream) (OH_AVCodec \*codec) | 通知视频编码器输入码流已结束。surface模式推荐使用该接口通知编码器码流结束。 |
| \*[OH_VideoEncoder_CreateByMime](#oh_videoencoder_createbymime) (const char \*mime) | 多数情况下,推荐从MIME类型创建视频编码器实例。 |
| \*[OH_VideoEncoder_CreateByName](#oh_videoencoder_createbyname) (const char \*name) | 通过视频编码器名称创建一个视频编码器实例。使用此接口的前提是知道编码器的确切名称。 |
| [OH_VideoEncoder_Destroy](#oh_videoencoder_destroy) (OH_AVCodec \*codec) | 清除编码器的内部资源并销毁编码器实例。 |
| [OH_VideoEncoder_SetCallback](#oh_videoencoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,以便您的应用程序能够响应视频编码器事件。 |
| [OH_VideoEncoder_Configure](#oh_videoencoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置视频编码器,通常需要配置要编码的视频轨的描述信息。 |
| [OH_VideoEncoder_Prepare](#oh_videoencoder_prepare) (OH_AVCodec \*codec) | 若要准备编码器的内部资源,必须先调用Configure接口,再调用此接口。 |
| [OH_VideoEncoder_Start](#oh_videoencoder_start) (OH_AVCodec \*codec) | 启动编码器, 这个接口必须要在Prepare接口执行成功后调用。 |
| [OH_VideoEncoder_Stop](#oh_videoencoder_stop) (OH_AVCodec \*codec) | 停止编码器。 |
| [OH_VideoEncoder_Flush](#oh_videoencoder_flush) (OH_AVCodec \*codec) | 清除编码器中缓冲的输入和输出数据。 |
| [OH_VideoEncoder_Reset](#oh_videoencoder_reset) (OH_AVCodec \*codec) | 重置编码器。 |
| \*[OH_VideoEncoder_GetOutputDescription](#oh_videoencoder_getoutputdescription) (OH_AVCodec \*codec) | 获取编码器输出数据的描述信息,详细信息请参阅 **OH_AVFormat**。 |
| [OH_VideoEncoder_SetParameter](#oh_videoencoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 为编码器设置动态参数。 |
| [OH_VideoEncoder_GetSurface](#oh_videoencoder_getsurface) (OH_AVCodec \*codec, OHNativeWindow \*\*window) | 从视频编码器获取输入Surface,必须在调用Prepare之前调用此接口。 |
| [OH_VideoEncoder_FreeOutputData](#oh_videoencoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回给编码器。 |
| [OH_VideoEncoder_NotifyEndOfStream](#oh_videoencoder_notifyendofstream) (OH_AVCodec \*codec) | 通知视频编码器输入流已结束。建议使用此接口进行通知。 |
| [OH_VideoEncoder_PushInputData](#oh_videoencoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr) | 将填入数据的输入缓冲区提交给视频编码器。 |
| \*[OH_VideoEncoder_GetInputDescription](#oh_videoencoder_getinputdescription) (OH_AVCodec \*codec) | 获取视频编码器接收的描述信息,调用Configure后调用此接口,请参阅 **OH_AVFormat** 获取详细信息。 |
| [OH_VideoEncoder_IsValid](#oh_videoencoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前编解码器实例是否有效。 |
## 类型定义说明
......@@ -64,10 +69,16 @@ VideoEncoder模块提供用于视频编码功能的函数和枚举。该模块
```
typedef enum OH_VideoEncodeBitrateModeOH_VideoEncodeBitrateMode
```
**描述:**
视频编码的比特率模式。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
视频编码器的比特率模式。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**起始版本:**
9
## 枚举类型说明
......@@ -79,16 +90,22 @@ typedef enum OH_VideoEncodeBitrateModeOH_VideoEncodeBitrateMode
```
enum OH_VideoEncodeBitrateMode
```
**描述:**
视频编码的比特率模式。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
视频编码器的比特率模式。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
| 枚举值 | 描述 |
**起始版本:**
9
| 枚举值 | 描述 |
| -------- | -------- |
| CBR | 恒定比特率模式 |
| VBR | 可变比特率模式 |
| CQ | 恒定质量模式 |
| CBR | 恒定比特率模式。 |
| VBR | 可变比特率模式。 |
| CQ | 恒定质量模式。 |
## 函数说明
......@@ -100,23 +117,29 @@ enum OH_VideoEncodeBitrateMode
```
OH_AVErrCode OH_VideoEncoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置视频编码器,典型地,需要配置被编码视频轨道的描述信息,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
配置视频编码器,通常需要配置要编码的视频轨的描述信息。
**参数:**
必须在调用Prepare之前,调用此接口。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | 指向OH_AVFormat的指针,用以给出待编码视频轨道的描述信息 |
| codec | 指向OH_AVCodec实例的指针 |
| format | 指向OH_AVFormat的指针,用于给出要编码的视频轨的描述。 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoEncoder_CreateByMime()
......@@ -125,20 +148,26 @@ OH_AVErrCode OH_VideoEncoder_Configure (OH_AVCodec * codec, OH_AVFormat * format
```
OH_AVCodec* OH_VideoEncoder_CreateByMime (const char * mime)
```
**描述:**
通过mime类型创建一个视频编码器实例,大多数情况下推荐使用该接口。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
多数情况下,推荐从MIME类型创建视频编码器实例。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| mime | mime类型描述字符串,参考[OH_AVCODEC_MIMETYPE_VIDEO_AVC](_codec_base.md#oh_avcodec_mimetype_video_avc) |
| mime | MIME类型描述字符串,请参阅 **AVCODEC_MIME_TYPE**。 |
**返回:**
返回一个指向OH_AVCodec实例的指针, 需要调用OH_VideoEncoder_Destroy销毁。
**返回:**
**起始版本:**
返回一个指向OH_AVCodec实例的指针
9
### OH_VideoEncoder_CreateByName()
......@@ -147,20 +176,26 @@ OH_AVCodec* OH_VideoEncoder_CreateByMime (const char * mime)
```
OH_AVCodec* OH_VideoEncoder_CreateByName (const char * name)
```
**描述:**
通过视频编码器名称创建一个视频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
通过视频编码器名称创建一个视频编码器实例。使用此接口的前提是知道编码器的确切名称。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| name | 视频编码器名称 |
| name | 视频编码器名称 |
**返回:**
**返回**
返回一个指向OH_AVCodec实例的指针
返回指向OH_AVCodec实例的指针。
**起始版本:**
9
### OH_VideoEncoder_Destroy()
......@@ -169,22 +204,26 @@ OH_AVCodec* OH_VideoEncoder_CreateByName (const char * name)
```
OH_AVErrCode OH_VideoEncoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空编码器内部资源,并销毁编码器实例。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
清除编码器的内部资源并销毁编码器实例。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoEncoder_Flush()
......@@ -193,22 +232,28 @@ OH_AVErrCode OH_VideoEncoder_Destroy (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoEncoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
清除编码器中缓冲的输入和输出数据。
**参数:**
调用此接口后,之前通过异步回调函数报告的索引将无效,请确保不要访问与这些索引相对应的缓冲区。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoEncoder_FreeOutputData()
......@@ -217,23 +262,57 @@ OH_AVErrCode OH_VideoEncoder_Flush (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoEncoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给编码器。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
将处理后的输出缓冲区返回给编码器。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针。 |
| index | 输出缓冲区对应的索引值。 |
**返回:**
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoEncoder_GetInputDescription()
```
OH_AVFormat* OH_VideoEncoder_GetInputDescription (OH_AVCodec * codec)
```
**描述:**
获取视频编码器接收的描述信息,调用Configure后调用此接口,请参阅 **OH_AVFormat** 获取详细信息。
**参数:**
应该注意的是,返回指针所指向的OH_AVFormat实例的生命周期需要由调用者手动释放。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输出Buffer对应的索引值 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
返回指向OH_AVFormat实例的指针。
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
10
### OH_VideoEncoder_GetOutputDescription()
......@@ -242,20 +321,28 @@ OH_AVErrCode OH_VideoEncoder_FreeOutputData (OH_AVCodec * codec, uint32_t index
```
OH_AVFormat* OH_VideoEncoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期 将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
获取编码器输出数据的描述信息,详细信息请参阅 **OH_AVFormat**
**参数:**
需要注意的是,返回值指针指向的OH_AVFormat实例的生命周期需要由调用者手动释放。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
返回AVFormat实例的指针
返回指向OH_AVFormat实例的指针。
**起始版本:**
9
### OH_VideoEncoder_GetSurface()
......@@ -264,23 +351,58 @@ OH_AVFormat* OH_VideoEncoder_GetOutputDescription (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoEncoder_GetSurface (OH_AVCodec * codec, OHNativeWindow ** window )
```
**描述:**
从视频编码器获取输入Surface, 该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
从视频编码器获取输入Surface,必须在调用Prepare之前调用此接口。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针。 |
| window | 指向OHNativeWindow实例的指针, 参考 **OHNativeWindow**。 |
**返回:**
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoEncoder_IsValid()
```
OH_AVErrCode OH_VideoEncoder_IsValid (OH_AVCodec * codec, bool * isValid )
```
**描述:**
**参数:**
检查当前编解码器实例是否有效。
| 名称 | 描述 |
它可以用于故障恢复或应用程序的后台切换。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| window | 指向一个OHNativeWindow实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
| isValid | 指向布尔实例的指针,true: 编码器实例有效,false: 编码器实例无效。 |
**返回:**
**返回:**
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
10
### OH_VideoEncoder_NotifyEndOfStream()
......@@ -289,22 +411,28 @@ OH_AVErrCode OH_VideoEncoder_GetSurface (OH_AVCodec * codec, OHNativeWindow ** w
```
OH_AVErrCode OH_VideoEncoder_NotifyEndOfStream (OH_AVCodec * codec)
```
**描述:**
通知视频编码器输入码流已结束。surface模式推荐使用该接口通知编码器码流结束。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
通知视频编码器输入流已结束。建议使用此接口进行通知。
编码器surface模式下,输入流的结束通知。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoEncoder_Prepare()
......@@ -313,22 +441,56 @@ OH_AVErrCode OH_VideoEncoder_NotifyEndOfStream (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoEncoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备编码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
若要准备编码器的内部资源,必须先调用Configure接口,再调用此接口。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoEncoder_PushInputData()
```
OH_AVErrCode OH_VideoEncoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
```
**描述:**
将填入数据的输入缓冲区提交给视频编码器。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
| index | 输入缓冲区对应的索引值。 |
| attr | 缓冲区中包含数据的描述信息。 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
10
### OH_VideoEncoder_Reset()
......@@ -337,22 +499,26 @@ OH_AVErrCode OH_VideoEncoder_Prepare (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoEncoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
**参数:**
重置编码器。要继续编码,您需要再次调用Configure接口配置编码器实例。
| 名称 | 描述 |
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoEncoder_SetCallback()
......@@ -361,24 +527,30 @@ OH_AVErrCode OH_VideoEncoder_Reset (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoEncoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
```
**描述:**
设置异步回调函数,使得你的应用能够响应视频编码器产生的事件,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
**参数:**
设置异步回调函数,以便您的应用程序能够响应视频编码器事件。
| 名称 | 描述 |
必须在调用Prepare之前,调用此接口。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据 |
| codec | 指向OH_AVCodec实例的指针。 |
| callback | 所有回调函数的集合,请参阅 **OH_AVCodecAsyncCallback**。 |
| userData | 用户的特定数据。 |
**返回:**
**返回:**
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
### OH_VideoEncoder_SetParameter()
......@@ -387,23 +559,29 @@ OH_AVErrCode OH_VideoEncoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCal
```
OH_AVErrCode OH_VideoEncoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
为编码器设置动态参数。
注意,此接口只有在编码器启动后才能调用。 同时,不正确的参数设置可能会导致编码失败。
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
**参数**
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | OH_AVFormat句柄指针 |
| codec | 指向OH_AVCodec实例的指针 |
| format | OH_AVFormat句柄指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoEncoder_Start()
......@@ -412,22 +590,28 @@ OH_AVErrCode OH_VideoEncoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * for
```
OH_AVErrCode OH_VideoEncoder_Start (OH_AVCodec * codec)
```
**描述:**
启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
启动编码器, 这个接口必须要在Prepare接口执行成功后调用。
在成功启动编码器之后,编码器将开始报告NeedInputData事件。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
**返回**
执行成功返回AV_ERR_OK
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
**起始版本:**
9
### OH_VideoEncoder_Stop()
......@@ -436,19 +620,23 @@ OH_AVErrCode OH_VideoEncoder_Start (OH_AVCodec * codec)
```
OH_AVErrCode OH_VideoEncoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止编码器。在停止后可通过Start重新进入Started状态。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**描述:**
停止编码器。停止之后,你可以通过Start接口进入Started状态。
**参数:**
\@syscap SystemCapability.Multimedia.Media.VideoEncoder
| 名称 | 描述 |
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| codec | 指向OH_AVCodec实例的指针。 |
**返回:**
**返回:**
如果执行成功,返回AV_ERR_OK 否则,返回特定的错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
执行成功返回AV_ERR_OK
**起始版本:**
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
9
# avcodec_audio_channel_layout.h
## 概述
声明用于音频编解码的枚举。
**起始版本:**
9
**相关模块:**
[AudioDecoder](_audio_decoder.md)
## 汇总
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::Media::AudioChannelSet](_audio_decoder.md#audiochannelset) : uint64_t {<br/>**FRONT_LEFT** = 1ULL &lt;&lt; 0U, **FRONT_RIGHT** = 1ULL &lt;&lt; 1U, **FRONT_CENTER** = 1ULL &lt;&lt; 2U, **LOW_FREQUENCY** = 1ULL &lt;&lt; 3U,<br/>**BACK_LEFT** = 1ULL &lt;&lt; 4U, **BACK_RIGHT** = 1ULL &lt;&lt; 5U, **FRONT_LEFT_OF_CENTER** = 1ULL &lt;&lt; 6U, **FRONT_RIGHT_OF_CENTER** = 1ULL &lt;&lt; 7U,<br/>**BACK_CENTER** = 1ULL &lt;&lt; 8U, **SIDE_LEFT** = 1ULL &lt;&lt; 9U, **SIDE_RIGHT** = 1ULL &lt;&lt; 10U, **TOP_CENTER** = 1ULL &lt;&lt; 11U,<br/>**TOP_FRONT_LEFT** = 1ULL &lt;&lt; 12U, **TOP_FRONT_CENTER** = 1ULL &lt;&lt; 13U, **TOP_FRONT_RIGHT** = 1ULL &lt;&lt; 14U, **TOP_BACK_LEFT** = 1ULL &lt;&lt; 15U,<br/>**TOP_BACK_CENTER** = 1ULL &lt;&lt; 16U, **TOP_BACK_RIGHT** = 1ULL &lt;&lt; 17U, **STEREO_LEFT** = 1ULL &lt;&lt; 29U, **STEREO_RIGHT** = 1ULL &lt;&lt; 30U,<br/>**WIDE_LEFT** = 1ULL &lt;&lt; 31U, **WIDE_RIGHT** = 1ULL &lt;&lt; 32U, **SURROUND_DIRECT_LEFT** = 1ULL &lt;&lt; 33U, **SURROUND_DIRECT_RIGHT** = 1ULL &lt;&lt; 34U,<br/>**LOW_FREQUENCY_2** = 1ULL &lt;&lt; 35U, **TOP_SIDE_LEFT** = 1ULL &lt;&lt; 36U, **TOP_SIDE_RIGHT** = 1ULL &lt;&lt; 37U, **BOTTOM_FRONT_CENTER** = 1ULL &lt;&lt; 38U,<br/>**BOTTOM_FRONT_LEFT** = 1ULL &lt;&lt; 39U, **BOTTOM_FRONT_RIGHT** = 1ULL &lt;&lt; 40U, **AMBISONICS_ACN0** = 1ULL &lt;&lt; 41U, OHOS::Media::AMBISONICS_ACN1 = 1ULL &lt;&lt; 42U,<br/>OHOS::Media::AMBISONICS_ACN2 = 1ULL &lt;&lt; 43U, OHOS::Media::AMBISONICS_ACN3 = 1ULL &lt;&lt; 44U, OHOS::Media::AMBISONICS_W = AMBISONICS_ACN0, OHOS::Media::AMBISONICS_Y = AMBISONICS_ACN1,<br/>OHOS::Media::AMBISONICS_Z = AMBISONICS_ACN2, OHOS::Media::AMBISONICS_X = AMBISONICS_ACN3, OHOS::Media::AMBISONICS_ACN4 = 1ULL &lt;&lt; 45U, OHOS::Media::AMBISONICS_ACN5 = 1ULL &lt;&lt; 46U,<br/>OHOS::Media::AMBISONICS_ACN6 = 1ULL &lt;&lt; 47U, OHOS::Media::AMBISONICS_ACN7 = 1ULL &lt;&lt; 48U, OHOS::Media::AMBISONICS_ACN8 = 1ULL &lt;&lt; 49U, OHOS::Media::AMBISONICS_ACN9 = 1ULL &lt;&lt; 50U,<br/>OHOS::Media::AMBISONICS_ACN10 = 1ULL &lt;&lt; 51U, OHOS::Media::AMBISONICS_ACN11 = 1ULL &lt;&lt; 52U, OHOS::Media::AMBISONICS_ACN12 = 1ULL &lt;&lt; 53U, OHOS::Media::AMBISONICS_ACN13 = 1ULL &lt;&lt; 54U,<br/>OHOS::Media::AMBISONICS_ACN14 = 1ULL &lt;&lt; 55U, OHOS::Media::AMBISONICS_ACN15 = 1ULL &lt;&lt; 56U<br/>} | 音频声道数集合, 将每一个声道数映射为int64的变量。 |
| [OHOS::Media::AudioChannelLayout](_audio_decoder.md#audiochannellayout) : uint64_t {<br/>**UNKNOWN_CHANNEL_LAYOUT** = 0, **MONO** = (AudioChannelSet::FRONT_CENTER), **STEREO** = (AudioChannelSet::FRONT_LEFT \| AudioChannelSet::FRONT_RIGHT), **CH_2POINT1** = (STEREO \| AudioChannelSet::LOW_FREQUENCY),<br/>**CH_2_1** = (STEREO \| AudioChannelSet::BACK_CENTER), **SURROUND** = (STEREO \| AudioChannelSet::FRONT_CENTER), **CH_3POINT1** = (SURROUND \| AudioChannelSet::LOW_FREQUENCY), **CH_4POINT0** = (SURROUND \| AudioChannelSet::BACK_CENTER),<br/>**CH_4POINT1** = (CH_4POINT0 \| AudioChannelSet::LOW_FREQUENCY), **CH_2_2** = (STEREO \| AudioChannelSet::SIDE_LEFT \| AudioChannelSet::SIDE_RIGHT), **QUAD** = (STEREO \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), **CH_5POINT0** = (SURROUND \| AudioChannelSet::SIDE_LEFT \| AudioChannelSet::SIDE_RIGHT),<br/>**CH_5POINT1** = (CH_5POINT0 \| AudioChannelSet::LOW_FREQUENCY), **CH_5POINT0_BACK** = (SURROUND \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), **CH_5POINT1_BACK** = (CH_5POINT0_BACK \| AudioChannelSet::LOW_FREQUENCY), **CH_6POINT0** = (CH_5POINT0 \| AudioChannelSet::BACK_CENTER),<br/>**CH_6POINT0_FRONT** = (CH_2_2 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), **HEXAGONAL** = (CH_5POINT0_BACK \| AudioChannelSet::BACK_CENTER), **CH_6POINT1** = (CH_5POINT1 \| AudioChannelSet::BACK_CENTER), **CH_6POINT1_BACK** = (CH_5POINT1_BACK \| AudioChannelSet::BACK_CENTER),<br/>**CH_6POINT1_FRONT** = (CH_6POINT0_FRONT \| AudioChannelSet::LOW_FREQUENCY), **CH_7POINT0** = (CH_5POINT0 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), **CH_7POINT0_FRONT** = (CH_5POINT0 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), **CH_7POINT1** = (CH_5POINT1 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT),<br/>**CH_7POINT1_WIDE** = (CH_5POINT1 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), **CH_7POINT1_WIDE_BACK**, **CH_3POINT1POINT2** = (CH_3POINT1 \| AudioChannelSet::TOP_FRONT_LEFT \| AudioChannelSet::TOP_FRONT_RIGHT), **CH_5POINT1POINT2** = (CH_5POINT1 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT),<br/>**CH_5POINT1POINT4**, **CH_7POINT1POINT2** = (CH_7POINT1 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT), **CH_7POINT1POINT4**, **CH_9POINT1POINT4** = (CH_7POINT1POINT4 \| AudioChannelSet::WIDE_LEFT \| AudioChannelSet::WIDE_RIGHT),<br/>**CH_9POINT1POINT6** = (CH_9POINT1POINT4 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT), **CH_10POINT2**, **CH_22POINT2**, **OCTAGONAL** = (CH_5POINT0 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_CENTER \| AudioChannelSet::BACK_RIGHT),<br/>**HEXADECAGONAL**, **STEREO_DOWNMIX** = (AudioChannelSet::STEREO_LEFT \| AudioChannelSet::STEREO_RIGHT), **HOA_FIRST**, **HOA_SECOND**,<br/>**HOA_THIRD**<br/>} | 音频声道数类型, 将用户申请的解码器输出格式表示为编解码器的声道类型。 |
# native_avcapability.h
## 概述
声明用于编解码能力查询到的Native API。
**起始版本:**
10
**相关模块:**
[AVCapability](_a_v_capability.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVRange](_o_h___a_v_range.md) | 范围包含最小值和最大值。 |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OH_BitrateMode](_a_v_capability.md#oh_bitratemode) | 编码器的比特率模式。 |
| [OH_AVRange](_a_v_capability.md#oh_avrange) | 范围包含最小值和最大值。 |
| [OH_AVCodecCategory](_a_v_capability.md#oh_avcodeccategory) | 编解码器类别。 |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_BitrateMode](_a_v_capability.md#oh_bitratemode) { **BITRATE_MODE_CBR** = 0, **BITRATE_MODE_VBR** = 1, **BITRATE_MODE_CQ** = 2 } | 编码器的比特率模式。 |
| [OH_AVCodecCategory](_a_v_capability.md#oh_avcodeccategory) { **HARDWARE** = 0, **SOFTWARE** } | 编解码器类别。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| \*[OH_AVCodec_GetCapability](_a_v_capability.md#oh_avcodec_getcapability) (const char \*mime, bool isEncoder) | 获取系统推荐的编解码器能力。 |
| \*[OH_AVCodec_GetCapabilityByCategory](_a_v_capability.md#oh_avcodec_getcapabilitybycategory) (const char \*mime, bool isEncoder, [OH_AVCodecCategory](_a_v_capability.md#oh_avcodeccategory) category) | 获取指定类别中的编解码器能力。通过指定类别, 匹配的编解码器仅限于硬件编解码器或软件编解码器。 |
| [OH_AVCapability_IsHardware](_a_v_capability.md#oh_avcapability_ishardware) (OH_AVCapability \*capability) | 检查能力实例是否描述了硬件编解码器。 |
| \*[OH_AVCapability_GetName](_a_v_capability.md#oh_avcapability_getname) (OH_AVCapability \*capability) | 获取编解码器名称。 |
| [OH_AVCapability_GetMaxSupportedInstances](_a_v_capability.md#oh_avcapability_getmaxsupportedinstances) (OH_AVCapability \*capability) | 获取编解码器支持的最大实例数。 |
| [OH_AVCapability_GetEncoderBitrateRange](_a_v_capability.md#oh_avcapability_getencoderbitraterange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*bitrateRange) | 获取编码器支持的比特率范围。 |
| [OH_AVCapability_IsEncoderBitrateModeSupported](_a_v_capability.md#oh_avcapability_isencoderbitratemodesupported) (OH_AVCapability \*capability, [OH_BitrateMode](_a_v_capability.md#oh_bitratemode) bitrateMode) | 检查编码器是否支持特定的比特率模式。 |
| [OH_AVCapability_GetEncoderQualityRange](_a_v_capability.md#oh_avcapability_getencoderqualityrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*qualityRange) | 获取编码器支持的质量范围。 |
| [OH_AVCapability_GetEncoderComplexityRange](_a_v_capability.md#oh_avcapability_getencodercomplexityrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*complexityRange) | 获取编码器支持的编码器复杂性范围。 |
| [OH_AVCapability_GetAudioSupportedSampleRates](_a_v_capability.md#oh_avcapability_getaudiosupportedsamplerates) (OH_AVCapability \*capability, const int32_t \*\*sampleRates, uint32_t \*sampleRateNum) | 获取音频编解码器支持的采样速率。 |
| [OH_AVCapability_GetAudioChannelCountRange](_a_v_capability.md#oh_avcapability_getaudiochannelcountrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*channelCountRange) | 获取音频编解码器支持的音频通道计数范围。 |
| [OH_AVCapability_GetVideoWidthAlignment](_a_v_capability.md#oh_avcapability_getvideowidthalignment) (OH_AVCapability \*capability, int32_t \*widthAlignment) | 获取视频编解码器支持的视频宽度对齐。 |
| [OH_AVCapability_GetVideoHeightAlignment](_a_v_capability.md#oh_avcapability_getvideoheightalignment) (OH_AVCapability \*capability, int32_t \*heightAlignment) | 获取视频编解码器支持的视频高度对齐。 |
| [OH_AVCapability_GetVideoWidthRangeForHeight](_a_v_capability.md#oh_avcapability_getvideowidthrangeforheight) (OH_AVCapability \*capability, int32_t height, [OH_AVRange](_o_h___a_v_range.md) \*widthRange) | 获取指定高度情况下视频编解码器支持的视频宽度范围。 |
| [OH_AVCapability_GetVideoHeightRangeForWidth](_a_v_capability.md#oh_avcapability_getvideoheightrangeforwidth) (OH_AVCapability \*capability, int32_t width, [OH_AVRange](_o_h___a_v_range.md) \*heightRange) | 获取指定宽度情况下视频编解码器支持的视频高度范围。 |
| [OH_AVCapability_GetVideoWidthRange](_a_v_capability.md#oh_avcapability_getvideowidthrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*widthRange) | 获取视频编解码器支持的视频宽度范围。 |
| [OH_AVCapability_GetVideoHeightRange](_a_v_capability.md#oh_avcapability_getvideoheightrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*heightRange) | 获取视频编解码器支持的视频高度范围。 |
| [OH_AVCapability_IsVideoSizeSupported](_a_v_capability.md#oh_avcapability_isvideosizesupported) (OH_AVCapability \*capability, int32_t width, int32_t height) | 检查视频编解码器是否支持特定的视频大小。 |
| [OH_AVCapability_GetVideoFrameRateRange](_a_v_capability.md#oh_avcapability_getvideoframeraterange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*frameRateRange) | 获取视频编解码器支持的视频帧率范围。 |
| [OH_AVCapability_GetVideoFrameRateRangeForSize](_a_v_capability.md#oh_avcapability_getvideoframeraterangeforsize) (OH_AVCapability \*capability, int32_t width, int32_t height, [OH_AVRange](_o_h___a_v_range.md) \*frameRateRange) | 获取指定视频大小的视频编解码器支持的视频帧率范围。 |
| [OH_AVCapability_AreVideoSizeAndFrameRateSupported](_a_v_capability.md#oh_avcapability_arevideosizeandframeratesupported) (OH_AVCapability \*capability, int32_t width, int32_t height, int32_t frameRate) | 检查视频编解码器是否支持视频大小和帧率的特定组合。 |
| [OH_AVCapability_GetVideoSupportedPixelFormats](_a_v_capability.md#oh_avcapability_getvideosupportedpixelformats) (OH_AVCapability \*capability, const int32_t \*\*pixelFormats, uint32_t \*pixelFormatNum) | 获取视频编解码器支持的视频像素格式。 |
| [OH_AVCapability_GetSupportedProfiles](_a_v_capability.md#oh_avcapability_getsupportedprofiles) (OH_AVCapability \*capability, const int32_t \*\*profiles, uint32_t \*profileNum) | 获取编解码器支持的配置文件。 |
| [OH_AVCapability_GetSupportedLevelsForProfile](_a_v_capability.md#oh_avcapability_getsupportedlevelsforprofile) (OH_AVCapability \*capability, int32_t profile, const int32_t \*\*levels, uint32_t \*levelNum) | 获取特定配置文件支持的编解码器级别。 |
| [OH_AVCapability_AreProfileAndLevelSupported](_a_v_capability.md#oh_avcapability_areprofileandlevelsupported) (OH_AVCapability \*capability, int32_t profile, int32_t level) | 检查编解码器是否支持配置文件和级别的特定组合。 |
......@@ -6,9 +6,10 @@
声明用于音频解码的Native API。
**起始版本:**
9
**相关模块:**
**相关模块**
[AudioDecoder](_audio_decoder.md)
......@@ -18,19 +19,20 @@
### 函数
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AudioDecoder_CreateByMime](_audio_decoder.md#oh_audiodecoder_createbymime) (const char \*mime) | 通过mime类型创建一个音频解码器实例,大多数情况下推荐使用该接口。 |
| [OH_AudioDecoder_CreateByName](_audio_decoder.md#oh_audiodecoder_createbyname) (const char \*name) | 通过音频解码器名称创建一个音频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。 |
| [OH_AudioDecoder_Destroy](_audio_decoder.md#oh_audiodecoder_destroy) (OH_AVCodec \*codec) | 清空解码器内部资源,并销毁解码器实例 |
| [OH_AudioDecoder_SetCallback](_audio_decoder.md#oh_audiodecoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,使得你的应用能够响应音频解码器产生的事件,该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioDecoder_Configure](_audio_decoder.md#oh_audiodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置音频解码器,典型地,需要配置被解码音频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioDecoder_Prepare](_audio_decoder.md#oh_audiodecoder_prepare) (OH_AVCodec \*codec) | 准备解码器内部资源,调用该接口前必须先调用Configure接口。 |
| [OH_AudioDecoder_Start](_audio_decoder.md#oh_audiodecoder_start) (OH_AVCodec \*codec) | 启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。 |
| [OH_AudioDecoder_Stop](_audio_decoder.md#oh_audiodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。 |
| [OH_AudioDecoder_Flush](_audio_decoder.md#oh_audiodecoder_flush) (OH_AVCodec \*codec) | 清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。 |
| [OH_AudioDecoder_Reset](_audio_decoder.md#oh_audiodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。 |
| [OH_AudioDecoder_GetOutputDescription](_audio_decoder.md#oh_audiodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。 |
| [OH_AudioDecoder_SetParameter](_audio_decoder.md#oh_audiodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。 |
| [OH_AudioDecoder_PushInputData](_audio_decoder.md#oh_audiodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | 将填充好数据的输入Buffer提交给音频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入 Codec-Specific-Data,用以初始化解码器的解码过程。 |
| [OH_AudioDecoder_FreeOutputData](_audio_decoder.md#oh_audiodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给解码器。 |
| \*[OHOS::Media::OH_AudioDecoder_CreateByMime](_audio_decoder.md#oh_audiodecoder_createbymime) (const char \*mime) | 根据MIME类型创建音频解码器实例,大多数场景下建议使用此方式。 |
| \*[OHOS::Media::OH_AudioDecoder_CreateByName](_audio_decoder.md#oh_audiodecoder_createbyname) (const char \*name) | 通过音频解码器名称创建音频解码器实例,使用此接口的前提是知道解码器的确切名称。 |
| [OHOS::Media::OH_AudioDecoder_Destroy](_audio_decoder.md#oh_audiodecoder_destroy) (OH_AVCodec \*codec) | 清理解码器内部资源,销毁解码器实例。 |
| [OHOS::Media::OH_AudioDecoder_SetCallback](_audio_decoder.md#oh_audiodecoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,使您的应用程序可以响应音频解码器生成的事件。 |
| [OHOS::Media::OH_AudioDecoder_Configure](_audio_decoder.md#oh_audiodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 要配置音频解码器,通常需要配置从容器中提取的音频描述信息。 |
| [OHOS::Media::OH_AudioDecoder_Prepare](_audio_decoder.md#oh_audiodecoder_prepare) (OH_AVCodec \*codec) | 准备解码器的内部资源,在调用此接口之前必须调用Configure接口。 |
| [OHOS::Media::OH_AudioDecoder_Start](_audio_decoder.md#oh_audiodecoder_start) (OH_AVCodec \*codec) | Prepare成功后调用此接口启动解码器。 |
| [OHOS::Media::OH_AudioDecoder_Stop](_audio_decoder.md#oh_audiodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。 |
| [OHOS::Media::OH_AudioDecoder_Flush](_audio_decoder.md#oh_audiodecoder_flush) (OH_AVCodec \*codec) | 清除解码器中缓存的输入和输出数据。 |
| [OHOS::Media::OH_AudioDecoder_Reset](_audio_decoder.md#oh_audiodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例 。 |
| \*[OHOS::Media::OH_AudioDecoder_GetOutputDescription](_audio_decoder.md#oh_audiodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取解码器输出数据的描述信息,详细信息请参见**OH_AVFormat**。 |
| [OHOS::Media::OH_AudioDecoder_SetParameter](_audio_decoder.md#oh_audiodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置解码器的动态参数。注意:该接口必须在解码器启动后才能调用。另外,参数配置错误可能会导致解码失败。 |
| [OHOS::Media::OH_AudioDecoder_PushInputData](_audio_decoder.md#oh_audiodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr) | 将填充有数据的输入缓冲区提交给音频解码器。 |
| [OHOS::Media::OH_AudioDecoder_FreeOutputData](_audio_decoder.md#oh_audiodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回给解码器。 |
| [OHOS::Media::OH_AudioDecoder_IsValid](_audio_decoder.md#oh_audiodecoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前解码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测解码器有效状态。 |
......@@ -6,9 +6,10 @@
声明用于音频编码的Native API。
**起始版本:**
9
**相关模块:**
**相关模块**
[AudioEncoder](_audio_encoder.md)
......@@ -18,19 +19,20 @@
### 函数
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AudioEncoder_CreateByMime](_audio_encoder.md#oh_audioencoder_createbymime) (const char \*mime) | 通过mime类型创建一个音频编码器实例,大多数情况下推荐使用该接口。 |
| [OH_AudioEncoder_CreateByName](_audio_encoder.md#oh_audioencoder_createbyname) (const char \*name) | 通过音频编码器名称创建一个音频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。 |
| [OH_AudioEncoder_Destroy](_audio_encoder.md#oh_audioencoder_destroy) (OH_AVCodec \*codec) | 清空编码器内部资源,并销毁编码器实例。 |
| [OH_AudioEncoder_SetCallback](_audio_encoder.md#oh_audioencoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,使得你的应用能够响应音频编码器产生的事件,该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioEncoder_Configure](_audio_encoder.md#oh_audioencoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置音频编码器,典型地,需要配置被编码音频轨道的描述信息,该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioEncoder_Prepare](_audio_encoder.md#oh_audioencoder_prepare) (OH_AVCodec \*codec) | 准备编码器内部资源,调用该接口前必须先调用Configure接口。 |
| [OH_AudioEncoder_Start](_audio_encoder.md#oh_audioencoder_start) (OH_AVCodec \*codec) | 启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。 |
| [OH_AudioEncoder_Stop](_audio_encoder.md#oh_audioencoder_stop) (OH_AVCodec \*codec) | 停止编码器。在停止后可通过Start重新进入Started状态。 |
| [OH_AudioEncoder_Flush](_audio_encoder.md#oh_audioencoder_flush) (OH_AVCodec \*codec) | 清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。 |
| [OH_AudioEncoder_Reset](_audio_encoder.md#oh_audioencoder_reset) (OH_AVCodec \*codec) | 重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。 |
| [OH_AudioEncoder_GetOutputDescription](_audio_encoder.md#oh_audioencoder_getoutputdescription) (OH_AVCodec \*codec) | 获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。 |
| [OH_AudioEncoder_SetParameter](_audio_encoder.md#oh_audioencoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。 |
| [OH_AudioEncoder_PushInputData](_audio_encoder.md#oh_audioencoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | 将填充好数据的输入Buffer提交给音频编码器。[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给编码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。 |
| [OH_AudioEncoder_FreeOutputData](_audio_encoder.md#oh_audioencoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给编码器。 |
| \*[OHOS::Media::OH_AudioEncoder_CreateByMime](_audio_encoder.md#oh_audioencoder_createbymime) (const char \*mime) | 根据MIME类型创建音频编码器实例,大多数场景下建议使用此方式。 |
| \*[OHOS::Media::OH_AudioEncoder_CreateByName](_audio_encoder.md#oh_audioencoder_createbyname) (const char \*name) | 通过音频编码器名称创建音频编码器实例,使用此接口的前提是知道编码器的确切名称。 |
| [OHOS::Media::OH_AudioEncoder_Destroy](_audio_encoder.md#oh_audioencoder_destroy) (OH_AVCodec \*codec) | 清理编码器内部资源,销毁编码器实例。 |
| [OHOS::Media::OH_AudioEncoder_SetCallback](_audio_encoder.md#oh_audioencoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,使您的应用程序可以响应音频编码器生成的事件。 |
| [OHOS::Media::OH_AudioEncoder_Configure](_audio_encoder.md#oh_audioencoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 要配置音频编码器,通常需要配置编码后的音轨的描述信息。 |
| [OHOS::Media::OH_AudioEncoder_Prepare](_audio_encoder.md#oh_audioencoder_prepare) (OH_AVCodec \*codec) | 准备编码器的内部资源,在调用此接口之前必须调用Configure接口。 |
| [OHOS::Media::OH_AudioEncoder_Start](_audio_encoder.md#oh_audioencoder_start) (OH_AVCodec \*codec) | Prepare成功后调用此接口启动编码器。 |
| [OHOS::Media::OH_AudioEncoder_Stop](_audio_encoder.md#oh_audioencoder_stop) (OH_AVCodec \*codec) | 停止编码器。 |
| [OHOS::Media::OH_AudioEncoder_Flush](_audio_encoder.md#oh_audioencoder_flush) (OH_AVCodec \*codec) | 清除编码器中缓存的输入和输出数据。 |
| [OHOS::Media::OH_AudioEncoder_Reset](_audio_encoder.md#oh_audioencoder_reset) (OH_AVCodec \*codec) | 重置编码器。 |
| \*[OHOS::Media::OH_AudioEncoder_GetOutputDescription](_audio_encoder.md#oh_audioencoder_getoutputdescription) (OH_AVCodec \*codec) | 获取编码器输出数据的描述信息,详细信息请参见**OH_AVFormat**。 |
| [OHOS::Media::OH_AudioEncoder_SetParameter](_audio_encoder.md#oh_audioencoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置编码器的动态参数。 |
| [OHOS::Media::OH_AudioEncoder_PushInputData](_audio_encoder.md#oh_audioencoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr) | 将填充有数据的输入缓冲区提交给音频编码器。 |
| [OHOS::Media::OH_AudioEncoder_FreeOutputData](_audio_encoder.md#oh_audioencoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回给编码器。 |
| [OHOS::Media::OH_AudioEncoder_IsValid](_audio_encoder.md#oh_audioencoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前编码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测编码器有效状态。 |
......@@ -6,6 +6,7 @@
声明运行音视频编解码通用的结构体、字符常量、枚举。
**起始版本:**
9
**相关模块:**
......@@ -20,57 +21,113 @@
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | 定义OH_AVCodec的Buffer描述信息。|
| [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告 的信息,以确保AVCodec正常运转。|
| [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | 定义OH_AVCodec的缓冲区描述信息。 |
| [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | OH_AVCodec中所有异步回调函数指针的集合。 |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags) | 枚举OH_AVCodec的Buffer标记的类别。|
| [OH_AVCodecBufferAttr](_codec_base.md#oh_avcodecbufferattr) | 定义OH_AVCodec的Buffer描述信息。|
| (\*[OH_AVCodecOnError](_codec_base.md#oh_avcodeconerror)) (OH_AVCodec \*codec, int32_t errorCode, void \*userData) | 当OH_AVCodec实例运行发生错误时,该函数指针会被调用以报告具体错误信息。|
| (\*[OH_AVCodecOnStreamChanged](_codec_base.md#oh_avcodeconstreamchanged)) (OH_AVCodec \*codec, OH_AVFormat \*format, void \*userData) | 当输出流发生变化时,该函数指针会被调用以报告新的流描述信息。 需要注意的时,OH_AVFormat指针的生命周期仅维持在该函数指针被调用时上有效,禁止在调用结束后继续访问。|
| (\*[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)) (OH_AVCodec \*codec, uint32_t index, OH_AVMemory \*data, void \*userData) | 当AVCodec运行过程中需要新的输入数据时,该函数指针会被调用,并携带一块可用的Buffer以供填入新的输入数据。|
| (\*[OH_AVCodecOnNewOutputData](_codec_base.md#oh_avcodeconnewoutputdata)) (OH_AVCodec \*codec, uint32_t index, OH_AVMemory \*data, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) \*attr, void \*userData) | 当AVCodec运行过程中产生了新的输出数据时,该函数指针会被调用,并携带一块包含新输出数据的Buffer, 需要注意的是,OH_AVCodecBufferAttr指针的生命周期仅维持在该函数指针被调用时有效,禁止调用结束后继续访问。|
| [OH_AVCodecAsyncCallback](_codec_base.md#oh_avcodecasynccallback) | AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告 的信息,以确保AVCodec正常运转。|
| [OH_MediaType](_codec_base.md#oh_mediatype) | 媒体类型。|
| [OH_AVCProfile](_codec_base.md#oh_avcprofile) | AVC Profile枚举。|
| [OH_AACProfile](_codec_base.md#oh_aacprofile) | AAC Profile枚举。|
| [OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags) | 枚举OH_AVCodec缓冲区标记的类别。 |
| [OH_AVOutputFormat](_codec_base.md#oh_avoutputformat) | 枚举封装器的输出文件格式。 |
| [OH_AVCodecBufferAttr](_codec_base.md#oh_avcodecbufferattr) | 定义OH_AVCodec的缓冲区描述信息。 |
| (\*[OH_AVCodecOnError](_codec_base.md#oh_avcodeconerror)) (OH_AVCodec \*codec, int32_t errorCode, void \*userData) | 当OH_AVCodec实例运行出错时,会调用来上报具体的错误信息的函数指针。 |
| (\*[OH_AVCodecOnStreamChanged](_codec_base.md#oh_avcodeconstreamchanged)) (OH_AVCodec \*codec, OH_AVFormat \*format, void \*userData) | 当输出流发生变化时,将调用此函数指针报告新的流描述信息。 |
| (\*[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)) (OH_AVCodec \*codec, uint32_t index, OH_AVMemory \*data, void \*userData) | 当OH_AVCodec在运行过程中需要新的输入数据时,将调用此函数指针,并携带可用的缓冲区来填充新的输入数据。 |
| (\*[OH_AVCodecOnNewOutputData](_codec_base.md#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运行过程中生成新的输出数据时,将调用此函数指针,并携带包含新输出数据的缓冲区。 |
| [OH_AVCodecAsyncCallback](_codec_base.md#oh_avcodecasynccallback) | OH_AVCodec中所有异步回调函数指针的集合。 |
| [OH_MediaType](_codec_base.md#oh_mediatype) | 媒体类型。 |
| [OH_AVCProfile](_codec_base.md#oh_avcprofile) | AVC Profile枚举。 |
| [OH_HEVCProfile](_codec_base.md#oh_hevcprofile) | HEVC Profile枚举。 |
| [OH_AACProfile](_codec_base.md#oh_aacprofile) | AAC Profile枚举。 |
| [OH_AVSeekMode](_codec_base.md#oh_avseekmode) | 跳转模式。 |
| [OH_ColorPrimary](_codec_base.md#oh_colorprimary) | 原色。 |
| [OH_TransferCharacteristic](_codec_base.md#oh_transfercharacteristic) | 转移特性。 |
| [OH_MatrixCoefficient](_codec_base.md#oh_matrixcoefficient) | 矩阵系数。 |
| [OH_BitsPerSample](_codec_base.md#oh_bitspersample) | 枚举每个编码样本的音频位数。 |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags) {<br/>**AVCODEC_BUFFER_FLAGS_NONE** = 0, **AVCODEC_BUFFER_FLAGS_EOS** = 1 &lt;&lt; 0, **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 &lt;&lt; 1, **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 &lt;&lt; 2,<br/> **AVCODEC_BUFFER_FLAGS_CODEC_DATA** = 1 &lt;&lt; 3<br/>} | 枚举OH_AVCodec的Buffer标记的类别。|
| [OH_MediaType](_codec_base.md#oh_mediatype) { **MEDIA_TYPE_AUD** = 0, **MEDIA_TYPE_VID** = 1 } | 媒体类型。|
| [OH_AVCProfile](_codec_base.md#oh_avcprofile) { **AVC_PROFILE_BASELINE** = 0, **AVC_PROFILE_HIGH** = 4, **AVC_PROFILE_MAIN** = 8 } | AVC Profile枚举。|
| [OH_AACProfile](_codec_base.md#oh_aacprofile) { **AAC_PROFILE_LC** = 0 } | AAC Profile枚举。|
| [OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags) {<br/>**AVCODEC_BUFFER_FLAGS_NONE** = 0, **AVCODEC_BUFFER_FLAGS_EOS** = 1 &lt;&lt; 0, **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 &lt;&lt; 1, **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 &lt;&lt; 2,<br/>**AVCODEC_BUFFER_FLAGS_CODEC_DATA** = 1 &lt;&lt; 3<br/>} | 枚举OH_AVCodec缓冲区标记的类别。 |
| [OH_AVOutputFormat](_codec_base.md#oh_avoutputformat) { **AV_OUTPUT_FORMAT_DEFAULT** = 0, **AV_OUTPUT_FORMAT_MPEG_4** = 2, **AV_OUTPUT_FORMAT_M4A** = 6 } | 枚举封装器的输出文件格式。 |
| [OH_MediaType](_codec_base.md#oh_mediatype) { **MEDIA_TYPE_AUD** = 0, **MEDIA_TYPE_VID** = 1 } | 媒体类型。 |
| [OH_AVCProfile](_codec_base.md#oh_avcprofile) { **AVC_PROFILE_BASELINE** = 0, **AVC_PROFILE_HIGH** = 4, **AVC_PROFILE_MAIN** = 8 } | AVC Profile枚举。 |
| [OH_HEVCProfile](_codec_base.md#oh_hevcprofile) {<br/>**HEVC_PROFILE_MAIN** = 0, **HEVC_PROFILE_MAIN_10** = 1, **HEVC_PROFILE_MAIN_STILL** = 2, **HEVC_PROFILE_MAIN_10_HDR10** = 3,<br/>**HEVC_PROFILE_MAIN_10_HDR10_PLUS** = 4<br/>} | HEVC Profile枚举。 |
| [OH_AACProfile](_codec_base.md#oh_aacprofile) { **AAC_PROFILE_LC** = 0 } | AAC Profile枚举。 |
| [OH_AVSeekMode](_codec_base.md#oh_avseekmode) { **SEEK_MODE_NEXT_SYNC** = 0, **SEEK_MODE_PREVIOUS_SYNC**, **SEEK_MODE_CLOSEST_SYNC** } | 跳转模式。 |
| [OH_ColorPrimary](_codec_base.md#oh_colorprimary) {<br/>**COLOR_PRIMARY_BT709** = 1, **COLOR_PRIMARY_UNSPECIFIED** = 2, **COLOR_PRIMARY_BT470_M** = 4, **COLOR_PRIMARY_BT601_625** = 5,<br/>**COLOR_PRIMARY_BT601_525** = 6, **COLOR_PRIMARY_SMPTE_ST240** = 7, **COLOR_PRIMARY_GENERIC_FILM** = 8, **COLOR_PRIMARY_BT2020** = 9,<br/>**COLOR_PRIMARY_SMPTE_ST428** = 10, **COLOR_PRIMARY_P3DCI** = 11, **COLOR_PRIMARY_P3D65** = 12<br/>} | 原色。 |
| [OH_TransferCharacteristic](_codec_base.md#oh_transfercharacteristic) {<br/>**TRANSFER_CHARACTERISTIC_BT709** = 1, **TRANSFER_CHARACTERISTIC_UNSPECIFIED** = 2, **TRANSFER_CHARACTERISTIC_GAMMA_2_2** = 4, **TRANSFER_CHARACTERISTIC_GAMMA_2_8** = 5,<br/>**TRANSFER_CHARACTERISTIC_BT601** = 6, **TRANSFER_CHARACTERISTIC_SMPTE_ST240** = 7, **TRANSFER_CHARACTERISTIC_LINEAR** = 8, **TRANSFER_CHARACTERISTIC_LOG** = 9,<br/>**TRANSFER_CHARACTERISTIC_LOG_SQRT** = 10, **TRANSFER_CHARACTERISTIC_IEC_61966_2_4** = 11, **TRANSFER_CHARACTERISTIC_BT1361** = 12, **TRANSFER_CHARACTERISTIC_IEC_61966_2_1** = 13,<br/>**TRANSFER_CHARACTERISTIC_BT2020_10BIT** = 14, **TRANSFER_CHARACTERISTIC_BT2020_12BIT** = 15, **TRANSFER_CHARACTERISTIC_PQ** = 16, **TRANSFER_CHARACTERISTIC_SMPTE_ST428** = 17,<br/>**TRANSFER_CHARACTERISTIC_HLG** = 18<br/>} | 转移特性。 |
| [OH_MatrixCoefficient](_codec_base.md#oh_matrixcoefficient) {<br/>**MATRIX_COEFFICIENT_IDENTITY** = 0, **MATRIX_COEFFICIENT_BT709** = 1, **MATRIX_COEFFICIENT_UNSPECIFIED** = 2, **MATRIX_COEFFICIENT_FCC** = 4,<br/>**MATRIX_COEFFICIENT_BT601_625** = 5, **MATRIX_COEFFICIENT_BT601_525** = 6, **MATRIX_COEFFICIENT_SMPTE_ST240** = 7, **MATRIX_COEFFICIENT_YCGCO** = 8,<br/>**MATRIX_COEFFICIENT_BT2020_NCL** = 9, **MATRIX_COEFFICIENT_BT2020_CL** = 10, **MATRIX_COEFFICIENT_SMPTE_ST2085** = 11, **MATRIX_COEFFICIENT_CHROMATICITY_NCL** = 12,<br/>**MATRIX_COEFFICIENT_CHROMATICITY_CL** = 13, **MATRIX_COEFFICIENT_ICTCP** = 14<br/>} | 矩阵系数。 |
| [OH_BitsPerSample](_codec_base.md#oh_bitspersample) {<br/>**SAMPLE_U8** = 0, **SAMPLE_S16LE** = 1, **SAMPLE_S24LE** = 2, **SAMPLE_S32LE** = 3,<br/>**SAMPLE_F32LE** = 4, **SAMPLE_U8P** = 5, **SAMPLE_S16P** = 6, **SAMPLE_S24P** = 7,<br/>**SAMPLE_S32P** = 8, **SAMPLE_F32P** = 9, **INVALID_WIDTH** = -1<br/>} | 枚举每个编码样本的音频位数。 |
### 变量
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCODEC_MIMETYPE_VIDEO_AVC](_codec_base.md#oh_avcodec_mimetype_video_avc) | AVC视频编解码器的MIME类型。|
| [OH_AVCODEC_MIMETYPE_AUDIO_AAC](_codec_base.md#oh_avcodec_mimetype_audio_aac) | AAC音频编解码器的MIME类型。|
| [OH_ED_KEY_TIME_STAMP](_codec_base.md#oh_ed_key_time_stamp) | 提供统一的surface Buffer附属数据的字符描述符。|
| [OH_ED_KEY_EOS](_codec_base.md#oh_ed_key_eos) | surface附属数据中结束流的字符描述符,值类型为bool。 |
| [OH_MD_KEY_TRACK_TYPE](_codec_base.md#oh_md_key_track_type) | 为媒体播放框架提供统一的字符描述符。|
| [OH_MD_KEY_CODEC_MIME](_codec_base.md#oh_md_key_codec_mime) | MIME类型的字符描述符,值类型为string。 |
| [OH_MD_KEY_DURATION](_codec_base.md#oh_md_key_duration) |duration的字符描述符,值类型为int64_t。|
| [OH_MD_KEY_BITRATE](_codec_base.md#oh_md_key_bitrate) | 比特率的字符描述符,值类型为uint32_t。 |
| [OH_MD_KEY_MAX_INPUT_SIZE](_codec_base.md#oh_md_key_max_input_size) | 最大输入尺寸的字符描述符,值类型为uint32_t。 |
| [OH_MD_KEY_WIDTH](_codec_base.md#oh_md_key_width) | 视频宽度的字符描述符,值类型为uint32_t。 |
| [OH_MD_KEY_HEIGHT](_codec_base.md#oh_md_key_height) | 视频高度的字符描述符,值类型为uint32_t。 |
| [OH_MD_KEY_PIXEL_FORMAT](_codec_base.md#oh_md_key_pixel_format) | 视频像素格式的字符描述符,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat)。 |
| [OH_MD_KEY_AUDIO_SAMPLE_FORMAT](_codec_base.md#oh_md_key_audio_sample_format) | 音频采样格式的字符描述符,值类型为uint32_t。 |
| [OH_MD_KEY_FRAME_RATE](_codec_base.md#oh_md_key_frame_rate) | 视频帧率的字符描述符,值类型为double。|
| [OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](_codec_base.md#oh_md_key_video_encode_bitrate_mode) | 视频编码比特率模式的字符描述符,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode)。 |
| [OH_MD_KEY_PROFILE](_codec_base.md#oh_md_key_profile) | 音视频编码能力的字符描述符,值类型为int32_t,具体见[OH_AVCProfile](_codec_base.md#oh_avcprofile)[OH_AACProfile](_codec_base.md#oh_aacprofile)。 |
| [OH_MD_KEY_AUD_CHANNEL_COUNT](_codec_base.md#oh_md_key_aud_channel_count) | 音频声道数的字符描述符,值类型为uint32_t。 |
| [OH_MD_KEY_AUD_SAMPLE_RATE](_codec_base.md#oh_md_key_aud_sample_rate) | 音频采样率的字符描述符,值类型为uint32_t。 |
| [OH_MD_KEY_I_FRAME_INTERVAL](_codec_base.md#oh_md_key_i_frame_interval) | I帧间隔时长的字符描述符,值类型为int32_t,单位是毫秒。|
| [OH_MD_KEY_ROTATION](_codec_base.md#oh_md_key_rotation) | surface旋转角度的字符描述符,值类型为int32_t,限于{0, 90, 180, 270},默认值为0。 |
| [OH_AVCodecBufferAttr::pts](_o_h___a_v_codec_buffer_attr.md#pts) | 此缓冲区的显示时间戳(以微秒为单位) |
| [OH_AVCodecBufferAttr::size](_o_h___a_v_codec_buffer_attr.md#size) | 缓冲区中包含的数据的大小(以字节为单位) |
| [OH_AVCodecBufferAttr::offset](_o_h___a_v_codec_buffer_attr.md#offset) | 此缓冲区中有效数据的起始偏移量 |
| [OH_AVCodecBufferAttr::flags](_o_h___a_v_codec_buffer_attr.md#flags) | 此缓冲区具有的标志,也是多个[OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags)的组合。 |
| [OH_AVCodecAsyncCallback::onError](_o_h___a_v_codec_async_callback.md#onerror) | 监控编解码器操作错误,请参见[OH_AVCodecOnError](_codec_base.md#oh_avcodeconerror) |
| [OH_AVCodecAsyncCallback::onStreamChanged](_o_h___a_v_codec_async_callback.md#onstreamchanged) | 监控编解码器流变化,请参见[OH_AVCodecOnStreamChanged](_codec_base.md#oh_avcodeconstreamchanged) |
| [OH_AVCodecAsyncCallback::onNeedInputData](_o_h___a_v_codec_async_callback.md#onneedinputdata) | 监控编解码器需要输入数据,请参见[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) |
| [OH_AVCodecAsyncCallback::onNeedOutputData](_o_h___a_v_codec_async_callback.md#onneedinputdata) | 监控编解码器已生成输出数据,请参见[OH_AVCodecOnNewOutputData](_codec_base.md#oh_avcodeconnewoutputdata) |
| \*[OH_AVCODEC_MIMETYPE_VIDEO_AVC](_codec_base.md#oh_avcodec_mimetype_video_avc) | AVC视频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_AUDIO_AAC](_codec_base.md#oh_avcodec_mimetype_audio_aac) | AAC音频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_VIDEO_MPEG4](_codec_base.md#oh_avcodec_mimetype_video_mpeg4) | MPEG4视频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_VIDEO_HEVC](_codec_base.md#oh_avcodec_mimetype_video_hevc) | HEVC视频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_AUDIO_MPEG](_codec_base.md#oh_avcodec_mimetype_audio_mpeg) | MPEG音频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_IMAGE_JPG](_codec_base.md#oh_avcodec_mimetype_image_jpg) | JPG图片编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_IMAGE_PNG](_codec_base.md#oh_avcodec_mimetype_image_png) | PNG图片编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_IMAGE_BMP](_codec_base.md#oh_avcodec_mimetype_image_bmp) | BMP图片编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_AUDIO_FLAC](_codec_base.md#oh_avcodec_mimetype_audio_flac) | FLAC音频编解码器的MIME类型。 |
| \*[OH_AVCODEC_MIMETYPE_AUDIO_VORBIS](_codec_base.md#oh_avcodec_mimetype_audio_vorbis) | VORBIS音频编解码器的MIME类型。 |
| \*[OH_ED_KEY_TIME_STAMP](_codec_base.md#oh_ed_key_time_stamp) | 表面的额外数据中时间戳的键,值类型为int64 |
| \*[OH_ED_KEY_EOS](_codec_base.md#oh_ed_key_eos) | 表面的额外数据中流结束符的键,值类型为bool |
| \*[OH_MD_KEY_TRACK_TYPE](_codec_base.md#oh_md_key_track_type) | 提供统一容器,用于存储媒体描述。 |
| \*[OH_MD_KEY_CODEC_MIME](_codec_base.md#oh_md_key_codec_mime) | 编解码器mime类型的键,值类型为字符串。 |
| \*[OH_MD_KEY_DURATION](_codec_base.md#oh_md_key_duration) | 持续时间键,值类型为int64_t。 |
| \*[OH_MD_KEY_BITRATE](_codec_base.md#oh_md_key_bitrate) | 比特率的键,值类型为uint32_t。 |
| \*[OH_MD_KEY_MAX_INPUT_SIZE](_codec_base.md#oh_md_key_max_input_size) | 最大输入大小的键,值类型为uint32_t |
| \*[OH_MD_KEY_WIDTH](_codec_base.md#oh_md_key_width) | 视频宽度的键,值类型为uint32_t |
| \*[OH_MD_KEY_HEIGHT](_codec_base.md#oh_md_key_height) | 视频高度键,值类型为uint32_t |
| \*[OH_MD_KEY_PIXEL_FORMAT](_codec_base.md#oh_md_key_pixel_format) | 视频像素格式的键,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat) |
| \*[OH_MD_KEY_RANGE_FLAG](_codec_base.md#oh_md_key_range_flag) | 视频YUV取值范围标志的键,值类型为bool |
| \*[OH_MD_KEY_COLOR_PRIMARIES](_codec_base.md#oh_md_key_color_primaries) | 视频颜色原色键, 值类型为int32_t |
| \*[OH_MD_KEY_TRANSFER_CHARACTERISTICS](_codec_base.md#oh_md_key_transfer_characteristics) | 视频转移特性的键,值类型为int32_t |
| \*[OH_MD_KEY_MATRIX_COEFFICIENTS](_codec_base.md#oh_md_key_matrix_coefficients) | 视频矩阵系数的键,值类型为int32_t |
| \*[OH_MD_KEY_AUDIO_SAMPLE_FORMAT](_codec_base.md#oh_md_key_audio_sample_format) | 音频原始格式的键,值类型为uint32_t |
| \*[OH_MD_KEY_FRAME_RATE](_codec_base.md#oh_md_key_frame_rate) | 视频帧率的键,值类型为双精度浮点。 |
| \*[OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](_codec_base.md#oh_md_key_video_encode_bitrate_mode) | 视频编码码率模式,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) |
| \*[OH_MD_KEY_PROFILE](_codec_base.md#oh_md_key_profile) | 编码模板,值类型为数字,具体见[OH_AVCProfile](_codec_base.md#oh_avcprofile)[OH_AACProfile](_codec_base.md#oh_aacprofile)[CodecBase](_codec_base.md#oh_hevcprofile)。 |
| \*[OH_MD_KEY_AUD_CHANNEL_COUNT](_codec_base.md#oh_md_key_aud_channel_count) | 音频通道计数键,值类型为uint32_t |
| \*[OH_MD_KEY_AUD_SAMPLE_RATE](_codec_base.md#oh_md_key_aud_sample_rate) | 音频采样率键,值类型为uint32_t |
| \*[OH_MD_KEY_I_FRAME_INTERVAL](_codec_base.md#oh_md_key_i_frame_interval) | 关键帧间隔的键,值类型为int32_t,单位为毫秒。 |
| \*[OH_MD_KEY_ROTATION](_codec_base.md#oh_md_key_rotation) | 表面旋转角度的键。值类型为int32_t:应为{0, 90, 180, 270},默认值为0。 |
| \*[OH_MD_KEY_CODEC_CONFIG](_codec_base.md#oh_md_key_codec_config) | 编解码器特定数据的键,值类型为uint8_t\*。 |
| \*[OH_MD_KEY_REQUEST_I_FRAME](_codec_base.md#oh_md_key_request_i_frame) | 请求立即编码I帧的键。值类型为布尔值 |
| \*[OH_MD_KEY_QUALITY](_codec_base.md#oh_md_key_quality) | 所需编码质量的键。值类型为uint32_t,此键仅适用于配置在恒定质量模式下的编码器 |
| \*[OH_MD_KEY_CHANNEL_LAYOUT](_codec_base.md#oh_md_key_channel_layout) | 所需编码通道布局的键。值类型为int64_t,此键仅适用于编码器。 |
| \*[OH_MD_KEY_BITS_PER_CODED_SAMPLE](_codec_base.md#oh_md_key_bits_per_coded_sample) | 每个编码样本位数的键,值类型为uint32_t,支持flac编码器。 |
| \*[OH_MD_KEY_AAC_IS_ADTS](_codec_base.md#oh_md_key_aac_is_adts) | aac格式的键,值类型为uint32_t,aac解码器支持。 |
| \*[OH_MD_KEY_SBR](_codec_base.md#oh_md_key_sbr) | aac sbr模式的键,值类型为uint32_t,aac编码器支持。 |
| \*[OH_MD_KEY_COMPLIANCE_LEVEL](_codec_base.md#oh_md_key_compliance_level) | flac合规性级别的键,值类型为int32_t。 |
| \*[OH_MD_KEY_IDENTIFICATION_HEADER](_codec_base.md#oh_md_key_identification_header) | vorbis标识头的键,值类型为uint8_t\*,仅vorbis解码器支持。 |
| \*[OH_MD_KEY_SETUP_HEADER](_codec_base.md#oh_md_key_setup_header) | vorbis设置头的键,值类型为uint8_t\*,仅vorbis解码器支持。 |
| \*[OH_MD_KEY_TITLE](_codec_base.md#oh_md_key_title) | 源格式标题的键,值类型为字符串 |
| \*[OH_MD_KEY_ARTIST](_codec_base.md#oh_md_key_artist) | 艺术家的源格式Key,值类型为字符串 |
| \*[OH_MD_KEY_ALBUM](_codec_base.md#oh_md_key_album) | 相册的源格式键,值类型为字符串 |
| \*[OH_MD_KEY_ALBUM_ARTIST](_codec_base.md#oh_md_key_album_artist) | 源格式专辑_artist的键,值类型为字符串 |
| \*[OH_MD_KEY_DATE](_codec_base.md#oh_md_key_date) | 源格式日期的键,值类型为字符串 |
| \*[OH_MD_KEY_COMMENT](_codec_base.md#oh_md_key_comment) | 源格式注释的键,值类型为字符串 |
| \*[OH_MD_KEY_GENRE](_codec_base.md#oh_md_key_genre) | 源格式类型的键,值类型为字符串 |
| \*[OH_MD_KEY_COPYRIGHT](_codec_base.md#oh_md_key_copyright) | 源格式版权的键,值类型为字符串 |
| \*[OH_MD_KEY_LANGUAGE](_codec_base.md#oh_md_key_language) | 源格式语言的键,值类型为字符串 |
| \*[OH_MD_KEY_DESCRIPTION](_codec_base.md#oh_md_key_description) | 源格式描述的键,值类型为字符串 |
| \*[OH_MD_KEY_LYRICS](_codec_base.md#oh_md_key_lyrics) | 源格式歌词的键,值类型为字符串 |
| \*[OH_MD_KEY_TRACK_COUNT](_codec_base.md#oh_md_key_track_count) | 源格式轨道计数的键,值类型为uint32_t |
......@@ -6,9 +6,10 @@
声明用于视频解码的Native API。
**起始版本:**
9
**相关模块:**
**相关模块**
[VideoDecoder](_video_decoder.md)
......@@ -20,19 +21,20 @@
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoDecoder_CreateByMime](_video_decoder.md#oh_videodecoder_createbymime) (const char \*mime) | 通过mime类型创建一个视频解码器实例,大多数情况下推荐使用该接口。|
| [OH_VideoDecoder_CreateByName](_video_decoder.md#oh_videodecoder_createbyname) (const char \*name) | 通过视频解码器名称创建一个视频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。|
| [OH_VideoDecoder_Destroy](_video_decoder.md#oh_videodecoder_destroy) (OH_AVCodec \*codec) | 清空解码器内部资源,并销毁解码器实例。|
| [OH_VideoDecoder_SetCallback](_video_decoder.md#oh_videodecoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,使得你的应用能够响应视频解码器产生的事件,该接口被调用必须是在Prepare被调用前。|
| [OH_VideoDecoder_SetSurface](_video_decoder.md#oh_videodecoder_setsurface) (OH_AVCodec \*codec, OHNativeWindow \*window) | 指定输出Surface,以提供视频解码输出,该接口被调用必须是在Prepare被调用前。|
| [OH_VideoDecoder_Configure](_video_decoder.md#oh_videodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置视频解码器,典型地,需要配置被解码视频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。|
| [OH_VideoDecoder_Prepare](_video_decoder.md#oh_videodecoder_prepare) (OH_AVCodec \*codec) | 准备解码器内部资源,调用该接口前必须先调用Configure接口。|
| [OH_VideoDecoder_Start](_video_decoder.md#oh_videodecoder_start) (OH_AVCodec \*codec) | 启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。|
| [OH_VideoDecoder_Stop](_video_decoder.md#oh_videodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。|
| [OH_VideoDecoder_Flush](_video_decoder.md#oh_videodecoder_flush) (OH_AVCodec \*codec) | 清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。|
| [OH_VideoDecoder_Reset](_video_decoder.md#oh_videodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。|
| [OH_VideoDecoder_GetOutputDescription](_video_decoder.md#oh_videodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期 将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。|
| [OH_VideoDecoder_SetParameter](_video_decoder.md#oh_videodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。|
| [OH_VideoDecoder_PushInputData](_video_decoder.md#oh_videodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | 将填充好数据的输入Buffer提交给视频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入 Codec-Specific-Data,用以初始化解码器的解码过程,例如H264格式的PPS/SPS数据。|
| [OH_VideoDecoder_RenderOutputData](_video_decoder.md#oh_videodecoder_renderoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给解码器,并通知解码器完成将该Buffer内包含的解码后的数据在输出Surface上渲染。 如果先前未配置输出Surface,调用该接口仅仅将指定索引对应的输出Buffer交还给解码器。|
| [OH_VideoDecoder_FreeOutputData](_video_decoder.md#oh_videodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给解码器。|
| \*[OH_VideoDecoder_CreateByMime](_video_decoder.md#oh_videodecoder_createbymime) (const char \*mime) | 从MIME类型创建视频解码器实例,大多数情况下建议使用。 |
| \*[OH_VideoDecoder_CreateByName](_video_decoder.md#oh_videodecoder_createbyname) (const char \*name) | 通过视频解码器名称创建视频解码器实例。 使用此接口的前提是知道解码器的确切名称。 |
| [OH_VideoDecoder_Destroy](_video_decoder.md#oh_videodecoder_destroy) (OH_AVCodec \*codec) | 清理解码器内部资源,销毁解码器实例。 |
| [OH_VideoDecoder_SetCallback](_video_decoder.md#oh_videodecoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,以便您的应用程序可以响应视频解码器生成的事件。 |
| [OH_VideoDecoder_SetSurface](_video_decoder.md#oh_videodecoder_setsurface) (OH_AVCodec \*codec, OHNativeWindow \*window) | 指定输出表面以提供视频解码输出,必须在调用Prepare之前调用此接口。 |
| [OH_VideoDecoder_Configure](_video_decoder.md#oh_videodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置视频解码器,通常需要配置解码视频轨迹的描述信息,这些信息可以从容器中提取。 |
| [OH_VideoDecoder_Prepare](_video_decoder.md#oh_videodecoder_prepare) (OH_AVCodec \*codec) | 要准备解码器的内部资源,在调用该接口之前,必须调用Configure接口。 |
| [OH_VideoDecoder_Start](_video_decoder.md#oh_videodecoder_start) (OH_AVCodec \*codec) | 启动解码器,准备成功后必须调用此接口。 |
| [OH_VideoDecoder_Stop](_video_decoder.md#oh_videodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。 |
| [OH_VideoDecoder_Flush](_video_decoder.md#oh_videodecoder_flush) (OH_AVCodec \*codec) | 清除解码器中缓存的输入和输出数据。 |
| [OH_VideoDecoder_Reset](_video_decoder.md#oh_videodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。 |
| \*[OH_VideoDecoder_GetOutputDescription](_video_decoder.md#oh_videodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取解码器输出数据的描述信息。 |
| [OH_VideoDecoder_SetParameter](_video_decoder.md#oh_videodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 设置解码器的动态参数。 |
| [OH_VideoDecoder_PushInputData](_video_decoder.md#oh_videodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr) | 将填充数据的输入缓冲区提交给视频解码器。 |
| [OH_VideoDecoder_RenderOutputData](_video_decoder.md#oh_videodecoder_renderoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出Buffer返回给解码器,并通知解码器完成在输出表面上渲染Buffer中包含的解码数据。 |
| [OH_VideoDecoder_FreeOutputData](_video_decoder.md#oh_videodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回到解码器。 |
| [OH_VideoDecoder_IsValid](_video_decoder.md#oh_videodecoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前编解码实例是否有效。 |
......@@ -6,9 +6,10 @@
声明用于视频编码的Native API。
**起始版本:**
9
**相关模块:**
**相关模块**
[VideoEncoder](_video_encoder.md)
......@@ -20,32 +21,35 @@
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) | 视频编码的比特率模式。|
| [OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) | 视频编码器的比特率模式。 |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) { **CBR** = 0, **VBR** = 1, **CQ** = 2 } | 视频编码的比特率模式。|
| [OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) { **CBR** = 0, **VBR** = 1, **CQ** = 2 } | 视频编码器的比特率模式。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncoder_CreateByMime](_video_encoder.md#oh_videoencoder_createbymime) (const char \*mime) | 通过mime类型创建一个视频编码器实例,大多数情况下推荐使用该接口。|
| [OH_VideoEncoder_CreateByName](_video_encoder.md#oh_videoencoder_createbyname) (const char \*name) | 通过视频编码器名称创建一个视频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。|
| [OH_VideoEncoder_Destroy](_video_encoder.md#oh_videoencoder_destroy) (OH_AVCodec \*codec) | 清空编码器内部资源,并销毁编码器实例。|
| [OH_VideoEncoder_SetCallback](_video_encoder.md#oh_videoencoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,使得你的应用能够响应视频编码器产生的事件,该接口被调用必须是在Prepare被调用前。|
| [OH_VideoEncoder_Configure](_video_encoder.md#oh_videoencoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置视频编码器,典型地,需要配置被编码视频轨道的描述信息,该接口被调用必须是在Prepare被调用前。|
| [OH_VideoEncoder_Prepare](_video_encoder.md#oh_videoencoder_prepare) (OH_AVCodec \*codec) | 准备编码器内部资源,调用该接口前必须先调用Configure接口。|
| [OH_VideoEncoder_Start](_video_encoder.md#oh_videoencoder_start) (OH_AVCodec \*codec) | 启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。|
| [OH_VideoEncoder_Stop](_video_encoder.md#oh_videoencoder_stop) (OH_AVCodec \*codec) | 停止编码器。在停止后可通过Start重新进入Started状态。|
| [OH_VideoEncoder_Flush](_video_encoder.md#oh_videoencoder_flush) (OH_AVCodec \*codec) | 清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。|
| [OH_VideoEncoder_Reset](_video_encoder.md#oh_videoencoder_reset) (OH_AVCodec \*codec) | 重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。|
| [OH_VideoEncoder_GetOutputDescription](_video_encoder.md#oh_videoencoder_getoutputdescription) (OH_AVCodec \*codec) | 获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期 将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。|
| [OH_VideoEncoder_SetParameter](_video_encoder.md#oh_videoencoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。|
| [OH_VideoEncoder_GetSurface](_video_encoder.md#oh_videoencoder_getsurface) (OH_AVCodec \*codec, OHNativeWindow \*\*window) | 从视频编码器获取输入Surface, 该接口被调用必须是在Prepare被调用前。|
| [OH_VideoEncoder_FreeOutputData](_video_encoder.md#oh_videoencoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理结束的输出Buffer交还给编码器。|
| [OH_VideoEncoder_NotifyEndOfStream](_video_encoder.md#oh_videoencoder_notifyendofstream) (OH_AVCodec \*codec) | 通知视频编码器输入码流已结束。surface模式推荐使用该接口通知编码器码流结束。|
| \*[OH_VideoEncoder_CreateByMime](_video_encoder.md#oh_videoencoder_createbymime) (const char \*mime) | 多数情况下,推荐从MIME类型创建视频编码器实例。 |
| \*[OH_VideoEncoder_CreateByName](_video_encoder.md#oh_videoencoder_createbyname) (const char \*name) | 通过视频编码器名称创建一个视频编码器实例。使用此接口的前提是知道编码器的确切名称。 |
| [OH_VideoEncoder_Destroy](_video_encoder.md#oh_videoencoder_destroy) (OH_AVCodec \*codec) | 清除编码器的内部资源并销毁编码器实例。 |
| [OH_VideoEncoder_SetCallback](_video_encoder.md#oh_videoencoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,以便您的应用程序能够响应视频编码器事件。 |
| [OH_VideoEncoder_Configure](_video_encoder.md#oh_videoencoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置视频编码器,通常需要配置要编码的视频轨的描述信息。 |
| [OH_VideoEncoder_Prepare](_video_encoder.md#oh_videoencoder_prepare) (OH_AVCodec \*codec) | 若要准备编码器的内部资源,必须先调用Configure接口,再调用此接口。 |
| [OH_VideoEncoder_Start](_video_encoder.md#oh_videoencoder_start) (OH_AVCodec \*codec) | 启动编码器, 这个接口必须要在Prepare接口执行成功后调用。 |
| [OH_VideoEncoder_Stop](_video_encoder.md#oh_videoencoder_stop) (OH_AVCodec \*codec) | 停止编码器。 |
| [OH_VideoEncoder_Flush](_video_encoder.md#oh_videoencoder_flush) (OH_AVCodec \*codec) | 清除编码器中缓冲的输入和输出数据。 |
| [OH_VideoEncoder_Reset](_video_encoder.md#oh_videoencoder_reset) (OH_AVCodec \*codec) | 重置编码器。 |
| \*[OH_VideoEncoder_GetOutputDescription](_video_encoder.md#oh_videoencoder_getoutputdescription) (OH_AVCodec \*codec) | 获取编码器输出数据的描述信息,详细信息请参阅**OH_AVFormat**。 |
| [OH_VideoEncoder_SetParameter](_video_encoder.md#oh_videoencoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 为编码器设置动态参数。 |
| [OH_VideoEncoder_GetSurface](_video_encoder.md#oh_videoencoder_getsurface) (OH_AVCodec \*codec, OHNativeWindow \*\*window) | 从视频编码器获取输入Surface,必须在调用Prepare之前调用此接口。 |
| [OH_VideoEncoder_FreeOutputData](_video_encoder.md#oh_videoencoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回给编码器。 |
| [OH_VideoEncoder_NotifyEndOfStream](_video_encoder.md#oh_videoencoder_notifyendofstream) (OH_AVCodec \*codec) | 通知视频编码器输入流已结束。建议使用此接口进行通知。 |
| [OH_VideoEncoder_PushInputData](_video_encoder.md#oh_videoencoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr) | 将填入数据的输入缓冲区提交给视频编码器。 |
| \*[OH_VideoEncoder_GetInputDescription](_video_encoder.md#oh_videoencoder_getinputdescription) (OH_AVCodec \*codec) | 获取视频编码器接收的描述信息,调用Configure后调用此接口,请参阅 **OH_AVFormat** 获取详细信息。 |
| [OH_VideoEncoder_IsValid](_video_encoder.md#oh_videoencoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前编解码器实例是否有效。 |
# native_avdemuxer.h
## 概述
声明用于音视频解封装的Native API。
**起始版本:**
10
**相关模块:**
[AVDemuxer](_a_v_demuxer.md)
## 汇总
### 函数
| 名称 | 描述 |
| -------- | -------- |
| \*[OH_AVDemuxer_CreateWithSource](_a_v_demuxer.md#oh_avdemuxer_createwithsource) (OH_AVSource \*source) | 通过source实例对象创建OH_AVDemuxer实例对象。 |
| [OH_AVDemuxer_Destroy](_a_v_demuxer.md#oh_avdemuxer_destroy) (OH_AVDemuxer \*demuxer) | 销毁OH_AVDemuxer实例并清理内部资源。 |
| [OH_AVDemuxer_SelectTrackByID](_a_v_demuxer.md#oh_avdemuxer_selecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 选中指定轨道,解封装器将会从该轨道中读取数据。 |
| [OH_AVDemuxer_UnselectTrackByID](_a_v_demuxer.md#oh_avdemuxer_unselecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 取消选择指定轨道,未选中的轨道的数据不会被解封装器读取。 |
| [OH_AVDemuxer_ReadSample](_a_v_demuxer.md#oh_avdemuxer_readsample) (OH_AVDemuxer \*demuxer, uint32_t trackIndex, OH_AVMemory \*sample, OH_AVCodecBufferAttr \*info) | 从选中轨道中获取当前位置压缩帧及相关信息。 |
| [OH_AVDemuxer_SeekToTime](_a_v_demuxer.md#oh_avdemuxer_seektotime) (OH_AVDemuxer \*demuxer, int64_t millisecond, OH_AVSeekMode mode) | 根据设定的跳转模式,将所有选中的轨道到指定时间附近。 |
......@@ -6,9 +6,10 @@
声明了媒体播放框架的错误码。
**起始版本:**
9
**相关模块:**
**相关模块**
[Core](_core.md)
......@@ -18,13 +19,13 @@
### 类型定义
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](_core.md#oh_averrcode) | 音视频错误码。 |
| [OH_AVErrCode](_core.md#oh_averrcode) | 音视频错误码。 |
### 枚举
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](_core.md#oh_averrcode) {<br/> **AV_ERR_OK** = 0, **AV_ERR_NO_MEMORY** = 1, **AV_ERR_OPERATE_NOT_PERMIT** = 2, **AV_ERR_INVALID_VAL** = 3, **AV_ERR_IO** = 4, **AV_ERR_TIMEOUT** = 5, **AV_ERR_UNKNOWN** = 6, **AV_ERR_SERVICE_DIED** = 7, **AV_ERR_INVALID_STATE** = 8, **AV_ERR_UNSUPPORT** = 9, **AV_ERR_EXTEND_START** = 100<br/>} | 音视频错误码。 |
| [OH_AVErrCode](_core.md#oh_averrcode) {<br/>AV_ERR_OK = 0, AV_ERR_NO_MEMORY = 1, AV_ERR_OPERATE_NOT_PERMIT = 2, AV_ERR_INVALID_VAL = 3,<br/>AV_ERR_IO = 4, AV_ERR_TIMEOUT = 5, AV_ERR_UNKNOWN = 6, AV_ERR_SERVICE_DIED = 7,<br/>AV_ERR_INVALID_STATE = 8, AV_ERR_UNSUPPORT = 9, AV_ERR_EXTEND_START = 100<br/>} | 音视频错误码。 |
......@@ -6,9 +6,10 @@
声明了格式相关的函数和枚举。
**起始版本:**
9
**相关模块:**
**相关模块**
[Core](_core.md)
......@@ -20,33 +21,35 @@
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVPixelFormat](_core.md#oh_avpixelformat) | AVPixel 格式的枚举|
| [OH_AVPixelFormat](_core.md#oh_avpixelformat) | AVPixel 格式的枚举类。 |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVPixelFormat](_core.md#oh_avpixelformat) {<br/> **AV_PIXEL_FORMAT_YUVI420** = 1, **AV_PIXEL_FORMAT_NV12** = 2, **AV_PIXEL_FORMAT_NV21** = 3, **AV_PIXEL_FORMAT_SURFACE_FORMAT** = 4, **AV_PIXEL_FORMAT_RGBA** = 5<br/>} | AVPixel 格式的枚举。|
| [OH_AVPixelFormat](_core.md#oh_avpixelformat) {<br/>AV_PIXEL_FORMAT_YUVI420 = 1, AV_PIXEL_FORMAT_NV12 = 2, AV_PIXEL_FORMAT_NV21 = 3, AV_PIXEL_FORMAT_SURFACE_FORMAT = 4,<br/>AV_PIXEL_FORMAT_RGBA = 5<br/>} | AVPixel 格式的枚举类。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVFormat_Create](_core.md#oh_avformat_create) (void) | 创建一个OH_AVFormat句柄指针,用以读写数据。|
| [OH_AVFormat_Destroy](_core.md#oh_avformat_destroy) (struct OH_AVFormat \*format) | 销毁指定OH_AVFormat句柄资源。|
| [OH_AVFormat_Copy](_core.md#oh_avformat_copy) (struct OH_AVFormat \*to, struct OH_AVFormat \*from) | 拷贝OH_AVFormat句柄资源.|
| [OH_AVFormat_SetIntValue](_core.md#oh_avformat_setintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t value) | 向OH_AVFormat写入Int数据.|
| [OH_AVFormat_SetLongValue](_core.md#oh_avformat_setlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t value) | 向OH_AVFormat写入Long数据。|
| [OH_AVFormat_SetFloatValue](_core.md#oh_avformat_setfloatvalue) (struct OH_AVFormat \*format, const char \*key, float value) | 向OH_AVFormat写入Float数据。|
| [OH_AVFormat_SetDoubleValue](_core.md#oh_avformat_setdoublevalue) (struct OH_AVFormat \*format, const char \*key, double value) | 向OH_AVFormat写入Double数据。|
| [OH_AVFormat_SetStringValue](_core.md#oh_avformat_setstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*value) | 向OH_AVFormat写入String数据。|
| [OH_AVFormat_SetBuffer](_core.md#oh_avformat_setbuffer) (struct OH_AVFormat \*format, const char \*key, const uint8_t \*addr, size_t size) | 向OH_AVFormat写入一块指定长度的数据。|
| [OH_AVFormat_GetIntValue](_core.md#oh_avformat_getintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t \*out) | 从OH_AVFormat读取Int数据。|
| [OH_AVFormat_GetLongValue](_core.md#oh_avformat_getlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t \*out) | 从OH_AVFormat读取Long数据。|
| [OH_AVFormat_GetFloatValue](_core.md#oh_avformat_getfloatvalue) (struct OH_AVFormat \*format, const char \*key, float \*out) | 从OH_AVFormat读取Float数据。|
| [OH_AVFormat_GetDoubleValue](_core.md#oh_avformat_getdoublevalue) (struct OH_AVFormat \*format, const char \*key, double \*out) | 从OH_AVFormat读取Double数据。|
| [OH_AVFormat_GetStringValue](_core.md#oh_avformat_getstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*\*out) | 从OH_AVFormat读取Double数据。|
| [OH_AVFormat_GetBuffer](_core.md#oh_avformat_getbuffer) (struct OH_AVFormat \*format, const char \*key, uint8_t \*\*addr, size_t \*size) | 从OH_AVFormat读取一块指定长度的数据。|
| [OH_AVFormat_DumpInfo](_core.md#oh_avformat_dumpinfo) (struct OH_AVFormat \*format) | 以字符串的形式输出OH_AVFormat所包含的信息。|
| \*[OH_AVFormat_Create](_core.md#oh_avformat_create) (void) | 创建OH_AVFormat句柄,用于读取数据。 |
| \*[OH_AVFormat_CreateAudioFormat](_core.md#oh_avformat_createaudioformat) (const char \*mimeType, int32_t sampleRate, int32_t channelCount) | 创建音频OH_AVFormat句柄指针,用于读写数据。 |
| \*[OH_AVFormat_CreateVideoFormat](_core.md#oh_avformat_createvideoformat) (const char \*mimeType, int32_t width, int32_t height) | 创建视频OH_AVFormat句柄指针,用于读写数据。 |
| [OH_AVFormat_Destroy](_core.md#oh_avformat_destroy) (struct OH_AVFormat \*format) | 销毁OH_AVFormat句柄。 |
| [OH_AVFormat_Copy](_core.md#oh_avformat_copy) (struct OH_AVFormat \*to, struct OH_AVFormat \*from) | 复制OH_AVFormat句柄。 |
| [OH_AVFormat_SetIntValue](_core.md#oh_avformat_setintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t value) | 将int数据写入OH_AVFormat。 |
| [OH_AVFormat_SetLongValue](_core.md#oh_avformat_setlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t value) | 将long数据写入OH_AVFormat。 |
| [OH_AVFormat_SetFloatValue](_core.md#oh_avformat_setfloatvalue) (struct OH_AVFormat \*format, const char \*key, float value) | 将float数据写入OH_AVFormat。 |
| [OH_AVFormat_SetDoubleValue](_core.md#oh_avformat_setdoublevalue) (struct OH_AVFormat \*format, const char \*key, double value) | 将double数据写入OH_AVFormat。 |
| [OH_AVFormat_SetStringValue](_core.md#oh_avformat_setstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*value) | 将string数据写入OH_AVFormat。 |
| [OH_AVFormat_SetBuffer](_core.md#oh_avformat_setbuffer) (struct OH_AVFormat \*format, const char \*key, const uint8_t \*addr, size_t size) | 将指定长度的数据块写入OH_AVFormat。 |
| [OH_AVFormat_GetIntValue](_core.md#oh_avformat_getintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t \*out) | 从OH_AVFormat读取int数据。 |
| [OH_AVFormat_GetLongValue](_core.md#oh_avformat_getlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t \*out) | 从OH_AVFormat读取long数据。 |
| [OH_AVFormat_GetFloatValue](_core.md#oh_avformat_getfloatvalue) (struct OH_AVFormat \*format, const char \*key, float \*out) | 从OH_AVFormat读取float数据。 |
| [OH_AVFormat_GetDoubleValue](_core.md#oh_avformat_getdoublevalue) (struct OH_AVFormat \*format, const char \*key, double \*out) | 从OH_AVFormat读取double数据。 |
| [OH_AVFormat_GetStringValue](_core.md#oh_avformat_getstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*\*out) | 从OH_AVFormat读取string数据。 |
| [OH_AVFormat_GetBuffer](_core.md#oh_avformat_getbuffer) (struct OH_AVFormat \*format, const char \*key, uint8_t \*\*addr, size_t \*size) | 从OH_AVFormat中读取指定长度的数据块。 |
| \*[OH_AVFormat_DumpInfo](_core.md#oh_avformat_dumpinfo) (struct OH_AVFormat \*format) | 输出OH_AVFormat中包含的字符串。 |
......@@ -6,9 +6,10 @@
声明了AVMemory的函数接口。
**起始版本:**
9
**相关模块:**
**相关模块**
[Core](_core.md)
......@@ -18,7 +19,9 @@
### 函数
| 名称 | 描述 |
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVMemory_GetAddr](_core.md#oh_avmemory_getaddr) (struct OH_AVMemory \*mem) | 获取入参的内存虚拟地址。 |
| [OH_AVMemory_GetSize](_core.md#oh_avmemory_getsize) (struct OH_AVMemory \*mem) | 获取入参的内存长度。 |
| \*[OH_AVMemory_Create](_core.md#oh_avmemory_create) (int32_t size) | 创建OH_AVMemory实例的指针。 |
| \*[OH_AVMemory_GetAddr](_core.md#oh_avmemory_getaddr) (struct OH_AVMemory \*mem) | 获取入参的内存虚拟地址。 |
| [OH_AVMemory_GetSize](_core.md#oh_avmemory_getsize) (struct OH_AVMemory \*mem) | 获取入参的内存长度。 |
| [OH_AVMemory_Destroy](_core.md#oh_avmemory_destroy) (struct OH_AVMemory \*mem) | 释放OH_AVMemory实例指针的资源。 |
# native_avsource.h
## 概述
声明用于构造音视频资源对象的Native API。
**起始版本:**
10
**相关模块:**
[AVSource](_a_v_source.md)
## 汇总
### 函数
| 名称 | 描述 |
| -------- | -------- |
| \*[OH_AVSource_CreateWithURI](_a_v_source.md#oh_avsource_createwithuri) (char \*uri) | 为统一资源标识符对应的的资源对象创建OH_AVSource实例对象。 |
| \*[OH_AVSource_CreateWithFD](_a_v_source.md#oh_avsource_createwithfd) (int32_t fd, int64_t offset, int64_t size) | 为文件描述符对应的资源对象创建OH_AVSource实例对象。 |
| [OH_AVSource_Destroy](_a_v_source.md#oh_avsource_destroy) (OH_AVSource \*source) | 销毁OH_AVSource实例并清理内部资源。同一实例只能被销毁一次。 |
| \*[OH_AVSource_GetSourceFormat](_a_v_source.md#oh_avsource_getsourceformat) (OH_AVSource \*source) | 获取媒体资源文件的基础信息。 |
| \*[OH_AVSource_GetTrackFormat](_a_v_source.md#oh_avsource_gettrackformat) (OH_AVSource \*source, uint32_t trackIndex) | 获取轨道的基础信息。 |
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册