28 [[nodiscard]] audio_device_state state() const noexcept override;
29 [[nodiscard]] audio_direction direction() const noexcept override;
30 [[nodiscard]]
bool exclusive() const noexcept override;
31 void set_exclusive(
bool exclusive) noexcept override;
32 [[nodiscard]]
double sample_rate() const noexcept override;
33 void set_sample_rate(
double sample_rate) noexcept override;
34 [[nodiscard]] hi::speaker_mapping input_speaker_mapping() const noexcept override;
35 void set_input_speaker_mapping(hi::speaker_mapping speaker_mapping) noexcept override;
36 [[nodiscard]]
std::vector<hi::speaker_mapping> available_input_speaker_mappings() const noexcept override;
37 [[nodiscard]] hi::speaker_mapping output_speaker_mapping() const noexcept override;
38 void set_output_speaker_mapping(hi::speaker_mapping speaker_mapping) noexcept override;
39 [[nodiscard]]
std::vector<hi::speaker_mapping> available_output_speaker_mappings() const noexcept override;
48 audio_direction _direction;
49 bool _exclusive = false;
50 double _sample_rate = 0.0;
51 hi::speaker_mapping _speaker_mapping = hi::speaker_mapping::none;
54 IMMDevice *_device =
nullptr;
55 IMMEndpoint *_end_point =
nullptr;
56 IPropertyStore *_property_store =
nullptr;
57 IAudioClient *_audio_client =
nullptr;
63 std::
string device_name() const noexcept;
68 std::
string end_point_name() const noexcept;
82 find_exclusive_stream_format(
double sample_rate, hi::speaker_mapping speaker_mapping) noexcept;