#ifndef REMOTING_HOST_AUDIO_CAPTURER_LINUX_H_
#define REMOTING_HOST_AUDIO_CAPTURER_LINUX_H_
#include "remoting/host/audio_capturer.h"
#include "base/message_loop.h"
#include "base/time.h"
#include "base/timer.h"
class FilePath;
namespace remoting {
class AudioCapturerLinux : public AudioCapturer,
public MessageLoopForIO::Watcher {
public:
static void SetPipeName(const FilePath& pipe_name);
explicit AudioCapturerLinux(const FilePath& pipe_name);
virtual ~AudioCapturerLinux();
virtual bool Start(const PacketCapturedCallback& callback) OVERRIDE;
virtual void Stop() OVERRIDE;
virtual bool IsStarted() OVERRIDE;
virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE;
virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE;
private:
void StartTimer();
void DoCapture();
void WaitForPipeReadable();
int pipe_fd_;
base::RepeatingTimer<AudioCapturerLinux> timer_;
PacketCapturedCallback callback_;
base::TimeTicks started_time_;
int64 last_capture_samples_;
std::string left_over_bytes_;
MessageLoopForIO::FileDescriptorWatcher file_descriptor_watcher_;
DISALLOW_COPY_AND_ASSIGN(AudioCapturerLinux);
};
}
#endif