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

!12709 新增媒体子系统Native API,无需翻译

Merge pull request !12709 from zengyawen/monthly_20221018
......@@ -12,6 +12,13 @@
- [Rawfile](rawfile.md)
- [MindSpore](_mind_spore.md)
- [NeuralNeworkRuntime](_neural_nework_runtime.md)
- [Avsession](avsession.md)
- [AudioDecoder](_audio_decoder.md)
- [AudioEncoder](_audio_encoder.md)
- [CodecBase](_codec_base.md)
- [VideoDecoder](_video_decoder.md)
- [VideoEncoder](_video_encoder.md)
- [Core](_core.md)
- 头文件
- [drawing_bitmap.h](drawing__bitmap_8h.md)
- [drawing_brush.h](drawing__brush_8h.md)
......@@ -42,6 +49,24 @@
- [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)
- [av_session.h](av__session_8h.md)
- [avcontrol_command.h](avcontrol__command_8h.md)
- [avmeta_data.h](avmeta__data_8h.md)
- [avplayback_state.h](avplayback__state_8h.md)
- [avsession_controller.h](avsession__controller_8h.md)
- [avsession_descriptor.h](avsession__descriptor_8h.md)
- [avsession_errors.h](avsession__errors_8h.md)
- [avsession_info.h](avsession__info_8h.md)
- [avsession_manager.h](avsession__manager_8h.md)
- [avsession_pixel_map.h](avsession__pixel__map_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_averrors.h](native__averrors_8h.md)
- [native_avformat.h](native__avformat_8h.md)
- [native_avmemory.h](native__avmemory_8h.md)
- 结构体
- [OH_Drawing_BitmapFormat](_o_h___drawing___bitmap_format.md)
- [OH_NativeBuffer_Config](_o_h___native_buffer___config.md)
......@@ -62,4 +87,21 @@
- [OH_NN_Memory](_o_h___n_n___memory.md)
- [OH_NN_QuantParam](_o_h___n_n___quant_param.md)
- [OH_NN_Tensor](_o_h___n_n___tensor.md)
- [OH_NN_UInt32Array](_o_h___n_n___u_int32_array.md)
\ No newline at end of file
- [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)
- [OHOS::AVSession::AVControlCommand](_o_h_o_s_1_1_a_v_session_1_1_a_v_control_command.md)
- [OHOS::AVSession::AVControllerCallback](_h_o_s_1_1_a_v_session_1_1_a_v_controller_callback.md)
- [OHOS::AVSession::AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)
- [OHOS::AVSession::AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)
- [OHOS::AVSession::AVPlaybackState::Position](_1_a_v_session_1_1_a_v_playback_state_1_1_position.md)
- [OHOS::AVSession::AVSession](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md)
- [OHOS::AVSession::AVSessionBasicInfo](o_h_o_s_1_1_a_v_session_1_1_a_v_session_basic_info.md)
- [OHOS::AVSession::AVSessionCallback](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_callback.md)
- [OHOS::AVSession::AVSessionController](o_h_o_s_1_1_a_v_session_1_1_a_v_session_controller.md)
- [OHOS::AVSession::AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)
- [OHOS::AVSession::AVSessionManager](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_manager.md)
- [OHOS::AVSession::AVSessionPixelMap](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_pixel_map.md)
- [OHOS::AVSession::OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md)
- [OHOS::AVSession::SessionListener](_o_h_o_s_1_1_a_v_session_1_1_session_listener.md)
- [OHOS::AVSession::SessionToken](_o_h_o_s_1_1_a_v_session_1_1_session_token.md)
\ No newline at end of file
# OHOS::AVSession::AVPlaybackState::Position
## 概述
播放位置的相关信息。
**Since:**
9
**Version:**
1.0
## 汇总
### 成员变量
| 名称 | 描述 |
| -------- | -------- |
| [elapsedTime_](#elapsedtime)&nbsp;{} | int64_t<br/>媒体已经播放的时间点,第x&nbsp;ms,单位为ms&nbsp; |
| [updateTime_](#updatetime)&nbsp;{} | int64_t<br/>更新的时间戳,单位为ms&nbsp; |
## 结构体成员变量说明
### elapsedTime_
```
int64_t OHOS::AVSession::AVPlaybackState::Position::elapsedTime_ {}
```
**描述:**
媒体已经播放的时间点,第x ms,单位为ms
### updateTime_
```
int64_t OHOS::AVSession::AVPlaybackState::Position::updateTime_ {}
```
**描述:**
更新的时间戳,单位为ms
# AudioDecoder
## 概述
AudioDecoder模块提供用于音频解码功能的函数。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_audiodecoder.h](native__avcodec__audiodecoder_8h.md) | 声明用于音频解码的Native API。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AudioDecoder_CreateByMime](#oh_audiodecoder_createbymime) (const char \*mime) | OH_AVCodec \*<br/>通过mime类型创建一个音频解码器实例,大多数情况下推荐使用该接口。 |
| [OH_AudioDecoder_CreateByName](#oh_audiodecoder_createbyname) (const char \*name) | OH_AVCodec \*<br/>通过音频解码器名称创建一个音频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。 |
| [OH_AudioDecoder_Destroy](#oh_audiodecoder_destroy) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>清空解码器内部资源,并销毁解码器实例 |
| [OH_AudioDecoder_SetCallback](#oh_audiodecoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>设置异步回调函数,使得你的应用能够响应音频解码器产生的事件,该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioDecoder_Configure](#oh_audiodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>配置音频解码器,典型地,需要配置被解码音频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioDecoder_Prepare](#oh_audiodecoder_prepare) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>准备解码器内部资源,调用该接口前必须先调用Configure接口。 |
| [OH_AudioDecoder_Start](#oh_audiodecoder_start) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。 |
| [OH_AudioDecoder_Stop](#oh_audiodecoder_stop) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。 |
| [OH_AudioDecoder_Flush](#oh_audiodecoder_flush) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。 |
| [OH_AudioDecoder_Reset](#oh_audiodecoder_reset) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。 |
| [OH_AudioDecoder_GetOutputDescription](#oh_audiodecoder_getoutputdescription) (OH_AVCodec \*codec) | OH_AVFormat \*<br/>获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。 |
| [OH_AudioDecoder_SetParameter](#oh_audiodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。 |
| [OH_AudioDecoder_PushInputData](#oh_audiodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>将填充好数据的输入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) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>将处理结束的输出Buffer交还给解码器。 |
## 函数说明
### OH_AudioDecoder_Configure()
```
OH_AVErrCode OH_AudioDecoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置音频解码器,典型地,需要配置被解码音频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | 指向OH_AVFormat的指针,用以给出待解码音频轨道的描述信息 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_CreateByMime()
```
OH_AVCodec* OH_AudioDecoder_CreateByMime (const char * mime)
```
**描述:**
通过mime类型创建一个音频解码器实例,大多数情况下推荐使用该接口。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mime | mime类型描述字符串,参考[OH_AVCODEC_MIMETYPE_AUDIO_AAC](_codec_base.md#oh_avcodec_mimetype_audio_aac) |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_AudioDecoder_CreateByName()
```
OH_AVCodec* OH_AudioDecoder_CreateByName (const char * name)
```
**描述:**
通过音频解码器名称创建一个音频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| name | 音频解码器名称 |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_AudioDecoder_Destroy()
```
OH_AVErrCode OH_AudioDecoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空解码器内部资源,并销毁解码器实例
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_Flush()
```
OH_AVErrCode OH_AudioDecoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_FreeOutputData()
```
OH_AVErrCode OH_AudioDecoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给解码器。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输出Buffer对应的索引值 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_GetOutputDescription()
```
OH_AVFormat* OH_AudioDecoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
返回OH_AVFormat句柄指针,需调用者手动释放;
### OH_AudioDecoder_Prepare()
```
OH_AVErrCode OH_AudioDecoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备解码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_PushInputData()
```
OH_AVErrCode 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
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输入Buffer对应的索引值 |
| attr | 描述该Buffer内所包含数据的信息 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_Reset()
```
OH_AVErrCode OH_AudioDecoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_SetCallback()
```
OH_AVErrCode OH_AudioDecoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
```
**描述:**
设置异步回调函数,使得你的应用能够响应音频解码器产生的事件,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_SetParameter()
```
OH_AVErrCode OH_AudioDecoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | OH_AVFormat句柄指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_Start()
```
OH_AVErrCode OH_AudioDecoder_Start (OH_AVCodec * codec)
```
**描述:**
启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioDecoder_Stop()
```
OH_AVErrCode OH_AudioDecoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
# AudioEncoder
## 概述
AudioEncoder模块提供用于音频编码功能的函数。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_audioencoder.h](native__avcodec__audioencoder_8h.md) | 声明用于音频编码的Native API。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AudioEncoder_CreateByMime](#oh_audioencoder_createbymime) (const char \*mime) | OH_AVCodec \*<br/>通过mime类型创建一个音频编码器实例,大多数情况下推荐使用该接口。 |
| [OH_AudioEncoder_CreateByName](#oh_audioencoder_createbyname) (const char \*name) | OH_AVCodec \*<br/>通过音频编码器名称创建一个音频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。 |
| [OH_AudioEncoder_Destroy](#oh_audioencoder_destroy) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>清空编码器内部资源,并销毁编码器实例。 |
| [OH_AudioEncoder_SetCallback](#oh_audioencoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>设置异步回调函数,使得你的应用能够响应音频编码器产生的事件,该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioEncoder_Configure](#oh_audioencoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>配置音频编码器,典型地,需要配置被编码音频轨道的描述信息,该接口被调用必须是在Prepare被调用前。 |
| [OH_AudioEncoder_Prepare](#oh_audioencoder_prepare) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>准备编码器内部资源,调用该接口前必须先调用Configure接口。 |
| [OH_AudioEncoder_Start](#oh_audioencoder_start) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。 |
| [OH_AudioEncoder_Stop](#oh_audioencoder_stop) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>停止编码器。在停止后可通过Start重新进入Started状态。 |
| [OH_AudioEncoder_Flush](#oh_audioencoder_flush) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。 |
| [OH_AudioEncoder_Reset](#oh_audioencoder_reset) (OH_AVCodec \*codec) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。 |
| [OH_AudioEncoder_GetOutputDescription](#oh_audioencoder_getoutputdescription) (OH_AVCodec \*codec) | OH_AVFormat \*<br/>获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。 |
| [OH_AudioEncoder_SetParameter](#oh_audioencoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。 |
| [OH_AudioEncoder_PushInputData](#oh_audioencoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>将填充好数据的输入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) | [OH_AVErrCode](_core.md#oh_averrcode)<br/>将处理结束的输出Buffer交还给编码器。 |
## 函数说明
### OH_AudioEncoder_Configure()
```
OH_AVErrCode OH_AudioEncoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置音频编码器,典型地,需要配置被编码音频轨道的描述信息,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | OH_AVFormat句柄指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_CreateByMime()
```
OH_AVCodec* OH_AudioEncoder_CreateByMime (const char * mime)
```
**描述:**
通过mime类型创建一个音频编码器实例,大多数情况下推荐使用该接口。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mime | mime类型描述字符串,参考[OH_AVCODEC_MIMETYPE_AUDIO_AAC](_codec_base.md#oh_avcodec_mimetype_audio_aac) |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_AudioEncoder_CreateByName()
```
OH_AVCodec* OH_AudioEncoder_CreateByName (const char * name)
```
**描述:**
通过音频编码器名称创建一个音频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| name | 音频编码器名称 |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_AudioEncoder_Destroy()
```
OH_AVErrCode OH_AudioEncoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空编码器内部资源,并销毁编码器实例。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_Flush()
```
OH_AVErrCode OH_AudioEncoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_FreeOutputData()
```
OH_AVErrCode OH_AudioEncoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给编码器。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输出Buffer对应的索引值 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_GetOutputDescription()
```
OH_AVFormat* OH_AudioEncoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
返回OH_AVFormat句柄指针,需调用者手动释放;
### OH_AudioEncoder_Prepare()
```
OH_AVErrCode OH_AudioEncoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备编码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_PushInputData()
```
OH_AVErrCode 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
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| index | 输入Buffer对应的索引值 |
| attr | 描述该Buffer内所包含数据的信息 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_Reset()
```
OH_AVErrCode OH_AudioEncoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回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 )
```
**描述:**
设置异步回调函数,使得你的应用能够响应音频编码器产生的事件,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_SetParameter()
```
OH_AVErrCode OH_AudioEncoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
| format | OH_AVFormat句柄指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_Start()
```
OH_AVErrCode OH_AudioEncoder_Start (OH_AVCodec * codec)
```
**描述:**
启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
### OH_AudioEncoder_Stop()
```
OH_AVErrCode OH_AudioEncoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止编码器。在停止后可通过Start重新进入Started状态。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针 |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)
# CodecBase
## 概述
CodecBase模块提供运行音视频编解码通用的结构体、字符常量、枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_base.h](native__avcodec__base_8h.md) | 声明运行音视频编解码通用的结构体、字符常量、枚举。 |
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | struct<br/>定义OH_AVCodec的Buffer描述信息。 |
| [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | struct<br/>AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告 的信息,以确保AVCodec正常运转。 |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| **OHNativeWindow** | typedef struct NativeWindow |
| **OH_AVCodec** | typedef struct OH_AVCodec |
| [OH_AVCodecBufferFlags](#oh_avcodecbufferflags) | typedef enum [OH_AVCodecBufferFlags](#oh_avcodecbufferflags)<br/>枚举OH_AVCodec的Buffer标记的类别。 |
| [OH_AVCodecBufferAttr](#oh_avcodecbufferattr) | typedef struct [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)<br/>定义OH_AVCodec的Buffer描述信息。 |
| [OH_AVCodecOnError](#oh_avcodeconerror)) (OH_AVCodec \*codec, int32_t errorCode, void \*userData) | typedef void(\*<br/>当OH_AVCodec实例运行发生错误时,该函数指针会被调用以报告具体错误信息。 |
| [OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged)) (OH_AVCodec \*codec, OH_AVFormat \*format, void \*userData) | typedef void(\*<br/>当输出流发生变化时,该函数指针会被调用以报告新的流描述信息。 需要注意的时,OH_AVFormat指针的生命周期仅维持在该函数指针被调用时上有效,禁止在调用结束后继续访问。 |
| [OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata)) (OH_AVCodec \*codec, uint32_t index, OH_AVMemory \*data, void \*userData) | typedef void(\*<br/>当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) | typedef void(\*<br/>当AVCodec运行过程中产生了新的输出数据时,该函数指针会被调用,并携带一块包含新输出数据的Buffer, 需要注意的是,OH_AVCodecBufferAttr指针的生命周期仅维持在该函数指针被调用时有效,禁止调用结束后继续访问。 |
| [OH_AVCodecAsyncCallback](#oh_avcodecasynccallback) | typedef struct [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)<br/>AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告 的信息,以确保AVCodec正常运转。 |
| [OH_MediaType](#oh_mediatype) | typedef enum [OH_MediaType](#oh_mediatype)<br/>媒体类型。 |
| [OH_AVCProfile](#oh_avcprofile) | typedef enum [OH_AVCProfile](#oh_avcprofile)<br/>AVC Profile枚举。 |
| [OH_AACProfile](#oh_aacprofile) | typedef enum [OH_AACProfile](#oh_aacprofile)<br/>AAC Profile枚举。 |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferFlags](#oh_avcodecbufferflags) {<br/>**AVCODEC_BUFFER_FLAGS_NONE** = 0, **AVCODEC_BUFFER_FLAGS_EOS** = 1 &lt;&lt; 0, **AVCODEC_BUFFER_FLAGS_SYNC_FRAME** = 1 &lt;&lt; 1, **AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME** = 1 &lt;&lt; 2, **AVCODEC_BUFFER_FLAGS_CODEC_DATA**= 1 &lt;&lt; 3<br/>} | 枚举OH_AVCodec的Buffer标记的类别。 |
| [OH_MediaType](#oh_mediatype) { **MEDIA_TYPE_AUD** = 0, **MEDIA_TYPE_VID** = 1 } | 媒体类型。 |
| [OH_AVCProfile](#oh_avcprofile) { **AVC_PROFILE_BASELINE** = 0, **AVC_PROFILE_HIGH** = 4, **AVC_PROFILE_MAIN** = 8 } | AVC Profile枚举。 |
| [OH_AACProfile](#oh_aacprofile) { **AAC_PROFILE_LC** = 0 } | AAC Profile枚举。 |
### 变量
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferAttr::pts](#pts) | int64_t<br/>以微秒为单位表示的该Buffer的Presentation时间戳 |
| [OH_AVCodecBufferAttr::size](#size) | int32_t<br/>以字节为单位表示的该Buffer内所包含数据的大小 |
| [OH_AVCodecBufferAttr::offset](#offset) | int32_t<br/>有效数据在该Buffer内的起始偏移量 |
| [OH_AVCodecBufferAttr::flags](#flags) | uint32_t<br/>该Buffer具有的标记,也是多个[OH_AVCodecBufferFlags](#oh_avcodecbufferflags)的组合 |
| **OH_AVCodecAsyncCallback::onError** | [OH_AVCodecOnError](#oh_avcodeconerror) |
| **OH_AVCodecAsyncCallback::onStreamChanged** | [OH_AVCodecOnStreamChanged](#oh_avcodeconstreamchanged) |
| **OH_AVCodecAsyncCallback::onNeedInputData** | [OH_AVCodecOnNeedInputData](#oh_avcodeconneedinputdata) |
| **OH_AVCodecAsyncCallback::onNeedOutputData** | [OH_AVCodecOnNewOutputData](#oh_avcodeconnewoutputdata) |
| [OH_AVCODEC_MIMETYPE_VIDEO_AVC](#oh_avcodec_mimetype_video_avc) | const char \*<br/>AVC视频编解码器的MIME类型。 |
| [OH_AVCODEC_MIMETYPE_AUDIO_AAC](#oh_avcodec_mimetype_audio_aac) | const char \*<br/>AAC音频编解码器的MIME类型。 |
| [OH_ED_KEY_TIME_STAMP](#oh_ed_key_time_stamp) | const char \*<br/>提供统一的surface Buffer附属数据的字符描述符。 |
| [OH_ED_KEY_EOS](#oh_ed_key_eos) | const char \*<br/>surface附属数据中结束流的字符描述符,值类型为bool |
| [OH_MD_KEY_TRACK_TYPE](#oh_md_key_track_type) | const char \*<br/>为媒体播放框架提供统一的字符描述符。 |
| [OH_MD_KEY_CODEC_MIME](#oh_md_key_codec_mime) | const char \*<br/>mime类型的字符描述符,值类型为string |
| [OH_MD_KEY_DURATION](#oh_md_key_duration) | const char \*<br/>duration的字符描述符,值类型为int64_t |
| [OH_MD_KEY_BITRATE](#oh_md_key_bitrate) | const char \*<br/>比特率的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_MAX_INPUT_SIZE](#oh_md_key_max_input_size) | const char \*<br/>最大输入尺寸的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_WIDTH](#oh_md_key_width) | const char \*<br/>视频宽度的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_HEIGHT](#oh_md_key_height) | const char \*<br/>视频高度的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_PIXEL_FORMAT](#oh_md_key_pixel_format) | const char \*<br/>视频像素格式的字符描述符,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat) |
| [OH_MD_KEY_AUDIO_SAMPLE_FORMAT](#oh_md_key_audio_sample_format) | const char \*<br/>音频采样格式的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_FRAME_RATE](#oh_md_key_frame_rate) | const char \*<br/>视频帧率的字符描述符,值类型为double |
| [OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](#oh_md_key_video_encode_bitrate_mode) | const char \*<br/>视频编码比特率模式的字符描述符,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode) |
| [OH_MD_KEY_PROFILE](#oh_md_key_profile) | const char \*<br/>音视频编码能力的字符描述符,值类型为int32_t,具体见[OH_AVCProfile](#oh_avcprofile)[OH_AACProfile](#oh_aacprofile) |
| [OH_MD_KEY_AUD_CHANNEL_COUNT](#oh_md_key_aud_channel_count) | const char \*<br/>音频声道数的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_AUD_SAMPLE_RATE](#oh_md_key_aud_sample_rate) | const char \*<br/>音频采样率的字符描述符,值类型为uint32_t |
| [OH_MD_KEY_I_FRAME_INTERVAL](#oh_md_key_i_frame_interval) | const char \*<br/>I帧间隔时长的字符描述符,值类型为int32_t,单位是毫秒 |
| [OH_MD_KEY_ROTATION](#oh_md_key_rotation) | const char \*<br/>surface旋转角度的字符描述符,值类型为int32_t,限于{0, 90, 180, 270},默认值为0 |
## 类型定义说明
### OH_AACProfile
```
typedef enum OH_AACProfileOH_AACProfile
```
**描述:**
AAC Profile枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCodecAsyncCallback
```
typedef struct OH_AVCodecAsyncCallbackOH_AVCodecAsyncCallback
```
**描述:**
AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告 的信息,以确保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) |
### OH_AVCodecBufferAttr
```
typedef struct OH_AVCodecBufferAttrOH_AVCodecBufferAttr
```
**描述:**
定义OH_AVCodec的Buffer描述信息。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCodecBufferFlags
```
typedef enum OH_AVCodecBufferFlagsOH_AVCodecBufferFlags
```
**描述:**
枚举OH_AVCodec的Buffer标记的类别。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCodecOnError
```
typedef void(* OH_AVCodecOnError) (OH_AVCodec *codec, int32_t errorCode, void *userData)
```
**描述:**
当OH_AVCodec实例运行发生错误时,该函数指针会被调用以报告具体错误信息。
@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | OH_AVCodec实例 |
| errorCode | 具体错误码 |
| userData | 用户特定数据 |
### OH_AVCodecOnNeedInputData
```
typedef void(* OH_AVCodecOnNeedInputData) (OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData)
```
**描述:**
当AVCodec运行过程中需要新的输入数据时,该函数指针会被调用,并携带一块可用的Buffer以供填入新的输入数据。
@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | OH_AVCodec实例 |
| index | 新的可用的输入Buffer对应的索引 |
| data | 新的可用的输入Buffer |
| userData | 用户特定数据 |
### OH_AVCodecOnNewOutputData
```
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
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | OH_AVCodec实例 |
| index | 新的输出Buffer对应的索引 |
| data | 包含新的输出数据的Buffer |
| attr | 新的输出Buffer的描述信息,具体参考[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) |
| userData | specified data |
### OH_AVCodecOnStreamChanged
```
typedef void(* OH_AVCodecOnStreamChanged) (OH_AVCodec *codec, OH_AVFormat *format, void *userData)
```
**描述:**
当输出流发生变化时,该函数指针会被调用以报告新的流描述信息。 需要注意的时,OH_AVFormat指针的生命周期仅维持在该函数指针被调用时上有效,禁止在调用结束后继续访问。
@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | OH_AVCodec实例 |
| format | 新的输出流描述信息 |
| userData | 用户特定数据 |
### OH_AVCProfile
```
typedef enum OH_AVCProfileOH_AVCProfile
```
**描述:**
AVC Profile枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MediaType
```
typedef enum OH_MediaTypeOH_MediaType
```
**描述:**
媒体类型。
@syscap SystemCapability.Multimedia.Media.CodecBase
## 枚举类型说明
### OH_AACProfile
```
enum OH_AACProfile
```
**描述:**
AAC Profile枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCodecBufferFlags
```
enum OH_AVCodecBufferFlags
```
**描述:**
枚举OH_AVCodec的Buffer标记的类别。
@syscap SystemCapability.Multimedia.Media.CodecBase
| 枚举值 | 描述 |
| -------- | -------- |
| AVCODEC_BUFFER_FLAGS_EOS | 表明该Buffer是End-of-Stream帧 |
| AVCODEC_BUFFER_FLAGS_SYNC_FRAME | 表明该Buffer内包含关键帧 |
| AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME | 表明该Buffer内包含的数据仅仅为一帧的一部分 |
| AVCODEC_BUFFER_FLAGS_CODEC_DATA | 表明该Buffer包含Codec-Specific-Data |
### OH_AVCProfile
```
enum OH_AVCProfile
```
**描述:**
AVC Profile枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MediaType
```
enum OH_MediaType
```
**描述:**
媒体类型。
@syscap SystemCapability.Multimedia.Media.CodecBase
| 枚举值 | 描述 |
| -------- | -------- |
| MEDIA_TYPE_AUD | 音频轨道 |
| MEDIA_TYPE_VID | 视频轨道 |
## 变量说明
### flags
```
uint32_t OH_AVCodecBufferAttr::flags
```
**描述:**
该Buffer具有的标记,也是多个[OH_AVCodecBufferFlags](#oh_avcodecbufferflags)的组合
### offset
```
int32_t OH_AVCodecBufferAttr::offset
```
**描述:**
有效数据在该Buffer内的起始偏移量
### OH_AVCODEC_MIMETYPE_AUDIO_AAC
```
const char* OH_AVCODEC_MIMETYPE_AUDIO_AAC
```
**描述:**
AAC音频编解码器的MIME类型。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_AVCODEC_MIMETYPE_VIDEO_AVC
```
const char* OH_AVCODEC_MIMETYPE_VIDEO_AVC
```
**描述:**
AVC视频编解码器的MIME类型。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_ED_KEY_EOS
```
const char* OH_ED_KEY_EOS
```
**描述:**
surface附属数据中结束流的字符描述符,值类型为bool
### OH_ED_KEY_TIME_STAMP
```
const char* OH_ED_KEY_TIME_STAMP
```
**描述:**
提供统一的surface Buffer附属数据的字符描述符。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MD_KEY_AUD_CHANNEL_COUNT
```
const char* OH_MD_KEY_AUD_CHANNEL_COUNT
```
**描述:**
音频声道数的字符描述符,值类型为uint32_t
### OH_MD_KEY_AUD_SAMPLE_RATE
```
const char* OH_MD_KEY_AUD_SAMPLE_RATE
```
**描述:**
音频采样率的字符描述符,值类型为uint32_t
### OH_MD_KEY_AUDIO_SAMPLE_FORMAT
```
const char* OH_MD_KEY_AUDIO_SAMPLE_FORMAT
```
**描述:**
音频采样格式的字符描述符,值类型为uint32_t
### OH_MD_KEY_BITRATE
```
const char* OH_MD_KEY_BITRATE
```
**描述:**
比特率的字符描述符,值类型为uint32_t
### OH_MD_KEY_CODEC_MIME
```
const char* OH_MD_KEY_CODEC_MIME
```
**描述:**
mime类型的字符描述符,值类型为string
### OH_MD_KEY_DURATION
```
const char* OH_MD_KEY_DURATION
```
**描述:**
duration的字符描述符,值类型为int64_t
### OH_MD_KEY_FRAME_RATE
```
const char* OH_MD_KEY_FRAME_RATE
```
**描述:**
视频帧率的字符描述符,值类型为double
### OH_MD_KEY_HEIGHT
```
const char* OH_MD_KEY_HEIGHT
```
**描述:**
视频高度的字符描述符,值类型为uint32_t
### OH_MD_KEY_I_FRAME_INTERVAL
```
const char* OH_MD_KEY_I_FRAME_INTERVAL
```
**描述:**
I帧间隔时长的字符描述符,值类型为int32_t,单位是毫秒
### OH_MD_KEY_MAX_INPUT_SIZE
```
const char* OH_MD_KEY_MAX_INPUT_SIZE
```
**描述:**
最大输入尺寸的字符描述符,值类型为uint32_t
### OH_MD_KEY_PIXEL_FORMAT
```
const char* OH_MD_KEY_PIXEL_FORMAT
```
**描述:**
视频像素格式的字符描述符,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#oh_avpixelformat)
### OH_MD_KEY_PROFILE
```
const char* OH_MD_KEY_PROFILE
```
**描述:**
音视频编码能力的字符描述符,值类型为int32_t,具体见[OH_AVCProfile](#oh_avcprofile)[OH_AACProfile](#oh_aacprofile)
### OH_MD_KEY_ROTATION
```
const char* OH_MD_KEY_ROTATION
```
**描述:**
surface旋转角度的字符描述符,值类型为int32_t,限于{0, 90, 180, 270},默认值为0
### OH_MD_KEY_TRACK_TYPE
```
const char* OH_MD_KEY_TRACK_TYPE
```
**描述:**
为媒体播放框架提供统一的字符描述符。
@syscap SystemCapability.Multimedia.Media.CodecBase
### OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE
```
const char* OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE
```
**描述:**
视频编码比特率模式的字符描述符,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#oh_videoencodebitratemode)
### OH_MD_KEY_WIDTH
```
const char* OH_MD_KEY_WIDTH
```
**描述:**
视频宽度的字符描述符,值类型为uint32_t
### pts
```
int64_t OH_AVCodecBufferAttr::pts
```
**描述:**
以微秒为单位表示的该Buffer的Presentation时间戳
### size
```
int32_t OH_AVCodecBufferAttr::size
```
**描述:**
以字节为单位表示的该Buffer内所包含数据的大小
# Core
## 概述
Core模块提供用于播放框架的基础骨干能力,包含内存、错误码、格式载体等相关函数。
@syscap SystemCapability.Multimedia.Media.Core
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_averrors.h](native__averrors_8h.md) | 声明了媒体播放框架的错误码。 |
| [native_avformat.h](native__avformat_8h.md) | 声明了格式相关的函数和枚举。 |
| [native_avmemory.h](native__avmemory_8h.md) | 声明了AVMemory的函数接口。 |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](#oh_averrcode) | typedef enum [OH_AVErrCode](#oh_averrcode)<br/>音视频错误码。 |
| **OH_AVFormat** | typedef struct OH_AVFormat |
| [OH_AVPixelFormat](#oh_avpixelformat) | typedef enum [OH_AVPixelFormat](#oh_avpixelformat)<br/>AVPixel 格式的枚举。 |
| **OH_AVMemory** | typedef struct OH_AVMemory |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](#oh_averrcode) {<br/>**AV_ERR_OK** = 0, **AV_ERR_NO_MEMORY** = 1, **AV_ERR_OPERATE_NOT_PERMIT** = 2, **AV_ERR_INVALID_VAL** = 3, **AV_ERR_IO** = 4, **AV_ERR_TIMEOUT** = 5, **AV_ERR_UNKNOWN** = 6, **AV_ERR_SERVICE_DIED** = 7, **AV_ERR_INVALID_STATE** = 8, **AV_ERR_UNSUPPORT** = 9, **AV_ERR_EXTEND_START** = 100<br/>} | 音视频错误码。 |
| [OH_AVPixelFormat](#oh_avpixelformat) {<br/>**AV_PIXEL_FORMAT_YUVI420** = 1, **AV_PIXEL_FORMAT_NV12** = 2, **AV_PIXEL_FORMAT_NV21** = 3, **AV_PIXEL_FORMAT_SURFACE_FORMAT** = 4, **AV_PIXEL_FORMAT_RGBA** = 5<br/>} | AVPixel 格式的枚举。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVFormat_Create](#oh_avformat_create) (void) | struct OH_AVFormat \*<br/>创建一个OH_AVFormat句柄指针,用以读写数据。 |
| [OH_AVFormat_Destroy](#oh_avformat_destroy) (struct OH_AVFormat \*format) | void<br/>销毁指定OH_AVFormat句柄资源。 |
| [OH_AVFormat_Copy](#oh_avformat_copy) (struct OH_AVFormat \*to, struct OH_AVFormat \*from) | bool<br/>拷贝OH_AVFormat句柄资源. |
| [OH_AVFormat_SetIntValue](#oh_avformat_setintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t value) | bool<br/>向OH_AVFormat写入Int数据. |
| [OH_AVFormat_SetLongValue](#oh_avformat_setlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t value) | bool<br/>向OH_AVFormat写入Long数据。 |
| [OH_AVFormat_SetFloatValue](#oh_avformat_setfloatvalue) (struct OH_AVFormat \*format, const char \*key, float value) | bool<br/>向OH_AVFormat写入Float数据。 |
| [OH_AVFormat_SetDoubleValue](#oh_avformat_setdoublevalue) (struct OH_AVFormat \*format, const char \*key, double value) | bool<br/>向OH_AVFormat写入Double数据。 |
| [OH_AVFormat_SetStringValue](#oh_avformat_setstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*value) | bool<br/>向OH_AVFormat写入String数据。 |
| [OH_AVFormat_SetBuffer](#oh_avformat_setbuffer) (struct OH_AVFormat \*format, const char \*key, const uint8_t \*addr, size_t size) | bool<br/>向OH_AVFormat写入一块指定长度的数据。 |
| [OH_AVFormat_GetIntValue](#oh_avformat_getintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t \*out) | bool<br/>从OH_AVFormat读取Int数据。 |
| [OH_AVFormat_GetLongValue](#oh_avformat_getlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t \*out) | bool<br/>从OH_AVFormat读取Long数据。 |
| [OH_AVFormat_GetFloatValue](#oh_avformat_getfloatvalue) (struct OH_AVFormat \*format, const char \*key, float \*out) | bool<br/>从OH_AVFormat读取Float数据。 |
| [OH_AVFormat_GetDoubleValue](#oh_avformat_getdoublevalue) (struct OH_AVFormat \*format, const char \*key, double \*out) | bool<br/>从OH_AVFormat读取Double数据。 |
| [OH_AVFormat_GetStringValue](#oh_avformat_getstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*\*out) | bool<br/>从OH_AVFormat读取Double数据。 |
| [OH_AVFormat_GetBuffer](#oh_avformat_getbuffer) (struct OH_AVFormat \*format, const char \*key, uint8_t \*\*addr, size_t \*size) | bool<br/>从OH_AVFormat读取一块指定长度的数据。 |
| [OH_AVFormat_DumpInfo](#oh_avformat_dumpinfo) (struct OH_AVFormat \*format) | const char \*<br/>以字符串的形式输出OH_AVFormat所包含的信息。 |
| [OH_AVMemory_GetAddr](#oh_avmemory_getaddr) (struct OH_AVMemory \*mem) | uint8_t \*<br/>获取入参的内存虚拟地址。 |
| [OH_AVMemory_GetSize](#oh_avmemory_getsize) (struct OH_AVMemory \*mem) | int32_t<br/>获取入参的内存长度。 |
## 类型定义说明
### OH_AVErrCode
```
typedef enum OH_AVErrCodeOH_AVErrCode
```
**描述:**
音视频错误码。
@syscap SystemCapability.Multimedia.Media.Core
### OH_AVPixelFormat
```
typedef enum OH_AVPixelFormatOH_AVPixelFormat
```
**描述:**
AVPixel 格式的枚举。
@syscap SystemCapability.Multimedia.Media.Core
## 枚举类型说明
### OH_AVErrCode
```
enum OH_AVErrCode
```
**描述:**
音视频错误码。
@syscap SystemCapability.Multimedia.Media.Core
| 枚举值 | 描述 |
| -------- | -------- |
| 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
```
enum OH_AVPixelFormat
```
**描述:**
AVPixel 格式的枚举。
@syscap SystemCapability.Multimedia.Media.Core
| 枚举值 | 描述 |
| -------- | -------- |
| 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 |
## 函数说明
### OH_AVFormat_Copy()
```
bool OH_AVFormat_Copy (struct OH_AVFormat * to, struct OH_AVFormat * from )
```
**描述:**
拷贝OH_AVFormat句柄资源.
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| to | 接收数据的OH_AVFormat句柄指针 |
| from | 被拷贝数据的OH_AVFormat句柄指针 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_Create()
```
struct OH_AVFormat* OH_AVFormat_Create (void )
```
**描述:**
创建一个OH_AVFormat句柄指针,用以读写数据。
@syscap SystemCapability.Multimedia.Media.Core
**返回:**
返回OH_AVFormat实例的指针
### OH_AVFormat_Destroy()
```
void OH_AVFormat_Destroy (struct OH_AVFormat * format)
```
**描述:**
销毁指定OH_AVFormat句柄资源。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
**返回:**
void
### OH_AVFormat_DumpInfo()
```
const char* OH_AVFormat_DumpInfo (struct OH_AVFormat * format)
```
**描述:**
以字符串的形式输出OH_AVFormat所包含的信息。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
**返回:**
返回由键值和数据组成的字符串指针
### OH_AVFormat_GetBuffer()
```
bool OH_AVFormat_GetBuffer (struct OH_AVFormat * format, const char * key, uint8_t ** addr, size_t * size )
```
**描述:**
从OH_AVFormat读取一块指定长度的数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读写数据的键值 |
| addr | 生命周期是format持有,伴随format销毁,如果调用者需要长期持有,必须进行内存拷贝 |
| size | 读写数据的长度 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetDoubleValue()
```
bool OH_AVFormat_GetDoubleValue (struct OH_AVFormat * format, const char * key, double * out )
```
**描述:**
从OH_AVFormat读取Double数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetFloatValue()
```
bool OH_AVFormat_GetFloatValue (struct OH_AVFormat * format, const char * key, float * out )
```
**描述:**
从OH_AVFormat读取Float数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetIntValue()
```
bool OH_AVFormat_GetIntValue (struct OH_AVFormat * format, const char * key, int32_t * out )
```
**描述:**
从OH_AVFormat读取Int数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetLongValue()
```
bool OH_AVFormat_GetLongValue (struct OH_AVFormat * format, const char * key, int64_t * out )
```
**描述:**
从OH_AVFormat读取Long数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetStringValue()
```
bool OH_AVFormat_GetStringValue (struct OH_AVFormat * format, const char * key, const char ** out )
```
**描述:**
从OH_AVFormat读取Double数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的字符串指针,指向的数据生命周期伴随GetString更新,伴随format销毁,如果调用者需要长期持有,必须进行内存拷贝 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetBuffer()
```
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
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| addr | 写入的数据地址 |
| size | 写入的数据长度 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetDoubleValue()
```
bool OH_AVFormat_SetDoubleValue (struct OH_AVFormat * format, const char * key, double value )
```
**描述:**
向OH_AVFormat写入Double数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetFloatValue()
```
bool OH_AVFormat_SetFloatValue (struct OH_AVFormat * format, const char * key, float value )
```
**描述:**
向OH_AVFormat写入Float数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetIntValue()
```
bool OH_AVFormat_SetIntValue (struct OH_AVFormat * format, const char * key, int32_t value )
```
**描述:**
向OH_AVFormat写入Int数据.
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetLongValue()
```
bool OH_AVFormat_SetLongValue (struct OH_AVFormat * format, const char * key, int64_t value )
```
**描述:**
向OH_AVFormat写入Long数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetStringValue()
```
bool OH_AVFormat_SetStringValue (struct OH_AVFormat * format, const char * key, const char * value )
```
**描述:**
向OH_AVFormat写入String数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVMemory_GetAddr()
```
uint8_t* OH_AVMemory_GetAddr (struct OH_AVMemory * mem)
```
**描述:**
获取入参的内存虚拟地址。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mem | 指向OH_AVMemory实例的指针 |
**返回:**
如果内存有效,返回内存的虚拟地址
如果内存无效,返回nullptr
### OH_AVMemory_GetSize()
```
int32_t OH_AVMemory_GetSize (struct OH_AVMemory * mem)
```
**描述:**
获取入参的内存长度。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mem | 指向OH_AVMemory实例的指针 |
**返回:**
如果内存有效,返回内存长度
如果内存无效,返回-1
# OHOS::AVSession::AVControllerCallback
## 概述
定义控制器相关回调操作的类的实现。
**Since:**
9
**Version:**
1.0
## 汇总
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [OnSessionDestroy](#onsessiondestroy)&nbsp;()=0 | AVSession会话销毁的抽象的回调方法。&nbsp; |
| [OnPlaybackStateChange](#onplaybackstatechange)&nbsp;(const&nbsp;[AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)&nbsp;&amp;state)=0 | 音视频的播放状态发生改变的抽象的回调方法。&nbsp; |
| [OnMetaDataChange](#onmetadatachange)&nbsp;(const&nbsp;[AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)&nbsp;&amp;data)=0 | 会话元数据内容发生变化的抽象的回调方法。&nbsp; |
| [OnActiveStateChange](#onactivestatechange)&nbsp;(bool&nbsp;isActive)=0 | 当前会话激活状态发生改变的抽象的回调方法。&nbsp; |
| [OnValidCommandChange](#onvalidcommandchange)&nbsp;(const&nbsp;std::vector&lt;&nbsp;int32_t&nbsp;&gt;&nbsp;&amp;cmds)=0 | 控制命令的有效性发生变化的抽象的回调方法。&nbsp; |
| [OnOutputDeviceChange](#onoutputdevicechange)&nbsp;(const&nbsp;[OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md)&nbsp;&amp;outputDeviceInfo)=0 | 注册会话输出设备更改。&nbsp; |
| [~AVControllerCallback](#avcontrollercallback)&nbsp;()=default | AVControllerCallback的默认的析构函数。&nbsp; |
## 构造及析构函数说明
### ~AVControllerCallback()
```
virtual OHOS::AVSession::AVControllerCallback::~AVControllerCallback ()
```
**描述:**
AVControllerCallback的默认的析构函数。
## 成员函数说明
### OnActiveStateChange()
```
virtual void OHOS::AVSession::AVControllerCallback::OnActiveStateChange (bool isActive)
```
**描述:**
当前会话激活状态发生改变的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| isActive | 表示是否激活。&nbsp; |
### OnMetaDataChange()
```
virtual void OHOS::AVSession::AVControllerCallback::OnMetaDataChange (const AVMetaData & data)
```
**描述:**
会话元数据内容发生变化的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 会话元数据内容,类型为[AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)&nbsp; |
**参见:**
[AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)
### OnOutputDeviceChange()
```
virtual void OHOS::AVSession::AVControllerCallback::OnOutputDeviceChange (const OutputDeviceInfo & outputDeviceInfo)
```
**描述:**
注册会话输出设备更改。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| outputDeviceInfo | 输出设备信息&nbsp;[OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md)。&nbsp; |
### OnPlaybackStateChange()
```
virtual void OHOS::AVSession::AVControllerCallback::OnPlaybackStateChange (const AVPlaybackState & state)
```
**描述:**
音视频的播放状态发生改变的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| state | 音视频的播放状态的枚举值,类型为[AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)&nbsp; |
### OnSessionDestroy()
```
virtual void OHOS::AVSession::AVControllerCallback::OnSessionDestroy ()
```
**描述:**
AVSession会话销毁的抽象的回调方法。
### OnValidCommandChange()
```
virtual void OHOS::AVSession::AVControllerCallback::OnValidCommandChange (const std::vector< int32_t > & cmds)
```
**描述:**
控制命令的有效性发生变化的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| cmds,媒体有效的指令列表,范围为{ | |
<!--no_check-->
\ No newline at end of file
# OH_AVCodecAsyncCallback
## 概述
AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告 的信息,以确保AVCodec正常运转。
@syscap SystemCapability.Multimedia.Media.CodecBase
参数
**Since:**
9
**Version:**
1.0
**相关模块:**
[CodecBase](_codec_base.md)
## 汇总
### 成员变量
| 名称 | 描述 |
| -------- | -------- |
| **onError** | [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) |
# OH_AVCodecBufferAttr
## 概述
定义OH_AVCodec的Buffer描述信息。
@syscap SystemCapability.Multimedia.Media.CodecBase
**Since:**
9
**Version:**
1.0
**相关模块:**
[CodecBase](_codec_base.md)
## 汇总
### 成员变量
| 名称 | 描述 |
| -------- | -------- |
| [pts](_codec_base.md#pts) | int64_t |
| [size](_codec_base.md#size) | int32_t |
| [offset](_codec_base.md#offset) | int32_t |
| [flags](_codec_base.md#flags) | uint32_t |
# OHOS::AVSession::AVControlCommand
## 概述
用于描述音视频播控命令工具类,播控命令的封装对象,支持设置和获取控制命令。
## 汇总
### Public 类型
| 名称 | 描述 |
| -------- | -------- |
| {<br/>**SESSION_CMD_INVALID** = -1, **SESSION_CMD_PLAY** = 0, **SESSION_CMD_PAUSE** = 1, **SESSION_CMD_STOP** = 2, **SESSION_CMD_PLAY_NEXT** = 3, **SESSION_CMD_PLAY_PREVIOUS** = 4, **SESSION_CMD_FAST_FORWARD** = 5, **SESSION_CMD_REWIND** = 6, **SESSION_CMD_SEEK** = 7, **SESSION_CMD_SET_SPEED** = 8, **SESSION_CMD_SET_LOOP_MODE** = 9, **SESSION_CMD_TOGGLE_FAVORITE** = 10, **SESSION_CMD_MAX** = 11<br/>} | 操作指令。 |
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Marshalling](#marshalling) (Parcel &amp;parcel) const override | IPC通信数据序列化。 |
### 静态 Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Unmarshalling](#unmarshalling) (Parcel &amp;data) | IPC通信数据反序列化。 |
| [localCapability](#localcapability) | 命令数组,用于分布式业务,判断是否支持某个命令。 |
| [IsValid](#isvalid) () const | 判断当前指令是否在有效范围内。 |
| [SetCommand](#setcommand) (int32_t cmd) | 设置操作指令。 |
| [GetCommand](#getcommand) () const | 获取操作指令。 |
| [SetSpeed](#setspeed) (double speed) | 设置媒体播放倍数。 |
| [GetSpeed](#getspeed) (double &amp;speed) const | 获取媒体播放倍数 |
| [SetSeekTime](#setseektime) (int64_t time) | 设置媒体跳播时间。 |
| [GetSeekTime](#getseektime) (int64_t &amp;time) const | 获取媒体跳播时间。 |
| [SetLoopMode](#setloopmode) (int32_t mode) | 设置媒体循环模式。 |
| [GetLoopMode](#getloopmode) (int32_t &amp;mode) const | 获取媒体循环模式。 |
| [SetAssetId](#setassetid) (const std::string &amp;assetId) | 设置媒体id。 |
| [GetAssetId](#getassetid) (std::string &amp;assetId) const | 获取媒体id。 |
## 成员枚举类型说明
### anonymous enum
```
anonymous enum
```
**描述:**
操作指令。
| 枚举值 | 描述 |
| -------- | -------- |
| SESSION_CMD_INVALID | 无效指令,内部用于判断指令是否有效 |
| SESSION_CMD_PLAY | 播放 |
| SESSION_CMD_PAUSE | 暂停 |
| SESSION_CMD_STOP | 停止 |
| SESSION_CMD_PLAY_NEXT | 播放下一首 |
| SESSION_CMD_PLAY_PREVIOUS | 播放上一首 |
| SESSION_CMD_FAST_FORWARD | 快进 |
| SESSION_CMD_REWIND | 快退 |
| SESSION_CMD_SEEK | 跳播 |
| SESSION_CMD_SET_SPEED | 设置播放倍数 |
| SESSION_CMD_SET_LOOP_MODE | 设置循环模式 |
| SESSION_CMD_TOGGLE_FAVORITE | 收藏 |
| SESSION_CMD_MAX | 无效指令,内部用于判断指令是否有效 |
## 成员函数说明
### GetAssetId()
```
int32_t OHOS::AVSession::AVControlCommand::GetAssetId (std::string & assetId) const
```
**描述:**
获取媒体id。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 保存媒体id。 |
**参见:**
[SetAssetId](#setassetid)
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### GetCommand()
```
int32_t OHOS::AVSession::AVControlCommand::GetCommand () const
```
**描述:**
获取操作指令。
**返回:**
返回操作指令,范围在**SESSION_CMD_INVALID****SESSION_CMD_MAX**之间。
**参见:**
[SetCommand](#setcommand)
### GetLoopMode()
```
int32_t OHOS::AVSession::AVControlCommand::GetLoopMode (int32_t & mode) const
```
**描述:**
获取媒体循环模式。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mode | 保存媒体循环模式。 取值在[AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)**LOOP_MODE_SEQUENCE****LOOP_MODE_SHUFFLE**之间。 |
**参见:**
[SetLoopMode](#setloopmode)
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### GetSeekTime()
```
int32_t OHOS::AVSession::AVControlCommand::GetSeekTime (int64_t & time) const
```
**描述:**
获取媒体跳播时间。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| time | 媒体资源的位置,从媒体资源开头开始计算,单位为ms。取值需大于等于0。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[SetSeekTime](#setseektime)
### GetSpeed()
```
int32_t OHOS::AVSession::AVControlCommand::GetSpeed (double & speed) const
```
**描述:**
获取媒体播放倍数
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| speed | 媒体播放倍数,返回值。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[SetSpeed](#setspeed)
### IsValid()
```
bool OHOS::AVSession::AVControlCommand::IsValid () const
```
**描述:**
判断当前指令是否在有效范围内。
**返回:**
如果cmd_在有效范围内,范围在**SESSION_CMD_INVALID****SESSION_CMD_MAX**之间, 返回true;否则,返回false。
### Marshalling()
```
bool OHOS::AVSession::AVControlCommand::Marshalling (Parcel & parcel) const
```
**描述:**
IPC通信数据序列化。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| parcel | 保存序列化值的对象**Parcel**。 |
**返回:**
成功返回true;否则,返回false。
**参见:**
[Unmarshalling](#unmarshalling)
### SetAssetId()
```
int32_t OHOS::AVSession::AVControlCommand::SetAssetId (const std::string & assetId)
```
**描述:**
设置媒体id。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 媒体id,不可为空。 |
**参见:**
[GetAssetId](#getassetid)
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### SetCommand()
```
int32_t OHOS::AVSession::AVControlCommand::SetCommand (int32_t cmd)
```
**描述:**
设置操作指令。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| cmd | 操作指令,范围在**SESSION_CMD_INVALID****SESSION_CMD_MAX**之间。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetCommand](#getcommand)
### SetLoopMode()
```
int32_t OHOS::AVSession::AVControlCommand::SetLoopMode (int32_t mode)
```
**描述:**
设置媒体循环模式。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mode | 媒体循环模式, 取值在[AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)**LOOP_MODE_SEQUENCE****LOOP_MODE_SHUFFLE**之间。 |
**参见:**
[GetLoopMode](#getloopmode)
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### SetSeekTime()
```
int32_t OHOS::AVSession::AVControlCommand::SetSeekTime (int64_t time)
```
**描述:**
设置媒体跳播时间。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| time | 媒体资源的位置,从媒体资源开头开始计算,单位为ms。取值需大于等于0。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetSeekTime](#getseektime)
### SetSpeed()
```
int32_t OHOS::AVSession::AVControlCommand::SetSpeed (double speed)
```
**描述:**
设置媒体播放倍数。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| speed | 媒体播放倍数,需大于0。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetSpeed](#getspeed)
### Unmarshalling()
```
static AVControlCommand* OHOS::AVSession::AVControlCommand::Unmarshalling (Parcel & data)
```
**描述:**
IPC通信数据反序列化。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 序列化对象**Parcel**。 |
**返回:**
返回AVControlCommand的函数指针。
**参见:**
[Marshalling](#marshalling)
## 结构体成员变量说明
### localCapability
```
const std::vector<int32_t> OHOS::AVSession::AVControlCommand::localCapability
```
**Value:**
```
{
SESSION_CMD_PLAY,
SESSION_CMD_PAUSE,
SESSION_CMD_STOP,
SESSION_CMD_PLAY_NEXT,
SESSION_CMD_PLAY_PREVIOUS,
SESSION_CMD_FAST_FORWARD,
SESSION_CMD_REWIND,
SESSION_CMD_SEEK,
SESSION_CMD_SET_SPEED,
SESSION_CMD_SET_LOOP_MODE,
SESSION_CMD_TOGGLE_FAVORITE,
}
```
**描述:**
命令数组,用于分布式业务,判断是否支持某个命令。
# OHOS::AVSession::AVMetaData
## 概述
会话元数据类,提供获取metadata进程间传递的序列化和反序列话及数据拷贝的接口方法。
## 汇总
### Public 类型
| 名称 | 描述 |
| -------- | -------- |
| {<br/>**META_KEY_ASSET_ID** = 0, **META_KEY_TITLE** = 1, **META_KEY_ARTIST** = 2, **META_KEY_AUTHOR** = 3, **META_KEY_ALBUM** = 4, **META_KEY_WRITER** = 5, **META_KEY_COMPOSER** = 6, **META_KEY_DURATION** = 7, **META_KEY_MEDIA_IMAGE** = 8, **META_KEY_MEDIA_IMAGE_URI** = 9, **META_KEY_PUBLISH_DATE** = 10, **META_KEY_SUBTITLE** = 11, **META_KEY_DESCRIPTION** = 12, **META_KEY_LYRIC** = 13, **META_KEY_PREVIOUS_ASSET_ID** = 14, **META_KEY_NEXT_ASSET_ID** = 15, **META_KEY_MAX** = 16<br/>} | 会话元数据具体枚举项。 |
| [MetaMaskType](#metamasktype) = std::bitset&lt; META_KEY_MAX &gt; | 引入掩码标记需要拷贝的会话元数据。 |
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [AVMetaData](#avmetadata) ()=default | 会话元数据默认构造函数。 |
| [~AVMetaData](#avmetadata) () override | 会话元数据默认析构函数。 |
| [Marshalling](#marshalling) (Parcel &amp;data) const override | 实现会话元数据进程间传递的序列化。 |
| [SetAssetId](#setassetid) (const std::string &amp;assetId) | 设置曲目ID。 |
| [GetAssetId](#getassetid) () const | 获取曲目ID。 |
| [SetTitle](#settitle) (const std::string &amp;title) | 设置标题。 |
| [GetTitle](#gettitle) () const | 获取标题。 |
| [SetArtist](#setartist) (const std::string &amp;artist) | 设置艺术家名称。 |
| [GetArtist](#getartist) () const | 获取艺术家名称。 |
| [SetAuthor](#setauthor) (const std::string &amp;author) | 设置制作人名称。 |
| [GetAuthor](#getauthor) () const | 获取制作人名称。 |
| [SetAlbum](#setalbum) (const std::string &amp;album) | 设置专辑名称。 |
| [GetAlbum](#getalbum) () const | 获取专辑名称。 |
| [SetWriter](#setwriter) (const std::string &amp;writer) | 设置作词名称。 |
| [GetWriter](#getwriter) () const | 获取作词名称。 |
| [SetComposer](#setcomposer) (const std::string &amp;composer) | 设置作曲名称。 |
| [GetComposer](#getcomposer) () const | 获取作曲名称。 |
| [SetDuration](#setduration) (int64_t duration) | 设置媒体时长。 |
| [GetDuration](#getduration) () const | 获取媒体时长。 |
| [SetMediaImage](#setmediaimage) (const std::shared_ptr&lt; [AVSessionPixelMap](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_pixel_map.md) &gt; &amp;mediaImage) | 设置媒体图片。 |
| [GetMediaImage](#getmediaimage) () const | 获取媒体图片。 |
| [SetMediaImageUri](#setmediaimageuri) (const std::string &amp;mediaImageUri) | 设置媒体图片URI。 |
| [GetMediaImageUri](#getmediaimageuri) () const | 获取媒体图片URI。 |
| [SetPublishDate](#setpublishdate) (double date) | 设置曲目发布日期,时间戳,单位为ms。 |
| [GetPublishDate](#getpublishdate) () const | 获取曲目发布日期,时间戳,单位为ms。 |
| [SetSubTitle](#setsubtitle) (const std::string &amp;subTitle) | 设置子标题。 |
| [GetSubTitle](#getsubtitle) () const | 获取子标题。 |
| [SetDescription](#setdescription) (const std::string &amp;description) | 设置曲目描述。 |
| [GetDescription](#getdescription) () const | 获取曲目描述。 |
| [SetLyric](#setlyric) (const std::string &amp;lyric) | 设置歌词。 |
| [GetLyric](#getlyric) () const | 获取歌词。 |
| [SetPreviousAssetId](#setpreviousassetid) (const std::string &amp;assetId) | 设置上一曲曲目ID。 |
| [GetPreviousAssetId](#getpreviousassetid) () const | 获取上一曲曲目ID。 |
| [SetNextAssetId](#setnextassetid) (const std::string &amp;assetId) | 设置下一曲曲目ID。 |
| [GetNextAssetId](#getnextassetid) () const | 获取下一曲曲目ID。 |
| [Reset](#reset) () | 重置所有会话元数据项。 |
| [GetMetaMask](#getmetamask) () const | 获取掩码。 |
| [CopyToByMask](#copytobymask) ([MetaMaskType](#metamasktype) &amp;mask, AVMetaData &amp;metaOut) const | 根据metadata掩码,将metadata项复制到metaOut。 |
| [CopyFrom](#copyfrom) (const AVMetaData &amp;metaIn) | 根据metaIn元掩码的设置位从metaIn复制metadata项。 |
| [IsValid](#isvalid) () const | 会话元数据有效性判断。 |
### 静态 Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Unmarshalling](#unmarshalling) (Parcel &amp;data) | 实现会话元数据进程间传递的反序列化。 |
### 静态 Public 属性
| 名称 | 描述 |
| -------- | -------- |
| [DURATION_ALWAYS_PLAY](#duration_always_play) = -1 | 持续时间全局变量宏定义。 |
| [localCapability](#localcapability) | 会话元数据数组,用于分布式业务,设置会话属性。 |
## 成员类型定义说明
### MetaMaskType
```
using OHOS::AVSession::AVMetaData::MetaMaskType = std::bitset<META_KEY_MAX>
```
**描述:**
引入掩码标记需要拷贝的会话元数据。
## 成员枚举类型说明
### anonymous enum
```
anonymous enum
```
**描述:**
会话元数据具体枚举项。
| 枚举值 | 描述 |
| -------- | -------- |
| META_KEY_ASSET_ID | 曲目ID |
| META_KEY_TITLE | 标题 |
| META_KEY_ARTIST | 艺术家 |
| META_KEY_AUTHOR | 制作人 |
| META_KEY_ALBUM | 专辑 |
| META_KEY_WRITER | 作词 |
| META_KEY_COMPOSER | 作曲 |
| META_KEY_DURATION | 媒体时长 |
| META_KEY_MEDIA_IMAGE | 媒体影像 |
| META_KEY_MEDIA_IMAGE_URI | 媒体影像路径 |
| META_KEY_PUBLISH_DATE | 曲目发布日期 |
| META_KEY_SUBTITLE | 子标题 |
| META_KEY_DESCRIPTION | 曲目描述 |
| META_KEY_LYRIC | 歌词 |
| META_KEY_PREVIOUS_ASSET_ID | 上一曲 |
| META_KEY_NEXT_ASSET_ID | 下一曲 |
| META_KEY_MAX | 无效指令,内部用来判断会话元数据是否有效 |
## 构造及析构函数说明
### AVMetaData()
```
OHOS::AVSession::AVMetaData::AVMetaData ()
```
**描述:**
会话元数据默认构造函数。
### ~AVMetaData()
```
OHOS::AVSession::AVMetaData::~AVMetaData ()
```
**描述:**
会话元数据默认析构函数。
## 成员函数说明
### CopyFrom()
```
bool OHOS::AVSession::AVMetaData::CopyFrom (const AVMetaData & metaIn)
```
**描述:**
根据metaIn元掩码的设置位从metaIn复制metadata项。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| metaIn | 会话元数据将要拷贝的入参。|
### CopyToByMask()
```
bool OHOS::AVSession::AVMetaData::CopyToByMask (MetaMaskType & mask, AVMetaData & metaOut ) const
```
**描述:**
根据metadata掩码,将metadata项复制到metaOut。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mask | metadata掩码[MetaMaskType](#metamasktype)。 |
| metaOut | metadata已拷贝成功的出参AVMetaData。 |
**返回:**
成功返回true;失败则返回false。
### GetAlbum()
```
std::string OHOS::AVSession::AVMetaData::GetAlbum () const
```
**描述:**
获取专辑名称。
**返回:**
返回专辑名称。
**参见:**
[SetAlbum](#setalbum)
### GetArtist()
```
std::string OHOS::AVSession::AVMetaData::GetArtist () const
```
**描述:**
获取艺术家名称。
**返回:**
返回艺术家名称。
**参见:**
[SetArtist](#setartist)
### GetAssetId()
```
std::string OHOS::AVSession::AVMetaData::GetAssetId () const
```
**描述:**
获取曲目ID。
**返回:**
返回曲目ID。
**参见:**
[SetAssetId](#setassetid)
### GetAuthor()
```
std::string OHOS::AVSession::AVMetaData::GetAuthor () const
```
**描述:**
获取制作人名称。
**返回:**
返回制作人名称。
**参见:**
[SetAuthor](#setauthor)
### GetComposer()
```
std::string OHOS::AVSession::AVMetaData::GetComposer () const
```
**描述:**
获取作曲名称。
**返回:**
返回作曲名称。
**参见:**
[SetComposer](#setcomposer)
### GetDescription()
```
std::string OHOS::AVSession::AVMetaData::GetDescription () const
```
**描述:**
获取曲目描述。
**返回:**
返回曲目描述。
**参见:**
[SetDescription](#setdescription)
### GetDuration()
```
int64_t OHOS::AVSession::AVMetaData::GetDuration () const
```
**描述:**
获取媒体时长。
**返回:**
返回媒体时长,单位为ms。
**参见:**
[SetDuration](#setduration)
### GetLyric()
```
std::string OHOS::AVSession::AVMetaData::GetLyric () const
```
**描述:**
获取歌词。
**返回:**
返回歌词。
**参见:**
[SetLyric](#setlyric)
### GetMediaImage()
```
std::shared_ptr<AVSessionPixelMap> OHOS::AVSession::AVMetaData::GetMediaImage () const
```
**描述:**
获取媒体图片。
**返回:**
返回媒体图片[AVSessionPixelMap](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_pixel_map.md)
**参见:**
[SetMediaImage](#setmediaimage)
### GetMediaImageUri()
```
std::string OHOS::AVSession::AVMetaData::GetMediaImageUri () const
```
**描述:**
获取媒体图片URI。
**返回:**
返回媒体图片URI。
**参见:**
[SetMediaImageUri](#setmediaimageuri)
### GetMetaMask()
```
MetaMaskType OHOS::AVSession::AVMetaData::GetMetaMask () const
```
**描述:**
获取掩码。
**返回:**
返回掩码[MetaMaskType](#metamasktype)
### GetNextAssetId()
```
std::string OHOS::AVSession::AVMetaData::GetNextAssetId () const
```
**描述:**
获取下一曲曲目ID。
**返回:**
返回下一曲曲目ID。
**参见:**
[SetNextAssetId](#setnextassetid)
### GetPreviousAssetId()
```
std::string OHOS::AVSession::AVMetaData::GetPreviousAssetId () const
```
**描述:**
获取上一曲曲目ID。
**返回:**
返回上一曲曲目ID。
**参见:**
[SetPreviousAssetId](#setpreviousassetid)
### GetPublishDate()
```
double OHOS::AVSession::AVMetaData::GetPublishDate () const
```
**描述:**
获取曲目发布日期,时间戳,单位为ms。
**返回:**
返回曲目发布日期,时间戳,单位为ms。
**参见:**
[SetPublishDate](#setpublishdate)
### GetSubTitle()
```
std::string OHOS::AVSession::AVMetaData::GetSubTitle () const
```
**描述:**
获取子标题。
**返回:**
返回子标题。
**参见:**
[SetSubTitle](#setsubtitle)
### GetTitle()
```
std::string OHOS::AVSession::AVMetaData::GetTitle () const
```
**描述:**
获取标题。
**返回:**
返回标题。
**参见:**
[SetTitle](#settitle)
### GetWriter()
```
std::string OHOS::AVSession::AVMetaData::GetWriter () const
```
**描述:**
获取作词名称。
**返回:**
返回作词名称。
**参见:**
[SetWriter](#setwriter)
### IsValid()
```
bool OHOS::AVSession::AVMetaData::IsValid () const
```
**描述:**
会话元数据有效性判断。
**返回:**
有效返回true;无效则返回false。
### Marshalling()
```
bool OHOS::AVSession::AVMetaData::Marshalling (Parcel & data) const
```
**描述:**
实现会话元数据进程间传递的序列化。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 保存序列化值的对象**Parcel**。 |
**返回:**
如果序列化成功,则返回true;如果操作失败,则返回false。
**参见:**
[Unmarshalling](#unmarshalling)
### Reset()
```
void OHOS::AVSession::AVMetaData::Reset ()
```
**描述:**
重置所有会话元数据项。
### SetAlbum()
```
void OHOS::AVSession::AVMetaData::SetAlbum (const std::string & album)
```
**描述:**
设置专辑名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| album | 专辑名称。 |
**参见:**
[GetAlbum](#getalbum)
### SetArtist()
```
void OHOS::AVSession::AVMetaData::SetArtist (const std::string & artist)
```
**描述:**
设置艺术家名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| artist | 艺术家名称。 |
**参见:**
[GetArtist](#getartist)
### SetAssetId()
```
void OHOS::AVSession::AVMetaData::SetAssetId (const std::string & assetId)
```
**描述:**
设置曲目ID。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 曲目ID,不可为空。 |
**参见:**
[GetAssetId](#getassetid)
### SetAuthor()
```
void OHOS::AVSession::AVMetaData::SetAuthor (const std::string & author)
```
**描述:**
设置制作人名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| author | 制作人名称。 |
**参见:**
[GetArtist](#getartist)
### SetComposer()
```
void OHOS::AVSession::AVMetaData::SetComposer (const std::string & composer)
```
**描述:**
设置作曲名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| composer | 作曲名称。 |
**参见:**
[GetComposer](#getcomposer)
### SetDescription()
```
void OHOS::AVSession::AVMetaData::SetDescription (const std::string & description)
```
**描述:**
设置曲目描述。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| description | 曲目描述。 |
**参见:**
[GetDescription](#getdescription)
### SetDuration()
```
void OHOS::AVSession::AVMetaData::SetDuration (int64_t duration)
```
**描述:**
设置媒体时长。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| duration | 媒体时长,必须大于等于-1,单位为ms 。 |
**参见:**
[GetDuration](#getduration)
### SetLyric()
```
void OHOS::AVSession::AVMetaData::SetLyric (const std::string & lyric)
```
**描述:**
设置歌词。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| lyric | 歌词。 |
**参见:**
[GetLyric](#getlyric)
### SetMediaImage()
```
void OHOS::AVSession::AVMetaData::SetMediaImage (const std::shared_ptr< AVSessionPixelMap > & mediaImage)
```
**描述:**
设置媒体图片。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mediaImage | 媒体图片[AVSessionPixelMap](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_pixel_map.md)。 |
**参见:**
[GetMediaImage](#getmediaimage)
### SetMediaImageUri()
```
void OHOS::AVSession::AVMetaData::SetMediaImageUri (const std::string & mediaImageUri)
```
**描述:**
设置媒体图片URI。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mediaImageUri | 媒体图片URI。 |
**参见:**
[GetMediaImageUri](#getmediaimageuri)
### SetNextAssetId()
```
void OHOS::AVSession::AVMetaData::SetNextAssetId (const std::string & assetId)
```
**描述:**
设置下一曲曲目ID。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 下一曲曲目ID。 |
**参见:**
[GetNextAssetId](#getnextassetid)
### SetPreviousAssetId()
```
void OHOS::AVSession::AVMetaData::SetPreviousAssetId (const std::string & assetId)
```
**描述:**
设置上一曲曲目ID。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 上一曲曲目ID。 |
**参见:**
[GetPreviousAssetId](#getpreviousassetid)
### SetPublishDate()
```
void OHOS::AVSession::AVMetaData::SetPublishDate (double date)
```
**描述:**
设置曲目发布日期,时间戳,单位为ms。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| date | 曲目发布日期,时间戳,单位为ms。 |
**参见:**
[GetPublishDate](#getpublishdate)
### SetSubTitle()
```
void OHOS::AVSession::AVMetaData::SetSubTitle (const std::string & subTitle)
```
**描述:**
设置子标题。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| subTitle | 子标题。 |
**参见:**
[GetSubTitle](#getsubtitle)
### SetTitle()
```
void OHOS::AVSession::AVMetaData::SetTitle (const std::string & title)
```
**描述:**
设置标题。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| title | 标题。 |
**参见:**
[GetTitle](#gettitle)
### SetWriter()
```
void OHOS::AVSession::AVMetaData::SetWriter (const std::string & writer)
```
**描述:**
设置作词名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| writer | 作词名称。 |
**参见:**
[GetWriter](#getwriter)
### Unmarshalling()
```
static AVMetaData* OHOS::AVSession::AVMetaData::Unmarshalling (Parcel & data)
```
**描述:**
实现会话元数据进程间传递的反序列化。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 序列化对象**Parcel**。 |
**返回:**
如果反序列化成功,返回AVMetaData类型指针;失败则返回nullptr。
**参见:**
[Marshalling](#marshalling)
## 结构体成员变量说明
### DURATION_ALWAYS_PLAY
```
constexpr std::int64_t OHOS::AVSession::AVMetaData::DURATION_ALWAYS_PLAY = -1
```
**描述:**
持续时间全局变量宏定义。
### localCapability
```
const std::vector<int32_t> OHOS::AVSession::AVMetaData::localCapability
```
**Value:**
```
{
META_KEY_ASSET_ID,
META_KEY_TITLE,
META_KEY_ARTIST,
META_KEY_AUTHOR,
META_KEY_ALBUM,
META_KEY_WRITER,
META_KEY_COMPOSER,
META_KEY_DURATION,
META_KEY_MEDIA_IMAGE,
META_KEY_MEDIA_IMAGE_URI,
META_KEY_PUBLISH_DATE,
META_KEY_SUBTITLE,
META_KEY_DESCRIPTION,
META_KEY_LYRIC,
META_KEY_PREVIOUS_ASSET_ID,
META_KEY_NEXT_ASSET_ID,
}
```
**描述:**
会话元数据数组,用于分布式业务,设置会话属性。
# OHOS::AVSession::AVPlaybackState
## 概述
音视频播放状态类,提供获取和设置播放界面的信息。
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [Position](_1_a_v_session_1_1_a_v_playback_state_1_1_position.md) | struct<br/>播放位置的相关信息。 |
### Public 类型
| 名称 | 描述 |
| -------- | -------- |
| {<br/>**PLAYBACK_STATE_INITIAL** = 0, **PLAYBACK_STATE_PREPARING** = 1, **PLAYBACK_STATE_PLAYING** = 2, **PLAYBACK_STATE_PAUSED** = 3, **PLAYBACK_STATE_FAST_FORWARD** = 4, **PLAYBACK_STATE_REWIND** = 5, **PLAYBACK_STATE_STOP** = 6, **PLAYBACK_STATE_MAX** = 7<br/>} | 描述播放状态的枚举。 |
| {<br/>**PLAYBACK_KEY_STATE** = 0, **PLAYBACK_KEY_SPEED** = 1, **PLAYBACK_KEY_POSITION** = 2, **PLAYBACK_KEY_BUFFERED_TIME** = 3, **PLAYBACK_KEY_LOOP_MODE** = 4, **PLAYBACK_KEY_IS_FAVORITE** = 5, **PLAYBACK_KEY_MAX** = 6<br/>} | 播放界面信息的枚举。 |
| { **LOOP_MODE_SEQUENCE** = 0, **LOOP_MODE_SINGLE** = 1, **LOOP_MODE_LIST** = 2, **LOOP_MODE_SHUFFLE** = 3 } | 循环模式的枚举。 |
| **PlaybackStateMaskType** = std::bitset&lt; PLAYBACK_KEY_MAX &gt; | |
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Marshalling](#marshalling) (Parcel &amp;parcel) const override | IPC通信数据序列化。 |
| [IsValid](#isvalid) () const | 验证当前信息的有效性。 |
| [SetState](#setstate) (int32_t state) | 设置音视频的播放状态。 |
| [GetState](#getstate) () const | 获取当前音视频的播放状态。 |
| [SetSpeed](#setspeed) (double speed) | 设置播放倍速。 |
| [GetSpeed](#getspeed) () const | 获取当前播放倍速。 |
| [SetPosition](#setposition) (const [Position](_1_a_v_session_1_1_a_v_playback_state_1_1_position.md) &amp;position) | 设置播放位置,通过更新时间与经过时间来计算,单位ms。 |
| [GetPosition](#getposition) () const | 获取播放位置。 |
| [SetBufferedTime](#setbufferedtime) (int64_t time) | 设置缓冲时间,单位为ms。 |
| [GetBufferedTime](#getbufferedtime) () const | 获取当前缓冲时间,单位为ms。 |
| [SetLoopMode](#setloopmode) (int32_t mode) | 设置循环模式。 |
| [GetLoopMode](#getloopmode) () const | 获取当前循环模式。 |
| [SetFavorite](#setfavorite) (bool isFavorite) | 设置是否收藏。 |
| [GetFavorite](#getfavorite) () const | 获取是否收藏。 |
| [GetMask](#getmask) () const | 获取掩码。 |
### 静态 Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Unmarshalling](#unmarshalling) (Parcel &amp;parcel) | IPC通信数据反序列化。 |
| [localCapability](#localcapability) | 内联函数指针数组AVPlaybackState,用于分布式业务,设置播放界面信息。 |
| [CopyToByMask](#copytobymask) (PlaybackStateMaskType &amp;mask, AVPlaybackState &amp;out) const | 通过掩码拷贝信息到新的AVPlaybackState对象。 |
| [CopyFrom](#copyfrom) (const AVPlaybackState &amp;in) | 根据当前对象的mask_掩码,将输入的AVPlaybackState类型的信息复制到当前对象。 |
## 成员枚举类型说明
### anonymous enum
```
anonymous enum
```
**描述:**
描述播放状态的枚举。
| 枚举值 | 描述 |
| -------- | -------- |
| PLAYBACK_STATE_INITIAL | 初始状态 |
| PLAYBACK_STATE_PREPARING | 缓冲状态 |
| PLAYBACK_STATE_PLAYING | 播放状态 |
| PLAYBACK_STATE_PAUSED | 暂停状态 |
| PLAYBACK_STATE_FAST_FORWARD | 快进状态 |
| PLAYBACK_STATE_REWIND | 快退状态 |
| PLAYBACK_STATE_STOP | 停止状态 |
| PLAYBACK_STATE_MAX | 无效类型,内部用于判断状态是否有效 |
### anonymous enum
```
anonymous enum
```
**描述:**
播放界面信息的枚举。
| 枚举值 | 描述 |
| -------- | -------- |
| PLAYBACK_KEY_STATE | 播放状态,包括正在播放、暂停、快进等 |
| PLAYBACK_KEY_SPEED | 播放倍数 |
| PLAYBACK_KEY_POSITION | 播放位置 |
| PLAYBACK_KEY_BUFFERED_TIME | 缓冲时间 |
| PLAYBACK_KEY_LOOP_MODE | 循环模式 |
| PLAYBACK_KEY_IS_FAVORITE | 设置喜欢(收藏) |
| PLAYBACK_KEY_MAX | 无效类型,内部用于判断key是否有效 |
### anonymous enum
```
anonymous enum
```
**描述:**
循环模式的枚举。
| 枚举值 | 描述 |
| -------- | -------- |
| LOOP_MODE_SEQUENCE | 顺序播放 |
| LOOP_MODE_SINGLE | 单曲循环 |
| LOOP_MODE_LIST | 列表循环 |
| LOOP_MODE_SHUFFLE | 随机播放 |
## 成员函数说明
### CopyFrom()
```
bool OHOS::AVSession::AVPlaybackState::CopyFrom (const AVPlaybackState & in)
```
**描述:**
根据当前对象的mask_掩码,将输入的AVPlaybackState类型的信息复制到当前对象。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| in | AVPlaybackState类型。 |
**返回:**
如果有至少一个播放界面信息被拷贝,返回true;如果一个播放界面信息都没有被拷贝,返回false。
**参见:**
[CopyToByMask](#copytobymask)
[GetMask](#getmask)
### CopyToByMask()
```
bool OHOS::AVSession::AVPlaybackState::CopyToByMask (PlaybackStateMaskType & mask, AVPlaybackState & out ) const
```
**描述:**
通过掩码拷贝信息到新的AVPlaybackState对象。
mask对应位上有值的对象拷贝给out。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mask | 输入的掩码**}。 out 输出的音视频的播放状态 AVPlaybackState}。 如果有至少一个播放界面信息被拷贝,返回true;如果一个播放界面信息都没有被拷贝,返回false。 CopyFrom 9 1.0 ** |
### GetBufferedTime()
```
int64_t OHOS::AVSession::AVPlaybackState::GetBufferedTime () const
```
**描述:**
获取当前缓冲时间,单位为ms。
**返回:**
返回缓冲时间。
**参见:**
[SetBufferedTime](#setbufferedtime)
### GetFavorite()
```
bool OHOS::AVSession::AVPlaybackState::GetFavorite () const
```
**描述:**
获取是否收藏。
**返回:**
是否收藏,是则返回true,否则返回false。
**参见:**
[SetFavorite](#setfavorite)
### GetLoopMode()
```
int32_t OHOS::AVSession::AVPlaybackState::GetLoopMode () const
```
**描述:**
获取当前循环模式。
**返回:**
返回循环模式,范围**LOOP_MODE_SEQUENCE****LOOP_MODE_SHUFFLE**之间。
**参见:**
[SetLoopMode](#setloopmode)
### GetMask()
```
PlaybackStateMaskType OHOS::AVSession::AVPlaybackState::GetMask () const
```
**描述:**
获取掩码。
**返回:**
返回播放界面信息的掩码**PlaybackStateMaskType**
**参见:**
[CopyFrom](#copyfrom)
### GetPosition()
```
Position OHOS::AVSession::AVPlaybackState::GetPosition () const
```
**描述:**
获取播放位置。
**返回:**
返回播放位置[Position](_1_a_v_session_1_1_a_v_playback_state_1_1_position.md)
**参见:**
[SetPosition](#setposition)
### GetSpeed()
```
double OHOS::AVSession::AVPlaybackState::GetSpeed () const
```
**描述:**
获取当前播放倍速。
**返回:**
返回当前播放倍速。
**参见:**
[SetSpeed](#setspeed)
### GetState()
```
int32_t OHOS::AVSession::AVPlaybackState::GetState () const
```
**描述:**
获取当前音视频的播放状态。
**返回:**
返回当前音视频的播放状态,范围**PLAYBACK_STATE_INITIAL****PLAYBACK_STATE_MAX**之间。
**参见:**
[SetState](#setstate)
### IsValid()
```
bool OHOS::AVSession::AVPlaybackState::IsValid () const
```
**描述:**
验证当前信息的有效性。
**返回:**
有效返回true;无效则返回false。
### Marshalling()
```
bool OHOS::AVSession::AVPlaybackState::Marshalling (Parcel & parcel) const
```
**描述:**
IPC通信数据序列化。
将AVPlaybackState类型的信息,序列化为**Parcel**类型的信息,用来进行IPC通信。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| parcel | 保存序列化值的对象**Parcel**。 |
**返回:**
成功返回true;失败返回false。
**参见:**
[Unmarshalling](#unmarshalling)
### SetBufferedTime()
```
void OHOS::AVSession::AVPlaybackState::SetBufferedTime (int64_t time)
```
**描述:**
设置缓冲时间,单位为ms。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| time | 缓冲时间。 |
**参见:**
[GetBufferedTime](#getbufferedtime)
### SetFavorite()
```
void OHOS::AVSession::AVPlaybackState::SetFavorite (bool isFavorite)
```
**描述:**
设置是否收藏。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| isFavorite | 是否收藏,是则为true,否则false。 |
**参见:**
[GetFavorite](#getfavorite)
### SetLoopMode()
```
void OHOS::AVSession::AVPlaybackState::SetLoopMode (int32_t mode)
```
**描述:**
设置循环模式。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mode | 循环模式,范围**LOOP_MODE_SEQUENCE****LOOP_MODE_SHUFFLE**之间。 |
**参见:**
[GetLoopMode](#getloopmode)
### SetPosition()
```
void OHOS::AVSession::AVPlaybackState::SetPosition (const Position & position)
```
**描述:**
设置播放位置,通过更新时间与经过时间来计算,单位ms。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| position | 播放位置[Position](_1_a_v_session_1_1_a_v_playback_state_1_1_position.md)。 |
**参见:**
[GetPosition](#getposition)
### SetSpeed()
```
void OHOS::AVSession::AVPlaybackState::SetSpeed (double speed)
```
**描述:**
设置播放倍速。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| speed | 播放倍速。 |
**参见:**
[SetSpeed](#setspeed)
### SetState()
```
void OHOS::AVSession::AVPlaybackState::SetState (int32_t state)
```
**描述:**
设置音视频的播放状态。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| state | 音视频的播放状态,范围**PLAYBACK_STATE_INITIAL****PLAYBACK_STATE_MAX**之间。 |
**参见:**
[GetState](#getstate)
### Unmarshalling()
```
static AVPlaybackState* OHOS::AVSession::AVPlaybackState::Unmarshalling (Parcel & parcel)
```
**描述:**
IPC通信数据反序列化。
将通过IPC接收的**Parcel**类型的信息,反序列化为AVPlaybackState类型的信息。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| parcel | 序列化对象**Parcel**。 |
**返回:**
如果反序列化成功,则返回AVPlaybackState对象; 如果反序列化失败,则返回nullptr。
**参见:**
[Marshalling](#marshalling)
## 结构体成员变量说明
### localCapability
```
const std::vector<int32_t> OHOS::AVSession::AVPlaybackState::localCapability
```
**Value:**
```
{
PLAYBACK_KEY_STATE,
PLAYBACK_KEY_SPEED,
PLAYBACK_KEY_POSITION,
PLAYBACK_KEY_BUFFERED_TIME,
PLAYBACK_KEY_LOOP_MODE,
PLAYBACK_KEY_IS_FAVORITE,
}
```
**描述:**
内联函数指针数组AVPlaybackState,用于分布式业务,设置播放界面信息。
# OHOS::AVSession::AVSession
## 概述
会话对象,支持配置会话属性,并可主动更新播放状态和会话元数据。
## 汇总
### Public 类型
| 名称 | 描述 |
| -------- | -------- |
| { **SESSION_TYPE_INVALID** = -1, **SESSION_TYPE_AUDIO** = 0, **SESSION_TYPE_VIDEO** = 1 } | 会话类型的枚举。 |
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [GetSessionId](#getsessionid) ()=0 | 获取会话的标识。 |
| [GetAVMetaData](#getavmetadata) ([AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md) &amp;meta)=0 | 获取会话元数据。 |
| [SetAVMetaData](#setavmetadata) (const [AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md) &amp;meta)=0 | 设置会话元数据。 |
| [GetAVPlaybackState](#getavplaybackstate) ([AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md) &amp;state)=0 | 获取音视频的播放状态。 |
| [SetAVPlaybackState](#setavplaybackstate) (const [AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md) &amp;state)=0 | 设置音视频的播放状态。 |
| [SetLaunchAbility](#setlaunchability) (const AbilityRuntime::WantAgent::WantAgent &amp;ability)=0 | 设置一个WantAgent用于启动会话的Ability。 |
| [GetController](#getcontroller) ()=0 | 获取会话控制器。 |
| [RegisterCallback](#registercallback) (const std::shared_ptr&lt; [AVSessionCallback](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_callback.md) &gt; &amp;callback)=0 | 注册会话回调。 |
| [Activate](#activate) ()=0 | 激活会话。 |
| [Deactivate](#deactivate) ()=0 | 去激活会话。 |
| [IsActive](#isactive) ()=0 | 获取会话是否被激活。 |
| [Destroy](#destroy) ()=0 | 销毁会话。 |
| [AddSupportCommand](#addsupportcommand) (const int32_t cmd)=0 | 添加支持的控制命令。 |
| [DeleteSupportCommand](#deletesupportcommand) (const int32_t cmd)=0 | 删除支持的控制命令。 |
## 成员枚举类型说明
### anonymous enum
```
anonymous enum
```
**描述:**
会话类型的枚举。
| 枚举值 | 描述 |
| -------- | -------- |
| SESSION_TYPE_INVALID | 无效会话 |
| SESSION_TYPE_AUDIO | 音频会话 |
| SESSION_TYPE_VIDEO | 视频会话 |
## 成员函数说明
### Activate()
```
virtual int32_t OHOS::AVSession::AVSession::Activate ()
```
**描述:**
激活会话。
激活成功后,会话才可以接收控制指令。
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[Deactivate](#deactivate)
[IsActive](#isactive)
### AddSupportCommand()
```
virtual int32_t OHOS::AVSession::AVSession::AddSupportCommand (const int32_t cmd)
```
**描述:**
添加支持的控制命令。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| cmd | 待添加的控制命令,范围为**SESSION_CMD_INVALID****SESSION_CMD_MAX**。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### Deactivate()
```
virtual int32_t OHOS::AVSession::AVSession::Deactivate ()
```
**描述:**
去激活会话。
去激活成功后,表示会话还不能接收控制指令。
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[Activate](#activate)
[IsActive](#isactive)
### DeleteSupportCommand()
```
virtual int32_t OHOS::AVSession::AVSession::DeleteSupportCommand (const int32_t cmd)
```
**描述:**
删除支持的控制命令。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| cmd | 待删除的控制命令,范围为**SESSION_CMD_INVALID****SESSION_CMD_MAX**。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### Destroy()
```
virtual int32_t OHOS::AVSession::AVSession::Destroy ()
```
**描述:**
销毁会话。
如果应用要创建一个新会话,必须要销毁之前的会话,否则会创建失败。
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### GetAVMetaData()
```
virtual int32_t OHOS::AVSession::AVSession::GetAVMetaData (AVMetaData & meta)
```
**描述:**
获取会话元数据。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| meta | 用于保存会话的元数据[AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)对象。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[SetAVMetaData](#setavmetadata)
### GetAVPlaybackState()
```
virtual int32_t OHOS::AVSession::AVSession::GetAVPlaybackState (AVPlaybackState & state)
```
**描述:**
获取音视频的播放状态。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| state | 用于保存播放状态的[AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)对象。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[SetAVPlaybackState](#setavplaybackstate)
### GetController()
```
virtual std::shared_ptr<AVSessionController> OHOS::AVSession::AVSession::GetController ()
```
**描述:**
获取会话控制器。
**返回:**
返回会话控制器,[AVSessionController](o_h_o_s_1_1_a_v_session_1_1_a_v_session_controller.md)类型智能指针。
### GetSessionId()
```
virtual std::string OHOS::AVSession::AVSession::GetSessionId ()
```
**描述:**
获取会话的标识。
**返回:**
返回会话的标识。
### IsActive()
```
virtual bool OHOS::AVSession::AVSession::IsActive ()
```
**描述:**
获取会话是否被激活。
**返回:**
如果是激活状态,则返回true;否则返回false。
**参见:**
[Activate](#activate)
[Deactivate](#deactivate)
### RegisterCallback()
```
virtual int32_t OHOS::AVSession::AVSession::RegisterCallback (const std::shared_ptr< AVSessionCallback > & callback)
```
**描述:**
注册会话回调。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| callback | 用于注册会话回调的[AVSessionCallback](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_callback.md)对象。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### SetAVMetaData()
```
virtual int32_t OHOS::AVSession::AVSession::SetAVMetaData (const AVMetaData & meta)
```
**描述:**
设置会话元数据。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| meta | 用于修改会话的元数据[AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)对象。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetAVMetaData](#getavmetadata)
### SetAVPlaybackState()
```
virtual int32_t OHOS::AVSession::AVSession::SetAVPlaybackState (const AVPlaybackState & state)
```
**描述:**
设置音视频的播放状态。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| state | 用于修改播放状态的[AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)对象。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetAVPlaybackState](#getavplaybackstate)
### SetLaunchAbility()
```
virtual int32_t OHOS::AVSession::AVSession::SetLaunchAbility (const AbilityRuntime::WantAgent::WantAgent & ability)
```
**描述:**
设置一个WantAgent用于启动会话的Ability。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| ability | 具体的应用对应的能力,类型为**AbilityRuntime::WantAgent::WantAgent**。 |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[AVSessionController::GetLaunchAbility](o_h_o_s_1_1_a_v_session_1_1_a_v_session_controller.md#getlaunchability)
# OHOS::AVSession::AVSessionCallback
## 概述
定义AVSession回调类的实现
**Since:**
9
**Version:**
1.0
## 汇总
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [OnPlay](#onplay) ()=0 | AVSession多媒体播放的抽象的回调方法。 |
| [OnPause](#onpause) ()=0 | AVSession多媒体播放暂停的抽象的回调方法。 |
| [OnStop](#onstop) ()=0 | AVSession多媒体播放停止的抽象的回调方法。 |
| [OnPlayNext](#onplaynext) ()=0 | AVSession播放下一首多媒体的抽象的回调方法。 |
| [OnPlayPrevious](#onplayprevious) ()=0 | AVSession播放上一首多媒体的抽象的回调方法。 |
| [OnFastForward](#onfastforward) ()=0 | AVSession快进播放多媒体的抽象的回调方法。 |
| [OnRewind](#onrewind) ()=0 | AVSession多媒体快退的抽象的回调方法。 |
| [OnSeek](#onseek) (int64_t time)=0 | AVSession多媒体跳播操作的抽象的回调方法。 |
| [OnSetSpeed](#onsetspeed) (double speed)=0 | AVSession设置多媒体倍速播放操作的抽象的回调方法。 |
| [OnSetLoopMode](#onsetloopmode) (int32_t loopMode)=0 | AVSession设置多媒体循环播放模式的抽象的回调方法。 |
| [OnToggleFavorite](#ontogglefavorite) (const std::string &amp;mediald)=0 | AVSession设置多媒体切换收藏操作的抽象的回调方法。 |
| [OnMediaKeyEvent](#onmediakeyevent) (const MMI::KeyEvent &amp;keyEvent)=0 | AVSession多媒体按键事件处理的抽象的回调方法。 |
| [OnOutputDeviceChange](#onoutputdevicechange) (const [OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md) &amp;outputDeviceInfo)=0 | 注册会话输出设备变更监听。 |
| [~AVSessionCallback](#avsessioncallback) ()=default | AVSessionCallback的默认的析构函数。 |
## 构造及析构函数说明
### ~AVSessionCallback()
```
virtual OHOS::AVSession::AVSessionCallback::~AVSessionCallback ()
```
**描述:**
AVSessionCallback的默认的析构函数。
## 成员函数说明
### OnFastForward()
```
virtual void OHOS::AVSession::AVSessionCallback::OnFastForward ()
```
**描述:**
AVSession快进播放多媒体的抽象的回调方法。
### OnMediaKeyEvent()
```
virtual void OHOS::AVSession::AVSessionCallback::OnMediaKeyEvent (const MMI::KeyEvent & keyEvent)
```
**描述:**
AVSession多媒体按键事件处理的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| keyEvent | 按键事件码,类型为**MMI::KeyEvent**。 |
### OnOutputDeviceChange()
```
virtual void OHOS::AVSession::AVSessionCallback::OnOutputDeviceChange (const OutputDeviceInfo & outputDeviceInfo)
```
**描述:**
注册会话输出设备变更监听。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| outputDeviceInfo | 输出设备信息 [OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md)。 |
### OnPause()
```
virtual void OHOS::AVSession::AVSessionCallback::OnPause ()
```
**描述:**
AVSession多媒体播放暂停的抽象的回调方法。
### OnPlay()
```
virtual void OHOS::AVSession::AVSessionCallback::OnPlay ()
```
**描述:**
AVSession多媒体播放的抽象的回调方法。
### OnPlayNext()
```
virtual void OHOS::AVSession::AVSessionCallback::OnPlayNext ()
```
**描述:**
AVSession播放下一首多媒体的抽象的回调方法。
### OnPlayPrevious()
```
virtual void OHOS::AVSession::AVSessionCallback::OnPlayPrevious ()
```
**描述:**
AVSession播放上一首多媒体的抽象的回调方法。
### OnRewind()
```
virtual void OHOS::AVSession::AVSessionCallback::OnRewind ()
```
**描述:**
AVSession多媒体快退的抽象的回调方法。
### OnSeek()
```
virtual void OHOS::AVSession::AVSessionCallback::OnSeek (int64_t time)
```
**描述:**
AVSession多媒体跳播操作的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| time | 媒体资源的位置,从媒体资源开头开始计算,单位为ms。取值需大于等于0。 |
### OnSetLoopMode()
```
virtual void OHOS::AVSession::AVSessionCallback::OnSetLoopMode (int32_t loopMode)
```
**描述:**
AVSession设置多媒体循环播放模式的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| loopMode | 多媒体循环播放模式, 范围在[AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)**LOOP_MODE_SEQUENCE****LOOP_MODE_SHUFFLE**之间。 |
### OnSetSpeed()
```
virtual void OHOS::AVSession::AVSessionCallback::OnSetSpeed (double speed)
```
**描述:**
AVSession设置多媒体倍速播放操作的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| speed | 多媒体播放的倍速值。 |
### OnStop()
```
virtual void OHOS::AVSession::AVSessionCallback::OnStop ()
```
**描述:**
AVSession多媒体播放停止的抽象的回调方法。
### OnToggleFavorite()
```
virtual void OHOS::AVSession::AVSessionCallback::OnToggleFavorite (const std::string & mediald)
```
**描述:**
AVSession设置多媒体切换收藏操作的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mediald | 多媒体ID号标识。 |
<!--no_check-->
......@@ -43,5 +43,3 @@ struct Rect Region::*rects
**描述:**
结构体指针,类型为[Rect](_rect.md)。如果rects是空指针nullptr, 默认Buffer大小为脏区。
<!--no_check-->
\ No newline at end of file
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册