1# OH_AudioRenderer_Callbacks_Struct 2<!--Kit: Audio Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @songshenke--> 5<!--Designer: @caixuejiang; @hao-liangfei; @zhanganxiang--> 6<!--Tester: @Filger--> 7<!--Adviser: @zengyawen--> 8 9## 概述 10 11声明输出音频流的回调函数指针。 12 13为了避免不可预期的行为,在设置音频回调函数时,请确保该结构体的每一个成员变量都被自定义的回调方法或空指针初始化。 14 15可参考[使用OHAudio开发音频播放功能](../../media/audio/using-ohaudio-for-playback.md)。 16 17**起始版本:** 10 18 19**废弃版本:** 20 20 21**替代接口:** 22 23请分别使用以下回调类型替代: 24 25[OH_AudioRenderer_OnWriteDataCallback](capi-native-audiostream-base-h.md#oh_audiorenderer_onwritedatacallback)、 [OH_AudioRenderer_OutputDeviceChangeCallback](capi-native-audiostream-base-h.md#oh_audiorenderer_outputdevicechangecallback)、 [OH_AudioRenderer_OnInterruptCallback](capi-native-audiorenderer-h.md#oh_audiorenderer_oninterruptcallback) 以及 [OH_AudioRenderer_OnErrorCallback](capi-native-audiorenderer-h.md#oh_audiorenderer_onerrorcallback)。 26 27**相关模块:** [OHAudio](capi-ohaudio.md) 28 29**所在头文件:** [native_audiostream_base.h](capi-native-audiostream-base-h.md) 30 31## 汇总 32 33### 成员函数 34 35| 名称 | 描述 | 36| -- | -- | 37| [int32_t (\*OH_AudioRenderer_OnWriteData)(OH_AudioRenderer* renderer, void* userData, void* buffer, int32_t length)](#oh_audiorenderer_onwritedata) | 该函数指针将指向用于写入音频数据的回调函数。 | 38| [int32_t (\*OH_AudioRenderer_OnStreamEvent)(OH_AudioRenderer* renderer, void* userData, OH_AudioStream_Event event)](#oh_audiorenderer_onstreamevent) | 该函数指针将指向用于处理音频播放流事件的回调函数。 | 39| [int32_t (\*OH_AudioRenderer_OnInterruptEvent)(OH_AudioRenderer* renderer, void* userData, OH_AudioInterrupt_ForceType type, OH_AudioInterrupt_Hint hint)](#oh_audiorenderer_oninterruptevent) | 该函数指针将指向用于处理音频播放中断事件的回调函数。 | 40| [int32_t (\*OH_AudioRenderer_OnError)(OH_AudioRenderer* renderer, void* userData, OH_AudioStream_Result error)](#oh_audiorenderer_onerror) | 该函数指针将指向用于处理音频播放错误结果的回调函数。 | 41 42## 成员函数说明 43 44> **说明:** 45> 以下回调接口的返回值没有枚举定义,当前版本实现并不按返回值区分处理,但为保证后续版本可扩展,默认使用0。 46 47### OH_AudioRenderer_OnWriteData() 48 49``` 50int32_t (*OH_AudioRenderer_OnWriteData)(OH_AudioRenderer* renderer, void* userData, void* buffer, int32_t length) 51``` 52 53**描述** 54 55该函数指针将指向用于写入音频数据的回调函数。<br> 回调函数仅用来写入音频数据,请勿在回调函数中调用AudioRenderer相关接口。<br> 回调函数结束后,音频服务会把buffer指针数据放入队列里等待播放,因此请勿在回调外再次更改buffer指向的数据,且务必保证往buffer填满length长度的待播放数据,否则会导致音频服务播放杂音。 56 57**起始版本:** 10 58 59**废弃版本:** 20 60 61**替代接口:** [OH_AudioRenderer_OnWriteDataCallback](capi-native-audiostream-base-h.md#oh_audiorenderer_onwritedatacallback) 62 63**参数:** 64 65| 参数项 | 描述 | 66| -- | -- | 67| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 68| void* userData | 指向应用自定义的数据存储区域。 | 69| void* buffer | 指向播放数据存储区域,用于应用填充播放数据。 | 70| int32_t length | buffer的长度。 | 71 72### OH_AudioRenderer_OnStreamEvent() 73 74``` 75int32_t (*OH_AudioRenderer_OnStreamEvent)(OH_AudioRenderer* renderer, void* userData, OH_AudioStream_Event event) 76``` 77 78**描述** 79 80该函数指针将指向用于处理音频播放流事件的回调函数。 81 82OH_AudioRenderer_OnStreamEvent无触发回调场景,为预留接口。从API 11开始,开发者如果需要监听设备变化,可直接使用[OH_AudioRenderer_OutputDeviceChangeCallback](capi-native-audiostream-base-h.md#oh_audiorenderer_outputdevicechangecallback)替代。 83 84**起始版本:** 10 85 86**废弃版本:** 20 87 88**替代接口:** [OH_AudioRenderer_OutputDeviceChangeCallback](capi-native-audiostream-base-h.md#oh_audiorenderer_outputdevicechangecallback) 89 90**参数:** 91 92| 参数项 | 描述 | 93| -- | -- | 94| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 95| void* userData | 指向应用自定义的数据存储区域。 | 96| [OH_AudioStream_Event](capi-native-audiostream-base-h.md#oh_audiostream_event) event | 音频事件。 | 97 98### OH_AudioRenderer_OnInterruptEvent() 99 100``` 101int32_t (*OH_AudioRenderer_OnInterruptEvent)(OH_AudioRenderer* renderer, void* userData, OH_AudioInterrupt_ForceType type, OH_AudioInterrupt_Hint hint) 102``` 103 104**描述** 105 106该函数指针将指向用于处理音频播放中断事件的回调函数。 107 108**起始版本:** 10 109 110**废弃版本:** 20 111 112**替代接口:** [OH_AudioRenderer_OnInterruptCallback](capi-native-audiorenderer-h.md#oh_audiorenderer_oninterruptcallback) 113 114**参数:** 115 116| 参数项 | 描述 | 117| -- | -- | 118| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 119| void* userData | 指向应用自定义的数据存储区域。 | 120| [OH_AudioInterrupt_ForceType](capi-native-audiostream-base-h.md#oh_audiointerrupt_forcetype) type | 音频中断类型。 | 121| [OH_AudioInterrupt_Hint](capi-native-audiostream-base-h.md#oh_audiointerrupt_hint) hint | 音频中断提示类型。 | 122 123### OH_AudioRenderer_OnError() 124 125``` 126int32_t (*OH_AudioRenderer_OnError)(OH_AudioRenderer* renderer, void* userData, OH_AudioStream_Result error) 127``` 128 129**描述** 130 131该函数指针将指向用于处理音频播放错误结果的回调函数。 132 133**起始版本:** 10 134 135**废弃版本:** 20 136 137**替代接口:** [OH_AudioRenderer_OnErrorCallback](capi-native-audiorenderer-h.md#oh_audiorenderer_onerrorcallback) 138 139**参数:** 140 141| 参数项 | 描述 | 142| -- | -- | 143| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 144| void* userData | 指向应用自定义的数据存储区域。 | 145| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) error | 音频播放错误结果,可能为AUDIOSTREAM_ERROR_INVALID_PARAM、AUDIOSTREAM_ERROR_ILLEGAL_STATE或者AUDIOSTREAM_ERROR_SYSTEM。 | 146 147 148