Home | History | Annotate | Download | only in host
      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 
     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