summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-26 10:54:01 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-26 10:54:01 +0000
commit7362421eb71391bd7078fe618f4baa4df5c57c99 (patch)
tree5e47f55280aa093ac7f957749d33d227b288c2d5 /media
parent507066ee0c76947e7fe62a839165870366a8da3c (diff)
downloadchromium_src-7362421eb71391bd7078fe618f4baa4df5c57c99.zip
chromium_src-7362421eb71391bd7078fe618f4baa4df5c57c99.tar.gz
chromium_src-7362421eb71391bd7078fe618f4baa4df5c57c99.tar.bz2
Add a flag to use fake camera for getUserMedia()
Add a flag --use-fake-device-for-media-stream for replacing actual camera with a fake one. The fake camera also generates a visual beep every 1 second. BUG= Review URL: https://chromiumcodereview.appspot.com/11270026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164313 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/video/capture/fake_video_capture_device.cc19
-rw-r--r--media/video/capture/fake_video_capture_device.h1
2 files changed, 18 insertions, 2 deletions
diff --git a/media/video/capture/fake_video_capture_device.cc b/media/video/capture/fake_video_capture_device.cc
index 7512060..77afe8e 100644
--- a/media/video/capture/fake_video_capture_device.cc
+++ b/media/video/capture/fake_video_capture_device.cc
@@ -12,7 +12,8 @@
namespace media {
-static const int kFakeCaptureTimeoutMs = 100;
+static const int kFakeCaptureTimeoutMs = 50;
+static const int kFakeCaptureBeepCycle = 20; // Visual beep every 1s.
enum { kNumberOfFakeDevices = 2 };
bool FakeVideoCaptureDevice::fail_next_create_ = false;
@@ -52,7 +53,8 @@ FakeVideoCaptureDevice::FakeVideoCaptureDevice(const Name& device_name)
observer_(NULL),
state_(kIdle),
capture_thread_("CaptureThread"),
- frame_size_(0) {
+ frame_size_(0),
+ frame_count_(0) {
}
FakeVideoCaptureDevice::~FakeVideoCaptureDevice() {
@@ -130,6 +132,15 @@ void FakeVideoCaptureDevice::OnCaptureTask() {
if (state_ != kCapturing) {
return;
}
+
+ bool beep = false;
+ if (frame_count_ % kFakeCaptureBeepCycle == 0) {
+ beep = true;
+ // This will fill the frame in grey.
+ memset(fake_frame_.get(), 128, frame_size_);
+ }
+ frame_count_++;
+
// Give the captured frame to the observer.
observer_->OnIncomingCapturedFrame(fake_frame_.get(),
frame_size_,
@@ -140,6 +151,10 @@ void FakeVideoCaptureDevice::OnCaptureTask() {
base::Bind(&FakeVideoCaptureDevice::OnCaptureTask,
base::Unretained(this)),
base::TimeDelta::FromMilliseconds(kFakeCaptureTimeoutMs));
+
+ if (beep) {
+ memset(fake_frame_.get(), 0, frame_size_);
+ }
}
} // namespace media
diff --git a/media/video/capture/fake_video_capture_device.h b/media/video/capture/fake_video_capture_device.h
index bbb7569..082bc0e 100644
--- a/media/video/capture/fake_video_capture_device.h
+++ b/media/video/capture/fake_video_capture_device.h
@@ -55,6 +55,7 @@ class MEDIA_EXPORT FakeVideoCaptureDevice : public VideoCaptureDevice {
base::Thread capture_thread_;
int frame_size_;
scoped_array<uint8> fake_frame_;
+ int frame_count_;
static bool fail_next_create_;