Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(624)

Unified Diff: media/audio/audio_input_controller.h

Issue 21183002: Adding key press detection in the browser process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/audio/audio_input_controller.h
diff --git a/media/audio/audio_input_controller.h b/media/audio/audio_input_controller.h
index 586d47703a18f01b9f7cc15a8168b1b4bae3f2a2..231a74fefc35eb1833cb28f261c9692226cabe29 100644
--- a/media/audio/audio_input_controller.h
+++ b/media/audio/audio_input_controller.h
@@ -16,6 +16,7 @@
#include "base/timer/timer.h"
#include "media/audio/audio_io.h"
#include "media/audio/audio_manager_base.h"
+#include "media/audio/key_press_monitor.h"
// An AudioInputController controls an AudioInputStream and records data
// from this input stream. The two main methods are Record() and Close() and
@@ -74,7 +75,8 @@ namespace media {
class MEDIA_EXPORT AudioInputController
: public base::RefCountedThreadSafe<AudioInputController>,
- public AudioInputStream::AudioInputCallback {
+ public AudioInputStream::AudioInputCallback,
+ public KeyPressMonitor::KeyPressListener {
public:
// An event handler that receives events from the AudioInputController. The
// following methods are all called on the audio thread.
@@ -102,7 +104,10 @@ class MEDIA_EXPORT AudioInputController
// Write certain amount of data from |data|. This method returns
// number of written bytes.
- virtual uint32 Write(const void* data, uint32 size, double volume) = 0;
+ virtual uint32 Write(const void* data,
+ uint32 size,
+ double volume,
+ bool key_pressed) = 0;
// Close this synchronous writer.
virtual void Close() = 0;
@@ -112,9 +117,12 @@ class MEDIA_EXPORT AudioInputController
// to create the AudioInputController. Factory is intended for testing only.
class Factory {
public:
- virtual AudioInputController* Create(AudioManager* audio_manager,
- EventHandler* event_handler,
- AudioParameters params) = 0;
+ virtual AudioInputController* Create(
+ AudioManager* audio_manager,
+ EventHandler* event_handler,
+ AudioParameters params,
+ KeyPressMonitor* key_press_monitor) = 0;
+
protected:
virtual ~Factory() {}
};
@@ -127,7 +135,8 @@ class MEDIA_EXPORT AudioInputController
AudioManager* audio_manager,
EventHandler* event_handler,
const AudioParameters& params,
- const std::string& device_id);
+ const std::string& device_id,
+ KeyPressMonitor* key_press_monitor);
// Sets the factory used by the static method Create(). AudioInputController
// does not take ownership of |factory|. A value of NULL results in an
@@ -145,7 +154,8 @@ class MEDIA_EXPORT AudioInputController
const AudioParameters& params,
const std::string& device_id,
// External synchronous writer for audio controller.
- SyncWriter* sync_writer);
+ SyncWriter* sync_writer,
+ KeyPressMonitor* key_press_monitor);
// Factory method for creating an AudioInputController for low-latency mode,
// taking ownership of |stream|. The stream will be opened on the audio
@@ -156,7 +166,8 @@ class MEDIA_EXPORT AudioInputController
EventHandler* event_handler,
AudioInputStream* stream,
// External synchronous writer for audio controller.
- SyncWriter* sync_writer);
+ SyncWriter* sync_writer,
+ KeyPressMonitor* key_press_monitor);
// Starts recording using the created audio input stream.
// This method is called on the creator thread.
@@ -189,6 +200,9 @@ class MEDIA_EXPORT AudioInputController
bool LowLatencyMode() const { return sync_writer_ != NULL; }
+ // Impl of KeyPressListener.
+ virtual void OnKeyPressed() OVERRIDE;
+
protected:
friend class base::RefCountedThreadSafe<AudioInputController>;
@@ -201,7 +215,9 @@ class MEDIA_EXPORT AudioInputController
kError
};
- AudioInputController(EventHandler* handler, SyncWriter* sync_writer);
+ AudioInputController(EventHandler* handler,
+ SyncWriter* sync_writer,
+ KeyPressMonitor* key_press_monitor);
virtual ~AudioInputController();
// Methods called on the audio thread (owned by the AudioManager).
@@ -266,6 +282,11 @@ class MEDIA_EXPORT AudioInputController
double max_volume_;
+ KeyPressMonitor* key_press_monitor_;
+
+ // True if any key has been pressed after the last OnData call.
+ bool key_pressed_;
+
DISALLOW_COPY_AND_ASSIGN(AudioInputController);
};

Powered by Google App Engine
This is Rietveld 408576698