| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MEDIA_AUDIO_AUDIO_SYSTEM_HELPER_H_ |
| #define MEDIA_AUDIO_AUDIO_SYSTEM_HELPER_H_ |
| |
| #include "media/audio/audio_system.h" |
| #include "media/base/media_export.h" |
| #include "third_party/abseil-cpp/absl/types/optional.h" |
| |
| namespace media { |
| class AudioManager; |
| |
| // Helper class wrapping AudioManager functionality. Methods to be called on |
| // audio thread only. Only audio system implementations are allowed to use it. |
| // See AudioSystem interface for method descriptions. |
| class MEDIA_EXPORT AudioSystemHelper { |
| public: |
| AudioSystemHelper(AudioManager* audio_manager); |
| |
| AudioSystemHelper(const AudioSystemHelper&) = delete; |
| AudioSystemHelper& operator=(const AudioSystemHelper&) = delete; |
| |
| ~AudioSystemHelper(); |
| |
| void GetInputStreamParameters( |
| const std::string& device_id, |
| AudioSystem::OnAudioParamsCallback on_params_cb); |
| |
| void GetOutputStreamParameters( |
| const std::string& device_id, |
| AudioSystem::OnAudioParamsCallback on_params_cb); |
| |
| void HasInputDevices(AudioSystem::OnBoolCallback on_has_devices_cb); |
| |
| void HasOutputDevices(AudioSystem::OnBoolCallback on_has_devices_cb); |
| |
| void GetDeviceDescriptions( |
| bool for_input, |
| AudioSystem::OnDeviceDescriptionsCallback on_descriptions_cp); |
| |
| void GetAssociatedOutputDeviceID( |
| const std::string& input_device_id, |
| AudioSystem::OnDeviceIdCallback on_device_id_cb); |
| |
| void GetInputDeviceInfo( |
| const std::string& input_device_id, |
| AudioSystem::OnInputDeviceInfoCallback on_input_device_info_cb); |
| |
| private: |
| absl::optional<AudioParameters> ComputeInputParameters( |
| const std::string& device_id); |
| absl::optional<AudioParameters> ComputeOutputParameters( |
| const std::string& device_id); |
| |
| AudioManager* const audio_manager_; |
| }; |
| |
| } // namespace media |
| |
| #endif // MEDIA_AUDIO_AUDIO_SYSTEM_HELPER_H_ |