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

Side by Side Diff: media/video/capture/video_capture_proxy.cc

Issue 7537037: Add a proxy for thread-hopping VideoCapture::EventHandler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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.
4
5 #include "media/video/capture/video_capture_proxy.h"
6
7 #include "base/message_loop_proxy.h"
8
9 namespace {
10
11 // Called on VC thread: extracts the state out of the VideoCapture, and
12 // serialize it into a VideoCaptureState.
13 media::VideoCaptureHandlerProxy::VideoCaptureState GetState(
14 media::VideoCapture* capture) {
15 media::VideoCaptureHandlerProxy::VideoCaptureState state;
16 state.started = capture->CaptureStarted();
17 state.width = capture->CaptureWidth();
18 state.height = capture->CaptureHeight();
19 state.frame_rate = capture->CaptureFrameRate();
20 return state;
21 }
22
23 } // anonymous namespace
24
25 namespace media {
26
27 VideoCaptureHandlerProxy::VideoCaptureHandlerProxy(
28 VideoCapture::EventHandler* proxied)
29 : proxied_(proxied),
30 main_message_loop_(base::MessageLoopProxy::CreateForCurrentThread()) {
wjia(left Chromium) 2011/08/02 00:10:39 how about passing in main_message_loop as an argum
piman 2011/08/02 01:08:55 I did that, if that is helpful to create this clas
31 }
32
33 VideoCaptureHandlerProxy::~VideoCaptureHandlerProxy() {
34 }
35
36 void VideoCaptureHandlerProxy::OnStarted(VideoCapture* capture) {
37 main_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
38 this,
wjia(left Chromium) 2011/08/02 00:10:39 indentation.
piman 2011/08/02 01:08:55 Done (here and below).
39 &VideoCaptureHandlerProxy::OnStartedOnMainThread,
40 capture,
41 GetState(capture)));
42 }
43
44 void VideoCaptureHandlerProxy::OnStopped(VideoCapture* capture) {
45 main_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
46 this,
47 &VideoCaptureHandlerProxy::OnStoppedOnMainThread,
48 capture,
49 GetState(capture)));
50 }
51
52 void VideoCaptureHandlerProxy::OnPaused(VideoCapture* capture) {
53 main_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
54 this,
55 &VideoCaptureHandlerProxy::OnPausedOnMainThread,
56 capture,
57 GetState(capture)));
58 }
59
60 void VideoCaptureHandlerProxy::OnError(VideoCapture* capture, int error_code) {
61 main_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
62 this,
63 &VideoCaptureHandlerProxy::OnErrorOnMainThread,
64 capture,
65 GetState(capture),
66 error_code));
67 }
68
69 void VideoCaptureHandlerProxy::OnBufferReady(
70 VideoCapture* capture,
71 scoped_refptr<VideoCapture::VideoFrameBuffer> buffer) {
72 main_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
73 this,
74 &VideoCaptureHandlerProxy::OnBufferReadyOnMainThread,
75 capture,
76 GetState(capture),
77 buffer));
78 }
79
80 void VideoCaptureHandlerProxy::OnDeviceInfoReceived(
81 VideoCapture* capture,
82 const VideoCaptureParams& device_info) {
83 main_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
84 this,
85 &VideoCaptureHandlerProxy::OnDeviceInfoReceivedOnMainThread,
86 capture,
87 GetState(capture),
88 device_info));
89 }
90
91 void VideoCaptureHandlerProxy::OnStartedOnMainThread(
92 VideoCapture* capture,
93 const VideoCaptureState& state) {
94 state_ = state;
95 proxied_->OnStarted(capture);
96 }
97
98 void VideoCaptureHandlerProxy::OnStoppedOnMainThread(
99 VideoCapture* capture,
100 const VideoCaptureState& state) {
101 state_ = state;
102 proxied_->OnStopped(capture);
103 }
104
105 void VideoCaptureHandlerProxy::OnPausedOnMainThread(
106 VideoCapture* capture,
107 const VideoCaptureState& state) {
108 state_ = state;
109 proxied_->OnPaused(capture);
110 }
111
112 void VideoCaptureHandlerProxy::OnErrorOnMainThread(
113 VideoCapture* capture,
114 const VideoCaptureState& state,
115 int error_code) {
116 state_ = state;
117 proxied_->OnError(capture, error_code);
118 }
119
120 void VideoCaptureHandlerProxy::OnBufferReadyOnMainThread(
121 VideoCapture* capture,
122 const VideoCaptureState& state,
123 scoped_refptr<VideoCapture::VideoFrameBuffer> buffer) {
124 state_ = state;
125 proxied_->OnBufferReady(capture, buffer);
126 }
127
128 void VideoCaptureHandlerProxy::OnDeviceInfoReceivedOnMainThread(
129 VideoCapture* capture,
130 const VideoCaptureState& state,
131 const VideoCaptureParams& device_info) {
132 state_ = state;
133 proxied_->OnDeviceInfoReceived(capture, device_info);
134 }
135
136 } // namespace media
OLDNEW
« media/video/capture/video_capture_proxy.h ('K') | « media/video/capture/video_capture_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698