1# AudioRender 2 3 4## **概述** 5 6AudioRender音频播放接口。 7 8提供音频播放支持的驱动能力,包括音频控制、音频属性、音频场景、音频音量、获取硬件延迟时间、播放音频帧数据(Render frame)等。 9 10**Since:** 11 121.0 13 14**Version:** 15 161.0 17 18**相关模块:** 19 20[Audio](_audio.md) 21 22**参见:** 23 24[AudioControl](_audio_control.md) 25 26[AudioAttribute](_audio_attribute.md) 27 28[AudioScene](_audio_scene.md) 29 30[AudioVolume](_audio_volume.md) 31 32 33## **汇总** 34 35 36### Public 属性 37 38 | 名称 | 描述 | 39| -------- | -------- | 40| control | 音频控制能力接口,详情参考[AudioControl](_audio_control.md)。 | 41| attr | 音频属性能力接口,详情参考[AudioAttribute](_audio_attribute.md)。 | 42| scene | 音频场景能力接口,详情参考[AudioScene](_audio_scene.md)。 | 43| volume | 音频音量能力接口,详情参考[AudioVolume](_audio_volume.md)。 | 44| ([GetLatency](#getlatency))(struct AudioRender \*render, uint32_t \*ms) | 获取音频硬件驱动估计的延迟时间。 | 45| ([RenderFrame](#renderframe))(struct AudioRender \*render, const void \*frame, uint64_t requestBytes, uint64_t \*replyBytes) | 往音频驱动中播放(Render)一帧输出数据(放音,音频下行数据)。 | 46| ([GetRenderPosition](#getrenderposition))(struct AudioRender \*render, uint64_t \*frames, struct AudioTimeStamp \*time) | 获取音频输出帧数的上一次计数。 | 47| ([SetRenderSpeed](#setrenderspeed))(struct AudioRender \*render, float speed) | 设置一个音频的播放速度。 | 48| ([GetRenderSpeed](#getrenderspeed))(struct AudioRender \*render, float \*speed) | 获取一个音频当前的播放速度。 | 49| ([SetChannelMode](#setchannelmode))(struct AudioRender \*render, enum AudioChannelMode mode) | 设置音频播放的通道模式。 | 50| ([GetChannelMode](#getchannelmode))(struct AudioRender \*render, enum AudioChannelMode \*mode) | 获取音频播放当前的通道模式。 | 51| ([RegCallback](#regcallback) )(struct AudioRender \*render, RenderCallback callback, void \*cookie) | 注册音频回调函数,用于放音过程中缓冲区数据写、DrainBuffer完成通知。 | 52| ([DrainBuffer](#drainbuffer))(struct AudioRender \*render, enum AudioDrainNotifyType \*type) | 排空缓冲区中的数据。 | 53 54 55## **类成员变量说明** 56 57 58### DrainBuffer 59 60 61``` 62int32_t(* AudioRender::DrainBuffer) (struct AudioRender *render, enum AudioDrainNotifyType *type) 63``` 64 65**描述:** 66 67排空缓冲区中的数据。 68 69**参数:** 70 71 | 名称 | 描述 | 72| -------- | -------- | 73| render | 输入参数,待操作的音频播放接口对象。 | 74| type | 输入参数,DrainBuffer的操作类型,详情请参考[AudioDrainNotifyType](_audio.md#audiodrainnotifytype)。 | 75 76**返回:** 77 78成功返回值0,失败返回负值。 79 80**参见:** 81 82[RegCallback](#regcallback) 83 84 85### GetChannelMode 86 87 88``` 89int32_t(* AudioRender::GetChannelMode) (struct AudioRender *render, enum AudioChannelMode *mode) 90``` 91 92**描述:** 93 94获取音频播放当前的通道模式。 95 96**参数:** 97 98 | 名称 | 描述 | 99| -------- | -------- | 100| render | 输入参数,待操作的音频播放接口对象。| 101| mode | 输出参数,获取的通道模式保存到mode中。 | 102 103**返回:** 104 105成功返回值0,失败返回负值。 106 107**参见:** 108 109[SetChannelMode](#setchannelmode) 110 111 112### GetLatency 113 114 115``` 116int32_t(* AudioRender::GetLatency) (struct AudioRender *render, uint32_t *ms) 117``` 118 119**描述:** 120 121获取音频硬件驱动估计的延迟时间。 122 123**参数:** 124 125 | 名称 | 描述 | 126| -------- | -------- | 127| render | 输入参数,待操作的音频播放接口对象。 | 128| ms | 输出参数,获取的延迟时间(单位:毫秒)保存到ms中。 | 129 130**返回:** 131 132成功返回值0,失败返回负值。 133 134 135### GetRenderPosition 136 137 138``` 139int32_t(* AudioRender::GetRenderPosition) (struct AudioRender *render, uint64_t *frames, struct AudioTimeStamp *time) 140``` 141 142**描述:** 143 144获取音频输出帧数的上一次计数。 145 146**参数:** 147 148 | 名称 | 描述 | 149| -------- | -------- | 150| render | 输入参数,待操作的音频播放接口对象。 | 151| frames | 输出参数,获取的音频帧计数保存到frames中。 | 152| time | 输出参数,获取的关联时间戳保存到time中。 | 153 154**返回:** 155 156成功返回值0,失败返回负值。 157 158**参见:** 159 160[RenderFrame](#renderframe) 161 162 163### GetRenderSpeed 164 165 166``` 167int32_t(* AudioRender::GetRenderSpeed) (struct AudioRender *render, float *speed) 168``` 169 170**描述:** 171 172获取一个音频当前的播放速度。 173 174**参数:** 175 176 | 名称 | 描述 | 177| -------- | -------- | 178| render | 输入参数,待操作的音频播放接口对象。 | 179| speed | 输出参数,获取的播放速度保存到speed中。 | 180 181**返回:** 182 183成功返回值0,失败返回负值。 184 185**参见:** 186 187[SetRenderSpeed](#setrenderspeed) 188 189 190### RegCallback 191 192 193``` 194int32_t(* AudioRender::RegCallback) (struct AudioRender *render, RenderCallback callback, void *cookie) 195``` 196 197**描述:** 198 199注册音频回调函数,用于放音过程中缓冲区数据写、DrainBuffer完成通知。 200 201**参数:** 202 203 | 名称 | 描述 | 204| -------- | -------- | 205| render | 输入参数,待操作的音频播放接口对象。 | 206| callback | 输入参数,注册的回调函数。 | 207| cookie | 输入参数,回调函数的入参。 | 208 209**返回:** 210 211成功返回值0,失败返回负值。 212 213**参见:** 214 215[RegCallback](#regcallback) 216 217 218### RenderFrame 219 220 221``` 222int32_t(* AudioRender::RenderFrame) (struct AudioRender *render, const void *frame, uint64_t requestBytes, uint64_t *replyBytes) 223``` 224 225**描述:** 226 227向音频驱动中播放(Render)一帧输出数据(放音,音频下行数据)。 228 229**参数:** 230 231 | 名称 | 描述 | 232| -------- | -------- | 233| render | 输入参数,待操作的音频播放接口对象。 | 234| frame | 输入参数,待写入的输出数据的音频frame。 | 235| requestBytes | 输入参数,待写入的输出数据的音频frame大小(字节数)。 | 236| replyBytes | 输出参数,实际写入的音频数据长度(字节数),获取后保存到replyBytes中。 | 237 238**返回:** 239 240成功返回值0,失败返回负值。 241 242 243### SetChannelMode 244 245 246``` 247int32_t(* AudioRender::SetChannelMode) (struct AudioRender *render, enum AudioChannelMode mode) 248``` 249 250**描述:** 251 252设置音频播放的通道模式。 253 254**参数:** 255 256 | 名称 | 描述 | 257| -------- | -------- | 258| render | 输入参数,待操作的音频播放接口对象。 | 259| speed | 输入参数,待设置的通道模式。 | 260 261**返回:** 262 263成功返回值0,失败返回负值。 264 265**参见:** 266 267[GetChannelMode](#getchannelmode) 268 269 270### SetRenderSpeed 271 272 273``` 274int32_t(* AudioRender::SetRenderSpeed) (struct AudioRender *render, float speed) 275``` 276 277**描述:** 278 279设置一个音频的播放速度。 280 281**参数:** 282 283 | 名称 | 描述 | 284| -------- | -------- | 285| render | 输入参数,待操作的音频播放接口对象。 | 286| speed | 输入参数,待设置的播放速度。 | 287 288**返回:** 289 290成功返回值0,失败返回负值。 291 292**参见:** 293 294[GetRenderSpeed](#getrenderspeed) 295