37 void update_state() noexcept override;
39 [[nodiscard]] audio_device_state state() const noexcept override;
40 [[nodiscard]] audio_direction direction() const noexcept override;
41 [[nodiscard]]
bool exclusive() const noexcept override;
42 void set_exclusive(
bool exclusive) noexcept override;
43 [[nodiscard]]
double sample_rate() const noexcept override;
44 void set_sample_rate(
double sample_rate) noexcept override;
45 [[nodiscard]]
hi::speaker_mapping input_speaker_mapping() const noexcept override;
46 void set_input_speaker_mapping(
hi::speaker_mapping speaker_mapping) noexcept override;
47 [[nodiscard]]
std::vector<
hi::speaker_mapping> available_input_speaker_mappings() const noexcept override;
48 [[nodiscard]]
hi::speaker_mapping output_speaker_mapping() const noexcept override;
49 void set_output_speaker_mapping(
hi::speaker_mapping speaker_mapping) noexcept override;
50 [[nodiscard]]
std::vector<
hi::speaker_mapping> available_output_speaker_mappings() const noexcept override;
54 std::
string _end_point_id;
55 audio_device_state _previous_state;
56 audio_direction _direction;
57 bool _exclusive = false;
58 double _sample_rate = 0.0;
59 hi::speaker_mapping _speaker_mapping =
hi::speaker_mapping::none;
62 IMMDevice *_device =
nullptr;
63 IMMEndpoint *_end_point =
nullptr;
64 IPropertyStore *_property_store =
nullptr;
65 IAudioClient *_audio_client =
nullptr;
67 [[nodiscard]]
std::
string end_point_name() const noexcept;
73 [[nodiscard]]
std::
string device_name() const noexcept;
78 [[nodiscard]]
std::
string end_point_description() const noexcept;
80 GUID pin_category() const noexcept;
87 unsigned int wave_id() const;
91 void update_supported_formats() noexcept;
105 find_exclusive_stream_format(
double sample_rate,
hi::speaker_mapping speaker_mapping) noexcept;