1 /* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef SHARED_AUDIO_RENDERER_WRAPPER_H 17 #define SHARED_AUDIO_RENDERER_WRAPPER_H 18 19 #include "audio_renderer.h" 20 #include "audio_errors.h" 21 #include "audio_renderer_log.h" 22 23 namespace OHOS { 24 namespace AudioStandard { 25 class SharedAudioRendererWrapper : public AudioRenderer { 26 public: SetAudioPrivacyType(AudioPrivacyType privacyType)27 void SetAudioPrivacyType(AudioPrivacyType privacyType) override 28 { 29 sharedAudioRenderer_->SetAudioPrivacyType(privacyType); 30 } 31 GetAudioPrivacyType()32 AudioPrivacyType GetAudioPrivacyType() override 33 { 34 return sharedAudioRenderer_->GetAudioPrivacyType(); 35 } 36 SetParams(const AudioRendererParams params)37 int32_t SetParams(const AudioRendererParams params) override 38 { 39 return sharedAudioRenderer_->SetParams(params); 40 } 41 SetRendererCallback(const std::shared_ptr<AudioRendererCallback> & callback)42 int32_t SetRendererCallback(const std::shared_ptr<AudioRendererCallback> &callback) override 43 { 44 return sharedAudioRenderer_->SetRendererCallback(callback); 45 } 46 GetParams(AudioRendererParams & params)47 int32_t GetParams(AudioRendererParams ¶ms) const override 48 { 49 return sharedAudioRenderer_->GetParams(params); 50 } 51 GetRendererInfo(AudioRendererInfo & rendererInfo)52 int32_t GetRendererInfo(AudioRendererInfo &rendererInfo) const override 53 { 54 return sharedAudioRenderer_->GetRendererInfo(rendererInfo); 55 } 56 GetStreamInfo(AudioStreamInfo & streamInfo)57 int32_t GetStreamInfo(AudioStreamInfo &streamInfo) const override 58 { 59 return sharedAudioRenderer_->GetStreamInfo(streamInfo); 60 } 61 62 bool Start(StateChangeCmdType cmdType = CMD_FROM_CLIENT) override 63 { 64 return sharedAudioRenderer_->Start(cmdType); 65 } 66 Write(uint8_t * buffer,size_t bufferSize)67 int32_t Write(uint8_t *buffer, size_t bufferSize) override 68 { 69 return sharedAudioRenderer_->Write(buffer, bufferSize); 70 } 71 Write(uint8_t * pcmBuffer,size_t pcmBufferSize,uint8_t * metaBuffer,size_t metaBufferSize)72 int32_t Write(uint8_t *pcmBuffer, size_t pcmBufferSize, uint8_t *metaBuffer, size_t metaBufferSize) override 73 { 74 return sharedAudioRenderer_->Write(pcmBuffer, pcmBufferSize, metaBuffer, metaBufferSize); 75 } 76 GetStatus()77 RendererState GetStatus() const override 78 { 79 return sharedAudioRenderer_->GetStatus(); 80 } 81 GetAudioTime(Timestamp & timestamp,Timestamp::Timestampbase base)82 bool GetAudioTime(Timestamp ×tamp, Timestamp::Timestampbase base) const override 83 { 84 return sharedAudioRenderer_->GetAudioTime(timestamp, base); 85 } 86 GetAudioPosition(Timestamp & timestamp,Timestamp::Timestampbase base)87 bool GetAudioPosition(Timestamp ×tamp, Timestamp::Timestampbase base) override 88 { 89 return sharedAudioRenderer_->GetAudioPosition(timestamp, base); 90 } 91 GetLatency(uint64_t & latency)92 int32_t GetLatency(uint64_t &latency) const override 93 { 94 return sharedAudioRenderer_->GetLatency(latency); 95 } 96 Drain()97 bool Drain() const override 98 { 99 return sharedAudioRenderer_->Drain(); 100 } 101 Flush()102 bool Flush() const override 103 { 104 return sharedAudioRenderer_->Flush(); 105 } 106 107 bool PauseTransitent(StateChangeCmdType cmdType = CMD_FROM_CLIENT) override 108 { 109 return sharedAudioRenderer_->PauseTransitent(cmdType); 110 } 111 112 bool Pause(StateChangeCmdType cmdType = CMD_FROM_CLIENT) override 113 { 114 return sharedAudioRenderer_->Pause(cmdType); 115 } 116 Stop()117 bool Stop() override 118 { 119 return sharedAudioRenderer_->Stop(); 120 } 121 Release()122 bool Release() override 123 { 124 return sharedAudioRenderer_->Release(); 125 } 126 GetBufferSize(size_t & bufferSize)127 int32_t GetBufferSize(size_t &bufferSize) const override 128 { 129 return sharedAudioRenderer_->GetBufferSize(bufferSize); 130 } 131 GetAudioStreamId(uint32_t & sessionID)132 int32_t GetAudioStreamId(uint32_t &sessionID) const override 133 { 134 return sharedAudioRenderer_->GetAudioStreamId(sessionID); 135 } 136 GetFrameCount(uint32_t & frameCount)137 int32_t GetFrameCount(uint32_t &frameCount) const override 138 { 139 return sharedAudioRenderer_->GetFrameCount(frameCount); 140 } 141 SetAudioRendererDesc(AudioRendererDesc audioRendererDesc)142 int32_t SetAudioRendererDesc(AudioRendererDesc audioRendererDesc) override 143 { 144 return sharedAudioRenderer_->SetAudioRendererDesc(audioRendererDesc); 145 } 146 SetStreamType(AudioStreamType audioStreamType)147 int32_t SetStreamType(AudioStreamType audioStreamType) override 148 { 149 return sharedAudioRenderer_->SetStreamType(audioStreamType); 150 } 151 SetVolume(float volume)152 int32_t SetVolume(float volume) const override 153 { 154 return sharedAudioRenderer_->SetVolume(volume); 155 } 156 GetVolume()157 float GetVolume() const override 158 { 159 return sharedAudioRenderer_->GetVolume(); 160 } 161 SetLoudnessGain(float loudnessGain)162 int32_t SetLoudnessGain(float loudnessGain) const override 163 { 164 return sharedAudioRenderer_->SetLoudnessGain(loudnessGain); 165 } 166 GetLoudnessGain()167 float GetLoudnessGain() const override 168 { 169 return sharedAudioRenderer_->GetLoudnessGain(); 170 } 171 SetRenderRate(AudioRendererRate renderRate)172 int32_t SetRenderRate(AudioRendererRate renderRate) const override 173 { 174 return sharedAudioRenderer_->SetRenderRate(renderRate); 175 } 176 GetRenderRate()177 AudioRendererRate GetRenderRate() const override 178 { 179 return sharedAudioRenderer_->GetRenderRate(); 180 } 181 SetRendererSamplingRate(uint32_t sampleRate)182 int32_t SetRendererSamplingRate(uint32_t sampleRate) const override 183 { 184 return sharedAudioRenderer_->SetRendererSamplingRate(sampleRate); 185 } 186 GetRendererSamplingRate()187 uint32_t GetRendererSamplingRate() const override 188 { 189 return sharedAudioRenderer_->GetRendererSamplingRate(); 190 } 191 SetRendererPositionCallback(int64_t markPosition,const std::shared_ptr<RendererPositionCallback> & callback)192 int32_t SetRendererPositionCallback(int64_t markPosition, 193 const std::shared_ptr<RendererPositionCallback> &callback) override 194 { 195 return sharedAudioRenderer_->SetRendererPositionCallback(markPosition, callback); 196 } 197 UnsetRendererPositionCallback()198 void UnsetRendererPositionCallback() override 199 { 200 sharedAudioRenderer_->UnsetRendererPositionCallback(); 201 } 202 SetRendererPeriodPositionCallback(int64_t frameNumber,const std::shared_ptr<RendererPeriodPositionCallback> & callback)203 int32_t SetRendererPeriodPositionCallback(int64_t frameNumber, 204 const std::shared_ptr<RendererPeriodPositionCallback> &callback) override 205 { 206 return sharedAudioRenderer_->SetRendererPeriodPositionCallback(frameNumber, callback); 207 } 208 UnsetRendererPeriodPositionCallback()209 void UnsetRendererPeriodPositionCallback() override 210 { 211 sharedAudioRenderer_->UnsetRendererPeriodPositionCallback(); 212 } 213 SetFastStatusChangeCallback(const std::shared_ptr<AudioRendererFastStatusChangeCallback> & callback)214 void SetFastStatusChangeCallback( 215 const std::shared_ptr<AudioRendererFastStatusChangeCallback> &callback) override 216 { 217 return; 218 } 219 SetBufferDuration(uint64_t bufferDuration)220 int32_t SetBufferDuration(uint64_t bufferDuration) const override 221 { 222 return sharedAudioRenderer_->SetBufferDuration(bufferDuration); 223 } 224 SetRenderMode(AudioRenderMode renderMode)225 int32_t SetRenderMode(AudioRenderMode renderMode) override 226 { 227 return sharedAudioRenderer_->SetRenderMode(renderMode); 228 } 229 GetRenderMode()230 AudioRenderMode GetRenderMode() const override 231 { 232 return sharedAudioRenderer_->GetRenderMode(); 233 } 234 SetRendererWriteCallback(const std::shared_ptr<AudioRendererWriteCallback> & callback)235 int32_t SetRendererWriteCallback(const std::shared_ptr<AudioRendererWriteCallback> &callback) override 236 { 237 return sharedAudioRenderer_->SetRendererWriteCallback(callback); 238 } 239 SetRendererFirstFrameWritingCallback(const std::shared_ptr<AudioRendererFirstFrameWritingCallback> & callback)240 int32_t SetRendererFirstFrameWritingCallback( 241 const std::shared_ptr<AudioRendererFirstFrameWritingCallback> &callback) override 242 { 243 return sharedAudioRenderer_->SetRendererFirstFrameWritingCallback(callback); 244 } 245 GetBufferDesc(BufferDesc & bufDesc)246 int32_t GetBufferDesc(BufferDesc &bufDesc) override 247 { 248 return sharedAudioRenderer_->GetBufferDesc(bufDesc); 249 } 250 Enqueue(const BufferDesc & bufDesc)251 int32_t Enqueue(const BufferDesc &bufDesc) override 252 { 253 return sharedAudioRenderer_->Enqueue(bufDesc); 254 } 255 Clear()256 int32_t Clear() const override 257 { 258 return sharedAudioRenderer_->Clear(); 259 } 260 GetBufQueueState(BufferQueueState & bufState)261 int32_t GetBufQueueState(BufferQueueState &bufState) const override 262 { 263 return sharedAudioRenderer_->GetBufQueueState(bufState); 264 } 265 SetInterruptMode(InterruptMode mode)266 void SetInterruptMode(InterruptMode mode) override 267 { 268 sharedAudioRenderer_->SetInterruptMode(mode); 269 } 270 SetParallelPlayFlag(bool parallelPlayFlag)271 int32_t SetParallelPlayFlag(bool parallelPlayFlag) override 272 { 273 return sharedAudioRenderer_->SetParallelPlayFlag(parallelPlayFlag); 274 } 275 SetLowPowerVolume(float volume)276 int32_t SetLowPowerVolume(float volume) const override 277 { 278 return sharedAudioRenderer_->SetLowPowerVolume(volume); 279 } 280 GetLowPowerVolume()281 float GetLowPowerVolume() const override 282 { 283 return sharedAudioRenderer_->GetLowPowerVolume(); 284 } 285 286 // in plan:need remove SetOffloadAllowed(bool isAllowed)287 int32_t SetOffloadAllowed(bool isAllowed) override 288 { 289 return sharedAudioRenderer_->SetOffloadAllowed(isAllowed); 290 } 291 SetOffloadMode(int32_t state,bool isAppBack)292 int32_t SetOffloadMode(int32_t state, bool isAppBack) const override 293 { 294 return sharedAudioRenderer_->SetOffloadMode(state, isAppBack); 295 } 296 UnsetOffloadMode()297 int32_t UnsetOffloadMode() const override 298 { 299 return sharedAudioRenderer_->UnsetOffloadMode(); 300 } 301 GetSingleStreamVolume()302 float GetSingleStreamVolume() const override 303 { 304 return sharedAudioRenderer_->GetSingleStreamVolume(); 305 } 306 GetMinStreamVolume()307 float GetMinStreamVolume() const override 308 { 309 return sharedAudioRenderer_->GetMinStreamVolume(); 310 } 311 GetMaxStreamVolume()312 float GetMaxStreamVolume() const override 313 { 314 return sharedAudioRenderer_->GetMaxStreamVolume(); 315 } 316 GetUnderflowCount()317 uint32_t GetUnderflowCount() const override 318 { 319 return sharedAudioRenderer_->GetUnderflowCount(); 320 } 321 GetCurrentOutputDevices(AudioDeviceDescriptor & deviceInfo)322 int32_t GetCurrentOutputDevices(AudioDeviceDescriptor &deviceInfo) const override 323 { 324 return sharedAudioRenderer_->GetCurrentOutputDevices(deviceInfo); 325 } 326 GetAudioEffectMode()327 AudioEffectMode GetAudioEffectMode() const override 328 { 329 return sharedAudioRenderer_->GetAudioEffectMode(); 330 } 331 GetFramesWritten()332 int64_t GetFramesWritten() const override 333 { 334 return sharedAudioRenderer_->GetFramesWritten(); 335 } 336 SetAudioEffectMode(AudioEffectMode effectMode)337 int32_t SetAudioEffectMode(AudioEffectMode effectMode) const override 338 { 339 return sharedAudioRenderer_->SetAudioEffectMode(effectMode); 340 } 341 SetAudioRendererErrorCallback(std::shared_ptr<AudioRendererErrorCallback> errorCallback)342 void SetAudioRendererErrorCallback(std::shared_ptr<AudioRendererErrorCallback> errorCallback) override 343 { 344 sharedAudioRenderer_->SetAudioRendererErrorCallback(errorCallback); 345 } 346 RegisterOutputDeviceChangeWithInfoCallback(const std::shared_ptr<AudioRendererOutputDeviceChangeCallback> & callback)347 int32_t RegisterOutputDeviceChangeWithInfoCallback( 348 const std::shared_ptr<AudioRendererOutputDeviceChangeCallback> &callback) override 349 { 350 return sharedAudioRenderer_->RegisterOutputDeviceChangeWithInfoCallback(callback); 351 } 352 UnregisterOutputDeviceChangeWithInfoCallback()353 int32_t UnregisterOutputDeviceChangeWithInfoCallback() override 354 { 355 return sharedAudioRenderer_->UnregisterOutputDeviceChangeWithInfoCallback(); 356 } 357 UnregisterOutputDeviceChangeWithInfoCallback(const std::shared_ptr<AudioRendererOutputDeviceChangeCallback> & callback)358 int32_t UnregisterOutputDeviceChangeWithInfoCallback( 359 const std::shared_ptr<AudioRendererOutputDeviceChangeCallback> &callback) override 360 { 361 return sharedAudioRenderer_->UnregisterOutputDeviceChangeWithInfoCallback(callback); 362 } 363 RegisterAudioPolicyServerDiedCb(const int32_t clientPid,const std::shared_ptr<AudioRendererPolicyServiceDiedCallback> & callback)364 int32_t RegisterAudioPolicyServerDiedCb(const int32_t clientPid, 365 const std::shared_ptr<AudioRendererPolicyServiceDiedCallback> &callback) override 366 { 367 return sharedAudioRenderer_->RegisterAudioPolicyServerDiedCb(clientPid, callback); 368 } 369 UnregisterAudioPolicyServerDiedCb(const int32_t clientPid)370 int32_t UnregisterAudioPolicyServerDiedCb(const int32_t clientPid) override 371 { 372 return sharedAudioRenderer_->UnregisterAudioPolicyServerDiedCb(clientPid); 373 } 374 SetChannelBlendMode(ChannelBlendMode blendMode)375 int32_t SetChannelBlendMode(ChannelBlendMode blendMode) override 376 { 377 return sharedAudioRenderer_->SetChannelBlendMode(blendMode); 378 } 379 SetVolumeWithRamp(float volume,int32_t duration)380 int32_t SetVolumeWithRamp(float volume, int32_t duration) override 381 { 382 return sharedAudioRenderer_->SetVolumeWithRamp(volume, duration); 383 } 384 SetPreferredFrameSize(int32_t frameSize)385 void SetPreferredFrameSize(int32_t frameSize) override 386 { 387 sharedAudioRenderer_->SetPreferredFrameSize(frameSize); 388 } 389 SetSpeed(float speed)390 int32_t SetSpeed(float speed) override 391 { 392 return sharedAudioRenderer_->SetSpeed(speed); 393 } 394 GetSpeed()395 float GetSpeed() override 396 { 397 return sharedAudioRenderer_->GetSpeed(); 398 } 399 IsOffloadEnable()400 bool IsOffloadEnable() override 401 { 402 return sharedAudioRenderer_->IsOffloadEnable(); 403 } 404 IsFastRenderer()405 bool IsFastRenderer() override 406 { 407 return sharedAudioRenderer_->IsFastRenderer(); 408 } 409 SetSilentModeAndMixWithOthers(bool on)410 void SetSilentModeAndMixWithOthers(bool on) override 411 { 412 sharedAudioRenderer_->SetSilentModeAndMixWithOthers(on); 413 } 414 GetSilentModeAndMixWithOthers()415 bool GetSilentModeAndMixWithOthers() override 416 { 417 return sharedAudioRenderer_->GetSilentModeAndMixWithOthers(); 418 } 419 EnableVoiceModemCommunicationStartStream(bool enable)420 void EnableVoiceModemCommunicationStartStream(bool enable) override 421 { 422 sharedAudioRenderer_->EnableVoiceModemCommunicationStartStream(enable); 423 } 424 IsNoStreamRenderer()425 bool IsNoStreamRenderer() const override 426 { 427 return sharedAudioRenderer_->IsNoStreamRenderer(); 428 } 429 SetDefaultOutputDevice(DeviceType deviceType)430 int32_t SetDefaultOutputDevice(DeviceType deviceType) override 431 { 432 return sharedAudioRenderer_->SetDefaultOutputDevice(deviceType); 433 } 434 GetFastStatus()435 FastStatus GetFastStatus() override 436 { 437 return FASTSTATUS_NORMAL; 438 } 439 440 bool Mute(StateChangeCmdType cmdType = CMD_FROM_CLIENT) const override 441 { 442 return sharedAudioRenderer_->Mute(cmdType); 443 } 444 445 bool Unmute(StateChangeCmdType cmdType = CMD_FROM_CLIENT) const override 446 { 447 return sharedAudioRenderer_->Unmute(cmdType); 448 } 449 GetAudioTimestampInfo(Timestamp & timestamp,Timestamp::Timestampbase base)450 int32_t GetAudioTimestampInfo(Timestamp ×tamp, Timestamp::Timestampbase base) const override 451 { 452 return sharedAudioRenderer_->GetAudioTimestampInfo(timestamp, base); 453 } 454 SetSourceDuration(int64_t duration)455 void SetSourceDuration(int64_t duration) override 456 { 457 return sharedAudioRenderer_->SetSourceDuration(duration); 458 } 459 StartDataCallback()460 int32_t StartDataCallback() override 461 { 462 return sharedAudioRenderer_->StartDataCallback(); 463 } 464 SetAudioHapticsSyncId(int32_t audioHapticsSyncId)465 void SetAudioHapticsSyncId(int32_t audioHapticsSyncId) override 466 { 467 sharedAudioRenderer_->SetAudioHapticsSyncId(audioHapticsSyncId); 468 } 469 ResetFirstFrameState()470 void ResetFirstFrameState() override 471 { 472 sharedAudioRenderer_->ResetFirstFrameState(); 473 } 474 StopDataCallback()475 int32_t StopDataCallback() override 476 { 477 return sharedAudioRenderer_->StopDataCallback(); 478 } 479 SetInterruptEventCallbackType(InterruptEventCallbackType callbackType)480 void SetInterruptEventCallbackType(InterruptEventCallbackType callbackType) override 481 { 482 return sharedAudioRenderer_->SetInterruptEventCallbackType(callbackType); 483 } 484 SharedAudioRendererWrapper(std::shared_ptr<AudioRenderer> renderer)485 explicit SharedAudioRendererWrapper(std::shared_ptr<AudioRenderer> renderer) : sharedAudioRenderer_(renderer) 486 { 487 } 488 489 ~SharedAudioRendererWrapper() override = default; 490 491 SharedAudioRendererWrapper(const SharedAudioRendererWrapper &) = delete; 492 SharedAudioRendererWrapper &operator=(const SharedAudioRendererWrapper &) = delete; 493 SharedAudioRendererWrapper(SharedAudioRendererWrapper &&) = delete; 494 SharedAudioRendererWrapper &operator=(SharedAudioRendererWrapper &&) = delete; 495 private: 496 std::shared_ptr<AudioRenderer> sharedAudioRenderer_ = nullptr; 497 }; 498 } // namespace AudioStandard 499 } // namespace OHOS 500 #endif // SHARED_AUDIO_RENDERER_WRAPPER_H