1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "media/video/capture/video_capture_proxy.h"
8 #include "base/location.h"
9 #include "base/message_loop/message_loop_proxy.h"
13 // Called on VC thread: extracts the state out of the VideoCapture, and
14 // serialize it into a VideoCaptureState.
15 media::VideoCaptureHandlerProxy::VideoCaptureState GetState(
16 media::VideoCapture* capture) {
17 media::VideoCaptureHandlerProxy::VideoCaptureState state;
18 state.started = capture->CaptureStarted();
19 state.frame_rate = capture->CaptureFrameRate();
23 } // anonymous namespace
27 VideoCaptureHandlerProxy::VideoCaptureHandlerProxy(
28 VideoCapture::EventHandler* proxied,
29 scoped_refptr<base::MessageLoopProxy> main_message_loop)
31 main_message_loop_(main_message_loop) {
34 VideoCaptureHandlerProxy::~VideoCaptureHandlerProxy() {
37 void VideoCaptureHandlerProxy::OnStarted(VideoCapture* capture) {
38 main_message_loop_->PostTask(FROM_HERE, base::Bind(
39 &VideoCaptureHandlerProxy::OnStartedOnMainThread,
40 base::Unretained(this),
45 void VideoCaptureHandlerProxy::OnStopped(VideoCapture* capture) {
46 main_message_loop_->PostTask(FROM_HERE, base::Bind(
47 &VideoCaptureHandlerProxy::OnStoppedOnMainThread,
48 base::Unretained(this),
53 void VideoCaptureHandlerProxy::OnPaused(VideoCapture* capture) {
54 main_message_loop_->PostTask(FROM_HERE, base::Bind(
55 &VideoCaptureHandlerProxy::OnPausedOnMainThread,
56 base::Unretained(this),
61 void VideoCaptureHandlerProxy::OnError(VideoCapture* capture, int error_code) {
62 main_message_loop_->PostTask(FROM_HERE, base::Bind(
63 &VideoCaptureHandlerProxy::OnErrorOnMainThread,
64 base::Unretained(this),
70 void VideoCaptureHandlerProxy::OnRemoved(VideoCapture* capture) {
71 main_message_loop_->PostTask(FROM_HERE, base::Bind(
72 &VideoCaptureHandlerProxy::OnRemovedOnMainThread,
73 base::Unretained(this),
78 void VideoCaptureHandlerProxy::OnFrameReady(
79 VideoCapture* capture,
80 const scoped_refptr<VideoFrame>& frame) {
81 main_message_loop_->PostTask(
83 base::Bind(&VideoCaptureHandlerProxy::OnFrameReadyOnMainThread,
84 base::Unretained(this),
90 void VideoCaptureHandlerProxy::OnStartedOnMainThread(
91 VideoCapture* capture,
92 const VideoCaptureState& state) {
94 proxied_->OnStarted(capture);
97 void VideoCaptureHandlerProxy::OnStoppedOnMainThread(
98 VideoCapture* capture,
99 const VideoCaptureState& state) {
101 proxied_->OnStopped(capture);
104 void VideoCaptureHandlerProxy::OnPausedOnMainThread(
105 VideoCapture* capture,
106 const VideoCaptureState& state) {
108 proxied_->OnPaused(capture);
111 void VideoCaptureHandlerProxy::OnErrorOnMainThread(
112 VideoCapture* capture,
113 const VideoCaptureState& state,
116 proxied_->OnError(capture, error_code);
119 void VideoCaptureHandlerProxy::OnRemovedOnMainThread(
120 VideoCapture* capture,
121 const VideoCaptureState& state) {
123 proxied_->OnRemoved(capture);
126 void VideoCaptureHandlerProxy::OnFrameReadyOnMainThread(
127 VideoCapture* capture,
128 const VideoCaptureState& state,
129 const scoped_refptr<VideoFrame>& frame) {
131 proxied_->OnFrameReady(capture, frame);