| Index: remoting/host/audio_capturer_win.h
|
| diff --git a/remoting/host/audio_capturer_win.h b/remoting/host/audio_capturer_win.h
|
| index d53920a43d9284f6b4ebd8f7d8f5f626b568a87e..5cc826aaa5b7505ce287c6a2575b78a1aa9ef7e9 100644
|
| --- a/remoting/host/audio_capturer_win.h
|
| +++ b/remoting/host/audio_capturer_win.h
|
| @@ -31,6 +31,21 @@ class AudioCapturerWin : public AudioCapturer {
|
| bool Start(const PacketCapturedCallback& callback) override;
|
|
|
| private:
|
| + // An IMMNotificationClient implementation to detect the event of default
|
| + // audio device recently changed. If it indicates a changed happend recently,
|
| + // we need to recreate all audio components.
|
| + class MMNotificationClient;
|
| +
|
| + // Resets and reinitializes default audio device related components. These
|
| + // components must be recreated once the default audio device changed. Returns
|
| + // false if initialization failed.
|
| + bool ResetAndInitialize();
|
| +
|
| + // Whether all components are correctly initialized. If last
|
| + // ResetAndInitialize() function call failed, this function will return false.
|
| + // Otherwise this function will return true.
|
| + bool Initialized() const;
|
| +
|
| // Receives all packets from the audio capture endpoint buffer and pushes them
|
| // to the network.
|
| void DoCapture();
|
| @@ -55,11 +70,14 @@ class AudioCapturerWin : public AudioCapturer {
|
| AudioSilenceDetector silence_detector_;
|
|
|
| base::win::ScopedCoMem<WAVEFORMATEX> wave_format_ex_;
|
| + base::win::ScopedComPtr<IMMDeviceEnumerator> mm_device_enumerator_;
|
| base::win::ScopedComPtr<IAudioCaptureClient> audio_capture_client_;
|
| base::win::ScopedComPtr<IAudioClient> audio_client_;
|
| base::win::ScopedComPtr<IMMDevice> mm_device_;
|
| base::win::ScopedComPtr<IAudioEndpointVolume> audio_volume_;
|
|
|
| + const std::unique_ptr<MMNotificationClient> mm_notification_client_;
|
| +
|
| HRESULT last_capture_error_;
|
|
|
| base::ThreadChecker thread_checker_;
|
|
|