提交 e5f44c6b 编写于 作者: Z zengyawen

add media and avsession native api

Signed-off-by: Nzengyawen <zengyawen1@huawei.com>
上级 0ed48d81
...@@ -12,6 +12,13 @@ ...@@ -12,6 +12,13 @@
- [Rawfile](rawfile.md) - [Rawfile](rawfile.md)
- [MindSpore](_mind_spore.md) - [MindSpore](_mind_spore.md)
- [NeuralNeworkRuntime](_neural_nework_runtime.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_bitmap.h](drawing__bitmap_8h.md)
- [drawing_brush.h](drawing__brush_8h.md) - [drawing_brush.h](drawing__brush_8h.md)
...@@ -42,6 +49,24 @@ ...@@ -42,6 +49,24 @@
- [types.h](types_8h.md) - [types.h](types_8h.md)
- [neural_network_runtime_type.h](neural__network__runtime__type_8h.md) - [neural_network_runtime_type.h](neural__network__runtime__type_8h.md)
- [neural_network_runtime.h](neural__network__runtime_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_Drawing_BitmapFormat](_o_h___drawing___bitmap_format.md)
- [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) - [OH_NativeBuffer_Config](_o_h___native_buffer___config.md)
...@@ -62,4 +87,21 @@ ...@@ -62,4 +87,21 @@
- [OH_NN_Memory](_o_h___n_n___memory.md) - [OH_NN_Memory](_o_h___n_n___memory.md)
- [OH_NN_QuantParam](_o_h___n_n___quant_param.md) - [OH_NN_QuantParam](_o_h___n_n___quant_param.md)
- [OH_NN_Tensor](_o_h___n_n___tensor.md) - [OH_NN_Tensor](_o_h___n_n___tensor.md)
- [OH_NN_UInt32Array](_o_h___n_n___u_int32_array.md) - [OH_NN_UInt32Array](_o_h___n_n___u_int32_array.md)
\ No newline at end of file - [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&nbsp;API。&nbsp; |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AudioDecoder_CreateByMime](#ohaudiodecodercreatebymime)&nbsp;(const&nbsp;char&nbsp;\*mime) | OH_AVCodec&nbsp;\*<br/>通过mime类型创建一个音频解码器实例,大多数情况下推荐使用该接口。&nbsp; |
| [OH_AudioDecoder_CreateByName](#ohaudiodecodercreatebyname)&nbsp;(const&nbsp;char&nbsp;\*name) | OH_AVCodec&nbsp;\*<br/>通过音频解码器名称创建一个音频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。&nbsp; |
| [OH_AudioDecoder_Destroy](#ohaudiodecoderdestroy)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空解码器内部资源,并销毁解码器实例&nbsp; |
| [OH_AudioDecoder_SetCallback](#ohaudiodecodersetcallback)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)&nbsp;callback,&nbsp;void&nbsp;\*userData) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>设置异步回调函数,使得你的应用能够响应音频解码器产生的事件,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_AudioDecoder_Configure](#ohaudiodecoderconfigure)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>配置音频解码器,典型地,需要配置被解码音频轨道的描述信息,这些信息能够从容器中提取出来,&nbsp;该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_AudioDecoder_Prepare](#ohaudiodecoderprepare)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>准备解码器内部资源,调用该接口前必须先调用Configure接口。&nbsp; |
| [OH_AudioDecoder_Start](#ohaudiodecoderstart)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>启动解码器,该接口必须在已经Prepare成功后调用。&nbsp;在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。&nbsp; |
| [OH_AudioDecoder_Stop](#ohaudiodecoderstop)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过&nbsp;Codec-Specific-Data,则需要重新输入。&nbsp; |
| [OH_AudioDecoder_Flush](#ohaudiodecoderflush)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将&nbsp;失效,确保不要再访问这些索引对应的Buffers。&nbsp; |
| [OH_AudioDecoder_Reset](#ohaudiodecoderreset)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。&nbsp; |
| [OH_AudioDecoder_GetOutputDescription](#ohaudiodecodergetoutputdescription)&nbsp;(OH_AVCodec&nbsp;\*codec) | OH_AVFormat&nbsp;\*<br/>获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。&nbsp; |
| [OH_AudioDecoder_SetParameter](#ohaudiodecodersetparameter)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。&nbsp; |
| [OH_AudioDecoder_PushInputData](#ohaudiodecoderpushinputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)&nbsp;attr) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将填充好数据的输入Buffer提交给音频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)回调会报告可用的输入&nbsp;Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)&nbsp;回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入&nbsp;Codec-Specific-Data,用以初始化解码器的解码过程。&nbsp; |
| [OH_AudioDecoder_FreeOutputData](#ohaudiodecoderfreeoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给解码器。&nbsp; |
## 函数说明
### OH_AudioDecoder_Configure()
```
OH_AVErrCode OH_AudioDecoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置音频解码器,典型地,需要配置被解码音频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| format | 指向OH_AVFormat的指针,用以给出待解码音频轨道的描述信息&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### 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#ohavcodecmimetypeaudioaac) |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_AudioDecoder_CreateByName()
```
OH_AVCodec* OH_AudioDecoder_CreateByName (const char * name)
```
**描述:**
通过音频解码器名称创建一个音频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| name | 音频解码器名称&nbsp; |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_AudioDecoder_Destroy()
```
OH_AVErrCode OH_AudioDecoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空解码器内部资源,并销毁解码器实例
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioDecoder_Flush()
```
OH_AVErrCode OH_AudioDecoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioDecoder_FreeOutputData()
```
OH_AVErrCode OH_AudioDecoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给解码器。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| index | 输出Buffer对应的索引值&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioDecoder_GetOutputDescription()
```
OH_AVFormat* OH_AudioDecoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
返回OH_AVFormat句柄指针,需调用者手动释放;
### OH_AudioDecoder_Prepare()
```
OH_AVErrCode OH_AudioDecoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备解码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioDecoder_PushInputData()
```
OH_AVErrCode OH_AudioDecoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
```
**描述:**
将填充好数据的输入Buffer提交给音频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入 Codec-Specific-Data,用以初始化解码器的解码过程。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| index | 输入Buffer对应的索引值&nbsp; |
| attr | 描述该Buffer内所包含数据的信息&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioDecoder_Reset()
```
OH_AVErrCode OH_AudioDecoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### 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实例的指针&nbsp; |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioDecoder_SetParameter()
```
OH_AVErrCode OH_AudioDecoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| format | OH_AVFormat句柄指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioDecoder_Start()
```
OH_AVErrCode OH_AudioDecoder_Start (OH_AVCodec * codec)
```
**描述:**
启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioDecoder_Stop()
```
OH_AVErrCode OH_AudioDecoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
# AudioEncoder
## 概述
AudioEncoder模块提供用于音频编码功能的函数。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_audioencoder.h](native__avcodec__audioencoder_8h.md) | 声明用于音频编码的Native&nbsp;API。&nbsp; |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AudioEncoder_CreateByMime](#ohaudioencodercreatebymime)&nbsp;(const&nbsp;char&nbsp;\*mime) | OH_AVCodec&nbsp;\*<br/>通过mime类型创建一个音频编码器实例,大多数情况下推荐使用该接口。&nbsp; |
| [OH_AudioEncoder_CreateByName](#ohaudioencodercreatebyname)&nbsp;(const&nbsp;char&nbsp;\*name) | OH_AVCodec&nbsp;\*<br/>通过音频编码器名称创建一个音频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。&nbsp; |
| [OH_AudioEncoder_Destroy](#ohaudioencoderdestroy)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空编码器内部资源,并销毁编码器实例。&nbsp; |
| [OH_AudioEncoder_SetCallback](#ohaudioencodersetcallback)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)&nbsp;callback,&nbsp;void&nbsp;\*userData) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>设置异步回调函数,使得你的应用能够响应音频编码器产生的事件,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_AudioEncoder_Configure](#ohaudioencoderconfigure)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>配置音频编码器,典型地,需要配置被编码音频轨道的描述信息,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_AudioEncoder_Prepare](#ohaudioencoderprepare)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>准备编码器内部资源,调用该接口前必须先调用Configure接口。&nbsp; |
| [OH_AudioEncoder_Start](#ohaudioencoderstart)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>启动编码器,该接口必须在已经Prepare成功后调用。&nbsp;在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。&nbsp; |
| [OH_AudioEncoder_Stop](#ohaudioencoderstop)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>停止编码器。在停止后可通过Start重新进入Started状态。&nbsp; |
| [OH_AudioEncoder_Flush](#ohaudioencoderflush)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将&nbsp;失效,确保不要再访问这些索引对应的Buffers。&nbsp; |
| [OH_AudioEncoder_Reset](#ohaudioencoderreset)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。&nbsp; |
| [OH_AudioEncoder_GetOutputDescription](#ohaudioencodergetoutputdescription)&nbsp;(OH_AVCodec&nbsp;\*codec) | OH_AVFormat&nbsp;\*<br/>获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。&nbsp; |
| [OH_AudioEncoder_SetParameter](#ohaudioencodersetparameter)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。&nbsp; |
| [OH_AudioEncoder_PushInputData](#ohaudioencoderpushinputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)&nbsp;attr) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将填充好数据的输入Buffer提交给音频编码器。[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)回调会报告可用的输入&nbsp;Buffer及对应的索引值。一旦指定索引的Buffer被提交给编码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)&nbsp;回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。&nbsp; |
| [OH_AudioEncoder_FreeOutputData](#ohaudioencoderfreeoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给编码器。&nbsp; |
## 函数说明
### OH_AudioEncoder_Configure()
```
OH_AVErrCode OH_AudioEncoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置音频编码器,典型地,需要配置被编码音频轨道的描述信息,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| format | OH_AVFormat句柄指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### 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#ohavcodecmimetypeaudioaac) |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_AudioEncoder_CreateByName()
```
OH_AVCodec* OH_AudioEncoder_CreateByName (const char * name)
```
**描述:**
通过音频编码器名称创建一个音频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| name | 音频编码器名称&nbsp; |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_AudioEncoder_Destroy()
```
OH_AVErrCode OH_AudioEncoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空编码器内部资源,并销毁编码器实例。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioEncoder_Flush()
```
OH_AVErrCode OH_AudioEncoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioEncoder_FreeOutputData()
```
OH_AVErrCode OH_AudioEncoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给编码器。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| index | 输出Buffer对应的索引值&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioEncoder_GetOutputDescription()
```
OH_AVFormat* OH_AudioEncoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
返回OH_AVFormat句柄指针,需调用者手动释放;
### OH_AudioEncoder_Prepare()
```
OH_AVErrCode OH_AudioEncoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备编码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioEncoder_PushInputData()
```
OH_AVErrCode OH_AudioEncoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
```
**描述:**
将填充好数据的输入Buffer提交给音频编码器。[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给编码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| index | 输入Buffer对应的索引值&nbsp; |
| attr | 描述该Buffer内所包含数据的信息&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioEncoder_Reset()
```
OH_AVErrCode OH_AudioEncoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### 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实例的指针&nbsp; |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioEncoder_SetParameter()
```
OH_AVErrCode OH_AudioEncoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| format | OH_AVFormat句柄指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioEncoder_Start()
```
OH_AVErrCode OH_AudioEncoder_Start (OH_AVCodec * codec)
```
**描述:**
启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_AudioEncoder_Stop()
```
OH_AVErrCode OH_AudioEncoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止编码器。在停止后可通过Start重新进入Started状态。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
# CodecBase
## 概述
CodecBase模块提供运行音视频编解码通用的结构体、字符常量、枚举。
@syscap SystemCapability.Multimedia.Media.CodecBase
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_base.h](native__avcodec__base_8h.md) | 声明运行音视频编解码通用的结构体、字符常量、枚举。&nbsp; |
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | struct<br/>定义OH_AVCodec的Buffer描述信息。&nbsp; |
| [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | struct<br/>AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告&nbsp;的信息,以确保AVCodec正常运转。&nbsp; |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| **OHNativeWindow** | typedef&nbsp;struct&nbsp;NativeWindow |
| **OH_AVCodec** | typedef&nbsp;struct&nbsp;OH_AVCodec |
| [OH_AVCodecBufferFlags](#ohavcodecbufferflags) | typedef&nbsp;enum&nbsp;[OH_AVCodecBufferFlags](#ohavcodecbufferflags)<br/>枚举OH_AVCodec的Buffer标记的类别。&nbsp; |
| [OH_AVCodecBufferAttr](#ohavcodecbufferattr) | typedef&nbsp;struct&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)<br/>定义OH_AVCodec的Buffer描述信息。&nbsp; |
| [OH_AVCodecOnError](#ohavcodeconerror))&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;int32_t&nbsp;errorCode,&nbsp;void&nbsp;\*userData) | typedef&nbsp;void(\*<br/>当OH_AVCodec实例运行发生错误时,该函数指针会被调用以报告具体错误信息。&nbsp; |
| [OH_AVCodecOnStreamChanged](#ohavcodeconstreamchanged))&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;void&nbsp;\*userData) | typedef&nbsp;void(\*<br/>当输出流发生变化时,该函数指针会被调用以报告新的流描述信息。&nbsp;需要注意的时,OH_AVFormat指针的生命周期仅维持在该函数指针被调用时上有效,禁止在调用结束后继续访问。&nbsp; |
| [OH_AVCodecOnNeedInputData](#ohavcodeconneedinputdata))&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;OH_AVMemory&nbsp;\*data,&nbsp;void&nbsp;\*userData) | typedef&nbsp;void(\*<br/>当AVCodec运行过程中需要新的输入数据时,该函数指针会被调用,并携带一块可用的Buffer以供填入新的输入数据。&nbsp; |
| [OH_AVCodecOnNewOutputData](#ohavcodeconnewoutputdata))&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;OH_AVMemory&nbsp;\*data,&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)&nbsp;\*attr,&nbsp;void&nbsp;\*userData) | typedef&nbsp;void(\*<br/>当AVCodec运行过程中产生了新的输出数据时,该函数指针会被调用,并携带一块包含新输出数据的Buffer,&nbsp;需要注意的是,OH_AVCodecBufferAttr指针的生命周期仅维持在该函数指针被调用时有效,禁止调用结束后继续访问。&nbsp; |
| [OH_AVCodecAsyncCallback](#ohavcodecasynccallback) | typedef&nbsp;struct&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)<br/>AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告&nbsp;的信息,以确保AVCodec正常运转。&nbsp; |
| [OH_MediaType](#ohmediatype) | typedef&nbsp;enum&nbsp;[OH_MediaType](#ohmediatype)<br/>媒体类型。&nbsp; |
| [OH_AVCProfile](#ohavcprofile) | typedef&nbsp;enum&nbsp;[OH_AVCProfile](#ohavcprofile)<br/>AVC&nbsp;Profile枚举。&nbsp; |
| [OH_AACProfile](#ohaacprofile) | typedef&nbsp;enum&nbsp;[OH_AACProfile](#ohaacprofile)<br/>AAC&nbsp;Profile枚举。&nbsp; |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferFlags](#ohavcodecbufferflags)&nbsp;{<br/>**AVCODEC_BUFFER_FLAGS_NONE**&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473612293.xml#xref1210167552182348,link:zh-cn_topic_0000001473612293.xml#gga9222f5c24f4bcbfb91a5d552dd777439a7946993493046fb2076a9e4addce0b98](#gga9222f5c24f4bcbfb91a5d552dd777439a7946993493046fb2076a9e4addce0b98)&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473612293.xml#xref147761475182348,link:zh-cn_topic_0000001473612293.xml#gga9222f5c24f4bcbfb91a5d552dd777439a4d85a25f4a9557f23e1144f9a137ddea](#gga9222f5c24f4bcbfb91a5d552dd777439a4d85a25f4a9557f23e1144f9a137ddea)&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473612293.xml#xref89189050182348,link:zh-cn_topic_0000001473612293.xml#gga9222f5c24f4bcbfb91a5d552dd777439ac4c8a639feb36efde0d799d43fcfb59b](#gga9222f5c24f4bcbfb91a5d552dd777439ac4c8a639feb36efde0d799d43fcfb59b)&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;2,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473612293.xml#xref1599285555182348,link:zh-cn_topic_0000001473612293.xml#gga9222f5c24f4bcbfb91a5d552dd777439aba644475534bc79bfd3d43e1d28ab2f5](#gga9222f5c24f4bcbfb91a5d552dd777439aba644475534bc79bfd3d43e1d28ab2f5)&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;3<br/>} | 枚举OH_AVCodec的Buffer标记的类别。&nbsp; |
| [OH_MediaType](#ohmediatype)&nbsp;{&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473612293.xml#xref493726308182348,link:zh-cn_topic_0000001473612293.xml#gga28eb13d2f8f932345eeb3417d6e69e19ac0b3147adc27646ac965569adc38692e](#gga28eb13d2f8f932345eeb3417d6e69e19ac0b3147adc27646ac965569adc38692e)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473612293.xml#xref25548070182348,link:zh-cn_topic_0000001473612293.xml#gga28eb13d2f8f932345eeb3417d6e69e19a0cbb91e5931fb03294c2d3bdbbc62dbd](#gga28eb13d2f8f932345eeb3417d6e69e19a0cbb91e5931fb03294c2d3bdbbc62dbd)&nbsp;=&nbsp;1&nbsp;} | 媒体类型。&nbsp; |
| [OH_AVCProfile](#ohavcprofile)&nbsp;{&nbsp;**AVC_PROFILE_BASELINE**&nbsp;=&nbsp;0,&nbsp;**AVC_PROFILE_HIGH**&nbsp;=&nbsp;4,&nbsp;**AVC_PROFILE_MAIN**&nbsp;=&nbsp;8&nbsp;} | AVC&nbsp;Profile枚举。&nbsp; |
| [OH_AACProfile](#ohaacprofile)&nbsp;{&nbsp;**AAC_PROFILE_LC**&nbsp;=&nbsp;0&nbsp;} | AAC&nbsp;Profile枚举。&nbsp; |
### 变量
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferAttr::pts](#pts) | int64_t<br/>以微秒为单位表示的该Buffer的Presentation时间戳&nbsp; |
| [OH_AVCodecBufferAttr::size](#size) | int32_t<br/>以字节为单位表示的该Buffer内所包含数据的大小&nbsp; |
| [OH_AVCodecBufferAttr::offset](#offset) | int32_t<br/>有效数据在该Buffer内的起始偏移量&nbsp; |
| [OH_AVCodecBufferAttr::flags](#flags) | uint32_t<br/>该Buffer具有的标记,也是多个[OH_AVCodecBufferFlags](#ohavcodecbufferflags)的组合&nbsp; |
| **OH_AVCodecAsyncCallback::onError** | [OH_AVCodecOnError](#ohavcodeconerror) |
| **OH_AVCodecAsyncCallback::onStreamChanged** | [OH_AVCodecOnStreamChanged](#ohavcodeconstreamchanged) |
| **OH_AVCodecAsyncCallback::onNeedInputData** | [OH_AVCodecOnNeedInputData](#ohavcodeconneedinputdata) |
| **OH_AVCodecAsyncCallback::onNeedOutputData** | [OH_AVCodecOnNewOutputData](#ohavcodeconnewoutputdata) |
| [OH_AVCODEC_MIMETYPE_VIDEO_AVC](#ohavcodecmimetypevideoavc) | const&nbsp;char&nbsp;\*<br/>AVC视频编解码器的MIME类型。&nbsp; |
| [OH_AVCODEC_MIMETYPE_AUDIO_AAC](#ohavcodecmimetypeaudioaac) | const&nbsp;char&nbsp;\*<br/>AAC音频编解码器的MIME类型。&nbsp; |
| [OH_ED_KEY_TIME_STAMP](#ohedkeytimestamp) | const&nbsp;char&nbsp;\*<br/>提供统一的surface&nbsp;Buffer附属数据的字符描述符。&nbsp; |
| [OH_ED_KEY_EOS](#ohedkeyeos) | const&nbsp;char&nbsp;\*<br/>surface附属数据中结束流的字符描述符,值类型为bool&nbsp; |
| [OH_MD_KEY_TRACK_TYPE](#ohmdkeytracktype) | const&nbsp;char&nbsp;\*<br/>为媒体播放框架提供统一的字符描述符。&nbsp; |
| [OH_MD_KEY_CODEC_MIME](#ohmdkeycodecmime) | const&nbsp;char&nbsp;\*<br/>mime类型的字符描述符,值类型为string&nbsp; |
| [OH_MD_KEY_DURATION](#ohmdkeyduration) | const&nbsp;char&nbsp;\*<br/>duration的字符描述符,值类型为int64_t&nbsp; |
| [OH_MD_KEY_BITRATE](#ohmdkeybitrate) | const&nbsp;char&nbsp;\*<br/>比特率的字符描述符,值类型为uint32_t&nbsp; |
| [OH_MD_KEY_MAX_INPUT_SIZE](#ohmdkeymaxinputsize) | const&nbsp;char&nbsp;\*<br/>最大输入尺寸的字符描述符,值类型为uint32_t&nbsp; |
| [OH_MD_KEY_WIDTH](#ohmdkeywidth) | const&nbsp;char&nbsp;\*<br/>视频宽度的字符描述符,值类型为uint32_t&nbsp; |
| [OH_MD_KEY_HEIGHT](#ohmdkeyheight) | const&nbsp;char&nbsp;\*<br/>视频高度的字符描述符,值类型为uint32_t&nbsp; |
| [OH_MD_KEY_PIXEL_FORMAT](#ohmdkeypixelformat) | const&nbsp;char&nbsp;\*<br/>视频像素格式的字符描述符,值类型为int32_t,具体见[OH_AVPixelFormat](_core.md#ohavpixelformat) |
| [OH_MD_KEY_AUDIO_SAMPLE_FORMAT](#ohmdkeyaudiosampleformat) | const&nbsp;char&nbsp;\*<br/>音频采样格式的字符描述符,值类型为uint32_t&nbsp; |
| [OH_MD_KEY_FRAME_RATE](#ohmdkeyframerate) | const&nbsp;char&nbsp;\*<br/>视频帧率的字符描述符,值类型为double&nbsp; |
| [OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](#ohmdkeyvideoencodebitratemode) | const&nbsp;char&nbsp;\*<br/>视频编码比特率模式的字符描述符,值类型为int32_t,具体见[OH_VideoEncodeBitrateMode](_video_encoder.md#ohvideoencodebitratemode) |
| [OH_MD_KEY_PROFILE](#ohmdkeyprofile) | const&nbsp;char&nbsp;\*<br/>音视频编码能力的字符描述符,值类型为int32_t,具体见[OH_AVCProfile](#ohavcprofile)[OH_AACProfile](#ohaacprofile) |
| [OH_MD_KEY_AUD_CHANNEL_COUNT](#ohmdkeyaudchannelcount) | const&nbsp;char&nbsp;\*<br/>音频声道数的字符描述符,值类型为uint32_t&nbsp; |
| [OH_MD_KEY_AUD_SAMPLE_RATE](#ohmdkeyaudsamplerate) | const&nbsp;char&nbsp;\*<br/>音频采样率的字符描述符,值类型为uint32_t&nbsp; |
| [OH_MD_KEY_I_FRAME_INTERVAL](#ohmdkeyiframeinterval) | const&nbsp;char&nbsp;\*<br/>I帧间隔时长的字符描述符,值类型为int32_t,单位是毫秒&nbsp; |
| [OH_MD_KEY_ROTATION](#ohmdkeyrotation) | const&nbsp;char&nbsp;\*<br/>surface旋转角度的字符描述符,值类型为int32_t,限于{0,&nbsp;90,&nbsp;180,&nbsp;270},默认值为0&nbsp; |
## 类型定义说明
### 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](#ohavcodeconerror) |
| onStreamChanged | 监听编解码流信息,参考[OH_AVCodecOnStreamChanged](#ohavcodeconstreamchanged) |
| onNeedInputData | 监听编解码需要输入数据,参考[OH_AVCodecOnNeedInputData](#ohavcodeconneedinputdata) |
| onNeedInputData | 监听编解码产生输出数据,参考[OH_AVCodecOnNewOutputData](#ohavcodeconnewoutputdata) |
### 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实例&nbsp; |
| errorCode | 具体错误码&nbsp; |
| userData | 用户特定数据&nbsp; |
### 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实例&nbsp; |
| index | 新的可用的输入Buffer对应的索引&nbsp; |
| data | 新的可用的输入Buffer&nbsp; |
| userData | 用户特定数据&nbsp; |
### 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实例&nbsp; |
| index | 新的输出Buffer对应的索引&nbsp; |
| data | 包含新的输出数据的Buffer&nbsp; |
| attr | 新的输出Buffer的描述信息,具体参考[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) |
| userData | specified&nbsp;data&nbsp; |
### OH_AVCodecOnStreamChanged
```
typedef void(* OH_AVCodecOnStreamChanged) (OH_AVCodec *codec, OH_AVFormat *format, void *userData)
```
**描述:**
当输出流发生变化时,该函数指针会被调用以报告新的流描述信息。 需要注意的时,OH_AVFormat指针的生命周期仅维持在该函数指针被调用时上有效,禁止在调用结束后继续访问。
@syscap SystemCapability.Multimedia.Media.CodecBase
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | OH_AVCodec实例&nbsp; |
| format | 新的输出流描述信息&nbsp; |
| userData | 用户特定数据&nbsp; |
### 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&nbsp; | 表明该Buffer是End-of-Stream帧 |
| AVCODEC_BUFFER_FLAGS_SYNC_FRAME&nbsp; | 表明该Buffer内包含关键帧 |
| AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME&nbsp; | 表明该Buffer内包含的数据仅仅为一帧的一部分 |
| AVCODEC_BUFFER_FLAGS_CODEC_DATA&nbsp; | 表明该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&nbsp; | 音频轨道 |
| MEDIA_TYPE_VID&nbsp; | 视频轨道 |
## 变量说明
### flags
```
uint32_t OH_AVCodecBufferAttr::flags
```
**描述:**
该Buffer具有的标记,也是多个[OH_AVCodecBufferFlags](#ohavcodecbufferflags)的组合
### 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#ohavpixelformat)
### OH_MD_KEY_PROFILE
```
const char* OH_MD_KEY_PROFILE
```
**描述:**
音视频编码能力的字符描述符,值类型为int32_t,具体见[OH_AVCProfile](#ohavcprofile)[OH_AACProfile](#ohaacprofile)
### 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#ohvideoencodebitratemode)
### 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) | 声明了媒体播放框架的错误码。&nbsp; |
| [native_avformat.h](native__avformat_8h.md) | 声明了格式相关的函数和枚举。&nbsp; |
| [native_avmemory.h](native__avmemory_8h.md) | 声明了AVMemory的函数接口。&nbsp; |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](#ohaverrcode) | typedef&nbsp;enum&nbsp;[OH_AVErrCode](#ohaverrcode)<br/>音视频错误码。&nbsp; |
| **OH_AVFormat** | typedef&nbsp;struct&nbsp;OH_AVFormat |
| [OH_AVPixelFormat](#ohavpixelformat) | typedef&nbsp;enum&nbsp;[OH_AVPixelFormat](#ohavpixelformat)<br/>AVPixel&nbsp;格式的枚举。&nbsp; |
| **OH_AVMemory** | typedef&nbsp;struct&nbsp;OH_AVMemory |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](#ohaverrcode)&nbsp;{<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref340209544182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1aeaf39666b93f2c3263e52b6bad3da8d2](#gga19325a2ffdf3a9a214794be3960bb3b1aeaf39666b93f2c3263e52b6bad3da8d2)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref570901527182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1ad4ba07b3fe5ca3df1f48345f7f9f631f](#gga19325a2ffdf3a9a214794be3960bb3b1ad4ba07b3fe5ca3df1f48345f7f9f631f)&nbsp;=&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref1914859333182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1a2db9dd1e243f7738320dfa732f041669](#gga19325a2ffdf3a9a214794be3960bb3b1a2db9dd1e243f7738320dfa732f041669)&nbsp;=&nbsp;2,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref943499574182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1a96d898ca31466839ae39aede4e5266c2](#gga19325a2ffdf3a9a214794be3960bb3b1a96d898ca31466839ae39aede4e5266c2)&nbsp;=&nbsp;3,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref1846750760182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1a70c6b7d0ba398f625e7b9741284e8d35](#gga19325a2ffdf3a9a214794be3960bb3b1a70c6b7d0ba398f625e7b9741284e8d35)&nbsp;=&nbsp;4,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref1854271743182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1ad6ce699f9caf6cbff1b4b50c1b74d8ed](#gga19325a2ffdf3a9a214794be3960bb3b1ad6ce699f9caf6cbff1b4b50c1b74d8ed)&nbsp;=&nbsp;5,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref837161067182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1a7a9dc8845fe08a6f04adcf0997bddd85](#gga19325a2ffdf3a9a214794be3960bb3b1a7a9dc8845fe08a6f04adcf0997bddd85)&nbsp;=&nbsp;6,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref270995748182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1a71e0aa7596904781989f43490a4fad88](#gga19325a2ffdf3a9a214794be3960bb3b1a71e0aa7596904781989f43490a4fad88)&nbsp;=&nbsp;7,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref45008248182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1a369dde180c1423e3d7a4844dcbf94938](#gga19325a2ffdf3a9a214794be3960bb3b1a369dde180c1423e3d7a4844dcbf94938)&nbsp;=&nbsp;8,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref145173001182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1a393021797634f5e26b1fcd16f701330d](#gga19325a2ffdf3a9a214794be3960bb3b1a393021797634f5e26b1fcd16f701330d)&nbsp;=&nbsp;9,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref716387532182348,link:zh-cn_topic_0000001423612788.xml#gga19325a2ffdf3a9a214794be3960bb3b1a2c08394f90d05e0f08c5fe7b5fa243fd](#gga19325a2ffdf3a9a214794be3960bb3b1a2c08394f90d05e0f08c5fe7b5fa243fd)&nbsp;=&nbsp;100<br/>} | 音视频错误码。&nbsp; |
| [OH_AVPixelFormat](#ohavpixelformat)&nbsp;{<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref31828121182348,link:zh-cn_topic_0000001423612788.xml#ggab04647d11a5a280f7427f9478ae2890ea961a1167e79625d6e72193f4fbb1add7](#ggab04647d11a5a280f7427f9478ae2890ea961a1167e79625d6e72193f4fbb1add7)&nbsp;=&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref815458069182348,link:zh-cn_topic_0000001423612788.xml#ggab04647d11a5a280f7427f9478ae2890eac65005d3e8437c615d4c4e051dfb4533](#ggab04647d11a5a280f7427f9478ae2890eac65005d3e8437c615d4c4e051dfb4533)&nbsp;=&nbsp;2,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref1675247079182348,link:zh-cn_topic_0000001423612788.xml#ggab04647d11a5a280f7427f9478ae2890eab324169419f675fc7ab9a786a5588543](#ggab04647d11a5a280f7427f9478ae2890eab324169419f675fc7ab9a786a5588543)&nbsp;=&nbsp;3,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref60331776182348,link:zh-cn_topic_0000001423612788.xml#ggab04647d11a5a280f7427f9478ae2890eabc2c11f0feacf52e43b323383f486608](#ggab04647d11a5a280f7427f9478ae2890eabc2c11f0feacf52e43b323383f486608)&nbsp;=&nbsp;4,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423612788.xml#xref837555144182348,link:zh-cn_topic_0000001423612788.xml#ggab04647d11a5a280f7427f9478ae2890ea2c15b220da3b7e9043d41f6e789249f0](#ggab04647d11a5a280f7427f9478ae2890ea2c15b220da3b7e9043d41f6e789249f0)&nbsp;=&nbsp;5<br/>} | AVPixel&nbsp;格式的枚举。&nbsp; |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVFormat_Create](#ohavformatcreate)&nbsp;(void) | struct&nbsp;OH_AVFormat&nbsp;\*<br/>创建一个OH_AVFormat句柄指针,用以读写数据。&nbsp; |
| [OH_AVFormat_Destroy](#ohavformatdestroy)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format) | void<br/>销毁指定OH_AVFormat句柄资源。&nbsp; |
| [OH_AVFormat_Copy](#ohavformatcopy)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*to,&nbsp;struct&nbsp;OH_AVFormat&nbsp;\*from) | bool<br/>拷贝OH_AVFormat句柄资源.&nbsp; |
| [OH_AVFormat_SetIntValue](#ohavformatsetintvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;int32_t&nbsp;value) | bool<br/>向OH_AVFormat写入Int数据.&nbsp; |
| [OH_AVFormat_SetLongValue](#ohavformatsetlongvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;int64_t&nbsp;value) | bool<br/>向OH_AVFormat写入Long数据。&nbsp; |
| [OH_AVFormat_SetFloatValue](#ohavformatsetfloatvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;float&nbsp;value) | bool<br/>向OH_AVFormat写入Float数据。&nbsp; |
| [OH_AVFormat_SetDoubleValue](#ohavformatsetdoublevalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;double&nbsp;value) | bool<br/>向OH_AVFormat写入Double数据。&nbsp; |
| [OH_AVFormat_SetStringValue](#ohavformatsetstringvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;const&nbsp;char&nbsp;\*value) | bool<br/>向OH_AVFormat写入String数据。&nbsp; |
| [OH_AVFormat_SetBuffer](#ohavformatsetbuffer)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;const&nbsp;uint8_t&nbsp;\*addr,&nbsp;size_t&nbsp;size) | bool<br/>向OH_AVFormat写入一块指定长度的数据。&nbsp; |
| [OH_AVFormat_GetIntValue](#ohavformatgetintvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;int32_t&nbsp;\*out) | bool<br/>从OH_AVFormat读取Int数据。&nbsp; |
| [OH_AVFormat_GetLongValue](#ohavformatgetlongvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;int64_t&nbsp;\*out) | bool<br/>从OH_AVFormat读取Long数据。&nbsp; |
| [OH_AVFormat_GetFloatValue](#ohavformatgetfloatvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;float&nbsp;\*out) | bool<br/>从OH_AVFormat读取Float数据。&nbsp; |
| [OH_AVFormat_GetDoubleValue](#ohavformatgetdoublevalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;double&nbsp;\*out) | bool<br/>从OH_AVFormat读取Double数据。&nbsp; |
| [OH_AVFormat_GetStringValue](#ohavformatgetstringvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;const&nbsp;char&nbsp;\*\*out) | bool<br/>从OH_AVFormat读取Double数据。&nbsp; |
| [OH_AVFormat_GetBuffer](#ohavformatgetbuffer)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;uint8_t&nbsp;\*\*addr,&nbsp;size_t&nbsp;\*size) | bool<br/>从OH_AVFormat读取一块指定长度的数据。&nbsp; |
| [OH_AVFormat_DumpInfo](#ohavformatdumpinfo)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format) | const&nbsp;char&nbsp;\*<br/>以字符串的形式输出OH_AVFormat所包含的信息。&nbsp; |
| [OH_AVMemory_GetAddr](#ohavmemorygetaddr)&nbsp;(struct&nbsp;OH_AVMemory&nbsp;\*mem) | uint8_t&nbsp;\*<br/>获取入参的内存虚拟地址。&nbsp; |
| [OH_AVMemory_GetSize](#ohavmemorygetsize)&nbsp;(struct&nbsp;OH_AVMemory&nbsp;\*mem) | int32_t<br/>获取入参的内存长度。&nbsp; |
## 类型定义说明
### 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&nbsp; | 操作成功 |
| AV_ERR_NO_MEMORY&nbsp; | 无内存 |
| AV_ERR_OPERATE_NOT_PERMIT&nbsp; | 无效参数 |
| AV_ERR_INVALID_VAL&nbsp; | 无效值 |
| AV_ERR_IO&nbsp; | IO&nbsp;错误 |
| AV_ERR_TIMEOUT&nbsp; | 超时错误 |
| AV_ERR_UNKNOWN&nbsp; | 未知错误 |
| AV_ERR_SERVICE_DIED&nbsp; | 媒体服务死亡 |
| AV_ERR_INVALID_STATE&nbsp; | 当前状态不支持此操作 |
| AV_ERR_UNSUPPORT&nbsp; | 未支持的接口 |
| AV_ERR_EXTEND_START&nbsp; | 扩展错误码初始值 |
### OH_AVPixelFormat
```
enum OH_AVPixelFormat
```
**描述:**
AVPixel 格式的枚举。
@syscap SystemCapability.Multimedia.Media.Core
| 枚举值 | 描述 |
| -------- | -------- |
| AV_PIXEL_FORMAT_YUVI420&nbsp; | yuv&nbsp;420&nbsp;planar |
| AV_PIXEL_FORMAT_NV12&nbsp; | NV12.&nbsp;yuv&nbsp;420&nbsp;semiplanar |
| AV_PIXEL_FORMAT_NV21&nbsp; | NV21.&nbsp;yvu&nbsp;420&nbsp;semiplanar |
| AV_PIXEL_FORMAT_SURFACE_FORMAT&nbsp; | surface格式 |
| AV_PIXEL_FORMAT_RGBA&nbsp; | 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句柄指针&nbsp; |
| from | 被拷贝数据的OH_AVFormat句柄指针&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
**返回:**
void
### OH_AVFormat_DumpInfo()
```
const char* OH_AVFormat_DumpInfo (struct OH_AVFormat * format)
```
**描述:**
以字符串的形式输出OH_AVFormat所包含的信息。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针&nbsp; |
**返回:**
返回由键值和数据组成的字符串指针
### 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实例的指针&nbsp; |
| key | 读写数据的键值&nbsp; |
| addr | 生命周期是format持有,伴随format销毁,如果调用者需要长期持有,必须进行内存拷贝&nbsp; |
| size | 读写数据的长度&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 读取数据的键值&nbsp; |
| out | 读取的数据&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 读取数据的键值&nbsp; |
| out | 读取的数据&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 读取数据的键值&nbsp; |
| out | 读取的数据&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 读取数据的键值&nbsp; |
| out | 读取的数据&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 读取数据的键值&nbsp; |
| out | 读取的字符串指针,指向的数据生命周期伴随GetString更新,伴随format销毁,如果调用者需要长期持有,必须进行内存拷贝&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 写入数据的键值&nbsp; |
| addr | 写入的数据地址&nbsp; |
| size | 写入的数据长度&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 写入数据的键值&nbsp; |
| value | 写入的数据&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 写入数据的键值&nbsp; |
| value | 写入的数据&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 写入数据的键值&nbsp; |
| value | 写入的数据&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 写入数据的键值&nbsp; |
| value | 写入的数据&nbsp; |
**返回:**
返回值为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实例的指针&nbsp; |
| key | 写入数据的键值&nbsp; |
| value | 写入的数据&nbsp; |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVMemory_GetAddr()
```
uint8_t* OH_AVMemory_GetAddr (struct OH_AVMemory * mem)
```
**描述:**
获取入参的内存虚拟地址。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mem | 指向OH_AVMemory实例的指针&nbsp; |
**返回:**
如果内存有效,返回内存的虚拟地址
如果内存无效,返回nullptr
### OH_AVMemory_GetSize()
```
int32_t OH_AVMemory_GetSize (struct OH_AVMemory * mem)
```
**描述:**
获取入参的内存长度。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mem | 指向OH_AVMemory实例的指针&nbsp; |
**返回:**
如果内存有效,返回内存长度
如果内存无效,返回-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,媒体有效的指令列表,范围为{ | |
# 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#ohavcodeconerror) |
| **onStreamChanged** | [OH_AVCodecOnStreamChanged](_codec_base.md#ohavcodeconstreamchanged) |
| **onNeedInputData** | [OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata) |
| **onNeedOutputData** | [OH_AVCodecOnNewOutputData](_codec_base.md#ohavcodeconnewoutputdata) |
# 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/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref1557819891182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a14f680be4361ff8e2549e333702f52c4](#a70e121e9dba2777559ffceb1fae31594a14f680be4361ff8e2549e333702f52c4)&nbsp;=&nbsp;-1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref957310214182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594ab2f281fa4a18e5c8bd9b831018b057ef](#a70e121e9dba2777559ffceb1fae31594ab2f281fa4a18e5c8bd9b831018b057ef)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref948744425182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594adb703270c367b65bf64f46f5b0855888](#a70e121e9dba2777559ffceb1fae31594adb703270c367b65bf64f46f5b0855888)&nbsp;=&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref339339467182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594ae98353b7b0d3aec0bca22aed43e2169f](#a70e121e9dba2777559ffceb1fae31594ae98353b7b0d3aec0bca22aed43e2169f)&nbsp;=&nbsp;2,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref1609917467182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a37929ecb5b825db52dcae66b02bdc910](#a70e121e9dba2777559ffceb1fae31594a37929ecb5b825db52dcae66b02bdc910)&nbsp;=&nbsp;3,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref632351639182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a37dc7117f0e98c82fb7eec13fa38a9d1](#a70e121e9dba2777559ffceb1fae31594a37dc7117f0e98c82fb7eec13fa38a9d1)&nbsp;=&nbsp;4,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref492540746182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a4d8e14277e60f21ae57ff8f7ea3c04a5](#a70e121e9dba2777559ffceb1fae31594a4d8e14277e60f21ae57ff8f7ea3c04a5)&nbsp;=&nbsp;5,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref1632801306182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594ae4df51a5f95af9e6ef930ae7761703a1](#a70e121e9dba2777559ffceb1fae31594ae4df51a5f95af9e6ef930ae7761703a1)&nbsp;=&nbsp;6,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref156243149182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a78e852734c4705b75ccce11578fe8c87](#a70e121e9dba2777559ffceb1fae31594a78e852734c4705b75ccce11578fe8c87)&nbsp;=&nbsp;7,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref852749458182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a162fd0034aa477101e8f6dd79d889767](#a70e121e9dba2777559ffceb1fae31594a162fd0034aa477101e8f6dd79d889767)&nbsp;=&nbsp;8,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref993868989182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a26b5ba56cb80a7860574ef59d1c9f9f9](#a70e121e9dba2777559ffceb1fae31594a26b5ba56cb80a7860574ef59d1c9f9f9)&nbsp;=&nbsp;9,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref2078543504182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594ae5dba902041c4be005915c72f9585c01](#a70e121e9dba2777559ffceb1fae31594ae5dba902041c4be005915c72f9585c01)&nbsp;=&nbsp;10,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref1270995147182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a8c54e1ceeb536744dd43e4c3a0a2aafa](#a70e121e9dba2777559ffceb1fae31594a8c54e1ceeb536744dd43e4c3a0a2aafa)&nbsp;=&nbsp;11<br/>} | 操作指令。&nbsp; |
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Marshalling](#marshalling)&nbsp;(Parcel&nbsp;&amp;parcel)&nbsp;const&nbsp;override | IPC通信数据序列化。&nbsp; |
### 静态 Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Unmarshalling](#unmarshalling)&nbsp;(Parcel&nbsp;&amp;data) | IPC通信数据反序列化。&nbsp; |
| [localCapability](#localcapability) | 命令数组,用于分布式业务,判断是否支持某个命令。&nbsp; |
| [IsValid](#isvalid)&nbsp;()&nbsp;const | 判断当前指令是否在有效范围内。&nbsp; |
| [SetCommand](#setcommand)&nbsp;(int32_t&nbsp;cmd) | 设置操作指令。&nbsp; |
| [GetCommand](#getcommand)&nbsp;()&nbsp;const | 获取操作指令。&nbsp; |
| [SetSpeed](#setspeed)&nbsp;(double&nbsp;speed) | 设置媒体播放倍数。&nbsp; |
| [GetSpeed](#getspeed)&nbsp;(double&nbsp;&amp;speed)&nbsp;const | 获取媒体播放倍数&nbsp; |
| [SetSeekTime](#setseektime)&nbsp;(int64_t&nbsp;time) | 设置媒体跳播时间。&nbsp; |
| [GetSeekTime](#getseektime)&nbsp;(int64_t&nbsp;&amp;time)&nbsp;const | 获取媒体跳播时间。&nbsp; |
| [SetLoopMode](#setloopmode)&nbsp;(int32_t&nbsp;mode) | 设置媒体循环模式。&nbsp; |
| [GetLoopMode](#getloopmode)&nbsp;(int32_t&nbsp;&amp;mode)&nbsp;const | 获取媒体循环模式。&nbsp; |
| [SetAssetId](#setassetid)&nbsp;(const&nbsp;std::string&nbsp;&amp;assetId) | 设置媒体id。&nbsp; |
| [GetAssetId](#getassetid)&nbsp;(std::string&nbsp;&amp;assetId)&nbsp;const | 获取媒体id。&nbsp; |
## 成员枚举类型说明
### anonymous enum
```
anonymous enum
```
**描述:**
操作指令。
| 枚举值 | 描述 |
| -------- | -------- |
| SESSION_CMD_INVALID&nbsp; | 无效指令,内部用于判断指令是否有效 |
| SESSION_CMD_PLAY&nbsp; | 播放 |
| SESSION_CMD_PAUSE&nbsp; | 暂停 |
| SESSION_CMD_STOP&nbsp; | 停止 |
| SESSION_CMD_PLAY_NEXT&nbsp; | 播放下一首 |
| SESSION_CMD_PLAY_PREVIOUS&nbsp; | 播放上一首 |
| SESSION_CMD_FAST_FORWARD&nbsp; | 快进 |
| SESSION_CMD_REWIND&nbsp; | 快退 |
| SESSION_CMD_SEEK&nbsp; | 跳播 |
| SESSION_CMD_SET_SPEED&nbsp; | 设置播放倍数 |
| SESSION_CMD_SET_LOOP_MODE&nbsp; | 设置循环模式 |
| SESSION_CMD_TOGGLE_FAVORITE&nbsp; | 收藏 |
| SESSION_CMD_MAX&nbsp; | 无效指令,内部用于判断指令是否有效 |
## 成员函数说明
### GetAssetId()
```
int32_t OHOS::AVSession::AVControlCommand::GetAssetId (std::string & assetId) const
```
**描述:**
获取媒体id。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 保存媒体id。&nbsp; |
**参见:**
[SetAssetId](#setassetid)
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### GetCommand()
```
int32_t OHOS::AVSession::AVControlCommand::GetCommand () const
```
**描述:**
获取操作指令。
**返回:**
返回操作指令,范围在[ERROR:Invalid link:zh-cn_topic_0000001423933494.xml#xref867896173182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a14f680be4361ff8e2549e333702f52c4](#a70e121e9dba2777559ffceb1fae31594a14f680be4361ff8e2549e333702f52c4)[ERROR:Invalid link:zh-cn_topic_0000001423933494.xml#xref1402234096182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a8c54e1ceeb536744dd43e4c3a0a2aafa](#a70e121e9dba2777559ffceb1fae31594a8c54e1ceeb536744dd43e4c3a0a2aafa)之间。
**参见:**
[SetCommand](#setcommand)
### GetLoopMode()
```
int32_t OHOS::AVSession::AVControlCommand::GetLoopMode (int32_t & mode) const
```
**描述:**
获取媒体循环模式。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mode | 保存媒体循环模式。&nbsp;取值在&nbsp;[AVPlaybackState#LOOP_MODE_SEQUENCE](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md#a12c2de6b9e2d86a6d2fe5bec88f90abfa85feb6afb637e762bc97d938f74c5f08)到[AVPlaybackState#LOOP_MODE_SHUFFLE](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md#a12c2de6b9e2d86a6d2fe5bec88f90abfaeaa9c517ca402e56c594c6b17d566203)之间。&nbsp; |
**参见:**
[SetLoopMode](#setloopmode)
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### GetSeekTime()
```
int32_t OHOS::AVSession::AVControlCommand::GetSeekTime (int64_t & time) const
```
**描述:**
获取媒体跳播时间。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| time | 媒体资源的位置,从媒体资源开头开始计算,单位为ms。取值需大于等于0。&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[SetSeekTime](#setseektime)
### GetSpeed()
```
int32_t OHOS::AVSession::AVControlCommand::GetSpeed (double & speed) const
```
**描述:**
获取媒体播放倍数
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| speed | 媒体播放倍数,返回值。&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[SetSpeed](#setspeed)
### IsValid()
```
bool OHOS::AVSession::AVControlCommand::IsValid () const
```
**描述:**
判断当前指令是否在有效范围内。
**返回:**
如果cmd_在有效范围内,范围在[ERROR:Invalid link:zh-cn_topic_0000001423933494.xml#xref1266392772182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a14f680be4361ff8e2549e333702f52c4](#a70e121e9dba2777559ffceb1fae31594a14f680be4361ff8e2549e333702f52c4)到link [ERROR:Invalid link:zh-cn_topic_0000001423933494.xml#xref1099549702182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a8c54e1ceeb536744dd43e4c3a0a2aafa](#a70e121e9dba2777559ffceb1fae31594a8c54e1ceeb536744dd43e4c3a0a2aafa)}之间, 返回true;否则,返回false。
### Marshalling()
```
bool OHOS::AVSession::AVControlCommand::Marshalling (Parcel & parcel) const
```
**描述:**
IPC通信数据序列化。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| parcel | 保存序列化值的对象**Parcel**&nbsp; |
**返回:**
成功返回true;否则,返回false。
**参见:**
[Unmarshalling](#unmarshalling)
### SetAssetId()
```
int32_t OHOS::AVSession::AVControlCommand::SetAssetId (const std::string & assetId)
```
**描述:**
设置媒体id。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 媒体id,不可为空。&nbsp; |
**参见:**
[GetAssetId](#getassetid)
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### SetCommand()
```
int32_t OHOS::AVSession::AVControlCommand::SetCommand (int32_t cmd)
```
**描述:**
设置操作指令。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| cmd | 操作指令,范围在[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref1872259712182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a14f680be4361ff8e2549e333702f52c4](#a70e121e9dba2777559ffceb1fae31594a14f680be4361ff8e2549e333702f52c4)[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423933494.xml#xref1870164484182348,link:zh-cn_topic_0000001423933494.xml#a70e121e9dba2777559ffceb1fae31594a8c54e1ceeb536744dd43e4c3a0a2aafa](#a70e121e9dba2777559ffceb1fae31594a8c54e1ceeb536744dd43e4c3a0a2aafa)之间。&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetCommand](#getcommand)
### SetLoopMode()
```
int32_t OHOS::AVSession::AVControlCommand::SetLoopMode (int32_t mode)
```
**描述:**
设置媒体循环模式。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mode | 媒体循环模式,&nbsp;取值在&nbsp;[AVPlaybackState#LOOP_MODE_SEQUENCE](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md#a12c2de6b9e2d86a6d2fe5bec88f90abfa85feb6afb637e762bc97d938f74c5f08)到[AVPlaybackState#LOOP_MODE_SHUFFLE](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md#a12c2de6b9e2d86a6d2fe5bec88f90abfaeaa9c517ca402e56c594c6b17d566203)之间。&nbsp; |
**参见:**
[GetLoopMode](#getloopmode)
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### SetSeekTime()
```
int32_t OHOS::AVSession::AVControlCommand::SetSeekTime (int64_t time)
```
**描述:**
设置媒体跳播时间。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| time | 媒体资源的位置,从媒体资源开头开始计算,单位为ms。取值需大于等于0。&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetSeekTime](#getseektime)
### SetSpeed()
```
int32_t OHOS::AVSession::AVControlCommand::SetSpeed (double speed)
```
**描述:**
设置媒体播放倍数。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| speed | 媒体播放倍数,需大于0。&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetSpeed](#getspeed)
### Unmarshalling()
```
static AVControlCommand* OHOS::AVSession::AVControlCommand::Unmarshalling (Parcel & data)
```
**描述:**
IPC通信数据反序列化。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 序列化对象**Parcel**&nbsp; |
**返回:**
返回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/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref2118602748182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28ae99d5364d7a646080ede50f15b3c2724](#a7a1596eae23e0cf8ab02d02de37dea28ae99d5364d7a646080ede50f15b3c2724)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref1712783448182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a189fb78288cd6a3afbd81a88ed721b26](#a7a1596eae23e0cf8ab02d02de37dea28a189fb78288cd6a3afbd81a88ed721b26)&nbsp;=&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref195676889182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a0d56221d2b6d0230a8441b569ec79423](#a7a1596eae23e0cf8ab02d02de37dea28a0d56221d2b6d0230a8441b569ec79423)&nbsp;=&nbsp;2,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref693195284182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a0f71f86527ce21d97666c33cac459a29](#a7a1596eae23e0cf8ab02d02de37dea28a0f71f86527ce21d97666c33cac459a29)&nbsp;=&nbsp;3,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref1603000664182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28af3b9104ec669ce3a252969fda137756e](#a7a1596eae23e0cf8ab02d02de37dea28af3b9104ec669ce3a252969fda137756e)&nbsp;=&nbsp;4,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref740488576182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28adb25084cc3ccdfc1c0ccd5202c010b88](#a7a1596eae23e0cf8ab02d02de37dea28adb25084cc3ccdfc1c0ccd5202c010b88)&nbsp;=&nbsp;5,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref377729915182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a6ada4246477004d1f8c1c22805448f57](#a7a1596eae23e0cf8ab02d02de37dea28a6ada4246477004d1f8c1c22805448f57)&nbsp;=&nbsp;6,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref1579556667182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a6c87155e22476332c3afca2e362b6499](#a7a1596eae23e0cf8ab02d02de37dea28a6c87155e22476332c3afca2e362b6499)&nbsp;=&nbsp;7,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref952040068182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a573988a41fdc15138125de9e699b4410](#a7a1596eae23e0cf8ab02d02de37dea28a573988a41fdc15138125de9e699b4410)&nbsp;=&nbsp;8,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref1699648636182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28ae73aa81af3bd31e8af78edae31d14f69](#a7a1596eae23e0cf8ab02d02de37dea28ae73aa81af3bd31e8af78edae31d14f69)&nbsp;=&nbsp;9,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref210405995182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28af1063b65c0120e1e14298f16f8f48eb8](#a7a1596eae23e0cf8ab02d02de37dea28af1063b65c0120e1e14298f16f8f48eb8)&nbsp;=&nbsp;10,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref1304520289182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a87dff8b9a7fc5629047a6c49aa7ad075](#a7a1596eae23e0cf8ab02d02de37dea28a87dff8b9a7fc5629047a6c49aa7ad075)&nbsp;=&nbsp;11,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref1353365541182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a0e4b4d1fbe3f96f5875fc8a3db63665a](#a7a1596eae23e0cf8ab02d02de37dea28a0e4b4d1fbe3f96f5875fc8a3db63665a)&nbsp;=&nbsp;12,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref1860277742182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a22d6767a149cadb9f8adfcc2e7e883e0](#a7a1596eae23e0cf8ab02d02de37dea28a22d6767a149cadb9f8adfcc2e7e883e0)&nbsp;=&nbsp;13,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref1487235666182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28a3e66bd6d568e6d563ab64385d96f7b33](#a7a1596eae23e0cf8ab02d02de37dea28a3e66bd6d568e6d563ab64385d96f7b33)&nbsp;=&nbsp;14,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref919001485182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28aa8b557fe3184b235c6b76cfdee285253](#a7a1596eae23e0cf8ab02d02de37dea28aa8b557fe3184b235c6b76cfdee285253)&nbsp;=&nbsp;15,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref406831288182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28ad1907479ca45af05709d1b813cf1b59a](#a7a1596eae23e0cf8ab02d02de37dea28ad1907479ca45af05709d1b813cf1b59a)&nbsp;=&nbsp;16<br/>} | 会话元数据具体枚举项。&nbsp; |
| [MetaMaskType](#metamasktype)&nbsp;=&nbsp;std::bitset&lt;&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref871960788182348,link:zh-cn_topic_0000001423615938.xml#a7a1596eae23e0cf8ab02d02de37dea28ad1907479ca45af05709d1b813cf1b59a](#a7a1596eae23e0cf8ab02d02de37dea28ad1907479ca45af05709d1b813cf1b59a)&nbsp;&gt; | 引入掩码标记需要拷贝的会话元数据。&nbsp; |
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [AVMetaData](#avmetadata)&nbsp;()=default | 会话元数据默认构造函数。&nbsp; |
| [~AVMetaData](#avmetadata)&nbsp;()&nbsp;override | 会话元数据默认析构函数。&nbsp; |
| [Marshalling](#marshalling)&nbsp;(Parcel&nbsp;&amp;data)&nbsp;const&nbsp;override | 实现会话元数据进程间传递的序列化。&nbsp; |
| [SetAssetId](#setassetid)&nbsp;(const&nbsp;std::string&nbsp;&amp;assetId) | 设置曲目ID。&nbsp; |
| [GetAssetId](#getassetid)&nbsp;()&nbsp;const | 获取曲目ID。&nbsp; |
| [SetTitle](#settitle)&nbsp;(const&nbsp;std::string&nbsp;&amp;title) | 设置标题。&nbsp; |
| [GetTitle](#gettitle)&nbsp;()&nbsp;const | 获取标题。&nbsp; |
| [SetArtist](#setartist)&nbsp;(const&nbsp;std::string&nbsp;&amp;artist) | 设置艺术家名称。&nbsp; |
| [GetArtist](#getartist)&nbsp;()&nbsp;const | 获取艺术家名称。&nbsp; |
| [SetAuthor](#setauthor)&nbsp;(const&nbsp;std::string&nbsp;&amp;author) | 设置制作人名称。&nbsp; |
| [GetAuthor](#getauthor)&nbsp;()&nbsp;const | 获取制作人名称。&nbsp; |
| [SetAlbum](#setalbum)&nbsp;(const&nbsp;std::string&nbsp;&amp;album) | 设置专辑名称。&nbsp; |
| [GetAlbum](#getalbum)&nbsp;()&nbsp;const | 获取专辑名称。&nbsp; |
| [SetWriter](#setwriter)&nbsp;(const&nbsp;std::string&nbsp;&amp;writer) | 设置作词名称。&nbsp; |
| [GetWriter](#getwriter)&nbsp;()&nbsp;const | 获取作词名称。&nbsp; |
| [SetComposer](#setcomposer)&nbsp;(const&nbsp;std::string&nbsp;&amp;composer) | 设置作曲名称。&nbsp; |
| [GetComposer](#getcomposer)&nbsp;()&nbsp;const | 获取作曲名称。&nbsp; |
| [SetDuration](#setduration)&nbsp;(int64_t&nbsp;duration) | 设置媒体时长。&nbsp; |
| [GetDuration](#getduration)&nbsp;()&nbsp;const | 获取媒体时长。&nbsp; |
| [SetMediaImage](#setmediaimage)&nbsp;(const&nbsp;std::shared_ptr&lt;&nbsp;[AVSessionPixelMap](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_pixel_map.md)&nbsp;&gt;&nbsp;&amp;mediaImage) | 设置媒体图片。&nbsp; |
| [GetMediaImage](#getmediaimage)&nbsp;()&nbsp;const | 获取媒体图片。&nbsp; |
| [SetMediaImageUri](#setmediaimageuri)&nbsp;(const&nbsp;std::string&nbsp;&amp;mediaImageUri) | 设置媒体图片URI。&nbsp; |
| [GetMediaImageUri](#getmediaimageuri)&nbsp;()&nbsp;const | 获取媒体图片URI。&nbsp; |
| [SetPublishDate](#setpublishdate)&nbsp;(double&nbsp;date) | 设置曲目发布日期,时间戳,单位为ms。&nbsp; |
| [GetPublishDate](#getpublishdate)&nbsp;()&nbsp;const | 获取曲目发布日期,时间戳,单位为ms。&nbsp; |
| [SetSubTitle](#setsubtitle)&nbsp;(const&nbsp;std::string&nbsp;&amp;subTitle) | 设置子标题。&nbsp; |
| [GetSubTitle](#getsubtitle)&nbsp;()&nbsp;const | 获取子标题。&nbsp; |
| [SetDescription](#setdescription)&nbsp;(const&nbsp;std::string&nbsp;&amp;description) | 设置曲目描述。&nbsp; |
| [GetDescription](#getdescription)&nbsp;()&nbsp;const | 获取曲目描述。&nbsp; |
| [SetLyric](#setlyric)&nbsp;(const&nbsp;std::string&nbsp;&amp;lyric) | 设置歌词。&nbsp; |
| [GetLyric](#getlyric)&nbsp;()&nbsp;const | 获取歌词。&nbsp; |
| [SetPreviousAssetId](#setpreviousassetid)&nbsp;(const&nbsp;std::string&nbsp;&amp;assetId) | 设置上一曲曲目ID。&nbsp; |
| [GetPreviousAssetId](#getpreviousassetid)&nbsp;()&nbsp;const | 获取上一曲曲目ID。&nbsp; |
| [SetNextAssetId](#setnextassetid)&nbsp;(const&nbsp;std::string&nbsp;&amp;assetId) | 设置下一曲曲目ID。&nbsp; |
| [GetNextAssetId](#getnextassetid)&nbsp;()&nbsp;const | 获取下一曲曲目ID。&nbsp; |
| [Reset](#reset)&nbsp;() | 重置所有会话元数据项。&nbsp; |
| [GetMetaMask](#getmetamask)&nbsp;()&nbsp;const | 获取掩码。&nbsp; |
| [CopyToByMask](#copytobymask)&nbsp;([MetaMaskType](#metamasktype)&nbsp;&amp;mask,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref2143206164182348,link:zh-cn_topic_0000001423615938.xml](zh-cn_topic_0000001423615938.xml)&nbsp;&amp;metaOut)&nbsp;const | 根据metadata掩码,将metadata项复制到metaOut。&nbsp; |
| [CopyFrom](#copyfrom)&nbsp;(const&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref1637590024182348,link:zh-cn_topic_0000001423615938.xml](zh-cn_topic_0000001423615938.xml)&nbsp;&amp;metaIn) | 根据metaIn元掩码的设置位从metaIn复制metadata项。&nbsp; |
| [IsValid](#isvalid)&nbsp;()&nbsp;const | 会话元数据有效性判断。&nbsp; |
### 静态 Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Unmarshalling](#unmarshalling)&nbsp;(Parcel&nbsp;&amp;data) | 实现会话元数据进程间传递的反序列化。&nbsp; |
### 静态 Public 属性
| 名称 | 描述 |
| -------- | -------- |
| [DURATION_ALWAYS_PLAY](#durationalwaysplay)&nbsp;=&nbsp;-1 | 持续时间全局变量宏定义。&nbsp; |
| [localCapability](#localcapability) | 会话元数据数组,用于分布式业务,设置会话属性。&nbsp; |
## 成员类型定义说明
### MetaMaskType
```
using OHOS::AVSession::AVMetaData::MetaMaskType = std::bitset<META_KEY_MAX>
```
**描述:**
引入掩码标记需要拷贝的会话元数据。
## 成员枚举类型说明
### anonymous enum
```
anonymous enum
```
**描述:**
会话元数据具体枚举项。
| 枚举值 | 描述 |
| -------- | -------- |
| META_KEY_ASSET_ID&nbsp; | 曲目ID |
| META_KEY_TITLE&nbsp; | 标题 |
| META_KEY_ARTIST&nbsp; | 艺术家 |
| META_KEY_AUTHOR&nbsp; | 制作人 |
| META_KEY_ALBUM&nbsp; | 专辑 |
| META_KEY_WRITER&nbsp; | 作词 |
| META_KEY_COMPOSER&nbsp; | 作曲 |
| META_KEY_DURATION&nbsp; | 媒体时长 |
| META_KEY_MEDIA_IMAGE&nbsp; | 媒体影像 |
| META_KEY_MEDIA_IMAGE_URI&nbsp; | 媒体影像路径 |
| META_KEY_PUBLISH_DATE&nbsp; | 曲目发布日期 |
| META_KEY_SUBTITLE&nbsp; | 子标题 |
| META_KEY_DESCRIPTION&nbsp; | 曲目描述 |
| META_KEY_LYRIC&nbsp; | 歌词 |
| META_KEY_PREVIOUS_ASSET_ID&nbsp; | 上一曲 |
| META_KEY_NEXT_ASSET_ID&nbsp; | 下一曲 |
| META_KEY_MAX&nbsp; | 无效指令,内部用来判断会话元数据是否有效 |
## 构造及析构函数说明
### 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)&nbsp; |
| metaOut | metadata已拷贝成功的出参[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423615938.xml#xref2069636235182348,link:zh-cn_topic_0000001423615938.xml](zh-cn_topic_0000001423615938.xml)&nbsp; |
**返回:**
成功返回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**&nbsp; |
**返回:**
如果序列化成功,则返回true;如果操作失败,则返回false。
**参见:**
[Unmarshalling](#unmarshalling)
### Reset()
```
void OHOS::AVSession::AVMetaData::Reset ()
```
**描述:**
重置所有会话元数据项。
### SetAlbum()
```
void OHOS::AVSession::AVMetaData::SetAlbum (const std::string & album)
```
**描述:**
设置专辑名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| album | 专辑名称。&nbsp; |
**参见:**
[GetAlbum](#getalbum)
### SetArtist()
```
void OHOS::AVSession::AVMetaData::SetArtist (const std::string & artist)
```
**描述:**
设置艺术家名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| artist | 艺术家名称。&nbsp; |
**参见:**
[GetArtist](#getartist)
### SetAssetId()
```
void OHOS::AVSession::AVMetaData::SetAssetId (const std::string & assetId)
```
**描述:**
设置曲目ID。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 曲目ID,不可为空。&nbsp; |
**参见:**
[GetAssetId](#getassetid)
### SetAuthor()
```
void OHOS::AVSession::AVMetaData::SetAuthor (const std::string & author)
```
**描述:**
设置制作人名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| author | 制作人名称。&nbsp; |
**参见:**
[GetArtist](#getartist)
### SetComposer()
```
void OHOS::AVSession::AVMetaData::SetComposer (const std::string & composer)
```
**描述:**
设置作曲名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| composer | 作曲名称。&nbsp; |
**参见:**
[GetComposer](#getcomposer)
### SetDescription()
```
void OHOS::AVSession::AVMetaData::SetDescription (const std::string & description)
```
**描述:**
设置曲目描述。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| description | 曲目描述。&nbsp; |
**参见:**
[GetDescription](#getdescription)
### SetDuration()
```
void OHOS::AVSession::AVMetaData::SetDuration (int64_t duration)
```
**描述:**
设置媒体时长。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| duration | 媒体时长,必须大于等于-1,单位为ms&nbsp;&nbsp; |
**参见:**
[GetDuration](#getduration)
### SetLyric()
```
void OHOS::AVSession::AVMetaData::SetLyric (const std::string & lyric)
```
**描述:**
设置歌词。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| lyric | 歌词。&nbsp; |
**参见:**
[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)&nbsp; |
**参见:**
[GetMediaImage](#getmediaimage)
### SetMediaImageUri()
```
void OHOS::AVSession::AVMetaData::SetMediaImageUri (const std::string & mediaImageUri)
```
**描述:**
设置媒体图片URI。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mediaImageUri | 媒体图片URI。&nbsp; |
**参见:**
[GetMediaImageUri](#getmediaimageuri)
### SetNextAssetId()
```
void OHOS::AVSession::AVMetaData::SetNextAssetId (const std::string & assetId)
```
**描述:**
设置下一曲曲目ID。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 下一曲曲目ID。&nbsp; |
**参见:**
[GetNextAssetId](#getnextassetid)
### SetPreviousAssetId()
```
void OHOS::AVSession::AVMetaData::SetPreviousAssetId (const std::string & assetId)
```
**描述:**
设置上一曲曲目ID。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| assetId | 上一曲曲目ID。&nbsp; |
**参见:**
[GetPreviousAssetId](#getpreviousassetid)
### SetPublishDate()
```
void OHOS::AVSession::AVMetaData::SetPublishDate (double date)
```
**描述:**
设置曲目发布日期,时间戳,单位为ms。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| date | 曲目发布日期,时间戳,单位为ms。&nbsp; |
**参见:**
[GetPublishDate](#getpublishdate)
### SetSubTitle()
```
void OHOS::AVSession::AVMetaData::SetSubTitle (const std::string & subTitle)
```
**描述:**
设置子标题。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| subTitle | 子标题。&nbsp; |
**参见:**
[GetSubTitle](#getsubtitle)
### SetTitle()
```
void OHOS::AVSession::AVMetaData::SetTitle (const std::string & title)
```
**描述:**
设置标题。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| title | 标题。&nbsp; |
**参见:**
[GetTitle](#gettitle)
### SetWriter()
```
void OHOS::AVSession::AVMetaData::SetWriter (const std::string & writer)
```
**描述:**
设置作词名称。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| writer | 作词名称。&nbsp; |
**参见:**
[GetWriter](#getwriter)
### Unmarshalling()
```
static AVMetaData* OHOS::AVSession::AVMetaData::Unmarshalling (Parcel & data)
```
**描述:**
实现会话元数据进程间传递的反序列化。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 序列化对象**Parcel**&nbsp; |
**返回:**
如果反序列化成功,返回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/>播放位置的相关信息。&nbsp; |
### Public 类型
| 名称 | 描述 |
| -------- | -------- |
| {<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1394480285182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830ab9c4c24797f9262f0a91539f2dadfdf2](#aba0cbca8d49abcbe1c7241a4481fc830ab9c4c24797f9262f0a91539f2dadfdf2)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1298081396182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830a4503771522078e8c3c95a943ff0fe2ab](#aba0cbca8d49abcbe1c7241a4481fc830a4503771522078e8c3c95a943ff0fe2ab)&nbsp;=&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref959014603182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830af9ec8c33050720bd76fef60fc733676d](#aba0cbca8d49abcbe1c7241a4481fc830af9ec8c33050720bd76fef60fc733676d)&nbsp;=&nbsp;2,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1164783128182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830a836db54e2e688fcd1eabdf46541d796f](#aba0cbca8d49abcbe1c7241a4481fc830a836db54e2e688fcd1eabdf46541d796f)&nbsp;=&nbsp;3,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1092341008182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830afbca87b2469ca4c50f6adea49de02acd](#aba0cbca8d49abcbe1c7241a4481fc830afbca87b2469ca4c50f6adea49de02acd)&nbsp;=&nbsp;4,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref302647307182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830ae40be2ba02168d8269caa2db7076c766](#aba0cbca8d49abcbe1c7241a4481fc830ae40be2ba02168d8269caa2db7076c766)&nbsp;=&nbsp;5,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1310725171182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830ae1617f8453b35465016b1d0d389b20d5](#aba0cbca8d49abcbe1c7241a4481fc830ae1617f8453b35465016b1d0d389b20d5)&nbsp;=&nbsp;6,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1391519360182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830a6468b80d467d840b9ec7e15f96c5255d](#aba0cbca8d49abcbe1c7241a4481fc830a6468b80d467d840b9ec7e15f96c5255d)&nbsp;=&nbsp;7<br/>} | 描述播放状态的枚举。&nbsp; |
| {<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref2054614775182348,link:zh-cn_topic_0000001473452837.xml#ad2c10eba2de414d6db99846dc1a9a007aa0bcce0e5ffae403acd4213d574b87f0](#ad2c10eba2de414d6db99846dc1a9a007aa0bcce0e5ffae403acd4213d574b87f0)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref379580179182348,link:zh-cn_topic_0000001473452837.xml#ad2c10eba2de414d6db99846dc1a9a007a48c44da738d2607503b4d6753e314a1d](#ad2c10eba2de414d6db99846dc1a9a007a48c44da738d2607503b4d6753e314a1d)&nbsp;=&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref61575692182348,link:zh-cn_topic_0000001473452837.xml#ad2c10eba2de414d6db99846dc1a9a007add70379200133c2e14f3ad8d0526c679](#ad2c10eba2de414d6db99846dc1a9a007add70379200133c2e14f3ad8d0526c679)&nbsp;=&nbsp;2,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref532965400182348,link:zh-cn_topic_0000001473452837.xml#ad2c10eba2de414d6db99846dc1a9a007a6890f839e6b02e26016fa0e03abd122d](#ad2c10eba2de414d6db99846dc1a9a007a6890f839e6b02e26016fa0e03abd122d)&nbsp;=&nbsp;3,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1319132859182348,link:zh-cn_topic_0000001473452837.xml#ad2c10eba2de414d6db99846dc1a9a007a110148dbe99273acc6d71113a8e0e3e2](#ad2c10eba2de414d6db99846dc1a9a007a110148dbe99273acc6d71113a8e0e3e2)&nbsp;=&nbsp;4,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref242352481182348,link:zh-cn_topic_0000001473452837.xml#ad2c10eba2de414d6db99846dc1a9a007ad58284b6fc7a55e006bc9c3c66f0da03](#ad2c10eba2de414d6db99846dc1a9a007ad58284b6fc7a55e006bc9c3c66f0da03)&nbsp;=&nbsp;5,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1605044078182348,link:zh-cn_topic_0000001473452837.xml#ad2c10eba2de414d6db99846dc1a9a007aae4e5886f5200e5ef2b38648824e3e05](#ad2c10eba2de414d6db99846dc1a9a007aae4e5886f5200e5ef2b38648824e3e05)&nbsp;=&nbsp;6<br/>} | 播放界面信息的枚举。&nbsp; |
| {&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1581946942182348,link:zh-cn_topic_0000001473452837.xml#a12c2de6b9e2d86a6d2fe5bec88f90abfa85feb6afb637e762bc97d938f74c5f08](#a12c2de6b9e2d86a6d2fe5bec88f90abfa85feb6afb637e762bc97d938f74c5f08)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1465740081182348,link:zh-cn_topic_0000001473452837.xml#a12c2de6b9e2d86a6d2fe5bec88f90abfa2451f0f8093db7636425a55c54276707](#a12c2de6b9e2d86a6d2fe5bec88f90abfa2451f0f8093db7636425a55c54276707)&nbsp;=&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1956228198182348,link:zh-cn_topic_0000001473452837.xml#a12c2de6b9e2d86a6d2fe5bec88f90abfa076f44f44f9f45a0e34328d532c68356](#a12c2de6b9e2d86a6d2fe5bec88f90abfa076f44f44f9f45a0e34328d532c68356)&nbsp;=&nbsp;2,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref73690955182348,link:zh-cn_topic_0000001473452837.xml#a12c2de6b9e2d86a6d2fe5bec88f90abfaeaa9c517ca402e56c594c6b17d566203](#a12c2de6b9e2d86a6d2fe5bec88f90abfaeaa9c517ca402e56c594c6b17d566203)&nbsp;=&nbsp;3&nbsp;} | 循环模式的枚举。&nbsp; |
| **PlaybackStateMaskType**&nbsp;=&nbsp;std::bitset&lt;&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref710369017182348,link:zh-cn_topic_0000001473452837.xml#ad2c10eba2de414d6db99846dc1a9a007aae4e5886f5200e5ef2b38648824e3e05](#ad2c10eba2de414d6db99846dc1a9a007aae4e5886f5200e5ef2b38648824e3e05)&nbsp;&gt; | |
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Marshalling](#marshalling)&nbsp;(Parcel&nbsp;&amp;parcel)&nbsp;const&nbsp;override | IPC通信数据序列化。&nbsp; |
| [IsValid](#isvalid)&nbsp;()&nbsp;const | 验证当前信息的有效性。&nbsp; |
| [SetState](#setstate)&nbsp;(int32_t&nbsp;state) | 设置音视频的播放状态。&nbsp; |
| [GetState](#getstate)&nbsp;()&nbsp;const | 获取当前音视频的播放状态。&nbsp; |
| [SetSpeed](#setspeed)&nbsp;(double&nbsp;speed) | 设置播放倍速。&nbsp; |
| [GetSpeed](#getspeed)&nbsp;()&nbsp;const | 获取当前播放倍速。&nbsp; |
| [SetPosition](#setposition)&nbsp;(const&nbsp;[Position](_1_a_v_session_1_1_a_v_playback_state_1_1_position.md)&nbsp;&amp;position) | 设置播放位置,通过更新时间与经过时间来计算,单位ms。&nbsp; |
| [GetPosition](#getposition)&nbsp;()&nbsp;const | 获取播放位置。&nbsp; |
| [SetBufferedTime](#setbufferedtime)&nbsp;(int64_t&nbsp;time) | 设置缓冲时间,单位为ms。&nbsp; |
| [GetBufferedTime](#getbufferedtime)&nbsp;()&nbsp;const | 获取当前缓冲时间,单位为ms。&nbsp; |
| [SetLoopMode](#setloopmode)&nbsp;(int32_t&nbsp;mode) | 设置循环模式。&nbsp; |
| [GetLoopMode](#getloopmode)&nbsp;()&nbsp;const | 获取当前循环模式。&nbsp; |
| [SetFavorite](#setfavorite)&nbsp;(bool&nbsp;isFavorite) | 设置是否收藏。&nbsp; |
| [GetFavorite](#getfavorite)&nbsp;()&nbsp;const | 获取是否收藏。&nbsp; |
| [GetMask](#getmask)&nbsp;()&nbsp;const | 获取掩码。&nbsp; |
### 静态 Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Unmarshalling](#unmarshalling)&nbsp;(Parcel&nbsp;&amp;parcel) | IPC通信数据反序列化。&nbsp; |
| [localCapability](#localcapability) | 内联函数指针数组[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1233517696182348,link:zh-cn_topic_0000001473452837.xml](zh-cn_topic_0000001473452837.xml),用于分布式业务,设置播放界面信息。&nbsp; |
| [CopyToByMask](#copytobymask)&nbsp;(PlaybackStateMaskType&nbsp;&amp;mask,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref152266043182348,link:zh-cn_topic_0000001473452837.xml](zh-cn_topic_0000001473452837.xml)&nbsp;&amp;out)&nbsp;const | 通过掩码拷贝信息到新的AVPlaybackState对象。&nbsp; |
| [CopyFrom](#copyfrom)&nbsp;(const&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref970172040182348,link:zh-cn_topic_0000001473452837.xml](zh-cn_topic_0000001473452837.xml)&nbsp;&amp;in) | 根据当前对象的mask_掩码,将输入的AVPlaybackState类型的信息复制到当前对象。&nbsp; |
## 成员枚举类型说明
### anonymous enum
```
anonymous enum
```
**描述:**
描述播放状态的枚举。
| 枚举值 | 描述 |
| -------- | -------- |
| PLAYBACK_STATE_INITIAL&nbsp; | 初始状态 |
| PLAYBACK_STATE_PREPARING&nbsp; | 缓冲状态 |
| PLAYBACK_STATE_PLAYING&nbsp; | 播放状态 |
| PLAYBACK_STATE_PAUSED&nbsp; | 暂停状态 |
| PLAYBACK_STATE_FAST_FORWARD&nbsp; | 快进状态 |
| PLAYBACK_STATE_REWIND&nbsp; | 快退状态 |
| PLAYBACK_STATE_STOP&nbsp; | 停止状态 |
| PLAYBACK_STATE_MAX&nbsp; | 无效类型,内部用于判断状态是否有效 |
### anonymous enum
```
anonymous enum
```
**描述:**
播放界面信息的枚举。
| 枚举值 | 描述 |
| -------- | -------- |
| PLAYBACK_KEY_STATE&nbsp; | 播放状态,包括正在播放、暂停、快进等 |
| PLAYBACK_KEY_SPEED&nbsp; | 播放倍数 |
| PLAYBACK_KEY_POSITION&nbsp; | 播放位置 |
| PLAYBACK_KEY_BUFFERED_TIME&nbsp; | 缓冲时间 |
| PLAYBACK_KEY_LOOP_MODE&nbsp; | 循环模式 |
| PLAYBACK_KEY_IS_FAVORITE&nbsp; | 设置喜欢(收藏) |
| PLAYBACK_KEY_MAX&nbsp; | 无效类型,内部用于判断key是否有效 |
### anonymous enum
```
anonymous enum
```
**描述:**
循环模式的枚举。
| 枚举值 | 描述 |
| -------- | -------- |
| LOOP_MODE_SEQUENCE&nbsp; | 顺序播放 |
| LOOP_MODE_SINGLE&nbsp; | 单曲循环 |
| LOOP_MODE_LIST&nbsp; | 列表循环 |
| LOOP_MODE_SHUFFLE&nbsp; | 随机播放 |
## 成员函数说明
### CopyFrom()
```
bool OHOS::AVSession::AVPlaybackState::CopyFrom (const AVPlaybackState & in)
```
**描述:**
根据当前对象的mask_掩码,将输入的AVPlaybackState类型的信息复制到当前对象。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| in | AVPlaybackState类型的引用[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1282648301182348,link:zh-cn_topic_0000001473452837.xml](zh-cn_topic_0000001473452837.xml)&nbsp; |
**返回:**
如果有至少一个播放界面信息被拷贝,返回true;如果一个播放界面信息都没有被拷贝,返回false。
**参见:**
[CopyToByMask](#copytobymask)
[GetMask](#getmask)
### CopyToByMask()
```
bool OHOS::AVSession::AVPlaybackState::CopyToByMask (PlaybackStateMaskType & mask, AVPlaybackState & out ) const
```
**描述:**
通过掩码拷贝信息到新的AVPlaybackState对象。
mask对应位上有值的对象拷贝给out。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mask | 输入的掩码**}。&nbsp;out&nbsp;输出的音视频的播放状态&nbsp;AVPlaybackState}。&nbsp;如果有至少一个播放界面信息被拷贝,返回true;如果一个播放界面信息都没有被拷贝,返回false。&nbsp;CopyFrom&nbsp;9&nbsp;1.0&nbsp;** |
### 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
```
**描述:**
获取当前循环模式。
**返回:**
返回循环模式,范围[ERROR:Invalid link:zh-cn_topic_0000001473452837.xml#xref1640948815182348,link:zh-cn_topic_0000001473452837.xml#a12c2de6b9e2d86a6d2fe5bec88f90abfa85feb6afb637e762bc97d938f74c5f08](#a12c2de6b9e2d86a6d2fe5bec88f90abfa85feb6afb637e762bc97d938f74c5f08)[ERROR:Invalid link:zh-cn_topic_0000001473452837.xml#xref142921531182348,link:zh-cn_topic_0000001473452837.xml#a12c2de6b9e2d86a6d2fe5bec88f90abfaeaa9c517ca402e56c594c6b17d566203](#a12c2de6b9e2d86a6d2fe5bec88f90abfaeaa9c517ca402e56c594c6b17d566203)之间。
**参见:**
[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
```
**描述:**
获取当前音视频的播放状态。
**返回:**
返回当前音视频的播放状态,范围[ERROR:Invalid link:zh-cn_topic_0000001473452837.xml#xref1660471541182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830ab9c4c24797f9262f0a91539f2dadfdf2](#aba0cbca8d49abcbe1c7241a4481fc830ab9c4c24797f9262f0a91539f2dadfdf2)[ERROR:Invalid link:zh-cn_topic_0000001473452837.xml#xref1951857961182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830a6468b80d467d840b9ec7e15f96c5255d](#aba0cbca8d49abcbe1c7241a4481fc830a6468b80d467d840b9ec7e15f96c5255d)之间。
**参见:**
[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**&nbsp; |
**返回:**
成功返回true;失败返回false。
**参见:**
[Unmarshalling](#unmarshalling)
### SetBufferedTime()
```
void OHOS::AVSession::AVPlaybackState::SetBufferedTime (int64_t time)
```
**描述:**
设置缓冲时间,单位为ms。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| time | 缓冲时间。&nbsp; |
**参见:**
[GetBufferedTime](#getbufferedtime)
### SetFavorite()
```
void OHOS::AVSession::AVPlaybackState::SetFavorite (bool isFavorite)
```
**描述:**
设置是否收藏。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| isFavorite | 是否收藏,是则为true,否则false。&nbsp; |
**参见:**
[GetFavorite](#getfavorite)
### SetLoopMode()
```
void OHOS::AVSession::AVPlaybackState::SetLoopMode (int32_t mode)
```
**描述:**
设置循环模式。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mode | 循环模式,范围[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref5703182182348,link:zh-cn_topic_0000001473452837.xml#a12c2de6b9e2d86a6d2fe5bec88f90abfa85feb6afb637e762bc97d938f74c5f08](#a12c2de6b9e2d86a6d2fe5bec88f90abfa85feb6afb637e762bc97d938f74c5f08)[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1637950715182348,link:zh-cn_topic_0000001473452837.xml#a12c2de6b9e2d86a6d2fe5bec88f90abfaeaa9c517ca402e56c594c6b17d566203](#a12c2de6b9e2d86a6d2fe5bec88f90abfaeaa9c517ca402e56c594c6b17d566203)之间。&nbsp; |
**参见:**
[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)&nbsp; |
**参见:**
[GetPosition](#getposition)
### SetSpeed()
```
void OHOS::AVSession::AVPlaybackState::SetSpeed (double speed)
```
**描述:**
设置播放倍速。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| speed | 播放倍速。&nbsp; |
**参见:**
[SetSpeed](#setspeed)
### SetState()
```
void OHOS::AVSession::AVPlaybackState::SetState (int32_t state)
```
**描述:**
设置音视频的播放状态。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| state | 音视频的播放状态,范围[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1230379009182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830ab9c4c24797f9262f0a91539f2dadfdf2](#aba0cbca8d49abcbe1c7241a4481fc830ab9c4c24797f9262f0a91539f2dadfdf2)[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473452837.xml#xref1982579367182348,link:zh-cn_topic_0000001473452837.xml#aba0cbca8d49abcbe1c7241a4481fc830a6468b80d467d840b9ec7e15f96c5255d](#aba0cbca8d49abcbe1c7241a4481fc830a6468b80d467d840b9ec7e15f96c5255d)之间。&nbsp; |
**参见:**
[GetState](#getstate)
### Unmarshalling()
```
static AVPlaybackState* OHOS::AVSession::AVPlaybackState::Unmarshalling (Parcel & parcel)
```
**描述:**
IPC通信数据反序列化。
将通过IPC接收的**Parcel**类型的信息,反序列化为AVPlaybackState类型的信息。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| parcel | 序列化对象**Parcel**&nbsp; |
**返回:**
如果反序列化成功,则返回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,
}
```
**描述:**
内联函数指针数组[ERROR:Invalid link:zh-cn_topic_0000001473452837.xml#xref1751277363182348,link:zh-cn_topic_0000001473452837.xml](zh-cn_topic_0000001473452837.xml),用于分布式业务,设置播放界面信息。
# OHOS::AVSession::AVSession
## 概述
会话对象,支持配置会话属性,并可主动更新播放状态和会话元数据。
## 汇总
### Public 类型
| 名称 | 描述 |
| -------- | -------- |
| {&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473692273.xml#xref1866899108182348,link:zh-cn_topic_0000001473692273.xml#ac1c9f46a84c35e7cca9966a48d4cbd96a283e24b9b0054e34c8035bd11b61addf](#ac1c9f46a84c35e7cca9966a48d4cbd96a283e24b9b0054e34c8035bd11b61addf)&nbsp;=&nbsp;-1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473692273.xml#xref324891332182348,link:zh-cn_topic_0000001473692273.xml#ac1c9f46a84c35e7cca9966a48d4cbd96a10f702f1a7483e621c98c7b8ff4108f6](#ac1c9f46a84c35e7cca9966a48d4cbd96a10f702f1a7483e621c98c7b8ff4108f6)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473692273.xml#xref521456086182348,link:zh-cn_topic_0000001473692273.xml#ac1c9f46a84c35e7cca9966a48d4cbd96ab28acf8f76ffe654b5820e9db3f0e9bb](#ac1c9f46a84c35e7cca9966a48d4cbd96ab28acf8f76ffe654b5820e9db3f0e9bb)&nbsp;=&nbsp;1&nbsp;} | 会话类型的枚举。&nbsp; |
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [GetSessionId](#getsessionid)&nbsp;()=0 | 获取会话的标识。&nbsp; |
| [GetAVMetaData](#getavmetadata)&nbsp;([AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)&nbsp;&amp;meta)=0 | 获取会话元数据。&nbsp; |
| [SetAVMetaData](#setavmetadata)&nbsp;(const&nbsp;[AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)&nbsp;&amp;meta)=0 | 设置会话元数据。&nbsp; |
| [GetAVPlaybackState](#getavplaybackstate)&nbsp;([AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)&nbsp;&amp;state)=0 | 获取音视频的播放状态。&nbsp; |
| [SetAVPlaybackState](#setavplaybackstate)&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; |
| [SetLaunchAbility](#setlaunchability)&nbsp;(const&nbsp;AbilityRuntime::WantAgent::WantAgent&nbsp;&amp;ability)=0 | 设置一个WantAgent用于启动会话的Ability。&nbsp; |
| [GetController](#getcontroller)&nbsp;()=0 | 获取会话控制器。&nbsp; |
| [RegisterCallback](#registercallback)&nbsp;(const&nbsp;std::shared_ptr&lt;&nbsp;[AVSessionCallback](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_callback.md)&nbsp;&gt;&nbsp;&amp;callback)=0 | 注册会话回调。&nbsp; |
| [Activate](#activate)&nbsp;()=0 | 激活会话。&nbsp; |
| [Deactivate](#deactivate)&nbsp;()=0 | 去激活会话。&nbsp; |
| [IsActive](#isactive)&nbsp;()=0 | 获取会话是否被激活。&nbsp; |
| [Destroy](#destroy)&nbsp;()=0 | 销毁会话。&nbsp; |
| [AddSupportCommand](#addsupportcommand)&nbsp;(const&nbsp;int32_t&nbsp;cmd)=0 | 添加支持的控制命令。&nbsp; |
| [DeleteSupportCommand](#deletesupportcommand)&nbsp;(const&nbsp;int32_t&nbsp;cmd)=0 | 删除支持的控制命令。&nbsp; |
## 成员枚举类型说明
### anonymous enum
```
anonymous enum
```
**描述:**
会话类型的枚举。
| 枚举值 | 描述 |
| -------- | -------- |
| SESSION_TYPE_INVALID&nbsp; | 无效会话 |
| SESSION_TYPE_AUDIO&nbsp; | 音频会话 |
| SESSION_TYPE_VIDEO&nbsp; | 视频会话 |
## 成员函数说明
### 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**&nbsp; |
**返回:**
成功返回**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**&nbsp; |
**返回:**
成功返回**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)对象。&nbsp; |
**返回:**
成功返回**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)对象。&nbsp; |
**返回:**
成功返回**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)对象。&nbsp; |
**返回:**
成功返回**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)对象。&nbsp; |
**返回:**
成功返回**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)对象。&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetAVPlaybackState](#getavplaybackstate)
### SetLaunchAbility()
```
virtual int32_t OHOS::AVSession::AVSession::SetLaunchAbility (const AbilityRuntime::WantAgent::WantAgent & ability)
```
**描述:**
设置一个WantAgent用于启动会话的Ability。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| ability | 具体的应用对应的能力,类型为**AbilityRuntime::WantAgent::WantAgent**&nbsp; |
**返回:**
成功返回**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)&nbsp;()=0 | AVSession多媒体播放的抽象的回调方法。&nbsp; |
| [OnPause](#onpause)&nbsp;()=0 | AVSession多媒体播放暂停的抽象的回调方法。&nbsp; |
| [OnStop](#onstop)&nbsp;()=0 | AVSession多媒体播放停止的抽象的回调方法。&nbsp; |
| [OnPlayNext](#onplaynext)&nbsp;()=0 | AVSession播放下一首多媒体的抽象的回调方法。&nbsp; |
| [OnPlayPrevious](#onplayprevious)&nbsp;()=0 | AVSession播放上一首多媒体的抽象的回调方法。&nbsp; |
| [OnFastForward](#onfastforward)&nbsp;()=0 | AVSession快进播放多媒体的抽象的回调方法。&nbsp; |
| [OnRewind](#onrewind)&nbsp;()=0 | AVSession多媒体快退的抽象的回调方法。&nbsp; |
| [OnSeek](#onseek)&nbsp;(int64_t&nbsp;time)=0 | AVSession多媒体跳播操作的抽象的回调方法。&nbsp; |
| [OnSetSpeed](#onsetspeed)&nbsp;(double&nbsp;speed)=0 | AVSession设置多媒体倍速播放操作的抽象的回调方法。&nbsp; |
| [OnSetLoopMode](#onsetloopmode)&nbsp;(int32_t&nbsp;loopMode)=0 | AVSession设置多媒体循环播放模式的抽象的回调方法。&nbsp; |
| [OnToggleFavorite](#ontogglefavorite)&nbsp;(const&nbsp;std::string&nbsp;&amp;mediald)=0 | AVSession设置多媒体切换收藏操作的抽象的回调方法。&nbsp; |
| [OnMediaKeyEvent](#onmediakeyevent)&nbsp;(const&nbsp;MMI::KeyEvent&nbsp;&amp;keyEvent)=0 | AVSession多媒体按键事件处理的抽象的回调方法。&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; |
| [~AVSessionCallback](#avsessioncallback)&nbsp;()=default | AVSessionCallback的默认的析构函数。&nbsp; |
## 构造及析构函数说明
### ~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**&nbsp; |
### OnOutputDeviceChange()
```
virtual void OHOS::AVSession::AVSessionCallback::OnOutputDeviceChange (const OutputDeviceInfo & outputDeviceInfo)
```
**描述:**
注册会话输出设备变更监听。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| outputDeviceInfo | 输出设备信息&nbsp;[OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md)。&nbsp; |
### 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。&nbsp; |
### OnSetLoopMode()
```
virtual void OHOS::AVSession::AVSessionCallback::OnSetLoopMode (int32_t loopMode)
```
**描述:**
AVSession设置多媒体循环播放模式的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| loopMode | 多媒体循环播放模式,&nbsp;范围在&nbsp;[AVPlaybackState#LOOP_MODE_SEQUENCE](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md#a12c2de6b9e2d86a6d2fe5bec88f90abfa85feb6afb637e762bc97d938f74c5f08)到[AVPlaybackState#LOOP_MODE_SHUFFLE](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md#a12c2de6b9e2d86a6d2fe5bec88f90abfaeaa9c517ca402e56c594c6b17d566203)之间。&nbsp; |
### OnSetSpeed()
```
virtual void OHOS::AVSession::AVSessionCallback::OnSetSpeed (double speed)
```
**描述:**
AVSession设置多媒体倍速播放操作的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| speed | 多媒体播放的倍速值。&nbsp; |
### OnStop()
```
virtual void OHOS::AVSession::AVSessionCallback::OnStop ()
```
**描述:**
AVSession多媒体播放停止的抽象的回调方法。
### OnToggleFavorite()
```
virtual void OHOS::AVSession::AVSessionCallback::OnToggleFavorite (const std::string & mediald)
```
**描述:**
AVSession设置多媒体切换收藏操作的抽象的回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mediald | 多媒体ID号标识。&nbsp; |
# OHOS::AVSession::AVSessionManager
## 概述
实现会话管理器对外接口功能的类的实现。
**Since:**
9
**Version:**
1.0
## 汇总
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [CreateSession](#createsession)&nbsp;(const&nbsp;std::string&nbsp;&amp;tag,&nbsp;int32_t&nbsp;type,&nbsp;const&nbsp;AppExecFwk::ElementName&nbsp;&amp;elementName)=0 | 创建AVSession会话的接口方法。&nbsp; |
| [GetAllSessionDescriptors](#getallsessiondescriptors)&nbsp;(std::vector&lt;&nbsp;[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp;&gt;&nbsp;&amp;descriptors)=0 | 获取AVSession全部的会话描述的接口方法。&nbsp; |
| [GetActivatedSessionDescriptors](#getactivatedsessiondescriptors)&nbsp;(std::vector&lt;&nbsp;[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp;&gt;&nbsp;&amp;activatedSessions)=0 | 获取AVSession全部处于活动状态的会话描述的接口方法。&nbsp; |
| [GetSessionDescriptorsBySessionId](#getsessiondescriptorsbysessionid)&nbsp;(const&nbsp;std::string&nbsp;&amp;sessionId,&nbsp;[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp;&amp;descriptor)=0 | 通过会话ID获得会话描述的方法。&nbsp; |
| [CreateController](#createcontroller)&nbsp;(const&nbsp;std::string&nbsp;&amp;sessionId,&nbsp;std::shared_ptr&lt;&nbsp;[AVSessionController](o_h_o_s_1_1_a_v_session_1_1_a_v_session_controller.md)&nbsp;&gt;&nbsp;&amp;controller)=0 | 创建AVSession会话控制器的接口方法。&nbsp; |
| [RegisterSessionListener](#registersessionlistener)&nbsp;(const&nbsp;std::shared_ptr&lt;&nbsp;[SessionListener](_o_h_o_s_1_1_a_v_session_1_1_session_listener.md)&nbsp;&gt;&nbsp;&amp;listener)=0 | 注册AVSession会话监听器的接口方法。&nbsp; |
| [RegisterServiceDeathCallback](#registerservicedeathcallback)&nbsp;(const&nbsp;[DeathCallback](avsession__info_8h.md#deathcallback)&nbsp;&amp;callback)=0 | 注册AVSession服务器的死亡回调的接口方法。&nbsp; |
| [UnregisterServiceDeathCallback](#unregisterservicedeathcallback)&nbsp;()=0 | 注销AVSession服务器的死亡回调的接口方法。&nbsp; |
| [SendSystemAVKeyEvent](#sendsystemavkeyevent)&nbsp;(const&nbsp;MMI::KeyEvent&nbsp;&amp;keyEvent)=0 | 发送系统按键事件的接口方法。&nbsp; |
| [SendSystemControlCommand](#sendsystemcontrolcommand)&nbsp;(const&nbsp;[AVControlCommand](_o_h_o_s_1_1_a_v_session_1_1_a_v_control_command.md)&nbsp;&amp;command)=0 | 发送系统控制命令的接口方法。&nbsp; |
| [CastAudio](#castaudio)&nbsp;(const&nbsp;[SessionToken](_o_h_o_s_1_1_a_v_session_1_1_session_token.md)&nbsp;&amp;token,&nbsp;const&nbsp;std::vector&lt;&nbsp;AudioStandard::AudioDeviceDescriptor&nbsp;&gt;&nbsp;&amp;descriptors)=0 | 将媒体会话投射到远程设备或投射回本地设备。&nbsp; |
| [CastAudioForAll](#castaudioforall)&nbsp;(const&nbsp;std::vector&lt;&nbsp;AudioStandard::AudioDeviceDescriptor&nbsp;&gt;&nbsp;&amp;descriptors)=0 | 将此设备的所有媒体会话投播到远程设备。&nbsp; |
### 静态 Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [GetInstance](#getinstance)&nbsp;() | 获取会话管理器实例。&nbsp; |
## 成员函数说明
### CastAudio()
```
virtual int32_t OHOS::AVSession::AVSessionManager::CastAudio (const SessionToken & token, const std::vector< AudioStandard::AudioDeviceDescriptor > & descriptors )
```
**描述:**
将媒体会话投射到远程设备或投射回本地设备。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| token | 需要投播的会话令牌。&nbsp; |
| descriptors | 指定要转换的音频设备。&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### CastAudioForAll()
```
virtual int32_t OHOS::AVSession::AVSessionManager::CastAudioForAll (const std::vector< AudioStandard::AudioDeviceDescriptor > & descriptors)
```
**描述:**
将此设备的所有媒体会话投播到远程设备。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| descriptors | 指定要转换的音频设备。&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### CreateController()
```
virtual int32_t OHOS::AVSession::AVSessionManager::CreateController (const std::string & sessionId, std::shared_ptr< AVSessionController > & controller )
```
**描述:**
创建AVSession会话控制器的接口方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| sessionId | AVSession的会话ID。&nbsp; |
| controller | 会话控制器实例,类型为[AVSessionController](o_h_o_s_1_1_a_v_session_1_1_a_v_session_controller.md)&nbsp; |
**返回:**
返回成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### CreateSession()
```
virtual std::shared_ptr<AVSession> OHOS::AVSession::AVSessionManager::CreateSession (const std::string & tag, int32_t type, const AppExecFwk::ElementName & elementName )
```
**描述:**
创建AVSession会话的接口方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| tag | AVSession的会话标签,不可为空。&nbsp; |
| type | AVSession的会话类型,&nbsp;入参为[AVSession#SESSION_TYPE_AUDIO](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#ac1c9f46a84c35e7cca9966a48d4cbd96a10f702f1a7483e621c98c7b8ff4108f6),[AVSession#SESSION_TYPE_VIDEO](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#ac1c9f46a84c35e7cca9966a48d4cbd96ab28acf8f76ffe654b5820e9db3f0e9bb)。&nbsp; |
| elementName | AVSession的会话名称**AppExecFwk::ElementName**&nbsp; |
**返回:**
返回已创建的会话对象的智能指针。
### GetActivatedSessionDescriptors()
```
virtual int32_t OHOS::AVSession::AVSessionManager::GetActivatedSessionDescriptors (std::vector< AVSessionDescriptor > & activatedSessions)
```
**描述:**
获取AVSession全部处于活动状态的会话描述的接口方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| activatedSessions | 处于活动状态的会话描述,类型为[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### GetAllSessionDescriptors()
```
virtual int32_t OHOS::AVSession::AVSessionManager::GetAllSessionDescriptors (std::vector< AVSessionDescriptor > & descriptors)
```
**描述:**
获取AVSession全部的会话描述的接口方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| descriptors | AVSession的会话描述,类型为[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### GetInstance()
```
static AVSessionManager& OHOS::AVSession::AVSessionManager::GetInstance ()
```
**描述:**
获取会话管理器实例。
**返回:**
返回会话管理器实例。
### GetSessionDescriptorsBySessionId()
```
virtual int32_t OHOS::AVSession::AVSessionManager::GetSessionDescriptorsBySessionId (const std::string & sessionId, AVSessionDescriptor & descriptor )
```
**描述:**
通过会话ID获得会话描述的方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| sessionId | AVSession的会话标签。&nbsp; |
| descriptor | AVSession的会话描述,类型为[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### RegisterServiceDeathCallback()
```
virtual int32_t OHOS::AVSession::AVSessionManager::RegisterServiceDeathCallback (const DeathCallback & callback)
```
**描述:**
注册AVSession服务器的死亡回调的接口方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| callback | 死亡回调的方法,类型为**DeathCallback**&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[UnregisterServiceDeathCallback](#unregisterservicedeathcallback)
### RegisterSessionListener()
```
virtual int32_t OHOS::AVSession::AVSessionManager::RegisterSessionListener (const std::shared_ptr< SessionListener > & listener)
```
**描述:**
注册AVSession会话监听器的接口方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| listener | 会话监听器的智能指针,类型为[SessionListener](_o_h_o_s_1_1_a_v_session_1_1_session_listener.md)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### SendSystemAVKeyEvent()
```
virtual int32_t OHOS::AVSession::AVSessionManager::SendSystemAVKeyEvent (const MMI::KeyEvent & keyEvent)
```
**描述:**
发送系统按键事件的接口方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| keyEvent | 按键事件码,类型为**MMI::KeyEvent**&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### SendSystemControlCommand()
```
virtual int32_t OHOS::AVSession::AVSessionManager::SendSystemControlCommand (const AVControlCommand & command)
```
**描述:**
发送系统控制命令的接口方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| command | 系统控制命令[AVControlCommand](_o_h_o_s_1_1_a_v_session_1_1_a_v_control_command.md)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### UnregisterServiceDeathCallback()
```
virtual int32_t OHOS::AVSession::AVSessionManager::UnregisterServiceDeathCallback ()
```
**描述:**
注销AVSession服务器的死亡回调的接口方法。
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[RegisterServiceDeathCallback](#registerservicedeathcallback)
# OHOS::AVSession::AVSessionPixelMap
## 概述
读取、设置图片及图片信息。
## 汇总
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Marshalling](#marshalling)&nbsp;(Parcel&nbsp;&amp;data)&nbsp;const&nbsp;override | 实现图片及图片信息的序列化。&nbsp; |
| [GetPixelData](#getpixeldata)&nbsp;()&nbsp;const | 获取图片数据。&nbsp; |
| [SetPixelData](#setpixeldata)&nbsp;(const&nbsp;std::vector&lt;&nbsp;uint8_t&nbsp;&gt;&nbsp;&amp;data) | 设置图片数据。&nbsp; |
| [GetImageInfo](#getimageinfo)&nbsp;()&nbsp;const | 获取图片信息。&nbsp; |
| [SetImageInfo](#setimageinfo)&nbsp;(const&nbsp;std::vector&lt;&nbsp;uint8_t&nbsp;&gt;&nbsp;&amp;imageInfo) | 设置图片信息。&nbsp; |
### 静态 Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [Unmarshalling](#unmarshalling)&nbsp;(Parcel&nbsp;&amp;data) | 实现图片及图片信息的反序列化。&nbsp; |
## 成员函数说明
### GetImageInfo()
```
std::vector<uint8_t> OHOS::AVSession::AVSessionPixelMap::GetImageInfo () const
```
**描述:**
获取图片信息。
**返回:**
返回图片信息。
**参见:**
[SetImageInfo](#setimageinfo)
### GetPixelData()
```
std::vector<uint8_t> OHOS::AVSession::AVSessionPixelMap::GetPixelData () const
```
**描述:**
获取图片数据。
**返回:**
返回图片数据。
**参见:**
[SetPixelData](#setpixeldata)
### Marshalling()
```
bool OHOS::AVSession::AVSessionPixelMap::Marshalling (Parcel & data) const
```
**描述:**
实现图片及图片信息的序列化。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 保存序列化值的对象**Parcel**&nbsp; |
**返回:**
如果序列化成功,则返回true;失败则返回false。
**参见:**
[Unmarshalling](#unmarshalling)
### SetImageInfo()
```
void OHOS::AVSession::AVSessionPixelMap::SetImageInfo (const std::vector< uint8_t > & imageInfo)
```
**描述:**
设置图片信息。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| imageInfo | 图片信息。&nbsp; |
**参见:**
[GetImageInfo](#getimageinfo)
### SetPixelData()
```
void OHOS::AVSession::AVSessionPixelMap::SetPixelData (const std::vector< uint8_t > & data)
```
**描述:**
设置图片数据。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 图片数据。&nbsp; |
**参见:**
[GetPixelData](#getpixeldata)
### Unmarshalling()
```
static AVSessionPixelMap* OHOS::AVSession::AVSessionPixelMap::Unmarshalling (Parcel & data)
```
**描述:**
实现图片及图片信息的反序列化。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 保存反序列化值的对象**Parcel**&nbsp; |
**返回:**
如果反序列化成功,则返回true;失败则返回false。
**参见:**
[Marshalling](#marshalling)
# OHOS::AVSession::OutputDeviceInfo
## 概述
描述分布式设备的相关信息。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 成员变量
| 名称 | 描述 |
| -------- | -------- |
| [isRemote_](avsession.md#isremote)&nbsp;{} | bool |
| [deviceIds_](avsession.md#deviceids) | std::vector&lt;&nbsp;std::string&nbsp;&gt; |
| [deviceNames_](avsession.md#devicenames) | std::vector&lt;&nbsp;std::string&nbsp;&gt; |
# OHOS::AVSession::SessionListener
## 概述
定义与AVSession相关监听器的类的实现。
**Since:**
9
**Version:**
1.0
## 汇总
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [OnSessionCreate](#onsessioncreate)&nbsp;(const&nbsp;[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp;&amp;descriptor)=0 | 创建AVSession会话的抽象的接口回调方法。&nbsp; |
| [OnSessionRelease](#onsessionrelease)&nbsp;(const&nbsp;[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp;&amp;descriptor)=0 | 释放AVSession会话的抽象的接口回调方法。&nbsp; |
| [OnTopSessionChange](#ontopsessionchange)&nbsp;(const&nbsp;[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp;&amp;descriptor)=0 | AVSession的TOP会话发生变化的抽象的接口回调方法。&nbsp; |
| [~SessionListener](#sessionlistener)&nbsp;()=default | SessionListener的默认的析构函数。&nbsp; |
## 构造及析构函数说明
### ~SessionListener()
```
virtual OHOS::AVSession::SessionListener::~SessionListener ()
```
**描述:**
SessionListener的默认的析构函数。
## 成员函数说明
### OnSessionCreate()
```
virtual void OHOS::AVSession::SessionListener::OnSessionCreate (const AVSessionDescriptor & descriptor)
```
**描述:**
创建AVSession会话的抽象的接口回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| descriptor | AVSession的会话描述对象,类型为[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp; |
**参见:**
[OnSessionRelease](#onsessionrelease)
### OnSessionRelease()
```
virtual void OHOS::AVSession::SessionListener::OnSessionRelease (const AVSessionDescriptor & descriptor)
```
**描述:**
释放AVSession会话的抽象的接口回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| descriptor | AVSession的会话描述对象,类型为[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp; |
**参见:**
[OnSessionCreate](#onsessioncreate)
### OnTopSessionChange()
```
virtual void OHOS::AVSession::SessionListener::OnTopSessionChange (const AVSessionDescriptor & descriptor)
```
**描述:**
AVSession的TOP会话发生变化的抽象的接口回调方法。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| descriptor | AVSession的会话描述对象,类型为[AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md)&nbsp; |
# OHOS::AVSession::SessionToken
## 概述
会话令牌的信息。
**Since:**
9
**Version:**
1.0
## 汇总
### 成员变量
| 名称 | 描述 |
| -------- | -------- |
| [sessionId](#sessionid) | std::string<br/>会话id&nbsp; |
| [pid](#pid) | pid_t<br/>会话的进程id&nbsp; |
| [uid](#uid) | uid_t<br/>用户id&nbsp; |
## 结构体成员变量说明
### pid
```
pid_t OHOS::AVSession::SessionToken::pid
```
**描述:**
会话的进程id
### sessionId
```
std::string OHOS::AVSession::SessionToken::sessionId
```
**描述:**
会话id
### uid
```
uid_t OHOS::AVSession::SessionToken::uid
```
**描述:**
用户id
# VideoDecoder
## 概述
VideoDecoder模块提供用于视频解码功能的函数。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_videodecoder.h](native__avcodec__videodecoder_8h.md) | 声明用于视频解码的Native&nbsp;API。&nbsp; |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoDecoder_CreateByMime](#ohvideodecodercreatebymime)&nbsp;(const&nbsp;char&nbsp;\*mime) | OH_AVCodec&nbsp;\*<br/>通过mime类型创建一个视频解码器实例,大多数情况下推荐使用该接口。&nbsp; |
| [OH_VideoDecoder_CreateByName](#ohvideodecodercreatebyname)&nbsp;(const&nbsp;char&nbsp;\*name) | OH_AVCodec&nbsp;\*<br/>通过视频解码器名称创建一个视频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。&nbsp; |
| [OH_VideoDecoder_Destroy](#ohvideodecoderdestroy)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空解码器内部资源,并销毁解码器实例。&nbsp; |
| [OH_VideoDecoder_SetCallback](#ohvideodecodersetcallback)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)&nbsp;callback,&nbsp;void&nbsp;\*userData) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>设置异步回调函数,使得你的应用能够响应视频解码器产生的事件,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoDecoder_SetSurface](#ohvideodecodersetsurface)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OHNativeWindow&nbsp;\*window) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>指定输出Surface,以提供视频解码输出,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoDecoder_Configure](#ohvideodecoderconfigure)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>配置视频解码器,典型地,需要配置被解码视频轨道的描述信息,这些信息能够从容器中提取出来,&nbsp;该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoDecoder_Prepare](#ohvideodecoderprepare)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>准备解码器内部资源,调用该接口前必须先调用Configure接口。&nbsp; |
| [OH_VideoDecoder_Start](#ohvideodecoderstart)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>启动解码器,该接口必须在已经Prepare成功后调用。&nbsp;在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。&nbsp; |
| [OH_VideoDecoder_Stop](#ohvideodecoderstop)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过&nbsp;Codec-Specific-Data,则需要重新输入。&nbsp; |
| [OH_VideoDecoder_Flush](#ohvideodecoderflush)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将&nbsp;失效,确保不要再访问这些索引对应的Buffers。&nbsp; |
| [OH_VideoDecoder_Reset](#ohvideodecoderreset)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。&nbsp; |
| [OH_VideoDecoder_GetOutputDescription](#ohvideodecodergetoutputdescription)&nbsp;(OH_AVCodec&nbsp;\*codec) | OH_AVFormat&nbsp;\*<br/>获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期&nbsp;将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。&nbsp; |
| [OH_VideoDecoder_SetParameter](#ohvideodecodersetparameter)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。&nbsp; |
| [OH_VideoDecoder_PushInputData](#ohvideodecoderpushinputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)&nbsp;attr) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将填充好数据的输入Buffer提交给视频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)回调会报告可用的输入&nbsp;Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)&nbsp;回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入&nbsp;Codec-Specific-Data,用以初始化解码器的解码过程,例如H264格式的PPS/SPS数据。&nbsp; |
| [OH_VideoDecoder_RenderOutputData](#ohvideodecoderrenderoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给解码器,并通知解码器完成将该Buffer内包含的解码后的数据在输出Surface上渲染。&nbsp;如果先前未配置输出Surface,调用该接口仅仅将指定索引对应的输出Buffer交还给解码器。&nbsp; |
| [OH_VideoDecoder_FreeOutputData](#ohvideodecoderfreeoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给解码器。&nbsp; |
## 函数说明
### OH_VideoDecoder_Configure()
```
OH_AVErrCode OH_VideoDecoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置视频解码器,典型地,需要配置被解码视频轨道的描述信息,这些信息能够从容器中提取出来, 该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| format | 指向OH_AVFormat的指针,用以给出待解码视频轨道的描述信息&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_CreateByMime()
```
OH_AVCodec* OH_VideoDecoder_CreateByMime (const char * mime)
```
**描述:**
通过mime类型创建一个视频解码器实例,大多数情况下推荐使用该接口。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mime | mime类型描述字符串,参考[OH_AVCODEC_MIMETYPE_VIDEO_AVC](_codec_base.md#ohavcodecmimetypevideoavc) |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_VideoDecoder_CreateByName()
```
OH_AVCodec* OH_VideoDecoder_CreateByName (const char * name)
```
**描述:**
通过视频解码器名称创建一个视频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| name | 视频解码器名称&nbsp; |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_VideoDecoder_Destroy()
```
OH_AVErrCode OH_VideoDecoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空解码器内部资源,并销毁解码器实例。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_Flush()
```
OH_AVErrCode OH_VideoDecoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_FreeOutputData()
```
OH_AVErrCode OH_VideoDecoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给解码器。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| index | 输出Buffer对应的索引值&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_GetOutputDescription()
```
OH_AVFormat* OH_VideoDecoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期 将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
返回AVFormat实例的指针
### OH_VideoDecoder_Prepare()
```
OH_AVErrCode OH_VideoDecoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备解码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_PushInputData()
```
OH_AVErrCode OH_VideoDecoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
```
**描述:**
将填充好数据的输入Buffer提交给视频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)回调会报告可用的输入 Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata) 回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入 Codec-Specific-Data,用以初始化解码器的解码过程,例如H264格式的PPS/SPS数据。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| index | 输入Buffer对应的索引值&nbsp; |
| attr | 描述该Buffer内所包含数据的信息&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_RenderOutputData()
```
OH_AVErrCode OH_VideoDecoder_RenderOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给解码器,并通知解码器完成将该Buffer内包含的解码后的数据在输出Surface上渲染。 如果先前未配置输出Surface,调用该接口仅仅将指定索引对应的输出Buffer交还给解码器。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| index | 输出Buffer对应的索引值&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_Reset()
```
OH_AVErrCode OH_VideoDecoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_SetCallback()
```
OH_AVErrCode OH_VideoDecoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
```
**描述:**
设置异步回调函数,使得你的应用能够响应视频解码器产生的事件,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_SetParameter()
```
OH_AVErrCode OH_VideoDecoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| format | 指向OH_AVFormat实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_SetSurface()
```
OH_AVErrCode OH_VideoDecoder_SetSurface (OH_AVCodec * codec, OHNativeWindow * window )
```
**描述:**
指定输出Surface,以提供视频解码输出,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| window | 指向一个OHNativeWindow实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_Start()
```
OH_AVErrCode OH_VideoDecoder_Start (OH_AVCodec * codec)
```
**描述:**
启动解码器,该接口必须在已经Prepare成功后调用。 在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoDecoder_Stop()
```
OH_AVErrCode OH_VideoDecoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过 Codec-Specific-Data,则需要重新输入。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
# VideoEncoder
## 概述
VideoEncoder模块提供用于视频编码功能的函数和枚举。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avcodec_videoencoder.h](native__avcodec__videoencoder_8h.md) | 声明用于视频编码的Native&nbsp;API。&nbsp; |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncodeBitrateMode](#ohvideoencodebitratemode) | typedef&nbsp;enum&nbsp;[OH_VideoEncodeBitrateMode](#ohvideoencodebitratemode)<br/>视频编码的比特率模式。&nbsp; |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncodeBitrateMode](#ohvideoencodebitratemode)&nbsp;{&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473332525.xml#xref742950777182348,link:zh-cn_topic_0000001473332525.xml#ggae5aed6bb1e318f7fc489a7cb859578e1adb1ecf549b5c6f145b2aff320909c70e](#ggae5aed6bb1e318f7fc489a7cb859578e1adb1ecf549b5c6f145b2aff320909c70e)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473332525.xml#xref925239518182348,link:zh-cn_topic_0000001473332525.xml#ggae5aed6bb1e318f7fc489a7cb859578e1a5cd8a75942875437b0216e7e61693596](#ggae5aed6bb1e318f7fc489a7cb859578e1a5cd8a75942875437b0216e7e61693596)&nbsp;=&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001473332525.xml#xref1027861602182348,link:zh-cn_topic_0000001473332525.xml#ggae5aed6bb1e318f7fc489a7cb859578e1a3714c38a79124f71d2ec3fa8f9c03bc4](#ggae5aed6bb1e318f7fc489a7cb859578e1a3714c38a79124f71d2ec3fa8f9c03bc4)&nbsp;=&nbsp;2&nbsp;} | 视频编码的比特率模式。&nbsp; |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncoder_CreateByMime](#ohvideoencodercreatebymime)&nbsp;(const&nbsp;char&nbsp;\*mime) | OH_AVCodec&nbsp;\*<br/>通过mime类型创建一个视频编码器实例,大多数情况下推荐使用该接口。&nbsp; |
| [OH_VideoEncoder_CreateByName](#ohvideoencodercreatebyname)&nbsp;(const&nbsp;char&nbsp;\*name) | OH_AVCodec&nbsp;\*<br/>通过视频编码器名称创建一个视频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。&nbsp; |
| [OH_VideoEncoder_Destroy](#ohvideoencoderdestroy)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空编码器内部资源,并销毁编码器实例。&nbsp; |
| [OH_VideoEncoder_SetCallback](#ohvideoencodersetcallback)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)&nbsp;callback,&nbsp;void&nbsp;\*userData) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>设置异步回调函数,使得你的应用能够响应视频编码器产生的事件,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoEncoder_Configure](#ohvideoencoderconfigure)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>配置视频编码器,典型地,需要配置被编码视频轨道的描述信息,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoEncoder_Prepare](#ohvideoencoderprepare)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>准备编码器内部资源,调用该接口前必须先调用Configure接口。&nbsp; |
| [OH_VideoEncoder_Start](#ohvideoencoderstart)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>启动编码器,该接口必须在已经Prepare成功后调用。&nbsp;在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。&nbsp; |
| [OH_VideoEncoder_Stop](#ohvideoencoderstop)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>停止编码器。在停止后可通过Start重新进入Started状态。&nbsp; |
| [OH_VideoEncoder_Flush](#ohvideoencoderflush)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将&nbsp;失效,确保不要再访问这些索引对应的Buffers。&nbsp; |
| [OH_VideoEncoder_Reset](#ohvideoencoderreset)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。&nbsp; |
| [OH_VideoEncoder_GetOutputDescription](#ohvideoencodergetoutputdescription)&nbsp;(OH_AVCodec&nbsp;\*codec) | OH_AVFormat&nbsp;\*<br/>获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期&nbsp;将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。&nbsp; |
| [OH_VideoEncoder_SetParameter](#ohvideoencodersetparameter)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。&nbsp; |
| [OH_VideoEncoder_GetSurface](#ohvideoencodergetsurface)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OHNativeWindow&nbsp;\*\*window) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>从视频编码器获取输入Surface,&nbsp;该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoEncoder_FreeOutputData](#ohvideoencoderfreeoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给编码器。&nbsp; |
| [OH_VideoEncoder_NotifyEndOfStream](#ohvideoencodernotifyendofstream)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>通知视频编码器输入码流已结束。surface模式推荐使用该接口通知编码器码流结束。&nbsp; |
## 类型定义说明
### OH_VideoEncodeBitrateMode
```
typedef enum OH_VideoEncodeBitrateModeOH_VideoEncodeBitrateMode
```
**描述:**
视频编码的比特率模式。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
## 枚举类型说明
### OH_VideoEncodeBitrateMode
```
enum OH_VideoEncodeBitrateMode
```
**描述:**
视频编码的比特率模式。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
| 枚举值 | 描述 |
| -------- | -------- |
| CBR&nbsp; | 恒定比特率模式 |
| VBR&nbsp; | 可变比特率模式 |
| CQ&nbsp; | 恒定质量模式 |
## 函数说明
### OH_VideoEncoder_Configure()
```
OH_AVErrCode OH_VideoEncoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
配置视频编码器,典型地,需要配置被编码视频轨道的描述信息,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| format | 指向OH_AVFormat的指针,用以给出待编码视频轨道的描述信息&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_CreateByMime()
```
OH_AVCodec* OH_VideoEncoder_CreateByMime (const char * mime)
```
**描述:**
通过mime类型创建一个视频编码器实例,大多数情况下推荐使用该接口。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mime | mime类型描述字符串,参考[OH_AVCODEC_MIMETYPE_VIDEO_AVC](_codec_base.md#ohavcodecmimetypevideoavc) |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_VideoEncoder_CreateByName()
```
OH_AVCodec* OH_VideoEncoder_CreateByName (const char * name)
```
**描述:**
通过视频编码器名称创建一个视频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| name | 视频编码器名称&nbsp; |
**返回:**
返回一个指向OH_AVCodec实例的指针
### OH_VideoEncoder_Destroy()
```
OH_AVErrCode OH_VideoEncoder_Destroy (OH_AVCodec * codec)
```
**描述:**
清空编码器内部资源,并销毁编码器实例。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_Flush()
```
OH_AVErrCode OH_VideoEncoder_Flush (OH_AVCodec * codec)
```
**描述:**
清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将 失效,确保不要再访问这些索引对应的Buffers。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_FreeOutputData()
```
OH_AVErrCode OH_VideoEncoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
```
**描述:**
将处理结束的输出Buffer交还给编码器。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| index | 输出Buffer对应的索引值&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_GetOutputDescription()
```
OH_AVFormat* OH_VideoEncoder_GetOutputDescription (OH_AVCodec * codec)
```
**描述:**
获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期 将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
返回AVFormat实例的指针
### OH_VideoEncoder_GetSurface()
```
OH_AVErrCode OH_VideoEncoder_GetSurface (OH_AVCodec * codec, OHNativeWindow ** window )
```
**描述:**
从视频编码器获取输入Surface, 该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| window | 指向一个OHNativeWindow实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_NotifyEndOfStream()
```
OH_AVErrCode OH_VideoEncoder_NotifyEndOfStream (OH_AVCodec * codec)
```
**描述:**
通知视频编码器输入码流已结束。surface模式推荐使用该接口通知编码器码流结束。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_Prepare()
```
OH_AVErrCode OH_VideoEncoder_Prepare (OH_AVCodec * codec)
```
**描述:**
准备编码器内部资源,调用该接口前必须先调用Configure接口。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_Reset()
```
OH_AVErrCode OH_VideoEncoder_Reset (OH_AVCodec * codec)
```
**描述:**
重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_SetCallback()
```
OH_AVErrCode OH_VideoEncoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
```
**描述:**
设置异步回调函数,使得你的应用能够响应视频编码器产生的事件,该接口被调用必须是在Prepare被调用前。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| callback | 一个包含所有回调函数的集合体,参考[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) |
| userData | 用户特定数据&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_SetParameter()
```
OH_AVErrCode OH_VideoEncoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
```
**描述:**
向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
| format | OH_AVFormat句柄指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_Start()
```
OH_AVErrCode OH_VideoEncoder_Start (OH_AVCodec * codec)
```
**描述:**
启动编码器,该接口必须在已经Prepare成功后调用。 在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
### OH_VideoEncoder_Stop()
```
OH_AVErrCode OH_VideoEncoder_Stop (OH_AVCodec * codec)
```
**描述:**
停止编码器。在停止后可通过Start重新进入Started状态。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| codec | 指向OH_AVCodec实例的指针&nbsp; |
**返回:**
执行成功返回AV_ERR_OK
执行失败返回具体错误码,参考[OH_AVErrCode](_core.md#ohaverrcode)
# av_session.h
## 概述
会话的设置、获取等声明。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::AVSession](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md) | class<br/>会话对象,支持配置会话属性,并可主动更新播放状态和会话元数据。&nbsp; |
# avcontrol_command.h
## 概述
音视频控制指令的设置、获取、拷贝等声明。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::AVControlCommand](_o_h_o_s_1_1_a_v_session_1_1_a_v_control_command.md) | class<br/>用于描述音视频播控命令工具类,播控命令的封装对象,支持设置和获取控制命令。&nbsp; |
# avmeta_data.h
## 概述
会话元数据设置、获取、拷贝等接口声明。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md) | class<br/>会话元数据类,提供获取metadata进程间传递的序列化和反序列话及数据拷贝的接口方法。&nbsp; |
# avplayback_state.h
## 概述
音视频播放状态声明。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md) | class<br/>音视频播放状态类,提供获取和设置播放界面的信息。&nbsp; |
| [OHOS::AVSession::AVPlaybackState::Position](_1_a_v_session_1_1_a_v_playback_state_1_1_position.md) | struct<br/>播放位置的相关信息。&nbsp; |
# Avsession
## 概述
音视频媒体会话,提供系统内媒体的统一控制能力。
功能包括媒体会话,媒体会话管理,媒体会话控制。
@syscap SystemCapability.Multimedia.AVSession.Core
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [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错误码。 |
| [avsession_info.h](avsession__info_8h.md) | 定义了与avsession相关的监听器以及回调功能的实现。 |
| [avsession_manager.h](avsession__manager_8h.md) | 定义了会话管理器对外接口的功能的实现。 |
| [avsession_pixel_map.h](avsession__pixel__map_8h.md) | 读取、设置图片及图片信息。 |
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md) | struct<br/>描述分布式设备的相关信息。 |
| [OHOS::AVSession::AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md) | struct<br/>会话的相关描述信息。 |
| [OHOS::AVSession::AVSessionBasicInfo](o_h_o_s_1_1_a_v_session_1_1_a_v_session_basic_info.md) | struct<br/>会话基础信息描述。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::AVSessionDescriptor::WriteToParcel](#writetoparcel)&nbsp;(Parcel&nbsp;&amp;out)&nbsp;const | bool<br/>将会话相关描述信息写进包里。 |
| [OHOS::AVSession::AVSessionDescriptor::ReadFromParcel](#readfromparcel)&nbsp;(Parcel&nbsp;&amp;in) | bool<br/>对会话相关描述信息进行解包。 |
### 变量
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::OutputDeviceInfo::isRemote_](#isremote)&nbsp;{} | bool<br/>是否连接 |
| [OHOS::AVSession::OutputDeviceInfo::deviceIds_](#deviceids) | std::vector&lt;&nbsp;std::string&nbsp;&gt;<br/>分布式设备的id集合 |
| [OHOS::AVSession::OutputDeviceInfo::deviceNames_](#devicenames) | std::vector&lt;&nbsp;std::string&nbsp;&gt;<br/>分布式设备的名称集合 |
| [OHOS::AVSession::AVSessionDescriptor::sessionId_](#sessionid) | std::string<br/>会话的id |
| [OHOS::AVSession::AVSessionDescriptor::sessionType_](#sessiontype)&nbsp;{} | int32_t<br/>会话的类型 |
| [OHOS::AVSession::AVSessionDescriptor::sessionTag_](#sessiontag) | std::string<br/>会话的自定义名称 |
| [OHOS::AVSession::AVSessionDescriptor::elementName_](#elementname) | AppExecFwk::ElementName<br/>会话所属应用的信息包含bundleName,abilityName等 |
| [OHOS::AVSession::AVSessionDescriptor::pid_](#pid)&nbsp;{} | pid_t<br/>进程id |
| [OHOS::AVSession::AVSessionDescriptor::uid_](#uid)&nbsp;{} | pid_t<br/>用户id |
| [OHOS::AVSession::AVSessionDescriptor::isActive_](#isactive)&nbsp;{} | bool<br/>会话是否为激活状态 |
| [OHOS::AVSession::AVSessionDescriptor::isTopSession_](#istopsession)&nbsp;{} | bool<br/>会话是否是最新的会话 |
| [OHOS::AVSession::AVSessionDescriptor::isThirdPartyApp_](#isthirdpartyapp)&nbsp;{} | bool<br/>是否是第三方应用 |
| [OHOS::AVSession::AVSessionDescriptor::outputDeviceInfo_](#outputdeviceinfo) | [OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md)<br/>分布式设备相关信息 |
| [OHOS::AVSession::AVSessionBasicInfo::deviceName_](#devicename)&nbsp;{} | std::string<br/>设备名称 |
| [OHOS::AVSession::AVSessionBasicInfo::networkId_](#networkid)&nbsp;{} | std::string<br/>设备id |
| [OHOS::AVSession::AVSessionBasicInfo::vendorId_](#vendorid)&nbsp;{} | std::string<br/>供应商id |
| [OHOS::AVSession::AVSessionBasicInfo::deviceType_](#devicetype)&nbsp;{} | std::string<br/>设备类型 |
| [OHOS::AVSession::AVSessionBasicInfo::systemVersion_](#systemversion)&nbsp;{} | std::string<br/>系统版本 |
| [OHOS::AVSession::AVSessionBasicInfo::sessionVersion_](#sessionversion)&nbsp;{} | int32_t<br/>会话版本 |
| [OHOS::AVSession::AVSessionBasicInfo::reserve_](#reserve)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt;<br/>备注信息 |
| [OHOS::AVSession::AVSessionBasicInfo::feature_](#feature)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt;<br/>特征信息 |
| [OHOS::AVSession::AVSessionBasicInfo::metaDataCap_](#metadatacap)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt;<br/>会话元数据 |
| [OHOS::AVSession::AVSessionBasicInfo::playBackStateCap_](#playbackstatecap)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt;<br/>支持播放状态数组 |
| [OHOS::AVSession::AVSessionBasicInfo::controlCommandCap_](#controlcommandcap)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt;<br/>系统控制命令 |
| [OHOS::AVSession::AVSessionBasicInfo::extendCapability_](#extendcapability)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt;<br/>扩展能力 |
| [OHOS::AVSession::AVSessionBasicInfo::systemTime_](#systemtime)&nbsp;{} | int32_t<br/>系统时间 |
| [OHOS::AVSession::AVSessionBasicInfo::extend_](#extend)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt;<br/>扩展信息 |
## 函数说明
### ReadFromParcel()
```
bool OHOS::AVSession::AVSessionDescriptor::ReadFromParcel (Parcel & in)
```
**描述:**
对会话相关描述信息进行解包。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| in | 读出的会话相关描述信息对象**Parcel**。 |
**返回:**
成功返回true;失败则返回false。
**参见:**
[WriteToParcel](#writetoparcel)
### WriteToParcel()
```
bool OHOS::AVSession::AVSessionDescriptor::WriteToParcel (Parcel & out) const
```
**描述:**
将会话相关描述信息写进包里。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| out | 写入的会话相关描述信息对象**Parcel**。 |
**返回:**
成功返回true;失败则返回false。
**参见:**
[ReadFromParcel](#readfromparcel)
## 变量说明
### controlCommandCap_
```
std::vector<int32_t> OHOS::AVSession::AVSessionBasicInfo::controlCommandCap_ {}
```
**描述:**
系统控制命令
### deviceIds_
```
std::vector<std::string> OHOS::AVSession::OutputDeviceInfo::deviceIds_
```
**描述:**
分布式设备的id集合
### deviceName_
```
std::string OHOS::AVSession::AVSessionBasicInfo::deviceName_ {}
```
**描述:**
设备名称
### deviceNames_
```
std::vector<std::string> OHOS::AVSession::OutputDeviceInfo::deviceNames_
```
**描述:**
分布式设备的名称集合
### deviceType_
```
std::string OHOS::AVSession::AVSessionBasicInfo::deviceType_ {}
```
**描述:**
设备类型
### elementName_
```
AppExecFwk::ElementName OHOS::AVSession::AVSessionDescriptor::elementName_
```
**描述:**
会话所属应用的信息包含bundleName,abilityName等
### extend_
```
std::vector<int32_t> OHOS::AVSession::AVSessionBasicInfo::extend_ {}
```
**描述:**
扩展信息
### extendCapability_
```
std::vector<int32_t> OHOS::AVSession::AVSessionBasicInfo::extendCapability_ {}
```
**描述:**
扩展能力
### feature_
```
std::vector<int32_t> OHOS::AVSession::AVSessionBasicInfo::feature_ {}
```
**描述:**
特征信息
### isActive_
```
bool OHOS::AVSession::AVSessionDescriptor::isActive_ {}
```
**描述:**
会话是否为激活状态
### isRemote_
```
bool OHOS::AVSession::OutputDeviceInfo::isRemote_ {}
```
**描述:**
是否连接
### isThirdPartyApp_
```
bool OHOS::AVSession::AVSessionDescriptor::isThirdPartyApp_ {}
```
**描述:**
是否是第三方应用
### isTopSession_
```
bool OHOS::AVSession::AVSessionDescriptor::isTopSession_ {}
```
**描述:**
会话是否是最新的会话
### metaDataCap_
```
std::vector<int32_t> OHOS::AVSession::AVSessionBasicInfo::metaDataCap_ {}
```
**描述:**
会话元数据
### networkId_
```
std::string OHOS::AVSession::AVSessionBasicInfo::networkId_ {}
```
**描述:**
设备id
### outputDeviceInfo_
```
OutputDeviceInfo OHOS::AVSession::AVSessionDescriptor::outputDeviceInfo_
```
**描述:**
分布式设备相关信息
### pid_
```
pid_t OHOS::AVSession::AVSessionDescriptor::pid_ {}
```
**描述:**
进程id
### playBackStateCap_
```
std::vector<int32_t> OHOS::AVSession::AVSessionBasicInfo::playBackStateCap_ {}
```
**描述:**
支持播放状态数组
### reserve_
```
std::vector<int32_t> OHOS::AVSession::AVSessionBasicInfo::reserve_ {}
```
**描述:**
备注信息
### sessionId_
```
std::string OHOS::AVSession::AVSessionDescriptor::sessionId_
```
**描述:**
会话的id
### sessionTag_
```
std::string OHOS::AVSession::AVSessionDescriptor::sessionTag_
```
**描述:**
会话的自定义名称
### sessionType_
```
int32_t OHOS::AVSession::AVSessionDescriptor::sessionType_ {}
```
**描述:**
会话的类型
### sessionVersion_
```
int32_t OHOS::AVSession::AVSessionBasicInfo::sessionVersion_ {}
```
**描述:**
会话版本
### systemTime_
```
int32_t OHOS::AVSession::AVSessionBasicInfo::systemTime_ {}
```
**描述:**
系统时间
### systemVersion_
```
std::string OHOS::AVSession::AVSessionBasicInfo::systemVersion_ {}
```
**描述:**
系统版本
### uid_
```
pid_t OHOS::AVSession::AVSessionDescriptor::uid_ {}
```
**描述:**
用户id
### vendorId_
```
std::string OHOS::AVSession::AVSessionBasicInfo::vendorId_ {}
```
**描述:**
供应商id
# avsession_controller.h
## 概述
控制器对象的描述,可获取会话的播放状态和会话元数据,远程发送控制命令到会话端也可以通过订阅监听会话段的更新事件。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::AVSessionController](o_h_o_s_1_1_a_v_session_1_1_a_v_session_controller.md) | class<br/>控制器对象,可获取会话的播放状态和会话元数据,远程发送控制命令到会话端也可以通过订阅监听会话段的更新事件。&nbsp; |
# avsession_descriptor.h
## 概述
会话的相关描述信息。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md) | struct<br/>描述分布式设备的相关信息。&nbsp; |
| [OHOS::AVSession::AVSessionDescriptor](o_h_o_s_1_1_a_v_session_1_1_a_v_session_descriptor.md) | struct<br/>会话的相关描述信息。&nbsp; |
| [OHOS::AVSession::AVSessionBasicInfo](o_h_o_s_1_1_a_v_session_1_1_a_v_session_basic_info.md) | struct<br/>会话基础信息描述。&nbsp; |
# avsession_errors.h
## 概述
定义了avsession错误码。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 变量
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::AVSESSION_ERROR](#avsessionerror)&nbsp;=&nbsp;-1 | constexpr&nbsp;int32_t<br/>存在错误&nbsp; |
| [OHOS::AVSession::AVSESSION_SUCCESS](#avsessionsuccess)&nbsp;=&nbsp;0 | constexpr&nbsp;int32_t<br/>操作成功&nbsp; |
| [OHOS::AVSession::AVSESSION_ERROR_BASE](#avsessionerrorbase)&nbsp;=&nbsp;1000 | constexpr&nbsp;int32_t<br/>avsession错误码的基定义&nbsp; |
| [OHOS::AVSession::ERR_NO_MEMORY](#errnomemory)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;1) | constexpr&nbsp;int32_t<br/>无可用内存&nbsp; |
| [OHOS::AVSession::ERR_INVALID_PARAM](#errinvalidparam)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;2) | constexpr&nbsp;int32_t<br/>传递的参数无效&nbsp; |
| [OHOS::AVSession::ERR_SERVICE_NOT_EXIST](#errservicenotexist)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;3) | constexpr&nbsp;int32_t<br/>服务不存在&nbsp; |
| [OHOS::AVSession::ERR_SESSION_LISTENER_EXIST](#errsessionlistenerexist)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;4) | constexpr&nbsp;int32_t<br/>Session监听器已存在&nbsp; |
| [OHOS::AVSession::ERR_MARSHALLING](#errmarshalling)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;5) | constexpr&nbsp;int32_t<br/>数据序列化操作错误&nbsp; |
| [OHOS::AVSession::ERR_UNMARSHALLING](#errunmarshalling)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;6) | constexpr&nbsp;int32_t<br/>数据反序列化操作错误&nbsp; |
| [OHOS::AVSession::ERR_IPC_SEND_REQUEST](#erripcsendrequest)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;7) | constexpr&nbsp;int32_t<br/>IPC发送数据失败&nbsp; |
| [OHOS::AVSession::ERR_SESSION_EXCEED_MAX](#errsessionexceedmax)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;8) | constexpr&nbsp;int32_t<br/>超过允许会话最大数量&nbsp; |
| [OHOS::AVSession::ERR_SESSION_NOT_EXIST](#errsessionnotexist)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;9) | constexpr&nbsp;int32_t<br/>会话不存在&nbsp; |
| [OHOS::AVSession::ERR_COMMAND_NOT_SUPPORT](#errcommandnotsupport)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;10) | constexpr&nbsp;int32_t<br/>会话命令不支持&nbsp; |
| [OHOS::AVSession::ERR_CONTROLLER_NOT_EXIST](#errcontrollernotexist)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;11) | constexpr&nbsp;int32_t<br/>控制器不存在&nbsp; |
| [OHOS::AVSession::ERR_NO_PERMISSION](#errnopermission)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;12) | constexpr&nbsp;int32_t<br/>无权限&nbsp; |
| [OHOS::AVSession::ERR_SESSION_DEACTIVE](#errsessiondeactive)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;13) | constexpr&nbsp;int32_t<br/>会话未激活&nbsp; |
| [OHOS::AVSession::ERR_CONTROLLER_IS_EXIST](#errcontrollerisexist)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;14) | constexpr&nbsp;int32_t<br/>控制器存在&nbsp; |
| [OHOS::AVSession::ERR_START_ABILITY_IS_RUNNING](#errstartabilityisrunning)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;15) | constexpr&nbsp;int32_t<br/>元能力正在运行&nbsp; |
| [OHOS::AVSession::ERR_ABILITY_NOT_AVAILABLE](#errabilitynotavailable)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;16) | constexpr&nbsp;int32_t<br/>元能力启动超失败&nbsp; |
| [OHOS::AVSession::ERR_START_ABILITY_TIMEOUT](#errstartabilitytimeout)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;17) | constexpr&nbsp;int32_t<br/>元能力启动超时&nbsp; |
| [OHOS::AVSession::ERR_COMMAND_SEND_EXCEED_MAX](#errcommandsendexceedmax)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;18) | constexpr&nbsp;int32_t<br/>指令发送次数超过最大值&nbsp; |
| [OHOS::AVSession::ERR_RPC_SEND_REQUEST](#errrpcsendrequest)&nbsp;=&nbsp;-(AVSESSION_ERROR_BASE&nbsp;+&nbsp;19) | constexpr&nbsp;int32_t<br/>RPC发送数据失败&nbsp; |
## 变量说明
### AVSESSION_ERROR
```
constexpr int32_t OHOS::AVSession::AVSESSION_ERROR = -1
```
**描述:**
存在错误
### AVSESSION_ERROR_BASE
```
constexpr int32_t OHOS::AVSession::AVSESSION_ERROR_BASE = 1000
```
**描述:**
avsession错误码的基定义
### AVSESSION_SUCCESS
```
constexpr int32_t OHOS::AVSession::AVSESSION_SUCCESS = 0
```
**描述:**
操作成功
### ERR_ABILITY_NOT_AVAILABLE
```
constexpr int32_t OHOS::AVSession::ERR_ABILITY_NOT_AVAILABLE = -(AVSESSION_ERROR_BASE + 16)
```
**描述:**
元能力启动超失败
### ERR_COMMAND_NOT_SUPPORT
```
constexpr int32_t OHOS::AVSession::ERR_COMMAND_NOT_SUPPORT = -(AVSESSION_ERROR_BASE + 10)
```
**描述:**
会话命令不支持
### ERR_COMMAND_SEND_EXCEED_MAX
```
constexpr int32_t OHOS::AVSession::ERR_COMMAND_SEND_EXCEED_MAX = -(AVSESSION_ERROR_BASE + 18)
```
**描述:**
指令发送次数超过最大值
### ERR_CONTROLLER_IS_EXIST
```
constexpr int32_t OHOS::AVSession::ERR_CONTROLLER_IS_EXIST = -(AVSESSION_ERROR_BASE + 14)
```
**描述:**
控制器存在
### ERR_CONTROLLER_NOT_EXIST
```
constexpr int32_t OHOS::AVSession::ERR_CONTROLLER_NOT_EXIST = -(AVSESSION_ERROR_BASE + 11)
```
**描述:**
控制器不存在
### ERR_INVALID_PARAM
```
constexpr int32_t OHOS::AVSession::ERR_INVALID_PARAM = -(AVSESSION_ERROR_BASE + 2)
```
**描述:**
传递的参数无效
### ERR_IPC_SEND_REQUEST
```
constexpr int32_t OHOS::AVSession::ERR_IPC_SEND_REQUEST = -(AVSESSION_ERROR_BASE + 7)
```
**描述:**
IPC发送数据失败
### ERR_MARSHALLING
```
constexpr int32_t OHOS::AVSession::ERR_MARSHALLING = -(AVSESSION_ERROR_BASE + 5)
```
**描述:**
数据序列化操作错误
### ERR_NO_MEMORY
```
constexpr int32_t OHOS::AVSession::ERR_NO_MEMORY = -(AVSESSION_ERROR_BASE + 1)
```
**描述:**
无可用内存
### ERR_NO_PERMISSION
```
constexpr int32_t OHOS::AVSession::ERR_NO_PERMISSION = -(AVSESSION_ERROR_BASE + 12)
```
**描述:**
无权限
### ERR_RPC_SEND_REQUEST
```
constexpr int32_t OHOS::AVSession::ERR_RPC_SEND_REQUEST = -(AVSESSION_ERROR_BASE + 19)
```
**描述:**
RPC发送数据失败
### ERR_SERVICE_NOT_EXIST
```
constexpr int32_t OHOS::AVSession::ERR_SERVICE_NOT_EXIST = -(AVSESSION_ERROR_BASE + 3)
```
**描述:**
服务不存在
### ERR_SESSION_DEACTIVE
```
constexpr int32_t OHOS::AVSession::ERR_SESSION_DEACTIVE = -(AVSESSION_ERROR_BASE + 13)
```
**描述:**
会话未激活
### ERR_SESSION_EXCEED_MAX
```
constexpr int32_t OHOS::AVSession::ERR_SESSION_EXCEED_MAX = -(AVSESSION_ERROR_BASE + 8)
```
**描述:**
超过允许会话最大数量
### ERR_SESSION_LISTENER_EXIST
```
constexpr int32_t OHOS::AVSession::ERR_SESSION_LISTENER_EXIST = -(AVSESSION_ERROR_BASE + 4)
```
**描述:**
Session监听器已存在
### ERR_SESSION_NOT_EXIST
```
constexpr int32_t OHOS::AVSession::ERR_SESSION_NOT_EXIST = -(AVSESSION_ERROR_BASE + 9)
```
**描述:**
会话不存在
### ERR_START_ABILITY_IS_RUNNING
```
constexpr int32_t OHOS::AVSession::ERR_START_ABILITY_IS_RUNNING = -(AVSESSION_ERROR_BASE + 15)
```
**描述:**
元能力正在运行
### ERR_START_ABILITY_TIMEOUT
```
constexpr int32_t OHOS::AVSession::ERR_START_ABILITY_TIMEOUT = -(AVSESSION_ERROR_BASE + 17)
```
**描述:**
元能力启动超时
### ERR_UNMARSHALLING
```
constexpr int32_t OHOS::AVSession::ERR_UNMARSHALLING = -(AVSESSION_ERROR_BASE + 6)
```
**描述:**
数据反序列化操作错误
# avsession_info.h
## 概述
定义了与avsession相关的监听器以及回调功能的实现。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::SessionListener](_o_h_o_s_1_1_a_v_session_1_1_session_listener.md) | class<br/>定义与AVSession相关监听器的类的实现。&nbsp; |
| [OHOS::AVSession::AVSessionCallback](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_callback.md) | class<br/>定义AVSession回调类的实现&nbsp; |
| [OHOS::AVSession::AVControllerCallback](_h_o_s_1_1_a_v_session_1_1_a_v_controller_callback.md) | class<br/>定义控制器相关回调操作的类的实现。&nbsp; |
| [OHOS::AVSession::SessionToken](_o_h_o_s_1_1_a_v_session_1_1_session_token.md) | struct<br/>会话令牌的信息。&nbsp; |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::DeathCallback](#deathcallback)&nbsp;=&nbsp;std::function&lt;&nbsp;void()&gt; | using |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::SessionDataCategory](#sessiondatacategory)&nbsp;{<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423775882.xml#xref1378898340182348,link:zh-cn_topic_0000001423775882.xml#af4f7fda77f9a1e4036911a6471f66a94a21750f709a53526691ca2eb109fa9a38](#af4f7fda77f9a1e4036911a6471f66a94a21750f709a53526691ca2eb109fa9a38)&nbsp;=&nbsp;-1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423775882.xml#xref1175489743182348,link:zh-cn_topic_0000001423775882.xml#af4f7fda77f9a1e4036911a6471f66a94ad7439aa6d8972182670a565f8761b118](#af4f7fda77f9a1e4036911a6471f66a94ad7439aa6d8972182670a565f8761b118)&nbsp;=&nbsp;0,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423775882.xml#xref27428182182348,link:zh-cn_topic_0000001423775882.xml#af4f7fda77f9a1e4036911a6471f66a94aed15c5d580452ab6a93d770d09973a7f](#af4f7fda77f9a1e4036911a6471f66a94aed15c5d580452ab6a93d770d09973a7f)&nbsp;=&nbsp;1,&nbsp;[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423775882.xml#xref1899079755182348,link:zh-cn_topic_0000001423775882.xml#af4f7fda77f9a1e4036911a6471f66a94a91326fb49a2fed524dc25cf1e3fa47be](#af4f7fda77f9a1e4036911a6471f66a94a91326fb49a2fed524dc25cf1e3fa47be)&nbsp;=&nbsp;2,<br/>[ERROR:Invalid&nbsp;link:zh-cn_topic_0000001423775882.xml#xref1569465139182348,link:zh-cn_topic_0000001423775882.xml#af4f7fda77f9a1e4036911a6471f66a94ac8da34449a638e3051da12298a9946e2](#af4f7fda77f9a1e4036911a6471f66a94ac8da34449a638e3051da12298a9946e2)&nbsp;=&nbsp;3<br/>} | 会话元数据处理标识&nbsp; |
## 类型定义说明
### DeathCallback
```
using OHOS::AVSession::DeathCallback = typedef std::function<void()>
```
**描述:**
AVSession死亡回调
## 枚举类型说明
### SessionDataCategory
```
enum OHOS::AVSession::SessionDataCategory
```
**描述:**
会话元数据处理标识
| 枚举值 | 描述 |
| -------- | -------- |
| SESSION_DATA_CATEGORY_INVALID&nbsp; | 无效类型,内部用于类型是否有效 |
| SESSION_DATA_META&nbsp; | 会话元数据 |
| SESSION_DATA_PLAYBACK_STATE&nbsp; | 会话播放状态 |
| SESSION_DATA_CONTROL_COMMAND&nbsp; | 会话控制命令 |
| SESSION_DATA_CATEGORY_MAX&nbsp; | 会话数据类型的数量 |
# avsession_manager.h
## 概述
定义了会话管理器对外接口的功能的实现。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::AVSessionManager](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_manager.md) | class<br/>实现会话管理器对外接口功能的类的实现。&nbsp; |
# avsession_pixel_map.h
## 概述
读取、设置图片及图片信息。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::AVSessionPixelMap](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_pixel_map.md) | class<br/>读取、设置图片及图片信息。&nbsp; |
### 变量
| 名称 | 描述 |
| -------- | -------- |
| [OHOS::AVSession::DEFAULT_BUFFER_SIZE](#defaultbuffersize)&nbsp;=&nbsp;160&nbsp;\*&nbsp;1024 | constexpr&nbsp;size_t<br/>初始化容器大小为160KB&nbsp; |
## 变量说明
### DEFAULT_BUFFER_SIZE
```
constexpr size_t OHOS::AVSession::DEFAULT_BUFFER_SIZE = 160 * 1024
```
**描述:**
初始化容器大小为160KB
# native_avcodec_audiodecoder.h
## 概述
声明用于音频解码的Native API。
**Since:**
9
**Version:**
1.0
**相关模块:**
[AudioDecoder](_audio_decoder.md)
## 汇总
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AudioDecoder_CreateByMime](_audio_decoder.md#ohaudiodecodercreatebymime)&nbsp;(const&nbsp;char&nbsp;\*mime) | OH_AVCodec&nbsp;\*<br/>通过mime类型创建一个音频解码器实例,大多数情况下推荐使用该接口。&nbsp; |
| [OH_AudioDecoder_CreateByName](_audio_decoder.md#ohaudiodecodercreatebyname)&nbsp;(const&nbsp;char&nbsp;\*name) | OH_AVCodec&nbsp;\*<br/>通过音频解码器名称创建一个音频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。&nbsp; |
| [OH_AudioDecoder_Destroy](_audio_decoder.md#ohaudiodecoderdestroy)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空解码器内部资源,并销毁解码器实例&nbsp; |
| [OH_AudioDecoder_SetCallback](_audio_decoder.md#ohaudiodecodersetcallback)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)&nbsp;callback,&nbsp;void&nbsp;\*userData) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>设置异步回调函数,使得你的应用能够响应音频解码器产生的事件,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_AudioDecoder_Configure](_audio_decoder.md#ohaudiodecoderconfigure)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>配置音频解码器,典型地,需要配置被解码音频轨道的描述信息,这些信息能够从容器中提取出来,&nbsp;该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_AudioDecoder_Prepare](_audio_decoder.md#ohaudiodecoderprepare)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>准备解码器内部资源,调用该接口前必须先调用Configure接口。&nbsp; |
| [OH_AudioDecoder_Start](_audio_decoder.md#ohaudiodecoderstart)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>启动解码器,该接口必须在已经Prepare成功后调用。&nbsp;在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。&nbsp; |
| [OH_AudioDecoder_Stop](_audio_decoder.md#ohaudiodecoderstop)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过&nbsp;Codec-Specific-Data,则需要重新输入。&nbsp; |
| [OH_AudioDecoder_Flush](_audio_decoder.md#ohaudiodecoderflush)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将&nbsp;失效,确保不要再访问这些索引对应的Buffers。&nbsp; |
| [OH_AudioDecoder_Reset](_audio_decoder.md#ohaudiodecoderreset)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。&nbsp; |
| [OH_AudioDecoder_GetOutputDescription](_audio_decoder.md#ohaudiodecodergetoutputdescription)&nbsp;(OH_AVCodec&nbsp;\*codec) | OH_AVFormat&nbsp;\*<br/>获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。&nbsp; |
| [OH_AudioDecoder_SetParameter](_audio_decoder.md#ohaudiodecodersetparameter)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。&nbsp; |
| [OH_AudioDecoder_PushInputData](_audio_decoder.md#ohaudiodecoderpushinputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)&nbsp;attr) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将填充好数据的输入Buffer提交给音频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)回调会报告可用的输入&nbsp;Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)&nbsp;回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入&nbsp;Codec-Specific-Data,用以初始化解码器的解码过程。&nbsp; |
| [OH_AudioDecoder_FreeOutputData](_audio_decoder.md#ohaudiodecoderfreeoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给解码器。&nbsp; |
# native_avcodec_audioencoder.h
## 概述
声明用于音频编码的Native API。
**Since:**
9
**Version:**
1.0
**相关模块:**
[AudioEncoder](_audio_encoder.md)
## 汇总
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AudioEncoder_CreateByMime](_audio_encoder.md#ohaudioencodercreatebymime)&nbsp;(const&nbsp;char&nbsp;\*mime) | OH_AVCodec&nbsp;\*<br/>通过mime类型创建一个音频编码器实例,大多数情况下推荐使用该接口。&nbsp; |
| [OH_AudioEncoder_CreateByName](_audio_encoder.md#ohaudioencodercreatebyname)&nbsp;(const&nbsp;char&nbsp;\*name) | OH_AVCodec&nbsp;\*<br/>通过音频编码器名称创建一个音频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。&nbsp; |
| [OH_AudioEncoder_Destroy](_audio_encoder.md#ohaudioencoderdestroy)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空编码器内部资源,并销毁编码器实例。&nbsp; |
| [OH_AudioEncoder_SetCallback](_audio_encoder.md#ohaudioencodersetcallback)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)&nbsp;callback,&nbsp;void&nbsp;\*userData) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>设置异步回调函数,使得你的应用能够响应音频编码器产生的事件,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_AudioEncoder_Configure](_audio_encoder.md#ohaudioencoderconfigure)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>配置音频编码器,典型地,需要配置被编码音频轨道的描述信息,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_AudioEncoder_Prepare](_audio_encoder.md#ohaudioencoderprepare)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>准备编码器内部资源,调用该接口前必须先调用Configure接口。&nbsp; |
| [OH_AudioEncoder_Start](_audio_encoder.md#ohaudioencoderstart)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>启动编码器,该接口必须在已经Prepare成功后调用。&nbsp;在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。&nbsp; |
| [OH_AudioEncoder_Stop](_audio_encoder.md#ohaudioencoderstop)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>停止编码器。在停止后可通过Start重新进入Started状态。&nbsp; |
| [OH_AudioEncoder_Flush](_audio_encoder.md#ohaudioencoderflush)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将&nbsp;失效,确保不要再访问这些索引对应的Buffers。&nbsp; |
| [OH_AudioEncoder_Reset](_audio_encoder.md#ohaudioencoderreset)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。&nbsp; |
| [OH_AudioEncoder_GetOutputDescription](_audio_encoder.md#ohaudioencodergetoutputdescription)&nbsp;(OH_AVCodec&nbsp;\*codec) | OH_AVFormat&nbsp;\*<br/>获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例需调用者手动释放。&nbsp; |
| [OH_AudioEncoder_SetParameter](_audio_encoder.md#ohaudioencodersetparameter)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。&nbsp; |
| [OH_AudioEncoder_PushInputData](_audio_encoder.md#ohaudioencoderpushinputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)&nbsp;attr) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将填充好数据的输入Buffer提交给音频编码器。[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)回调会报告可用的输入&nbsp;Buffer及对应的索引值。一旦指定索引的Buffer被提交给编码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)&nbsp;回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。&nbsp; |
| [OH_AudioEncoder_FreeOutputData](_audio_encoder.md#ohaudioencoderfreeoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给编码器。&nbsp; |
# native_avcodec_base.h
## 概述
声明运行音视频编解码通用的结构体、字符常量、枚举。
**Since:**
9
**Version:**
1.0
**相关模块:**
[CodecBase](_codec_base.md)
## 汇总
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | struct<br/>定义OH_AVCodec的Buffer描述信息。&nbsp; |
| [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | struct<br/>AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告&nbsp;的信息,以确保AVCodec正常运转。&nbsp; |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| **OHNativeWindow** | typedef&nbsp;struct&nbsp;NativeWindow |
| **OH_AVCodec** | typedef&nbsp;struct&nbsp;OH_AVCodec |
| [OH_AVCodecBufferFlags](_codec_base.md#ohavcodecbufferflags) | typedef&nbsp;enum&nbsp;[OH_AVCodecBufferFlags](_codec_base.md#ohavcodecbufferflags)<br/>枚举OH_AVCodec的Buffer标记的类别。&nbsp; |
| [OH_AVCodecBufferAttr](_codec_base.md#ohavcodecbufferattr) | typedef&nbsp;struct&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)<br/>定义OH_AVCodec的Buffer描述信息。&nbsp; |
| [OH_AVCodecOnError](_codec_base.md#ohavcodeconerror))&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;int32_t&nbsp;errorCode,&nbsp;void&nbsp;\*userData) | typedef&nbsp;void(\*<br/>当OH_AVCodec实例运行发生错误时,该函数指针会被调用以报告具体错误信息。&nbsp; |
| [OH_AVCodecOnStreamChanged](_codec_base.md#ohavcodeconstreamchanged))&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;void&nbsp;\*userData) | typedef&nbsp;void(\*<br/>当输出流发生变化时,该函数指针会被调用以报告新的流描述信息。&nbsp;需要注意的时,OH_AVFormat指针的生命周期仅维持在该函数指针被调用时上有效,禁止在调用结束后继续访问。&nbsp; |
| [OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata))&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;OH_AVMemory&nbsp;\*data,&nbsp;void&nbsp;\*userData) | typedef&nbsp;void(\*<br/>当AVCodec运行过程中需要新的输入数据时,该函数指针会被调用,并携带一块可用的Buffer以供填入新的输入数据。&nbsp; |
| [OH_AVCodecOnNewOutputData](_codec_base.md#ohavcodeconnewoutputdata))&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;OH_AVMemory&nbsp;\*data,&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)&nbsp;\*attr,&nbsp;void&nbsp;\*userData) | typedef&nbsp;void(\*<br/>当AVCodec运行过程中产生了新的输出数据时,该函数指针会被调用,并携带一块包含新输出数据的Buffer,&nbsp;需要注意的是,OH_AVCodecBufferAttr指针的生命周期仅维持在该函数指针被调用时有效,禁止调用结束后继续访问。&nbsp; |
| [OH_AVCodecAsyncCallback](_codec_base.md#ohavcodecasynccallback) | typedef&nbsp;struct&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)<br/>AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OH_AVCodec实例,并处理通过该回调报告&nbsp;的信息,以确保AVCodec正常运转。&nbsp; |
| [OH_MediaType](_codec_base.md#ohmediatype) | typedef&nbsp;enum&nbsp;[OH_MediaType](_codec_base.md#ohmediatype)<br/>媒体类型。&nbsp; |
| [OH_AVCProfile](_codec_base.md#ohavcprofile) | typedef&nbsp;enum&nbsp;[OH_AVCProfile](_codec_base.md#ohavcprofile)<br/>AVC&nbsp;Profile枚举。&nbsp; |
| [OH_AACProfile](_codec_base.md#ohaacprofile) | typedef&nbsp;enum&nbsp;[OH_AACProfile](_codec_base.md#ohaacprofile)<br/>AAC&nbsp;Profile枚举。&nbsp; |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCodecBufferFlags](_codec_base.md#ohavcodecbufferflags)&nbsp;{<br/>**AVCODEC_BUFFER_FLAGS_NONE**&nbsp;=&nbsp;0,&nbsp;[AVCODEC_BUFFER_FLAGS_EOS](_codec_base.md#gga9222f5c24f4bcbfb91a5d552dd777439a7946993493046fb2076a9e4addce0b98)&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;0,&nbsp;[AVCODEC_BUFFER_FLAGS_SYNC_FRAME](_codec_base.md#gga9222f5c24f4bcbfb91a5d552dd777439a4d85a25f4a9557f23e1144f9a137ddea)&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;1,&nbsp;[AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME](_codec_base.md#gga9222f5c24f4bcbfb91a5d552dd777439ac4c8a639feb36efde0d799d43fcfb59b)&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;2,<br/>[AVCODEC_BUFFER_FLAGS_CODEC_DATA](_codec_base.md#gga9222f5c24f4bcbfb91a5d552dd777439aba644475534bc79bfd3d43e1d28ab2f5)&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;3<br/>} | 枚举OH_AVCodec的Buffer标记的类别。&nbsp; |
| [OH_MediaType](_codec_base.md#ohmediatype)&nbsp;{&nbsp;[MEDIA_TYPE_AUD](_codec_base.md#gga28eb13d2f8f932345eeb3417d6e69e19ac0b3147adc27646ac965569adc38692e)&nbsp;=&nbsp;0,&nbsp;[MEDIA_TYPE_VID](_codec_base.md#gga28eb13d2f8f932345eeb3417d6e69e19a0cbb91e5931fb03294c2d3bdbbc62dbd)&nbsp;=&nbsp;1&nbsp;} | 媒体类型。&nbsp; |
| [OH_AVCProfile](_codec_base.md#ohavcprofile)&nbsp;{&nbsp;**AVC_PROFILE_BASELINE**&nbsp;=&nbsp;0,&nbsp;**AVC_PROFILE_HIGH**&nbsp;=&nbsp;4,&nbsp;**AVC_PROFILE_MAIN**&nbsp;=&nbsp;8&nbsp;} | AVC&nbsp;Profile枚举。&nbsp; |
| [OH_AACProfile](_codec_base.md#ohaacprofile)&nbsp;{&nbsp;**AAC_PROFILE_LC**&nbsp;=&nbsp;0&nbsp;} | AAC&nbsp;Profile枚举。&nbsp; |
### 变量
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVCODEC_MIMETYPE_VIDEO_AVC](_codec_base.md#ohavcodecmimetypevideoavc) | const&nbsp;char&nbsp;\*<br/>AVC视频编解码器的MIME类型。&nbsp; |
| [OH_AVCODEC_MIMETYPE_AUDIO_AAC](_codec_base.md#ohavcodecmimetypeaudioaac) | const&nbsp;char&nbsp;\*<br/>AAC音频编解码器的MIME类型。&nbsp; |
| [OH_ED_KEY_TIME_STAMP](_codec_base.md#ohedkeytimestamp) | const&nbsp;char&nbsp;\*<br/>提供统一的surface&nbsp;Buffer附属数据的字符描述符。&nbsp; |
| [OH_ED_KEY_EOS](_codec_base.md#ohedkeyeos) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_TRACK_TYPE](_codec_base.md#ohmdkeytracktype) | const&nbsp;char&nbsp;\*<br/>为媒体播放框架提供统一的字符描述符。&nbsp; |
| [OH_MD_KEY_CODEC_MIME](_codec_base.md#ohmdkeycodecmime) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_DURATION](_codec_base.md#ohmdkeyduration) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_BITRATE](_codec_base.md#ohmdkeybitrate) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_MAX_INPUT_SIZE](_codec_base.md#ohmdkeymaxinputsize) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_WIDTH](_codec_base.md#ohmdkeywidth) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_HEIGHT](_codec_base.md#ohmdkeyheight) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_PIXEL_FORMAT](_codec_base.md#ohmdkeypixelformat) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_AUDIO_SAMPLE_FORMAT](_codec_base.md#ohmdkeyaudiosampleformat) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_FRAME_RATE](_codec_base.md#ohmdkeyframerate) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE](_codec_base.md#ohmdkeyvideoencodebitratemode) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_PROFILE](_codec_base.md#ohmdkeyprofile) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_AUD_CHANNEL_COUNT](_codec_base.md#ohmdkeyaudchannelcount) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_AUD_SAMPLE_RATE](_codec_base.md#ohmdkeyaudsamplerate) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_I_FRAME_INTERVAL](_codec_base.md#ohmdkeyiframeinterval) | const&nbsp;char&nbsp;\* |
| [OH_MD_KEY_ROTATION](_codec_base.md#ohmdkeyrotation) | const&nbsp;char&nbsp;\* |
# native_avcodec_videodecoder.h
## 概述
声明用于视频解码的Native API。
**Since:**
9
**Version:**
1.0
**相关模块:**
[VideoDecoder](_video_decoder.md)
## 汇总
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoDecoder_CreateByMime](_video_decoder.md#ohvideodecodercreatebymime)&nbsp;(const&nbsp;char&nbsp;\*mime) | OH_AVCodec&nbsp;\*<br/>通过mime类型创建一个视频解码器实例,大多数情况下推荐使用该接口。&nbsp; |
| [OH_VideoDecoder_CreateByName](_video_decoder.md#ohvideodecodercreatebyname)&nbsp;(const&nbsp;char&nbsp;\*name) | OH_AVCodec&nbsp;\*<br/>通过视频解码器名称创建一个视频解码器实例,使用这个接口的前提是必须清楚解码器准确的名称。&nbsp; |
| [OH_VideoDecoder_Destroy](_video_decoder.md#ohvideodecoderdestroy)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空解码器内部资源,并销毁解码器实例。&nbsp; |
| [OH_VideoDecoder_SetCallback](_video_decoder.md#ohvideodecodersetcallback)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)&nbsp;callback,&nbsp;void&nbsp;\*userData) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>设置异步回调函数,使得你的应用能够响应视频解码器产生的事件,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoDecoder_SetSurface](_video_decoder.md#ohvideodecodersetsurface)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OHNativeWindow&nbsp;\*window) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>指定输出Surface,以提供视频解码输出,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoDecoder_Configure](_video_decoder.md#ohvideodecoderconfigure)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>配置视频解码器,典型地,需要配置被解码视频轨道的描述信息,这些信息能够从容器中提取出来,&nbsp;该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoDecoder_Prepare](_video_decoder.md#ohvideodecoderprepare)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>准备解码器内部资源,调用该接口前必须先调用Configure接口。&nbsp; |
| [OH_VideoDecoder_Start](_video_decoder.md#ohvideodecoderstart)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>启动解码器,该接口必须在已经Prepare成功后调用。&nbsp;在启动成功后,解码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。&nbsp; |
| [OH_VideoDecoder_Stop](_video_decoder.md#ohvideodecoderstop)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>停止解码器。在停止后可通过Start重新进入Started状态,但需要注意的是,若先前给解码器输入过&nbsp;Codec-Specific-Data,则需要重新输入。&nbsp; |
| [OH_VideoDecoder_Flush](_video_decoder.md#ohvideodecoderflush)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空解码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将&nbsp;失效,确保不要再访问这些索引对应的Buffers。&nbsp; |
| [OH_VideoDecoder_Reset](_video_decoder.md#ohvideodecoderreset)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>重置解码器。如需继续解码工作,需要重新调用Configure接口以配置该解码器实例。&nbsp; |
| [OH_VideoDecoder_GetOutputDescription](_video_decoder.md#ohvideodecodergetoutputdescription)&nbsp;(OH_AVCodec&nbsp;\*codec) | OH_AVFormat&nbsp;\*<br/>获取该解码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期&nbsp;将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。&nbsp; |
| [OH_VideoDecoder_SetParameter](_video_decoder.md#ohvideodecodersetparameter)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>向解码器设置动态参数,注意:该接口仅能在解码器被启动后调用,同时错误的参数设置,可能会导致解码失败。&nbsp; |
| [OH_VideoDecoder_PushInputData](_video_decoder.md#ohvideodecoderpushinputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index,&nbsp;[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)&nbsp;attr) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将填充好数据的输入Buffer提交给视频解码器。[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)回调会报告可用的输入&nbsp;Buffer及对应的索引值。一旦指定索引的Buffer被提交给解码器,直到再一次收到[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)&nbsp;回调报告相同索引的Buffer可用前,该Buffer都不可以再次被访问。另外,对于部分解码器,要求在最开始给解码器输入&nbsp;Codec-Specific-Data,用以初始化解码器的解码过程,例如H264格式的PPS/SPS数据。&nbsp; |
| [OH_VideoDecoder_RenderOutputData](_video_decoder.md#ohvideodecoderrenderoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给解码器,并通知解码器完成将该Buffer内包含的解码后的数据在输出Surface上渲染。&nbsp;如果先前未配置输出Surface,调用该接口仅仅将指定索引对应的输出Buffer交还给解码器。&nbsp; |
| [OH_VideoDecoder_FreeOutputData](_video_decoder.md#ohvideodecoderfreeoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给解码器。&nbsp; |
# native_avcodec_videoencoder.h
## 概述
声明用于视频编码的Native API。
**Since:**
9
**Version:**
1.0
**相关模块:**
[VideoEncoder](_video_encoder.md)
## 汇总
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncodeBitrateMode](_video_encoder.md#ohvideoencodebitratemode) | typedef&nbsp;enum&nbsp;[OH_VideoEncodeBitrateMode](_video_encoder.md#ohvideoencodebitratemode)<br/>视频编码的比特率模式。&nbsp; |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncodeBitrateMode](_video_encoder.md#ohvideoencodebitratemode)&nbsp;{&nbsp;[CBR](_video_encoder.md#ggae5aed6bb1e318f7fc489a7cb859578e1adb1ecf549b5c6f145b2aff320909c70e)&nbsp;=&nbsp;0,&nbsp;[VBR](_video_encoder.md#ggae5aed6bb1e318f7fc489a7cb859578e1a5cd8a75942875437b0216e7e61693596)&nbsp;=&nbsp;1,&nbsp;[CQ](_video_encoder.md#ggae5aed6bb1e318f7fc489a7cb859578e1a3714c38a79124f71d2ec3fa8f9c03bc4)&nbsp;=&nbsp;2&nbsp;} | 视频编码的比特率模式。&nbsp; |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_VideoEncoder_CreateByMime](_video_encoder.md#ohvideoencodercreatebymime)&nbsp;(const&nbsp;char&nbsp;\*mime) | OH_AVCodec&nbsp;\*<br/>通过mime类型创建一个视频编码器实例,大多数情况下推荐使用该接口。&nbsp; |
| [OH_VideoEncoder_CreateByName](_video_encoder.md#ohvideoencodercreatebyname)&nbsp;(const&nbsp;char&nbsp;\*name) | OH_AVCodec&nbsp;\*<br/>通过视频编码器名称创建一个视频编码器实例,使用这个接口的前提是必须清楚编码器准确的名称。&nbsp; |
| [OH_VideoEncoder_Destroy](_video_encoder.md#ohvideoencoderdestroy)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空编码器内部资源,并销毁编码器实例。&nbsp; |
| [OH_VideoEncoder_SetCallback](_video_encoder.md#ohvideoencodersetcallback)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)&nbsp;callback,&nbsp;void&nbsp;\*userData) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>设置异步回调函数,使得你的应用能够响应视频编码器产生的事件,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoEncoder_Configure](_video_encoder.md#ohvideoencoderconfigure)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>配置视频编码器,典型地,需要配置被编码视频轨道的描述信息,该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoEncoder_Prepare](_video_encoder.md#ohvideoencoderprepare)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>准备编码器内部资源,调用该接口前必须先调用Configure接口。&nbsp; |
| [OH_VideoEncoder_Start](_video_encoder.md#ohvideoencoderstart)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>启动编码器,该接口必须在已经Prepare成功后调用。&nbsp;在启动成功后,编码器将开始报告[OH_AVCodecOnNeedInputData](_codec_base.md#ohavcodeconneedinputdata)事件。&nbsp; |
| [OH_VideoEncoder_Stop](_video_encoder.md#ohvideoencoderstop)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>停止编码器。在停止后可通过Start重新进入Started状态。&nbsp; |
| [OH_VideoEncoder_Flush](_video_encoder.md#ohvideoencoderflush)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>清空编码器内部缓存的输入输出数据。在该接口被调用后,所有先前通过异步回调报告的Buffer的索引都将&nbsp;失效,确保不要再访问这些索引对应的Buffers。&nbsp; |
| [OH_VideoEncoder_Reset](_video_encoder.md#ohvideoencoderreset)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>重置编码器。如需继续编码工作,需要重新调用Configure接口以配置该编码器实例。&nbsp; |
| [OH_VideoEncoder_GetOutputDescription](_video_encoder.md#ohvideoencodergetoutputdescription)&nbsp;(OH_AVCodec&nbsp;\*codec) | OH_AVFormat&nbsp;\*<br/>获取该编码器输出数据的描述信息,需要注意的是,返回值所指向的OH_AVFormat实例的生命周期&nbsp;将会再下一次调用该接口时或者该OH_AVCodec实例被销毁时失效。&nbsp; |
| [OH_VideoEncoder_SetParameter](_video_encoder.md#ohvideoencodersetparameter)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OH_AVFormat&nbsp;\*format) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>向编码器设置动态参数,注意:该接口仅能在编码器被启动后调用,同时错误的参数设置,可能会导致编码失败。&nbsp; |
| [OH_VideoEncoder_GetSurface](_video_encoder.md#ohvideoencodergetsurface)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;OHNativeWindow&nbsp;\*\*window) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>从视频编码器获取输入Surface,&nbsp;该接口被调用必须是在Prepare被调用前。&nbsp; |
| [OH_VideoEncoder_FreeOutputData](_video_encoder.md#ohvideoencoderfreeoutputdata)&nbsp;(OH_AVCodec&nbsp;\*codec,&nbsp;uint32_t&nbsp;index) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>将处理结束的输出Buffer交还给编码器。&nbsp; |
| [OH_VideoEncoder_NotifyEndOfStream](_video_encoder.md#ohvideoencodernotifyendofstream)&nbsp;(OH_AVCodec&nbsp;\*codec) | [OH_AVErrCode](_core.md#ohaverrcode)<br/>通知视频编码器输入码流已结束。surface模式推荐使用该接口通知编码器码流结束。&nbsp; |
# native_averrors.h
## 概述
声明了媒体播放框架的错误码。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Core](_core.md)
## 汇总
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](_core.md#ohaverrcode) | typedef&nbsp;enum&nbsp;[OH_AVErrCode](_core.md#ohaverrcode)<br/>音视频错误码。&nbsp; |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](_core.md#ohaverrcode)&nbsp;{<br/>[AV_ERR_OK](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1aeaf39666b93f2c3263e52b6bad3da8d2)&nbsp;=&nbsp;0,&nbsp;[AV_ERR_NO_MEMORY](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1ad4ba07b3fe5ca3df1f48345f7f9f631f)&nbsp;=&nbsp;1,&nbsp;[AV_ERR_OPERATE_NOT_PERMIT](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1a2db9dd1e243f7738320dfa732f041669)&nbsp;=&nbsp;2,&nbsp;[AV_ERR_INVALID_VAL](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1a96d898ca31466839ae39aede4e5266c2)&nbsp;=&nbsp;3,<br/>[AV_ERR_IO](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1a70c6b7d0ba398f625e7b9741284e8d35)&nbsp;=&nbsp;4,&nbsp;[AV_ERR_TIMEOUT](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1ad6ce699f9caf6cbff1b4b50c1b74d8ed)&nbsp;=&nbsp;5,&nbsp;[AV_ERR_UNKNOWN](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1a7a9dc8845fe08a6f04adcf0997bddd85)&nbsp;=&nbsp;6,&nbsp;[AV_ERR_SERVICE_DIED](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1a71e0aa7596904781989f43490a4fad88)&nbsp;=&nbsp;7,<br/>[AV_ERR_INVALID_STATE](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1a369dde180c1423e3d7a4844dcbf94938)&nbsp;=&nbsp;8,&nbsp;[AV_ERR_UNSUPPORT](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1a393021797634f5e26b1fcd16f701330d)&nbsp;=&nbsp;9,&nbsp;[AV_ERR_EXTEND_START](_core.md#gga19325a2ffdf3a9a214794be3960bb3b1a2c08394f90d05e0f08c5fe7b5fa243fd)&nbsp;=&nbsp;100<br/>} | 音视频错误码。&nbsp; |
# native_avformat.h
## 概述
声明了格式相关的函数和枚举。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Core](_core.md)
## 汇总
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| **OH_AVFormat** | typedef&nbsp;struct&nbsp;OH_AVFormat |
| [OH_AVPixelFormat](_core.md#ohavpixelformat) | typedef&nbsp;enum&nbsp;[OH_AVPixelFormat](_core.md#ohavpixelformat)<br/>AVPixel&nbsp;格式的枚举。&nbsp; |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVPixelFormat](_core.md#ohavpixelformat)&nbsp;{<br/>[AV_PIXEL_FORMAT_YUVI420](_core.md#ggab04647d11a5a280f7427f9478ae2890ea961a1167e79625d6e72193f4fbb1add7)&nbsp;=&nbsp;1,&nbsp;[AV_PIXEL_FORMAT_NV12](_core.md#ggab04647d11a5a280f7427f9478ae2890eac65005d3e8437c615d4c4e051dfb4533)&nbsp;=&nbsp;2,&nbsp;[AV_PIXEL_FORMAT_NV21](_core.md#ggab04647d11a5a280f7427f9478ae2890eab324169419f675fc7ab9a786a5588543)&nbsp;=&nbsp;3,&nbsp;[AV_PIXEL_FORMAT_SURFACE_FORMAT](_core.md#ggab04647d11a5a280f7427f9478ae2890eabc2c11f0feacf52e43b323383f486608)&nbsp;=&nbsp;4,<br/>[AV_PIXEL_FORMAT_RGBA](_core.md#ggab04647d11a5a280f7427f9478ae2890ea2c15b220da3b7e9043d41f6e789249f0)&nbsp;=&nbsp;5<br/>} | AVPixel&nbsp;格式的枚举。&nbsp; |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVFormat_Create](_core.md#ohavformatcreate)&nbsp;(void) | struct&nbsp;OH_AVFormat&nbsp;\*<br/>创建一个OH_AVFormat句柄指针,用以读写数据。&nbsp; |
| [OH_AVFormat_Destroy](_core.md#ohavformatdestroy)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format) | void<br/>销毁指定OH_AVFormat句柄资源。&nbsp; |
| [OH_AVFormat_Copy](_core.md#ohavformatcopy)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*to,&nbsp;struct&nbsp;OH_AVFormat&nbsp;\*from) | bool<br/>拷贝OH_AVFormat句柄资源.&nbsp; |
| [OH_AVFormat_SetIntValue](_core.md#ohavformatsetintvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;int32_t&nbsp;value) | bool<br/>向OH_AVFormat写入Int数据.&nbsp; |
| [OH_AVFormat_SetLongValue](_core.md#ohavformatsetlongvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;int64_t&nbsp;value) | bool<br/>向OH_AVFormat写入Long数据。&nbsp; |
| [OH_AVFormat_SetFloatValue](_core.md#ohavformatsetfloatvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;float&nbsp;value) | bool<br/>向OH_AVFormat写入Float数据。&nbsp; |
| [OH_AVFormat_SetDoubleValue](_core.md#ohavformatsetdoublevalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;double&nbsp;value) | bool<br/>向OH_AVFormat写入Double数据。&nbsp; |
| [OH_AVFormat_SetStringValue](_core.md#ohavformatsetstringvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;const&nbsp;char&nbsp;\*value) | bool<br/>向OH_AVFormat写入String数据。&nbsp; |
| [OH_AVFormat_SetBuffer](_core.md#ohavformatsetbuffer)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;const&nbsp;uint8_t&nbsp;\*addr,&nbsp;size_t&nbsp;size) | bool<br/>向OH_AVFormat写入一块指定长度的数据。&nbsp; |
| [OH_AVFormat_GetIntValue](_core.md#ohavformatgetintvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;int32_t&nbsp;\*out) | bool<br/>从OH_AVFormat读取Int数据。&nbsp; |
| [OH_AVFormat_GetLongValue](_core.md#ohavformatgetlongvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;int64_t&nbsp;\*out) | bool<br/>从OH_AVFormat读取Long数据。&nbsp; |
| [OH_AVFormat_GetFloatValue](_core.md#ohavformatgetfloatvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;float&nbsp;\*out) | bool<br/>从OH_AVFormat读取Float数据。&nbsp; |
| [OH_AVFormat_GetDoubleValue](_core.md#ohavformatgetdoublevalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;double&nbsp;\*out) | bool<br/>从OH_AVFormat读取Double数据。&nbsp; |
| [OH_AVFormat_GetStringValue](_core.md#ohavformatgetstringvalue)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;const&nbsp;char&nbsp;\*\*out) | bool<br/>从OH_AVFormat读取Double数据。&nbsp; |
| [OH_AVFormat_GetBuffer](_core.md#ohavformatgetbuffer)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format,&nbsp;const&nbsp;char&nbsp;\*key,&nbsp;uint8_t&nbsp;\*\*addr,&nbsp;size_t&nbsp;\*size) | bool<br/>从OH_AVFormat读取一块指定长度的数据。&nbsp; |
| [OH_AVFormat_DumpInfo](_core.md#ohavformatdumpinfo)&nbsp;(struct&nbsp;OH_AVFormat&nbsp;\*format) | const&nbsp;char&nbsp;\*<br/>以字符串的形式输出OH_AVFormat所包含的信息。&nbsp; |
# native_avmemory.h
## 概述
声明了AVMemory的函数接口。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Core](_core.md)
## 汇总
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| **OH_AVMemory** | typedef&nbsp;struct&nbsp;OH_AVMemory |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVMemory_GetAddr](_core.md#ohavmemorygetaddr)&nbsp;(struct&nbsp;OH_AVMemory&nbsp;\*mem) | uint8_t&nbsp;\*<br/>获取入参的内存虚拟地址。&nbsp; |
| [OH_AVMemory_GetSize](_core.md#ohavmemorygetsize)&nbsp;(struct&nbsp;OH_AVMemory&nbsp;\*mem) | int32_t<br/>获取入参的内存长度。&nbsp; |
# OHOS::AVSession::AVSessionBasicInfo
## 概述
会话基础信息描述。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### 成员变量
| 名称 | 描述 |
| -------- | -------- |
| [deviceName_](avsession.md#devicename)&nbsp;{} | std::string |
| [networkId_](avsession.md#networkid)&nbsp;{} | std::string |
| [vendorId_](avsession.md#vendorid)&nbsp;{} | std::string |
| [deviceType_](avsession.md#devicetype)&nbsp;{} | std::string |
| [systemVersion_](avsession.md#systemversion)&nbsp;{} | std::string |
| [sessionVersion_](avsession.md#sessionversion)&nbsp;{} | int32_t |
| [reserve_](avsession.md#reserve)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt; |
| [feature_](avsession.md#feature)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt; |
| [metaDataCap_](avsession.md#metadatacap)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt; |
| [playBackStateCap_](avsession.md#playbackstatecap)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt; |
| [controlCommandCap_](avsession.md#controlcommandcap)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt; |
| [extendCapability_](avsession.md#extendcapability)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt; |
| [systemTime_](avsession.md#systemtime)&nbsp;{} | int32_t |
| [extend_](avsession.md#extend)&nbsp;{} | std::vector&lt;&nbsp;int32_t&nbsp;&gt; |
# OHOS::AVSession::AVSessionController
## 概述
控制器对象,可获取会话的播放状态和会话元数据,远程发送控制命令到会话端也可以通过订阅监听会话段的更新事件。
## 汇总
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [GetAVPlaybackState](#getavplaybackstate)&nbsp;([AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)&nbsp;&amp;state)=0 | 获取音视频的播放状态。&nbsp; |
| [GetAVMetaData](#getavmetadata)&nbsp;([AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)&nbsp;&amp;data)=0 | 获取会话元数据。&nbsp; |
| [SendAVKeyEvent](#sendavkeyevent)&nbsp;(const&nbsp;MMI::KeyEvent&nbsp;&amp;keyEvent)=0 | 发送系统按键事件。&nbsp; |
| [GetLaunchAbility](#getlaunchability)&nbsp;(AbilityRuntime::WantAgent::WantAgent&nbsp;&amp;ability)=0 | 获取Ability。&nbsp; |
| [GetValidCommands](#getvalidcommands)&nbsp;(std::vector&lt;&nbsp;int32_t&nbsp;&gt;&nbsp;&amp;cmds)=0 | 获取媒体有效的指令。&nbsp; |
| [IsSessionActive](#issessionactive)&nbsp;(bool&nbsp;&amp;isActive)=0 | 获取session的激活状态。&nbsp; |
| [SendControlCommand](#sendcontrolcommand)&nbsp;(const&nbsp;[AVControlCommand](_o_h_o_s_1_1_a_v_session_1_1_a_v_control_command.md)&nbsp;&amp;cmd)=0 | 发送媒体控制指令。&nbsp; |
| [RegisterCallback](#registercallback)&nbsp;(const&nbsp;std::shared_ptr&lt;&nbsp;[AVControllerCallback](_h_o_s_1_1_a_v_session_1_1_a_v_controller_callback.md)&nbsp;&gt;&nbsp;&amp;callback)=0 | 注册回调。&nbsp; |
| [SetMetaFilter](#setmetafilter)&nbsp;(const&nbsp;[AVMetaData::MetaMaskType](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md#metamasktype)&nbsp;&amp;filter)=0 | 设置会话元数据过滤。&nbsp; |
| [SetPlaybackFilter](#setplaybackfilter)&nbsp;(const&nbsp;AVPlaybackState::PlaybackStateMaskType&nbsp;&amp;filter)=0 | 设置音视频的播放状态回调过滤。&nbsp; |
| [Destroy](#destroy)&nbsp;()=0 | 释放控制器。&nbsp; |
| [GetSessionId](#getsessionid)&nbsp;()=0 | 获取sessionId。&nbsp; |
| [GetRealPlaybackPosition](#getrealplaybackposition)&nbsp;()=0 | 获取播放的实时位置,第&nbsp;x&nbsp;ms。&nbsp; |
| [IsDestroy](#isdestroy)&nbsp;()=0 | 是否释放控制器。&nbsp; |
## 成员函数说明
### Destroy()
```
virtual int32_t OHOS::AVSession::AVSessionController::Destroy ()
```
**描述:**
释放控制器。
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### GetAVMetaData()
```
virtual int32_t OHOS::AVSession::AVSessionController::GetAVMetaData (AVMetaData & data)
```
**描述:**
获取会话元数据。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| data | 会话元数据[AVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[AVSession::SetAVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#setavmetadata)
[AVSession::GetAVMetaData](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#getavmetadata)
### GetAVPlaybackState()
```
virtual int32_t OHOS::AVSession::AVSessionController::GetAVPlaybackState (AVPlaybackState & state)
```
**描述:**
获取音视频的播放状态。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| state | 音视频的播放状态[AVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_playback_state.md)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[AVSession::SetAVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#setavplaybackstate)
[AVSession::GetAVPlaybackState](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#getavplaybackstate)
### GetLaunchAbility()
```
virtual int32_t OHOS::AVSession::AVSessionController::GetLaunchAbility (AbilityRuntime::WantAgent::WantAgent & ability)
```
**描述:**
获取Ability。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| ability | 类型为**AbilityRuntime::WantAgent::WantAgent**&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[AVSession::SetLaunchAbility](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#setlaunchability)
### GetRealPlaybackPosition()
```
virtual int64_t OHOS::AVSession::AVSessionController::GetRealPlaybackPosition ()
```
**描述:**
获取播放的实时位置,第 x ms。
**返回:**
返回播放的实时位置,第x ms,经过校正过的时间,单位为ms。
### GetSessionId()
```
virtual std::string OHOS::AVSession::AVSessionController::GetSessionId ()
```
**描述:**
获取sessionId。
**返回:**
返回sessionId。
### GetValidCommands()
```
virtual int32_t OHOS::AVSession::AVSessionController::GetValidCommands (std::vector< int32_t > & cmds)
```
**描述:**
获取媒体有效的指令。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| cmds | 媒体有效的指令列表,范围为**SESSION_CMD_INVALID****SESSION_CMD_MAX**&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[SendControlCommand](#sendcontrolcommand)
[AVSession::AddSupportCommand](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#addsupportcommand)
[AVSession::DeleteSupportCommand](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#deletesupportcommand)
### IsDestroy()
```
virtual bool OHOS::AVSession::AVSessionController::IsDestroy ()
```
**描述:**
是否释放控制器。
**返回:**
true:释放;false:不释放。
### IsSessionActive()
```
virtual int32_t OHOS::AVSession::AVSessionController::IsSessionActive (bool & isActive)
```
**描述:**
获取session的激活状态。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| isActive | session是否激活。&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[AVSession::Activate](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#activate)
[AVSession::Deactivate](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#deactivate)
[AVSession::IsActive](_o_h_o_s_1_1_a_v_session_1_1_a_v_session.md#isactive)
### RegisterCallback()
```
virtual int32_t OHOS::AVSession::AVSessionController::RegisterCallback (const std::shared_ptr< AVControllerCallback > & callback)
```
**描述:**
注册回调。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| callback | 需要注册的回调,类型为[AVControllerCallback](_h_o_s_1_1_a_v_session_1_1_a_v_controller_callback.md)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### SendAVKeyEvent()
```
virtual int32_t OHOS::AVSession::AVSessionController::SendAVKeyEvent (const MMI::KeyEvent & keyEvent)
```
**描述:**
发送系统按键事件。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| keyEvent | 按键事件码,类型为**MMI::KeyEvent**&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[AVSessionManager::SendSystemAVKeyEvent](_o_h_o_s_1_1_a_v_session_1_1_a_v_session_manager.md#sendsystemavkeyevent)
### SendControlCommand()
```
virtual int32_t OHOS::AVSession::AVSessionController::SendControlCommand (const AVControlCommand & cmd)
```
**描述:**
发送媒体控制指令。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| cmd | 媒体控制指令,类型为[AVControlCommand](_o_h_o_s_1_1_a_v_session_1_1_a_v_control_command.md)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
**参见:**
[GetValidCommands](#getvalidcommands)
### SetMetaFilter()
```
virtual int32_t OHOS::AVSession::AVSessionController::SetMetaFilter (const AVMetaData::MetaMaskType & filter)
```
**描述:**
设置会话元数据过滤。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| filter | 会话元数据过滤,类型为[AVMetaData#MetaMaskType](_o_h_o_s_1_1_a_v_session_1_1_a_v_meta_data.md#metamasktype)&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
### SetPlaybackFilter()
```
virtual int32_t OHOS::AVSession::AVSessionController::SetPlaybackFilter (const AVPlaybackState::PlaybackStateMaskType & filter)
```
**描述:**
设置音视频的播放状态回调过滤。
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| filter | 音视频播放状态回调过滤,类型为**AVPlaybackState\#PlaybackStateMaskType**&nbsp; |
**返回:**
成功返回**AVSESSION_SUCCESS**;失败则返回对应错误码。
# OHOS::AVSession::AVSessionDescriptor
## 概述
会话的相关描述信息。
**Since:**
9
**Version:**
1.0
**相关模块:**
[Avsession](avsession.md)
## 汇总
### Public 成员函数
| 名称 | 描述 |
| -------- | -------- |
| [WriteToParcel](avsession.md#writetoparcel)&nbsp;(Parcel&nbsp;&amp;out)&nbsp;const | 将会话相关描述信息写进包里。&nbsp; |
| [ReadFromParcel](avsession.md#readfromparcel)&nbsp;(Parcel&nbsp;&amp;in) | 对会话相关描述信息进行解包。&nbsp; |
### 成员变量
| 名称 | 描述 |
| -------- | -------- |
| [sessionId_](avsession.md#sessionid) | std::string |
| [sessionType_](avsession.md#sessiontype)&nbsp;{} | int32_t |
| [sessionTag_](avsession.md#sessiontag) | std::string |
| [elementName_](avsession.md#elementname) | AppExecFwk::ElementName |
| [pid_](avsession.md#pid)&nbsp;{} | pid_t |
| [uid_](avsession.md#uid)&nbsp;{} | pid_t |
| [isActive_](avsession.md#isactive)&nbsp;{} | bool |
| [isTopSession_](avsession.md#istopsession)&nbsp;{} | bool |
| [isThirdPartyApp_](avsession.md#isthirdpartyapp)&nbsp;{} | bool |
| [outputDeviceInfo_](avsession.md#outputdeviceinfo) | [OutputDeviceInfo](_o_h_o_s_1_1_a_v_session_1_1_output_device_info.md) |
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册