diff options
author | kxing@chromium.org <kxing@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-22 00:56:55 +0000 |
---|---|---|
committer | kxing@chromium.org <kxing@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-22 00:56:55 +0000 |
commit | 91d3a7dcafdbc2c4cf4d12c79a98a5e70cb9244e (patch) | |
tree | 022647b8dae8ff3adc8c0955436ab91d991c55f4 /remoting/host/audio_capturer_win.h | |
parent | efac095a6203050f0c17a4efca9cf3ec01d26850 (diff) | |
download | chromium_src-91d3a7dcafdbc2c4cf4d12c79a98a5e70cb9244e.zip chromium_src-91d3a7dcafdbc2c4cf4d12c79a98a5e70cb9244e.tar.gz chromium_src-91d3a7dcafdbc2c4cf4d12c79a98a5e70cb9244e.tar.bz2 |
Silence detection test for the Windows audio capturer.
BUG=
Review URL: https://chromiumcodereview.appspot.com/10823440
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@152704 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/host/audio_capturer_win.h')
-rw-r--r-- | remoting/host/audio_capturer_win.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/remoting/host/audio_capturer_win.h b/remoting/host/audio_capturer_win.h new file mode 100644 index 0000000..bfd9803 --- /dev/null +++ b/remoting/host/audio_capturer_win.h @@ -0,0 +1,54 @@ +// 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 <audioclient.h> +#include <mmdeviceapi.h> + +#include "base/basictypes.h" +#include "base/memory/scoped_ptr.h" +#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 |