audio_manager_power_user.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright (c) 2022 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef SERVICES_AUDIO_AUDIO_MANAGER_POWER_USER_H_
  5. #define SERVICES_AUDIO_AUDIO_MANAGER_POWER_USER_H_
  6. #include <string>
  7. #include "media/audio/audio_manager.h"
  8. #include "media/base/audio_parameters.h"
  9. namespace media {
  10. class AudioManager;
  11. } // namespace media
  12. namespace audio {
  13. // Helper class to get access to the protected AudioManager API.
  14. // TODO(https://crbug.com/834674): Replace this class with a public API
  15. // once the audio manager is inaccessible from outside the audio service.
  16. class AudioManagerPowerUser {
  17. public:
  18. explicit AudioManagerPowerUser(media::AudioManager* audio_manager)
  19. : audio_manager_(audio_manager) {}
  20. std::string GetDefaultOutputDeviceID() {
  21. return audio_manager_->GetDefaultOutputDeviceID();
  22. }
  23. std::string GetCommunicationsOutputDeviceID() {
  24. return audio_manager_->GetCommunicationsOutputDeviceID();
  25. }
  26. media::AudioParameters GetOutputStreamParameters(
  27. const std::string& device_id) {
  28. return media::AudioDeviceDescription::IsDefaultDevice(device_id)
  29. ? audio_manager_->GetDefaultOutputStreamParameters()
  30. : audio_manager_->GetOutputStreamParameters(device_id);
  31. }
  32. media::AudioParameters GetInputStreamParameters(
  33. const std::string& device_id) {
  34. return audio_manager_->GetInputStreamParameters(device_id);
  35. }
  36. private:
  37. const raw_ptr<media::AudioManager> audio_manager_;
  38. };
  39. } // namespace audio
  40. #endif // SERVICES_AUDIO_AUDIO_MANAGER_POWER_USER_H_