summaryrefslogtreecommitdiffstats
path: root/remoting/host/audio_capturer_linux.h
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/host/audio_capturer_linux.h')
-rw-r--r--remoting/host/audio_capturer_linux.h47
1 files changed, 17 insertions, 30 deletions
diff --git a/remoting/host/audio_capturer_linux.h b/remoting/host/audio_capturer_linux.h
index 8a825ff..1a9453c 100644
--- a/remoting/host/audio_capturer_linux.h
+++ b/remoting/host/audio_capturer_linux.h
@@ -5,24 +5,28 @@
#ifndef REMOTING_HOST_AUDIO_CAPTURER_LINUX_H_
#define REMOTING_HOST_AUDIO_CAPTURER_LINUX_H_
+#include "base/memory/ref_counted.h"
#include "remoting/host/audio_capturer.h"
-
-#include "base/message_loop.h"
-#include "base/time.h"
-#include "base/timer.h"
+#include "remoting/host/linux/audio_pipe_reader.h"
class FilePath;
namespace remoting {
+// Linux implementation of AudioCapturer interface which captures audio by
+// reading samples from a Pulseaudio "pipe" sink.
class AudioCapturerLinux : public AudioCapturer,
- public MessageLoopForIO::Watcher {
+ public AudioPipeReader::StreamObserver {
public:
- // Must be called to configure the capturer before the first instance is
- // created.
- static void SetPipeName(const FilePath& pipe_name);
-
- explicit AudioCapturerLinux(const FilePath& pipe_name);
+ // Must be called to configure the capturer before the first capturer instance
+ // is created. |task_runner| is an IO thread that is passed to AudioPipeReader
+ // to read from the pipe.
+ static void InitializePipeReader(
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ const FilePath& pipe_name);
+
+ explicit AudioCapturerLinux(
+ scoped_refptr<AudioPipeReader> pipe_reader);
virtual ~AudioCapturerLinux();
// AudioCapturer interface.
@@ -30,30 +34,13 @@ class AudioCapturerLinux : public AudioCapturer,
virtual void Stop() OVERRIDE;
virtual bool IsStarted() OVERRIDE;
- // MessageLoopForIO::Watcher interface.
- virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE;
- virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE;
+ // AudioPipeReader::StreamObserver interface.
+ virtual void OnDataRead(scoped_refptr<base::RefCountedString> data) OVERRIDE;
private:
- void StartTimer();
- void DoCapture();
- void WaitForPipeReadable();
-
- int pipe_fd_;
- base::RepeatingTimer<AudioCapturerLinux> timer_;
+ scoped_refptr<AudioPipeReader> pipe_reader_;
PacketCapturedCallback callback_;
- // Time when capturing was started.
- base::TimeTicks started_time_;
-
- // Stream position of the last capture.
- int64 last_capture_samples_;
-
- // Bytes left from the previous read.
- std::string left_over_bytes_;
-
- MessageLoopForIO::FileDescriptorWatcher file_descriptor_watcher_;
-
DISALLOW_COPY_AND_ASSIGN(AudioCapturerLinux);
};