| 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..0019242fc48f2f9646f6260ab617a9a43c0fbf91 100644
|
| --- a/remoting/host/audio_capturer_win.h
|
| +++ b/remoting/host/audio_capturer_win.h
|
| @@ -31,6 +31,30 @@ 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;
|
| +
|
| + // Executes Deinitialize() and Initialize(). If Initialize() function call
|
| + // returns false, Deinitialize() will be called again to ensure we will
|
| + // initialize COM components again.
|
| + bool ResetAndInitialize();
|
| +
|
| + // Resets all COM components to nullptr, so is_initialized() will return
|
| + // false.
|
| + void Deinitialize();
|
| +
|
| + // Initializes default audio device related components. These components must
|
| + // be recreated once the default audio device changed. Returns false if
|
| + // initialization failed.
|
| + bool Initialize();
|
| +
|
| + // Whether all components are correctly initialized. If last
|
| + // Initialize() function call failed, this function will return false.
|
| + // Otherwise this function will return true.
|
| + bool is_initialized() const;
|
| +
|
| // Receives all packets from the audio capture endpoint buffer and pushes them
|
| // to the network.
|
| void DoCapture();
|
| @@ -55,11 +79,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_;
|
|
|