Chromium Code Reviews| Index: remoting/host/audio_capturer_win.h |
| diff --git a/remoting/host/audio_capturer_win.h b/remoting/host/audio_capturer_win.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..caa1486540c768f442f275b2092978a5819bac7a |
| --- /dev/null |
| +++ b/remoting/host/audio_capturer_win.h |
| @@ -0,0 +1,59 @@ |
| +// Copyright (c) 2012 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. |
| + |
| +#include <windows.h> |
| +#include <audioclient.h> |
| +#include <avrt.h> |
| +#include <mmdeviceapi.h> |
| +#include <mmreg.h> |
| +#include <mmsystem.h> |
|
Sergey Ulanov
2012/08/21 21:34:39
Do we need all of these includes in the header?
kxing
2012/08/21 21:55:53
Done.
|
| + |
| +#include "base/basictypes.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "base/message_loop.h" |
|
Sergey Ulanov
2012/08/21 21:34:39
Don't need this include here.
kxing
2012/08/21 21:55:53
Done.
|
| +#include "base/timer.h" |
| +#include "base/win/scoped_co_mem.h" |
| +#include "base/win/scoped_com_initializer.h" |
| +#include "base/win/scoped_comptr.h" |
| +#include "remoting/host/audio_capturer.h" |
| +#include "remoting/proto/audio.pb.h" |
| + |
| +namespace remoting { |
| + |
| +class AudioCapturerWin : public AudioCapturer { |
| + public: |
| + AudioCapturerWin(); |
| + virtual ~AudioCapturerWin(); |
| + |
| + // AudioCapturer interface. |
| + virtual bool Start(const PacketCapturedCallback& callback) OVERRIDE; |
| + virtual void Stop() OVERRIDE; |
| + virtual bool IsRunning() OVERRIDE; |
| + |
| + static bool IsPacketOfSilence(const int16* samples, int number_of_samples); |
| + |
| + private: |
| + // Receives all packets from the audio capture endpoint buffer and pushes them |
| + // to the network. |
| + void DoCapture(); |
| + |
| + PacketCapturedCallback callback_; |
| + |
| + AudioPacket::SamplingRate sampling_rate_; |
| + |
| + scoped_ptr<base::RepeatingTimer<AudioCapturerWin> > capture_timer_; |
| + base::TimeDelta audio_device_period_; |
| + |
| + base::win::ScopedCoMem<WAVEFORMATEX> wave_format_ex_; |
| + base::win::ScopedComPtr<IAudioCaptureClient> audio_capture_client_; |
| + base::win::ScopedComPtr<IAudioClient> audio_client_; |
| + base::win::ScopedComPtr<IMMDevice> mm_device_; |
| + scoped_ptr<base::win::ScopedCOMInitializer> com_initializer_; |
| + |
| + base::ThreadChecker thread_checker_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(AudioCapturerWin); |
| +}; |
| + |
| +} // namespace remoting |