1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef REMOTING_HOST_AUDIO_CAPTURER_H_ 6 #define REMOTING_HOST_AUDIO_CAPTURER_H_ 7 8 #include "base/callback.h" 9 #include "base/memory/scoped_ptr.h" 10 11 namespace remoting { 12 13 class AudioPacket; 14 15 class AudioCapturer { 16 public: 17 typedef base::Callback<void(scoped_ptr<AudioPacket> packet)> 18 PacketCapturedCallback; 19 ~AudioCapturer()20 virtual ~AudioCapturer() {} 21 22 // Returns true if audio capturing is supported on this platform. If this 23 // returns true, then Create() must not return NULL. 24 static bool IsSupported(); 25 static scoped_ptr<AudioCapturer> Create(); 26 27 // Capturers should sample at a 44.1 or 48 kHz sampling rate, in uncompressed 28 // PCM stereo format. Capturers may choose the number of frames per packet. 29 // Returns true on success. 30 virtual bool Start(const PacketCapturedCallback& callback) = 0; 31 // Stops the audio capturer, and frees the OS-specific audio capture 32 // resources. 33 virtual void Stop() = 0; 34 // Returns true if the audio capturer is running. 35 virtual bool IsStarted() = 0; 36 37 static bool IsValidSampleRate(int sample_rate); 38 }; 39 40 } // namespace remoting 41 42 #endif // REMOTING_HOST_AUDIO_CAPTURER_H_ 43