diff --git a/zh-cn/application-dev/reference/native-apis/Readme-CN.md b/zh-cn/application-dev/reference/native-apis/Readme-CN.md index a09c6b6f5ad2499ec5e958db3a8cf4a8bf1b19e2..e7ac744608589679f5d677b1409660abad3a731a 100644 --- a/zh-cn/application-dev/reference/native-apis/Readme-CN.md +++ b/zh-cn/application-dev/reference/native-apis/Readme-CN.md @@ -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) diff --git a/zh-cn/application-dev/reference/native-apis/_a_v_capability.md b/zh-cn/application-dev/reference/native-apis/_a_v_capability.md new file mode 100644 index 0000000000000000000000000000000000000000..05ac40eadd844a92327d362738a0841c6190d469 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_a_v_capability.md @@ -0,0 +1,933 @@ +# AVCapability + + +## 概述 + +AVCapability模块提供用于编解码能力查询的函数。 + +\@syscap SystemCapability.Multimedia.Media.CodecBase + +**起始版本:** + +10 + + +## 汇总 + + +### 文件 + +| 名称 | 描述 | +| -------- | -------- | +| [native_avcapability.h](native__avcapability_8h.md) | 声明用于编解码能力查询到的Native API。
引用文件: | + + +### 结构体 + +| 名称 | 描述 | +| -------- | -------- | +| [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 diff --git a/zh-cn/application-dev/reference/native-apis/_a_v_demuxer.md b/zh-cn/application-dev/reference/native-apis/_a_v_demuxer.md new file mode 100644 index 0000000000000000000000000000000000000000..67fbfa2363d2e3013749620fe25135762856729f --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_a_v_demuxer.md @@ -0,0 +1,224 @@ +# AVDemuxer + + +## 概述 + +AVDemuxer模块提供用于音视频解封装功能的函数。 + +\@syscap SystemCapability.Multimedia.Media.Spliter + +**起始版本:** + +10 + + +## 汇总 + + +### 文件 + +| 名称 | 描述 | +| -------- | -------- | +| [native_avdemuxer.h](native__avdemuxer_8h.md) | 声明用于音视频解封装的Native API。
引用文件: | + + +### 函数 + +| 名称 | 描述 | +| -------- | -------- | +| \*[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 diff --git a/zh-cn/application-dev/reference/native-apis/_a_v_source.md b/zh-cn/application-dev/reference/native-apis/_a_v_source.md new file mode 100644 index 0000000000000000000000000000000000000000..18a5cafd4de350067f810a6bed489480df9445de --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_a_v_source.md @@ -0,0 +1,187 @@ +# AVSource + + +## 概述 + +AVSource模块提供用于构造音视频资源对象功能的函数。 + +\@syscap SystemCapability.Multimedia.Media.Spliter + +**起始版本:** + +10 + + +## 汇总 + + +### 文件 + +| 名称 | 描述 | +| -------- | -------- | +| [native_avsource.h](native__avsource_8h.md) | 声明用于构造音视频资源对象的Native API。
引用文件: | + + +### 函数 + +| 名称 | 描述 | +| -------- | -------- | +| \*[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 diff --git a/zh-cn/application-dev/reference/native-apis/_audio_decoder.md b/zh-cn/application-dev/reference/native-apis/_audio_decoder.md index 566fab75c9b5f5683ed72af4f4aec7f768d88689..30c5686e2b4ebe97f353a53ea77fea5b295f1b27 100644 --- a/zh-cn/application-dev/reference/native-apis/_audio_decoder.md +++ b/zh-cn/application-dev/reference/native-apis/_audio_decoder.md @@ -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。
引用文件: | +| [native_avcodec_audiodecoder.h](native__avcodec__audiodecoder_8h.md) | 声明用于音频解码的Native API。
引用文件: | +| [avcodec_audio_channel_layout.h](avcodec__audio__channel__layout_8h.md) | 声明用于音频编解码的枚举。
引用文件: | + + +### 枚举 + +| 名称 | 描述 | +| -------- | -------- | +| [OHOS::Media::AudioChannelSet](#audiochannelset) : uint64_t {
**FRONT_LEFT** = 1ULL << 0U, **FRONT_RIGHT** = 1ULL << 1U, **FRONT_CENTER** = 1ULL << 2U, **LOW_FREQUENCY** = 1ULL << 3U,
**BACK_LEFT** = 1ULL << 4U, **BACK_RIGHT** = 1ULL << 5U, **FRONT_LEFT_OF_CENTER** = 1ULL << 6U, **FRONT_RIGHT_OF_CENTER** = 1ULL << 7U,
**BACK_CENTER** = 1ULL << 8U, **SIDE_LEFT** = 1ULL << 9U, **SIDE_RIGHT** = 1ULL << 10U, **TOP_CENTER** = 1ULL << 11U,
**TOP_FRONT_LEFT** = 1ULL << 12U, **TOP_FRONT_CENTER** = 1ULL << 13U, **TOP_FRONT_RIGHT** = 1ULL << 14U, **TOP_BACK_LEFT** = 1ULL << 15U,
**TOP_BACK_CENTER** = 1ULL << 16U, **TOP_BACK_RIGHT** = 1ULL << 17U, **STEREO_LEFT** = 1ULL << 29U, **STEREO_RIGHT** = 1ULL << 30U,
**WIDE_LEFT** = 1ULL << 31U, **WIDE_RIGHT** = 1ULL << 32U, **SURROUND_DIRECT_LEFT** = 1ULL << 33U, **SURROUND_DIRECT_RIGHT** = 1ULL << 34U,
**LOW_FREQUENCY_2** = 1ULL << 35U, **TOP_SIDE_LEFT** = 1ULL << 36U, **TOP_SIDE_RIGHT** = 1ULL << 37U, **BOTTOM_FRONT_CENTER** = 1ULL << 38U,
**BOTTOM_FRONT_LEFT** = 1ULL << 39U, **BOTTOM_FRONT_RIGHT** = 1ULL << 40U, **AMBISONICS_ACN0** = 1ULL << 41U, OHOS::Media::AMBISONICS_ACN1 = 1ULL << 42U,
OHOS::Media::AMBISONICS_ACN2 = 1ULL << 43U, OHOS::Media::AMBISONICS_ACN3 = 1ULL << 44U, OHOS::Media::AMBISONICS_W = AMBISONICS_ACN0, OHOS::Media::AMBISONICS_Y = AMBISONICS_ACN1,
OHOS::Media::AMBISONICS_Z = AMBISONICS_ACN2, OHOS::Media::AMBISONICS_X = AMBISONICS_ACN3, OHOS::Media::AMBISONICS_ACN4 = 1ULL << 45U, OHOS::Media::AMBISONICS_ACN5 = 1ULL << 46U,
OHOS::Media::AMBISONICS_ACN6 = 1ULL << 47U, OHOS::Media::AMBISONICS_ACN7 = 1ULL << 48U, OHOS::Media::AMBISONICS_ACN8 = 1ULL << 49U, OHOS::Media::AMBISONICS_ACN9 = 1ULL << 50U,
OHOS::Media::AMBISONICS_ACN10 = 1ULL << 51U, OHOS::Media::AMBISONICS_ACN11 = 1ULL << 52U, OHOS::Media::AMBISONICS_ACN12 = 1ULL << 53U, OHOS::Media::AMBISONICS_ACN13 = 1ULL << 54U,
OHOS::Media::AMBISONICS_ACN14 = 1ULL << 55U, OHOS::Media::AMBISONICS_ACN15 = 1ULL << 56U
} | 音频声道数集合, 将每一个声道数映射为int64的变量。 | +| [OHOS::Media::AudioChannelLayout](#audiochannellayout) : uint64_t {
**UNKNOWN_CHANNEL_LAYOUT** = 0, **MONO** = (AudioChannelSet::FRONT_CENTER), **STEREO** = (AudioChannelSet::FRONT_LEFT \| AudioChannelSet::FRONT_RIGHT), **CH_2POINT1** = (STEREO \| AudioChannelSet::LOW_FREQUENCY),
**CH_2_1** = (STEREO \| AudioChannelSet::BACK_CENTER), **SURROUND** = (STEREO \| AudioChannelSet::FRONT_CENTER), **CH_3POINT1** = (SURROUND \| AudioChannelSet::LOW_FREQUENCY), **CH_4POINT0** = (SURROUND \| AudioChannelSet::BACK_CENTER),
**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),
**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),
**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),
**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),
**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),
**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),
**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),
**HEXADECAGONAL**, **STEREO_DOWNMIX** = (AudioChannelSet::STEREO_LEFT \| AudioChannelSet::STEREO_RIGHT), **HOA_FIRST**, **HOA_SECOND**,
**HOA_THIRD**
} | 音频声道数类型, 将用户申请的解码器输出格式表示为编解码器的声道类型。 | ### 函数 - | 名称 | 描述 | +| 名称 | 描述 | +| -------- | -------- | +| \*[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 diff --git a/zh-cn/application-dev/reference/native-apis/_audio_encoder.md b/zh-cn/application-dev/reference/native-apis/_audio_encoder.md index 9a0235deb7db5b5bc6b72c95ee5ce6ce341b3035..df536fc1c070a0a65905b236523c85a8ce390959 100644 --- a/zh-cn/application-dev/reference/native-apis/_audio_encoder.md +++ b/zh-cn/application-dev/reference/native-apis/_audio_encoder.md @@ -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。
引用文件: | ### 函数 - | 名称 | 描述 | +| 名称 | 描述 | | -------- | -------- | -| [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 diff --git a/zh-cn/application-dev/reference/native-apis/_codec_base.md b/zh-cn/application-dev/reference/native-apis/_codec_base.md index 0246d18de02cae249484000f12c75e23a5119def..73ec0da471b39fad6b136aae14305767dd1690ac 100644 --- a/zh-cn/application-dev/reference/native-apis/_codec_base.md +++ b/zh-cn/application-dev/reference/native-apis/_codec_base.md @@ -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) | 声明运行音视频编解码通用的结构体、字符常量、枚举。
引用文件: | ### 结构体 - | 名称 | 描述 | +| 名称 | 描述 | | -------- | -------- | -| [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) {
**AVCODEC_BUFFER_FLAGS_NONE** = 0, **AVCODEC_BUFFER_FLAGS_EOS** = 1 << 0, **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 << 1, **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 << 2, **AVCODEC_BUFFER_FLAGS_CODEC_DATA**= 1 << 3
} | 枚举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) {
**AVCODEC_BUFFER_FLAGS_NONE** = 0, **AVCODEC_BUFFER_FLAGS_EOS** = 1 << 0, **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 << 1, **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 << 2,
**AVCODEC_BUFFER_FLAGS_CODEC_DATA** = 1 << 3
} | 枚举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) {
**HEVC_PROFILE_MAIN** = 0, **HEVC_PROFILE_MAIN_10** = 1, **HEVC_PROFILE_MAIN_STILL** = 2, **HEVC_PROFILE_MAIN_10_HDR10** = 3,
**HEVC_PROFILE_MAIN_10_HDR10_PLUS** = 4
} | 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) {
**COLOR_PRIMARY_BT709** = 1, **COLOR_PRIMARY_UNSPECIFIED** = 2, **COLOR_PRIMARY_BT470_M** = 4, **COLOR_PRIMARY_BT601_625** = 5,
**COLOR_PRIMARY_BT601_525** = 6, **COLOR_PRIMARY_SMPTE_ST240** = 7, **COLOR_PRIMARY_GENERIC_FILM** = 8, **COLOR_PRIMARY_BT2020** = 9,
**COLOR_PRIMARY_SMPTE_ST428** = 10, **COLOR_PRIMARY_P3DCI** = 11, **COLOR_PRIMARY_P3D65** = 12
} | 原色。 | +| [OH_TransferCharacteristic](#oh_transfercharacteristic) {
**TRANSFER_CHARACTERISTIC_BT709** = 1, **TRANSFER_CHARACTERISTIC_UNSPECIFIED** = 2, **TRANSFER_CHARACTERISTIC_GAMMA_2_2** = 4, **TRANSFER_CHARACTERISTIC_GAMMA_2_8** = 5,
**TRANSFER_CHARACTERISTIC_BT601** = 6, **TRANSFER_CHARACTERISTIC_SMPTE_ST240** = 7, **TRANSFER_CHARACTERISTIC_LINEAR** = 8, **TRANSFER_CHARACTERISTIC_LOG** = 9,
**TRANSFER_CHARACTERISTIC_LOG_SQRT** = 10, **TRANSFER_CHARACTERISTIC_IEC_61966_2_4** = 11, **TRANSFER_CHARACTERISTIC_BT1361** = 12, **TRANSFER_CHARACTERISTIC_IEC_61966_2_1** = 13,
**TRANSFER_CHARACTERISTIC_BT2020_10BIT** = 14, **TRANSFER_CHARACTERISTIC_BT2020_12BIT** = 15, **TRANSFER_CHARACTERISTIC_PQ** = 16, **TRANSFER_CHARACTERISTIC_SMPTE_ST428** = 17,
**TRANSFER_CHARACTERISTIC_HLG** = 18
} | 转移特性。 | +| [OH_MatrixCoefficient](#oh_matrixcoefficient) {
**MATRIX_COEFFICIENT_IDENTITY** = 0, **MATRIX_COEFFICIENT_BT709** = 1, **MATRIX_COEFFICIENT_UNSPECIFIED** = 2, **MATRIX_COEFFICIENT_FCC** = 4,
**MATRIX_COEFFICIENT_BT601_625** = 5, **MATRIX_COEFFICIENT_BT601_525** = 6, **MATRIX_COEFFICIENT_SMPTE_ST240** = 7, **MATRIX_COEFFICIENT_YCGCO** = 8,
**MATRIX_COEFFICIENT_BT2020_NCL** = 9, **MATRIX_COEFFICIENT_BT2020_CL** = 10, **MATRIX_COEFFICIENT_SMPTE_ST2085** = 11, **MATRIX_COEFFICIENT_CHROMATICITY_NCL** = 12,
**MATRIX_COEFFICIENT_CHROMATICITY_CL** = 13, **MATRIX_COEFFICIENT_ICTCP** = 14
} | 矩阵系数。 | +| [OH_BitsPerSample](#oh_bitspersample) {
**SAMPLE_U8** = 0, **SAMPLE_S16LE** = 1, **SAMPLE_S24LE** = 2, **SAMPLE_S32LE** = 3,
**SAMPLE_F32LE** = 4, **SAMPLE_U8P** = 5, **SAMPLE_S16P** = 6, **SAMPLE_S24P** = 7,
**SAMPLE_S32P** = 8, **SAMPLE_F32P** = 9, **INVALID_WIDTH** = -1
} | 枚举每个编码样本的音频位数。 | ### 变量 - | 名称 | 描述 | +| 名称 | 描述 | | -------- | -------- | -| [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_avc) | AAC音频编解码器的MIME类型。 | +| \*[OH_AVCODEC_MIMETYPE_VIDEO_MPEG4](#oh_avcodec_mimetype_video_mpeg4) | MPEG4视频编解码器的MIME类型。 | +| \*OH_AVCODEC_MIMETYPE_VIDEO_HEVC | HEVC视频编解码器的MIME类型。 | +| \*OH_AVCODEC_MIMETYPE_AUDIO_MPEG | MPEG音频编解码器的MIME类型。 | +| \*OH_AVCODEC_MIMETYPE_IMAGE_JPG | JPG图片编解码器的MIME类型。 | +| \*OH_AVCODEC_MIMETYPE_IMAGE_PNG | PNG图片编解码器的MIME类型。 | +| \*OH_AVCODEC_MIMETYPE_IMAGE_BMP | BMP图片编解码器的MIME类型。 | +| \*OH_AVCODEC_MIMETYPE_AUDIO_FLAC | FLAC音频编解码器的MIME类型。 | +| \*OH_AVCODEC_MIMETYPE_AUDIO_VORBIS | VORBIS音频编解码器的MIME类型。 | +| \*[OH_ED_KEY_TIME_STAMP](#oh_ed_key_time_stamp) | 提供统一的surface Buffer附属数据的字符描述符。 | +| \*OH_ED_KEY_EOS | surface附属数据中结束流的字符描述符,值类型为bool | +| \*[OH_MD_KEY_TRACK_TYPE](#oh_md_key_track_type) | 为媒体播放框架提供统一的字符描述符。 | +| \*OH_MD_KEY_CODEC_MIME | mime类型的字符描述符,值类型为string | +| \*OH_MD_KEY_DURATION | duration的字符描述符,值类型为int64_t | +| \*OH_MD_KEY_BITRATE | 比特率的字符描述符,值类型为uint32_t | +| \*OH_MD_KEY_MAX_INPUT_SIZE | 最大输入尺寸的字符描述符,值类型为uint32_t | +| \*OH_MD_KEY_WIDTH | 视频宽度的字符描述符,值类型为uint32_t | +| \*OH_MD_KEY_HEIGHT | 视频高度的字符描述符,值类型为uint32_t | +| \*OH_MD_KEY_PIXEL_FORMAT | 视频像素格式的字符描述符,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat) | +| \*OH_MD_KEY_RANGE_FLAG | | +| \*OH_MD_KEY_COLOR_PRIMARIES | | +| \*OH_MD_KEY_TRANSFER_CHARACTERISTICS | | +| \*OH_MD_KEY_MATRIX_COEFFICIENTS | | +| \*OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 音频采样格式的字符描述符,值类型为uint32_t | +| \*OH_MD_KEY_FRAME_RATE | 视频帧率的字符描述符,值类型为double | +| \*OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE | 视频编码比特率模式的字符描述符,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) | +| \*OH_MD_KEY_PROFILE | 音视频编码能力的字符描述符,值类型为int32_t,具体见[OH_AVCProfile](#oh_avcprofile)或[OH_AACProfile](#oh_aacprofile) | +| \*OH_MD_KEY_AUD_CHANNEL_COUNT | 音频声道数的字符描述符,值类型为uint32_t | +| \*OH_MD_KEY_AUD_SAMPLE_RATE | 音频采样率的字符描述符,值类型为uint32_t | +| \*OH_MD_KEY_I_FRAME_INTERVAL | I帧间隔时长的字符描述符,值类型为int32_t,单位是毫秒 | +| \*OH_MD_KEY_ROTATION | surface旋转角度的字符描述符,值类型为int32_t,限于{0, 90, 180, 270},默认值为0 | +| \*OH_MD_KEY_CODEC_CONFIG | | +| \*OH_MD_KEY_REQUEST_I_FRAME | | +| \*OH_MD_KEY_QUALITY | | +| \*OH_MD_KEY_CHANNEL_LAYOUT | | +| \*OH_MD_KEY_BITS_PER_CODED_SAMPLE | | +| \*OH_MD_KEY_AAC_IS_ADTS | | +| \*OH_MD_KEY_SBR | | +| \*OH_MD_KEY_COMPLIANCE_LEVEL | | +| \*OH_MD_KEY_IDENTIFICATION_HEADER | | +| \*OH_MD_KEY_SETUP_HEADER | | +| \*OH_MD_KEY_TITLE | | +| \*OH_MD_KEY_ARTIST | | +| \*OH_MD_KEY_ALBUM | | +| \*OH_MD_KEY_ALBUM_ARTIST | | +| \*OH_MD_KEY_DATE | | +| \*OH_MD_KEY_COMMENT | | +| \*OH_MD_KEY_GENRE | | +| \*OH_MD_KEY_COPYRIGHT | | +| \*OH_MD_KEY_LANGUAGE | | +| \*OH_MD_KEY_DESCRIPTION | | +| \*OH_MD_KEY_LYRICS | | +| \*OH_MD_KEY_TRACK_COUNT | | ## 类型定义说明 @@ -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,10 @@ 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 +210,18 @@ 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 +230,19 @@ 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 +251,20 @@ 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 +273,18 @@ 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,333 +293,323 @@ typedef void(* OH_AVCodecOnStreamChanged) (OH_AVCodec *codec, OH_AVFormat *forma ``` typedef enum OH_AVCProfileOH_AVCProfile ``` -**描述:** -AVC Profile枚举。 -@syscap SystemCapability.Multimedia.Media.CodecBase +**描述:** +AVC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_MediaType + +### OH_AVOutputFormat ``` -typedef enum OH_MediaTypeOH_MediaType +typedef enum OH_AVOutputFormatOH_AVOutputFormat ``` -**描述:** -媒体类型。 -@syscap SystemCapability.Multimedia.Media.CodecBase +**描述:** +枚举封装器的输出文件格式 -## 枚举类型说明 +**起始版本:** +10 -### OH_AACProfile + +### OH_AVSeekMode ``` -enum OH_AACProfile +typedef enum OH_AVSeekModeOH_AVSeekMode ``` -**描述:** -AAC Profile枚举。 -@syscap SystemCapability.Multimedia.Media.CodecBase +**描述:** +寻找模式 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_AVCodecBufferFlags + +### OH_BitsPerSample ``` -enum OH_AVCodecBufferFlags +typedef enum OH_BitsPerSampleOH_BitsPerSample ``` -**描述:** -枚举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 | +枚举每个编码样本的音频位数 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_AVCProfile +### OH_ColorPrimary ``` -enum OH_AVCProfile +typedef enum OH_ColorPrimaryOH_ColorPrimary ``` -**描述:** -AVC Profile枚举。 -@syscap SystemCapability.Multimedia.Media.CodecBase +**描述:** +原色 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_MediaType + +### OH_HEVCProfile ``` -enum OH_MediaType +typedef enum OH_HEVCProfileOH_HEVCProfile ``` -**描述:** -媒体类型。 - -@syscap SystemCapability.Multimedia.Media.CodecBase - - | 枚举值 | 描述 | -| -------- | -------- | -| MEDIA_TYPE_AUD | 音频轨道 | -| MEDIA_TYPE_VID | 视频轨道 | +**描述:** -## 变量说明 +HEVC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase -### flags +### OH_MatrixCoefficient ``` -uint32_t OH_AVCodecBufferAttr::flags +typedef enum OH_MatrixCoefficientOH_MatrixCoefficient ``` -**描述:** -该Buffer具有的标记,也是多个[OH_AVCodecBufferFlags](#oh_avcodecbufferflags)的组合 +**描述:** -### offset +矩阵系数 \@syscap SystemCapability.Multimedia.Media.CodecBase - -``` -int32_t OH_AVCodecBufferAttr::offset -``` -**描述:** -有效数据在该Buffer内的起始偏移量 - -### OH_AVCODEC_MIMETYPE_AUDIO_AAC +### OH_MediaType ``` -const char* OH_AVCODEC_MIMETYPE_AUDIO_AAC +typedef enum OH_MediaTypeOH_MediaType ``` -**描述:** -AAC音频编解码器的MIME类型。 -@syscap SystemCapability.Multimedia.Media.CodecBase +**描述:** +媒体类型。 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_AVCODEC_MIMETYPE_VIDEO_AVC + +### OH_TransferCharacteristic ``` -const char* OH_AVCODEC_MIMETYPE_VIDEO_AVC +typedef enum OH_TransferCharacteristicOH_TransferCharacteristic ``` -**描述:** -AVC视频编解码器的MIME类型。 -@syscap SystemCapability.Multimedia.Media.CodecBase +**描述:** +转移特性 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_ED_KEY_EOS - -``` -const char* OH_ED_KEY_EOS -``` -**描述:** -surface附属数据中结束流的字符描述符,值类型为bool +## 枚举类型说明 -### OH_ED_KEY_TIME_STAMP +### OH_AACProfile ``` -const char* OH_ED_KEY_TIME_STAMP +enum OH_AACProfile ``` -**描述:** -提供统一的surface Buffer附属数据的字符描述符。 -@syscap SystemCapability.Multimedia.Media.CodecBase +**描述:** +AAC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_MD_KEY_AUD_CHANNEL_COUNT + +### OH_AVCodecBufferFlags ``` -const char* OH_MD_KEY_AUD_CHANNEL_COUNT +enum OH_AVCodecBufferFlags ``` -**描述:** -音频声道数的字符描述符,值类型为uint32_t +**描述:** + +枚举OH_AVCodec缓冲区标记的类别 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_MD_KEY_AUD_SAMPLE_RATE + +### OH_AVCProfile ``` -const char* OH_MD_KEY_AUD_SAMPLE_RATE +enum OH_AVCProfile ``` -**描述:** -音频采样率的字符描述符,值类型为uint32_t + +**描述:** + +AVC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_MD_KEY_AUDIO_SAMPLE_FORMAT +### OH_AVOutputFormat ``` -const char* OH_MD_KEY_AUDIO_SAMPLE_FORMAT +enum OH_AVOutputFormat ``` -**描述:** -音频采样格式的字符描述符,值类型为uint32_t +**描述:** -### OH_MD_KEY_BITRATE +枚举封装器的输出文件格式 + + +### OH_AVSeekMode ``` -const char* OH_MD_KEY_BITRATE +enum OH_AVSeekMode ``` -**描述:** -比特率的字符描述符,值类型为uint32_t + +**描述:** + +寻找模式 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_MD_KEY_CODEC_MIME +### OH_BitsPerSample ``` -const char* OH_MD_KEY_CODEC_MIME +enum OH_BitsPerSample ``` -**描述:** -mime类型的字符描述符,值类型为string +**描述:** -### OH_MD_KEY_DURATION +枚举每个编码样本的音频位数 \@syscap SystemCapability.Multimedia.Media.CodecBase + + +### OH_ColorPrimary ``` -const char* OH_MD_KEY_DURATION +enum OH_ColorPrimary ``` -**描述:** -duration的字符描述符,值类型为int64_t + +**描述:** + +原色 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_MD_KEY_FRAME_RATE +### OH_HEVCProfile ``` -const char* OH_MD_KEY_FRAME_RATE +enum OH_HEVCProfile ``` -**描述:** -视频帧率的字符描述符,值类型为double +**描述:** -### OH_MD_KEY_HEIGHT +HEVC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase + + +### OH_MatrixCoefficient ``` -const char* OH_MD_KEY_HEIGHT +enum OH_MatrixCoefficient ``` -**描述:** -视频高度的字符描述符,值类型为uint32_t +**描述:** + +矩阵系数 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_MD_KEY_I_FRAME_INTERVAL + +### OH_MediaType ``` -const char* OH_MD_KEY_I_FRAME_INTERVAL +enum OH_MediaType ``` -**描述:** -I帧间隔时长的字符描述符,值类型为int32_t,单位是毫秒 +**描述:** + +媒体类型。 \@syscap SystemCapability.Multimedia.Media.CodecBase -### OH_MD_KEY_MAX_INPUT_SIZE + +### OH_TransferCharacteristic ``` -const char* OH_MD_KEY_MAX_INPUT_SIZE +enum OH_TransferCharacteristic ``` -**描述:** -最大输入尺寸的字符描述符,值类型为uint32_t +**描述:** -### OH_MD_KEY_PIXEL_FORMAT +转移特性 \@syscap SystemCapability.Multimedia.Media.CodecBase - -``` -const char* OH_MD_KEY_PIXEL_FORMAT -``` -**描述:** -视频像素格式的字符描述符,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat) + +## 变量说明 -### OH_MD_KEY_PROFILE +### OH_AVCODEC_MIMETYPE_VIDEO_AVC ``` -const char* OH_MD_KEY_PROFILE +const char* OH_AVCODEC_MIMETYPE_VIDEO_AVC ``` -**描述:** -音视频编码能力的字符描述符,值类型为int32_t,具体见[OH_AVCProfile](#oh_avcprofile)或[OH_AACProfile](#oh_aacprofile) +**描述:** -### OH_MD_KEY_ROTATION +AVC视频编解码器的MIME类型。 - -``` -const char* OH_MD_KEY_ROTATION -``` -**描述:** -surface旋转角度的字符描述符,值类型为int32_t,限于{0, 90, 180, 270},默认值为0 +\@syscap SystemCapability.Multimedia.Media.CodecBase +**起始版本:** + +9 -### OH_MD_KEY_TRACK_TYPE + +### OH_AVCODEC_MIMETYPE_AUDIO_AVC ``` -const char* OH_MD_KEY_TRACK_TYPE +const char* OH_AVCODEC_MIMETYPE_AUDIO_AVC ``` -**描述:** -为媒体播放框架提供统一的字符描述符。 -@syscap SystemCapability.Multimedia.Media.CodecBase +**描述:** +AAC音频编解码器的MIME类型。 -### OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE +\@syscap SystemCapability.Multimedia.Media.CodecBase - -``` -const char* OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE -``` -**描述:** -视频编码比特率模式的字符描述符,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) +**起始版本:** + +9 -### OH_MD_KEY_WIDTH +### OH_AVCODEC_MIMETYPE_VIDEO_MPEG4 ``` -const char* OH_MD_KEY_WIDTH +const char* OH_AVCODEC_MIMETYPE_VIDEO_MPEG4 ``` -**描述:** -视频宽度的字符描述符,值类型为uint32_t +**描述:** -### pts +MPEG4视频编解码器的MIME类型。 + +\@syscap SystemCapability.Multimedia.Media.CodecBase + +**起始版本:** + +10 + + +### OH_ED_KEY_TIME_STAMP ``` -int64_t OH_AVCodecBufferAttr::pts +const char* OH_ED_KEY_TIME_STAMP ``` -**描述:** -以微秒为单位表示的该Buffer的Presentation时间戳 +**描述:** + +表面缓冲区的额外数据的键 \@syscap SystemCapability.Multimedia.Media.CodecBase -### size + +### OH_MD_KEY_TRACK_TYPE ``` -int32_t OH_AVCodecBufferAttr::size +const char* OH_MD_KEY_TRACK_TYPE ``` -**描述:** -以字节为单位表示的该Buffer内所包含数据的大小 + +**描述:** + +提供统一容器,用于存储媒体描述。 \@syscap SystemCapability.Multimedia.Media.CodecBase diff --git a/zh-cn/application-dev/reference/native-apis/_core.md b/zh-cn/application-dev/reference/native-apis/_core.md index 0fd46eb392753fd223478b8f74d4847ee37f5cbd..9ff6cf8e604c4f917ebcb6ff88a09ebacaa59034 100644 --- a/zh-cn/application-dev/reference/native-apis/_core.md +++ b/zh-cn/application-dev/reference/native-apis/_core.md @@ -5,17 +5,19 @@ Core模块提供用于播放框架的基础骨干能力,包含内存、错误码、格式载体等相关函数。 -@syscap SystemCapability.Multimedia.Media.Core +\@syscap SystemCapability.Multimedia.Media.Core **起始版本:** + 9 + ## 汇总 ### 文件 - | 名称 | 描述 | +| 名称 | 描述 | | -------- | -------- | | [native_averrors.h](native__averrors_8h.md) | 声明了媒体播放框架的错误码。
引用文件: | | [native_avformat.h](native__avformat_8h.md) | 声明了格式相关的函数和枚举。
引用文件: | @@ -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) {
**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
} | 音视频错误码。 | -| [OH_AVPixelFormat](#oh_avpixelformat) {
**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
} | AVPixel 格式的枚举。 | +| [OH_AVErrCode](#oh_averrcode) {
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
} | 音视频错误码。 | +| [OH_AVPixelFormat](#oh_avpixelformat) {
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
} | 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 diff --git a/zh-cn/application-dev/reference/native-apis/_o_h___a_v_codec_async_callback.md b/zh-cn/application-dev/reference/native-apis/_o_h___a_v_codec_async_callback.md index 3ab552510fd099d33190a8936af06dc7013b6910..a9c8b90433445e8fb81c8bafa8abf92ef23e1620 100644 --- a/zh-cn/application-dev/reference/native-apis/_o_h___a_v_codec_async_callback.md +++ b/zh-cn/application-dev/reference/native-apis/_o_h___a_v_codec_async_callback.md @@ -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 diff --git a/zh-cn/application-dev/reference/native-apis/_o_h___a_v_codec_buffer_attr.md b/zh-cn/application-dev/reference/native-apis/_o_h___a_v_codec_buffer_attr.md index ad98600b4d12a7e46ed312ad97c001398fe6b2e7..6803f85e9dd49adccdf47e57e0a3fc45909e868b 100644 --- a/zh-cn/application-dev/reference/native-apis/_o_h___a_v_codec_buffer_attr.md +++ b/zh-cn/application-dev/reference/native-apis/_o_h___a_v_codec_buffer_attr.md @@ -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 diff --git a/zh-cn/application-dev/reference/native-apis/_o_h___a_v_range.md b/zh-cn/application-dev/reference/native-apis/_o_h___a_v_range.md new file mode 100644 index 0000000000000000000000000000000000000000..9411e07ccef789ec9b0cdfa87c3807e700171a6a --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_o_h___a_v_range.md @@ -0,0 +1,62 @@ +# 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 diff --git a/zh-cn/application-dev/reference/native-apis/_video_decoder.md b/zh-cn/application-dev/reference/native-apis/_video_decoder.md index df48c843419645ba3dce1858004fddaaa5e577ce..097a77efa27c8ee5368ac6ead4749ab8798143c2 100644 --- a/zh-cn/application-dev/reference/native-apis/_video_decoder.md +++ b/zh-cn/application-dev/reference/native-apis/_video_decoder.md @@ -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。
引用文件: | ### 函数 - | 名称 | 描述 | +| 名称 | 描述 | | -------- | -------- | -| [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 diff --git a/zh-cn/application-dev/reference/native-apis/_video_encoder.md b/zh-cn/application-dev/reference/native-apis/_video_encoder.md index 37734d087ca2f1613cb68d5f29c112fd9e01e617..35bb9a15944a774caa2b77e6f03ef72d6fea1c40 100644 --- a/zh-cn/application-dev/reference/native-apis/_video_encoder.md +++ b/zh-cn/application-dev/reference/native-apis/_video_encoder.md @@ -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。
引用文件: | ### 类型定义 - | 名称 | 描述 | +| 名称 | 描述 | | -------- | -------- | -| [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 diff --git a/zh-cn/application-dev/reference/native-apis/avcodec__audio__channel__layout_8h.md b/zh-cn/application-dev/reference/native-apis/avcodec__audio__channel__layout_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..aadf8a4f90d9c8eed4e981197e16d8e0154d5bbc --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/avcodec__audio__channel__layout_8h.md @@ -0,0 +1,25 @@ +# avcodec_audio_channel_layout.h + + +## 概述 + +声明用于音频编解码的枚举。 + +**起始版本:** + +9 + +**相关模块:** + +[AudioDecoder](_audio_decoder.md) + + +## 汇总 + + +### 枚举 + +| 名称 | 描述 | +| -------- | -------- | +| [OHOS::Media::AudioChannelSet](_audio_decoder.md#audiochannelset) : uint64_t {
**FRONT_LEFT** = 1ULL << 0U, **FRONT_RIGHT** = 1ULL << 1U, **FRONT_CENTER** = 1ULL << 2U, **LOW_FREQUENCY** = 1ULL << 3U,
**BACK_LEFT** = 1ULL << 4U, **BACK_RIGHT** = 1ULL << 5U, **FRONT_LEFT_OF_CENTER** = 1ULL << 6U, **FRONT_RIGHT_OF_CENTER** = 1ULL << 7U,
**BACK_CENTER** = 1ULL << 8U, **SIDE_LEFT** = 1ULL << 9U, **SIDE_RIGHT** = 1ULL << 10U, **TOP_CENTER** = 1ULL << 11U,
**TOP_FRONT_LEFT** = 1ULL << 12U, **TOP_FRONT_CENTER** = 1ULL << 13U, **TOP_FRONT_RIGHT** = 1ULL << 14U, **TOP_BACK_LEFT** = 1ULL << 15U,
**TOP_BACK_CENTER** = 1ULL << 16U, **TOP_BACK_RIGHT** = 1ULL << 17U, **STEREO_LEFT** = 1ULL << 29U, **STEREO_RIGHT** = 1ULL << 30U,
**WIDE_LEFT** = 1ULL << 31U, **WIDE_RIGHT** = 1ULL << 32U, **SURROUND_DIRECT_LEFT** = 1ULL << 33U, **SURROUND_DIRECT_RIGHT** = 1ULL << 34U,
**LOW_FREQUENCY_2** = 1ULL << 35U, **TOP_SIDE_LEFT** = 1ULL << 36U, **TOP_SIDE_RIGHT** = 1ULL << 37U, **BOTTOM_FRONT_CENTER** = 1ULL << 38U,
**BOTTOM_FRONT_LEFT** = 1ULL << 39U, **BOTTOM_FRONT_RIGHT** = 1ULL << 40U, **AMBISONICS_ACN0** = 1ULL << 41U, OHOS::Media::AMBISONICS_ACN1 = 1ULL << 42U,
OHOS::Media::AMBISONICS_ACN2 = 1ULL << 43U, OHOS::Media::AMBISONICS_ACN3 = 1ULL << 44U, OHOS::Media::AMBISONICS_W = AMBISONICS_ACN0, OHOS::Media::AMBISONICS_Y = AMBISONICS_ACN1,
OHOS::Media::AMBISONICS_Z = AMBISONICS_ACN2, OHOS::Media::AMBISONICS_X = AMBISONICS_ACN3, OHOS::Media::AMBISONICS_ACN4 = 1ULL << 45U, OHOS::Media::AMBISONICS_ACN5 = 1ULL << 46U,
OHOS::Media::AMBISONICS_ACN6 = 1ULL << 47U, OHOS::Media::AMBISONICS_ACN7 = 1ULL << 48U, OHOS::Media::AMBISONICS_ACN8 = 1ULL << 49U, OHOS::Media::AMBISONICS_ACN9 = 1ULL << 50U,
OHOS::Media::AMBISONICS_ACN10 = 1ULL << 51U, OHOS::Media::AMBISONICS_ACN11 = 1ULL << 52U, OHOS::Media::AMBISONICS_ACN12 = 1ULL << 53U, OHOS::Media::AMBISONICS_ACN13 = 1ULL << 54U,
OHOS::Media::AMBISONICS_ACN14 = 1ULL << 55U, OHOS::Media::AMBISONICS_ACN15 = 1ULL << 56U
} | 音频声道数集合, 将每一个声道数映射为int64的变量。 | +| [OHOS::Media::AudioChannelLayout](_audio_decoder.md#audiochannellayout) : uint64_t {
**UNKNOWN_CHANNEL_LAYOUT** = 0, **MONO** = (AudioChannelSet::FRONT_CENTER), **STEREO** = (AudioChannelSet::FRONT_LEFT \| AudioChannelSet::FRONT_RIGHT), **CH_2POINT1** = (STEREO \| AudioChannelSet::LOW_FREQUENCY),
**CH_2_1** = (STEREO \| AudioChannelSet::BACK_CENTER), **SURROUND** = (STEREO \| AudioChannelSet::FRONT_CENTER), **CH_3POINT1** = (SURROUND \| AudioChannelSet::LOW_FREQUENCY), **CH_4POINT0** = (SURROUND \| AudioChannelSet::BACK_CENTER),
**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),
**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),
**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),
**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),
**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),
**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),
**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),
**HEXADECAGONAL**, **STEREO_DOWNMIX** = (AudioChannelSet::STEREO_LEFT \| AudioChannelSet::STEREO_RIGHT), **HOA_FIRST**, **HOA_SECOND**,
**HOA_THIRD**
} | 音频声道数类型, 将用户申请的解码器输出格式表示为编解码器的声道类型。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avcapability_8h.md b/zh-cn/application-dev/reference/native-apis/native__avcapability_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..f8b30dccc788fe8ab61c891fe6a4642895cffc06 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/native__avcapability_8h.md @@ -0,0 +1,72 @@ +# 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) | 检查编解码器是否支持配置文件和级别的特定组合。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avcodec__audiodecoder_8h.md b/zh-cn/application-dev/reference/native-apis/native__avcodec__audiodecoder_8h.md index 2d77a38e599c47d232719e6ad3fbacb3ff5f0f3e..0a71ba1df3e9a5aa70e914379430d401c05105be 100644 --- a/zh-cn/application-dev/reference/native-apis/native__avcodec__audiodecoder_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__avcodec__audiodecoder_8h.md @@ -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) | 检查当前解码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测解码器有效状态。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avcodec__audioencoder_8h.md b/zh-cn/application-dev/reference/native-apis/native__avcodec__audioencoder_8h.md index 5039ef065614d933ba4f2044b5041a5bb2dded6f..d8aae3f9fdc91033bb487b10a8b0c860dedb7a5b 100644 --- a/zh-cn/application-dev/reference/native-apis/native__avcodec__audioencoder_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__avcodec__audioencoder_8h.md @@ -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) | 检查当前编码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测编码器有效状态。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avcodec__base_8h.md b/zh-cn/application-dev/reference/native-apis/native__avcodec__base_8h.md index 457fd4b628f8d8a3968c09ab85409534c8f8b6bd..a6e93e50b635367762296dfb3f03b66d6052dc38 100644 --- a/zh-cn/application-dev/reference/native-apis/native__avcodec__base_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__avcodec__base_8h.md @@ -6,9 +6,10 @@ 声明运行音视频编解码通用的结构体、字符常量、枚举。 **起始版本:** + 9 -**相关模块:** +**相关模块:** [CodecBase](_codec_base.md) @@ -20,57 +21,107 @@ | 名称 | 描述 | | -------- | -------- | -| [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) | struct
定义OH_AVCodec的缓冲区描述信息 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | struct
OH_AVCodec中所有异步回调函数指针的集合。将该结构体的实例注册到OH_AVCodec实例中, 并处理回调上报的信息,以保证OH_AVCodec的正常运行。 \@syscap SystemCapability.Multimedia.Media.CodecBase | ### 类型定义 | 名称 | 描述 | | -------- | -------- | -| [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枚举。| +| **OHNativeWindow** | typedef struct NativeWindow | +| **OH_AVCodec** | typedef struct OH_AVCodec | +| [OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags) | typedef enum [OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags)
枚举OH_AVCodec缓冲区标记的类别 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVOutputFormat](_codec_base.md#oh_avoutputformat) | typedef enum [OH_AVOutputFormat](_codec_base.md#oh_avoutputformat)
枚举封装器的输出文件格式 | +| [OH_AVCodecBufferAttr](_codec_base.md#oh_avcodecbufferattr) | typedef struct [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)
定义OH_AVCodec的缓冲区描述信息 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVCodecOnError](_codec_base.md#oh_avcodeconerror)) (OH_AVCodec \*codec, int32_t errorCode, void \*userData) | typedef void(\*
当OH_AVCodec实例运行出错时,会调用来上报具体的错误信息的函数指针。 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVCodecOnStreamChanged](_codec_base.md#oh_avcodeconstreamchanged)) (OH_AVCodec \*codec, OH_AVFormat \*format, void \*userData) | typedef void(\*
当输出流发生变化时,将调用此函数指针报告新的流描述信息。需要注意的是, OH_AVFormat指针的生命周期只有在函数指针被调用时才有效,调用结束后禁止继续访问。 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)) (OH_AVCodec \*codec, uint32_t index, OH_AVMemory \*data, void \*userData) | typedef void(\*
当OH_AVCodec在运行过程中需要新的输入数据时,将调用此函数指针,并携带可用的缓冲区来填充新的输入数据。 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [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) | typedef void(\*
当OH_AVCodec运行过程中生成新的输出数据时,将调用此函数指针,并携带包含新输出数据的缓冲区。 需要注意的是,OH_AVCodecBufferAttr指针的生命周期仅在调用函数指针时有效,这将禁止调用结束后继续访问。 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVCodecAsyncCallback](_codec_base.md#oh_avcodecasynccallback) | typedef struct [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)
OH_AVCodec中所有异步回调函数指针的集合。将该结构体的实例注册到OH_AVCodec实例中, 并处理回调上报的信息,以保证OH_AVCodec的正常运行。 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_MediaType](_codec_base.md#oh_mediatype) | typedef enum [OH_MediaType](_codec_base.md#oh_mediatype)
媒体类型。 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVCProfile](_codec_base.md#oh_avcprofile) | typedef enum [OH_AVCProfile](_codec_base.md#oh_avcprofile)
AVC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_HEVCProfile](_codec_base.md#oh_hevcprofile) | typedef enum [OH_HEVCProfile](_codec_base.md#oh_hevcprofile)
HEVC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AACProfile](_codec_base.md#oh_aacprofile) | typedef enum [OH_AACProfile](_codec_base.md#oh_aacprofile)
AAC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVSeekMode](_codec_base.md#oh_avseekmode) | typedef enum [OH_AVSeekMode](_codec_base.md#oh_avseekmode)
寻找模式 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_ColorPrimary](_codec_base.md#oh_colorprimary) | typedef enum [OH_ColorPrimary](_codec_base.md#oh_colorprimary)
原色 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_TransferCharacteristic](_codec_base.md#oh_transfercharacteristic) | typedef enum [OH_TransferCharacteristic](_codec_base.md#oh_transfercharacteristic)
转移特性 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_MatrixCoefficient](_codec_base.md#oh_matrixcoefficient) | typedef enum [OH_MatrixCoefficient](_codec_base.md#oh_matrixcoefficient)
矩阵系数 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_BitsPerSample](_codec_base.md#oh_bitspersample) | typedef enum [OH_BitsPerSample](_codec_base.md#oh_bitspersample)
枚举每个编码样本的音频位数 \@syscap SystemCapability.Multimedia.Media.CodecBase | ### 枚举 | 名称 | 描述 | | -------- | -------- | -| [OH_AVCodecBufferFlags](_codec_base.md#oh_avcodecbufferflags) {
**AVCODEC_BUFFER_FLAGS_NONE** = 0, **AVCODEC_BUFFER_FLAGS_EOS** = 1 << 0, **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 << 1, **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 << 2,
**AVCODEC_BUFFER_FLAGS_CODEC_DATA** = 1 << 3
} | 枚举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) {
**AVCODEC_BUFFER_FLAGS_NONE** = 0, **AVCODEC_BUFFER_FLAGS_EOS** = 1 << 0, **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 << 1, **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 << 2,
**AVCODEC_BUFFER_FLAGS_CODEC_DATA** = 1 << 3
} | 枚举OH_AVCodec缓冲区标记的类别 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [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 } | 媒体类型。 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVCProfile](_codec_base.md#oh_avcprofile) { **AVC_PROFILE_BASELINE** = 0, **AVC_PROFILE_HIGH** = 4, **AVC_PROFILE_MAIN** = 8 } | AVC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_HEVCProfile](_codec_base.md#oh_hevcprofile) {
**HEVC_PROFILE_MAIN** = 0, **HEVC_PROFILE_MAIN_10** = 1, **HEVC_PROFILE_MAIN_STILL** = 2, **HEVC_PROFILE_MAIN_10_HDR10** = 3,
**HEVC_PROFILE_MAIN_10_HDR10_PLUS** = 4
} | HEVC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AACProfile](_codec_base.md#oh_aacprofile) { **AAC_PROFILE_LC** = 0 } | AAC模板 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_AVSeekMode](_codec_base.md#oh_avseekmode) { **SEEK_MODE_NEXT_SYNC** = 0, **SEEK_MODE_PREVIOUS_SYNC**, **SEEK_MODE_CLOSEST_SYNC** } | 寻找模式 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_ColorPrimary](_codec_base.md#oh_colorprimary) {
**COLOR_PRIMARY_BT709** = 1, **COLOR_PRIMARY_UNSPECIFIED** = 2, **COLOR_PRIMARY_BT470_M** = 4, **COLOR_PRIMARY_BT601_625** = 5,
**COLOR_PRIMARY_BT601_525** = 6, **COLOR_PRIMARY_SMPTE_ST240** = 7, **COLOR_PRIMARY_GENERIC_FILM** = 8, **COLOR_PRIMARY_BT2020** = 9,
**COLOR_PRIMARY_SMPTE_ST428** = 10, **COLOR_PRIMARY_P3DCI** = 11, **COLOR_PRIMARY_P3D65** = 12
} | 原色 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_TransferCharacteristic](_codec_base.md#oh_transfercharacteristic) {
**TRANSFER_CHARACTERISTIC_BT709** = 1, **TRANSFER_CHARACTERISTIC_UNSPECIFIED** = 2, **TRANSFER_CHARACTERISTIC_GAMMA_2_2** = 4, **TRANSFER_CHARACTERISTIC_GAMMA_2_8** = 5,
**TRANSFER_CHARACTERISTIC_BT601** = 6, **TRANSFER_CHARACTERISTIC_SMPTE_ST240** = 7, **TRANSFER_CHARACTERISTIC_LINEAR** = 8, **TRANSFER_CHARACTERISTIC_LOG** = 9,
**TRANSFER_CHARACTERISTIC_LOG_SQRT** = 10, **TRANSFER_CHARACTERISTIC_IEC_61966_2_4** = 11, **TRANSFER_CHARACTERISTIC_BT1361** = 12, **TRANSFER_CHARACTERISTIC_IEC_61966_2_1** = 13,
**TRANSFER_CHARACTERISTIC_BT2020_10BIT** = 14, **TRANSFER_CHARACTERISTIC_BT2020_12BIT** = 15, **TRANSFER_CHARACTERISTIC_PQ** = 16, **TRANSFER_CHARACTERISTIC_SMPTE_ST428** = 17,
**TRANSFER_CHARACTERISTIC_HLG** = 18
} | 转移特性 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_MatrixCoefficient](_codec_base.md#oh_matrixcoefficient) {
**MATRIX_COEFFICIENT_IDENTITY** = 0, **MATRIX_COEFFICIENT_BT709** = 1, **MATRIX_COEFFICIENT_UNSPECIFIED** = 2, **MATRIX_COEFFICIENT_FCC** = 4,
**MATRIX_COEFFICIENT_BT601_625** = 5, **MATRIX_COEFFICIENT_BT601_525** = 6, **MATRIX_COEFFICIENT_SMPTE_ST240** = 7, **MATRIX_COEFFICIENT_YCGCO** = 8,
**MATRIX_COEFFICIENT_BT2020_NCL** = 9, **MATRIX_COEFFICIENT_BT2020_CL** = 10, **MATRIX_COEFFICIENT_SMPTE_ST2085** = 11, **MATRIX_COEFFICIENT_CHROMATICITY_NCL** = 12,
**MATRIX_COEFFICIENT_CHROMATICITY_CL** = 13, **MATRIX_COEFFICIENT_ICTCP** = 14
} | 矩阵系数 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| [OH_BitsPerSample](_codec_base.md#oh_bitspersample) {
**SAMPLE_U8** = 0, **SAMPLE_S16LE** = 1, **SAMPLE_S24LE** = 2, **SAMPLE_S32LE** = 3,
**SAMPLE_F32LE** = 4, **SAMPLE_U8P** = 5, **SAMPLE_S16P** = 6, **SAMPLE_S24P** = 7,
**SAMPLE_S32P** = 8, **SAMPLE_F32P** = 9, **INVALID_WIDTH** = -1
} | 枚举每个编码样本的音频位数 \@syscap SystemCapability.Multimedia.Media.CodecBase | ### 变量 | 名称 | 描述 | | -------- | -------- | -| [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_AVCODEC_MIMETYPE_VIDEO_AVC](_codec_base.md#oh_avcodec_mimetype_video_avc) | const char \*
枚举音频和视频编解码器的MIME类型 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| **OH_AVCODEC_MIMETYPE_AUDIO_AAC** | const char \* | +| [OH_AVCODEC_MIMETYPE_VIDEO_MPEG4](_codec_base.md#oh_avcodec_mimetype_video_mpeg4) | const char \*
枚举音频和视频编解码器的MIME类型 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| **OH_AVCODEC_MIMETYPE_VIDEO_HEVC** | const char \* | +| **OH_AVCODEC_MIMETYPE_AUDIO_MPEG** | const char \* | +| **OH_AVCODEC_MIMETYPE_IMAGE_JPG** | const char \* | +| **OH_AVCODEC_MIMETYPE_IMAGE_PNG** | const char \* | +| **OH_AVCODEC_MIMETYPE_IMAGE_BMP** | const char \* | +| **OH_AVCODEC_MIMETYPE_AUDIO_FLAC** | const char \* | +| **OH_AVCODEC_MIMETYPE_AUDIO_VORBIS** | const char \* | +| [OH_ED_KEY_TIME_STAMP](_codec_base.md#oh_ed_key_time_stamp) | const char \*
表面缓冲区的额外数据的键 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| **OH_ED_KEY_EOS** | const char \* | +| [OH_MD_KEY_TRACK_TYPE](_codec_base.md#oh_md_key_track_type) | const char \*
提供统一容器,用于存储媒体描述。 \@syscap SystemCapability.Multimedia.Media.CodecBase | +| **OH_MD_KEY_CODEC_MIME** | const char \* | +| **OH_MD_KEY_DURATION** | const char \* | +| **OH_MD_KEY_BITRATE** | const char \* | +| **OH_MD_KEY_MAX_INPUT_SIZE** | const char \* | +| **OH_MD_KEY_WIDTH** | const char \* | +| **OH_MD_KEY_HEIGHT** | const char \* | +| **OH_MD_KEY_PIXEL_FORMAT** | const char \* | +| **OH_MD_KEY_RANGE_FLAG** | const char \* | +| **OH_MD_KEY_COLOR_PRIMARIES** | const char \* | +| **OH_MD_KEY_TRANSFER_CHARACTERISTICS** | const char \* | +| **OH_MD_KEY_MATRIX_COEFFICIENTS** | const char \* | +| **OH_MD_KEY_AUDIO_SAMPLE_FORMAT** | const char \* | +| **OH_MD_KEY_FRAME_RATE** | const char \* | +| **OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE** | const char \* | +| **OH_MD_KEY_PROFILE** | const char \* | +| **OH_MD_KEY_AUD_CHANNEL_COUNT** | const char \* | +| **OH_MD_KEY_AUD_SAMPLE_RATE** | const char \* | +| **OH_MD_KEY_I_FRAME_INTERVAL** | const char \* | +| **OH_MD_KEY_ROTATION** | const char \* | +| **OH_MD_KEY_CODEC_CONFIG** | const char \* | +| **OH_MD_KEY_REQUEST_I_FRAME** | const char \* | +| **OH_MD_KEY_QUALITY** | const char \* | +| **OH_MD_KEY_CHANNEL_LAYOUT** | const char \* | +| **OH_MD_KEY_BITS_PER_CODED_SAMPLE** | const char \* | +| **OH_MD_KEY_AAC_IS_ADTS** | const char \* | +| **OH_MD_KEY_SBR** | const char \* | +| **OH_MD_KEY_COMPLIANCE_LEVEL** | const char \* | +| **OH_MD_KEY_IDENTIFICATION_HEADER** | const char \* | +| **OH_MD_KEY_SETUP_HEADER** | const char \* | +| **OH_MD_KEY_TITLE** | const char \* | +| **OH_MD_KEY_ARTIST** | const char \* | +| **OH_MD_KEY_ALBUM** | const char \* | +| **OH_MD_KEY_ALBUM_ARTIST** | const char \* | +| **OH_MD_KEY_DATE** | const char \* | +| **OH_MD_KEY_COMMENT** | const char \* | +| **OH_MD_KEY_GENRE** | const char \* | +| **OH_MD_KEY_COPYRIGHT** | const char \* | +| **OH_MD_KEY_LANGUAGE** | const char \* | +| **OH_MD_KEY_DESCRIPTION** | const char \* | +| **OH_MD_KEY_LYRICS** | const char \* | +| **OH_MD_KEY_TRACK_COUNT** | const char \* | diff --git a/zh-cn/application-dev/reference/native-apis/native__avcodec__videodecoder_8h.md b/zh-cn/application-dev/reference/native-apis/native__avcodec__videodecoder_8h.md index 904bc5ddfa83ac9ef81acb7c3570cdc480b42a06..0c41530ce72ec2e09eddff2dc5b3981d8050f056 100644 --- a/zh-cn/application-dev/reference/native-apis/native__avcodec__videodecoder_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__avcodec__videodecoder_8h.md @@ -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) | 检查当前编解码实例是否有效。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avcodec__videoencoder_8h.md b/zh-cn/application-dev/reference/native-apis/native__avcodec__videoencoder_8h.md index 73aa36e4b0c6ec8ddf1d681c800a44c5dea62a30..0e6de98747716b9205f7bc768c32739ed3159ea7 100644 --- a/zh-cn/application-dev/reference/native-apis/native__avcodec__videoencoder_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__avcodec__videoencoder_8h.md @@ -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) | 检查当前编解码器实例是否有效。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avdemuxer_8h.md b/zh-cn/application-dev/reference/native-apis/native__avdemuxer_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..e53663b2f20d128c8276b3a929323a89195c4dc0 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/native__avdemuxer_8h.md @@ -0,0 +1,29 @@ +# 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) | 根据设定的跳转模式,将所有选中的轨道到指定时间附近。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__averrors_8h.md b/zh-cn/application-dev/reference/native-apis/native__averrors_8h.md index 9abaeb008f1edf3e29f038de4a54a6708d3ccc6e..14790f73d18573175047ed923a161ec71466c4a2 100644 --- a/zh-cn/application-dev/reference/native-apis/native__averrors_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__averrors_8h.md @@ -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) {
**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
} | 音视频错误码。 | +| [OH_AVErrCode](_core.md#oh_averrcode) {
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
} | 音视频错误码。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avformat_8h.md b/zh-cn/application-dev/reference/native-apis/native__avformat_8h.md index 75164b2cc8663f85c3206cd0ba31334b1daa8faa..b0bad9f2123b96cdb73a08e6684d1927fc5ab9a4 100644 --- a/zh-cn/application-dev/reference/native-apis/native__avformat_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__avformat_8h.md @@ -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) {
**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
} | AVPixel 格式的枚举。| +| [OH_AVPixelFormat](_core.md#oh_avpixelformat) {
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
} | 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中包含的字符串。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avmemory_8h.md b/zh-cn/application-dev/reference/native-apis/native__avmemory_8h.md index ebc9b154755ae87e298b3b96648acbff01cac855..7fff7c1caf08d570a6dad4343e94d4c91f87fab7 100644 --- a/zh-cn/application-dev/reference/native-apis/native__avmemory_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__avmemory_8h.md @@ -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实例指针的资源。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avsource_8h.md b/zh-cn/application-dev/reference/native-apis/native__avsource_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..fef0cf5de9b47ddc3f7233abf64c019f534dae09 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/native__avsource_8h.md @@ -0,0 +1,28 @@ +# 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) | 获取轨道的基础信息。 |