| Index: media/video/capture/video_capture_proxy.cc
|
| diff --git a/media/video/capture/video_capture_proxy.cc b/media/video/capture/video_capture_proxy.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c5528198a1f977dceea3402832f548948355ba53
|
| --- /dev/null
|
| +++ b/media/video/capture/video_capture_proxy.cc
|
| @@ -0,0 +1,135 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "media/video/capture/video_capture_proxy.h"
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/location.h"
|
| +#include "base/single_thread_task_runner.h"
|
| +#include "media/base/video_frame.h"
|
| +
|
| +namespace {
|
| +
|
| +// Called on VC thread: extracts the state out of the VideoCapture, and
|
| +// serialize it into a VideoCaptureState.
|
| +media::VideoCaptureHandlerProxy::VideoCaptureState GetState(
|
| + media::VideoCapture* capture) {
|
| + media::VideoCaptureHandlerProxy::VideoCaptureState state;
|
| + state.started = capture->CaptureStarted();
|
| + state.frame_rate = capture->CaptureFrameRate();
|
| + return state;
|
| +}
|
| +
|
| +} // anonymous namespace
|
| +
|
| +namespace media {
|
| +
|
| +VideoCaptureHandlerProxy::VideoCaptureHandlerProxy(
|
| + VideoCapture::EventHandler* proxied,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner)
|
| + : proxied_(proxied),
|
| + main_task_runner_(main_task_runner) {
|
| +}
|
| +
|
| +VideoCaptureHandlerProxy::~VideoCaptureHandlerProxy() {
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnStarted(VideoCapture* capture) {
|
| + main_task_runner_->PostTask(FROM_HERE, base::Bind(
|
| + &VideoCaptureHandlerProxy::OnStartedOnMainThread,
|
| + base::Unretained(this),
|
| + capture,
|
| + GetState(capture)));
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnStopped(VideoCapture* capture) {
|
| + main_task_runner_->PostTask(FROM_HERE, base::Bind(
|
| + &VideoCaptureHandlerProxy::OnStoppedOnMainThread,
|
| + base::Unretained(this),
|
| + capture,
|
| + GetState(capture)));
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnPaused(VideoCapture* capture) {
|
| + main_task_runner_->PostTask(FROM_HERE, base::Bind(
|
| + &VideoCaptureHandlerProxy::OnPausedOnMainThread,
|
| + base::Unretained(this),
|
| + capture,
|
| + GetState(capture)));
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnError(VideoCapture* capture, int error_code) {
|
| + main_task_runner_->PostTask(FROM_HERE, base::Bind(
|
| + &VideoCaptureHandlerProxy::OnErrorOnMainThread,
|
| + base::Unretained(this),
|
| + capture,
|
| + GetState(capture),
|
| + error_code));
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnRemoved(VideoCapture* capture) {
|
| + main_task_runner_->PostTask(FROM_HERE, base::Bind(
|
| + &VideoCaptureHandlerProxy::OnRemovedOnMainThread,
|
| + base::Unretained(this),
|
| + capture,
|
| + GetState(capture)));
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnFrameReady(
|
| + VideoCapture* capture,
|
| + const scoped_refptr<VideoFrame>& frame) {
|
| + main_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&VideoCaptureHandlerProxy::OnFrameReadyOnMainThread,
|
| + base::Unretained(this),
|
| + capture,
|
| + GetState(capture),
|
| + frame));
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnStartedOnMainThread(
|
| + VideoCapture* capture,
|
| + const VideoCaptureState& state) {
|
| + state_ = state;
|
| + proxied_->OnStarted(capture);
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnStoppedOnMainThread(
|
| + VideoCapture* capture,
|
| + const VideoCaptureState& state) {
|
| + state_ = state;
|
| + proxied_->OnStopped(capture);
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnPausedOnMainThread(
|
| + VideoCapture* capture,
|
| + const VideoCaptureState& state) {
|
| + state_ = state;
|
| + proxied_->OnPaused(capture);
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnErrorOnMainThread(
|
| + VideoCapture* capture,
|
| + const VideoCaptureState& state,
|
| + int error_code) {
|
| + state_ = state;
|
| + proxied_->OnError(capture, error_code);
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnRemovedOnMainThread(
|
| + VideoCapture* capture,
|
| + const VideoCaptureState& state) {
|
| + state_ = state;
|
| + proxied_->OnRemoved(capture);
|
| +}
|
| +
|
| +void VideoCaptureHandlerProxy::OnFrameReadyOnMainThread(
|
| + VideoCapture* capture,
|
| + const VideoCaptureState& state,
|
| + const scoped_refptr<VideoFrame>& frame) {
|
| + state_ = state;
|
| + proxied_->OnFrameReady(capture, frame);
|
| +}
|
| +
|
| +} // namespace media
|
|
|