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

Side by Side Diff: content/browser/renderer_host/media/video_capture_host.cc

Issue 83793004: Implement IPCs and VideoCapture::Client interfaces for texture capture (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: e296ac98 Win32 bits. Created 6 years, 9 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/media/video_capture_host.h" 5 #include "content/browser/renderer_host/media/video_capture_host.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "content/browser/browser_main_loop.h" 9 #include "content/browser/browser_main_loop.h"
10 #include "content/browser/renderer_host/media/media_stream_manager.h" 10 #include "content/browser/renderer_host/media/media_stream_manager.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 int buffer_id) { 69 int buffer_id) {
70 BrowserThread::PostTask( 70 BrowserThread::PostTask(
71 BrowserThread::IO, FROM_HERE, 71 BrowserThread::IO, FROM_HERE,
72 base::Bind(&VideoCaptureHost::DoSendFreeBufferOnIOThread, 72 base::Bind(&VideoCaptureHost::DoSendFreeBufferOnIOThread,
73 this, controller_id, buffer_id)); 73 this, controller_id, buffer_id));
74 } 74 }
75 75
76 void VideoCaptureHost::OnBufferReady( 76 void VideoCaptureHost::OnBufferReady(
77 const VideoCaptureControllerID& controller_id, 77 const VideoCaptureControllerID& controller_id,
78 int buffer_id, 78 int buffer_id,
79 base::TimeTicks timestamp, 79 const media::VideoCaptureFormat& frame_format,
80 const media::VideoCaptureFormat& frame_format) { 80 base::TimeTicks timestamp) {
81 BrowserThread::PostTask( 81 BrowserThread::PostTask(
82 BrowserThread::IO, FROM_HERE, 82 BrowserThread::IO,
83 FROM_HERE,
83 base::Bind(&VideoCaptureHost::DoSendFilledBufferOnIOThread, 84 base::Bind(&VideoCaptureHost::DoSendFilledBufferOnIOThread,
84 this, controller_id, buffer_id, timestamp, 85 this,
85 frame_format)); 86 controller_id,
87 buffer_id,
88 frame_format,
89 timestamp));
90 }
91
92 void VideoCaptureHost::OnMailboxBufferReady(
93 const VideoCaptureControllerID& controller_id,
94 int buffer_id,
95 const gpu::MailboxHolder& mailbox_holder,
96 const media::VideoCaptureFormat& frame_format,
97 base::TimeTicks timestamp) {
98 BrowserThread::PostTask(
99 BrowserThread::IO,
100 FROM_HERE,
101 base::Bind(&VideoCaptureHost::DoSendFilledMailboxBufferOnIOThread,
102 this,
103 controller_id,
104 buffer_id,
105 mailbox_holder,
106 frame_format,
107 timestamp));
86 } 108 }
87 109
88 void VideoCaptureHost::OnEnded(const VideoCaptureControllerID& controller_id) { 110 void VideoCaptureHost::OnEnded(const VideoCaptureControllerID& controller_id) {
89 DVLOG(1) << "VideoCaptureHost::OnEnded"; 111 DVLOG(1) << "VideoCaptureHost::OnEnded";
90 BrowserThread::PostTask( 112 BrowserThread::PostTask(
91 BrowserThread::IO, FROM_HERE, 113 BrowserThread::IO, FROM_HERE,
92 base::Bind(&VideoCaptureHost::DoEndedOnIOThread, this, controller_id)); 114 base::Bind(&VideoCaptureHost::DoEndedOnIOThread, this, controller_id));
93 } 115 }
94 116
95 void VideoCaptureHost::DoSendNewBufferOnIOThread( 117 void VideoCaptureHost::DoSendNewBufferOnIOThread(
(...skipping 17 matching lines...) Expand all
113 135
114 if (entries_.find(controller_id) == entries_.end()) 136 if (entries_.find(controller_id) == entries_.end())
115 return; 137 return;
116 138
117 Send(new VideoCaptureMsg_FreeBuffer(controller_id.device_id, buffer_id)); 139 Send(new VideoCaptureMsg_FreeBuffer(controller_id.device_id, buffer_id));
118 } 140 }
119 141
120 void VideoCaptureHost::DoSendFilledBufferOnIOThread( 142 void VideoCaptureHost::DoSendFilledBufferOnIOThread(
121 const VideoCaptureControllerID& controller_id, 143 const VideoCaptureControllerID& controller_id,
122 int buffer_id, 144 int buffer_id,
123 base::TimeTicks timestamp, 145 const media::VideoCaptureFormat& format,
124 const media::VideoCaptureFormat& format) { 146 base::TimeTicks timestamp) {
125 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 147 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
126 148
127 if (entries_.find(controller_id) == entries_.end()) 149 if (entries_.find(controller_id) == entries_.end())
128 return; 150 return;
129 151
130 Send(new VideoCaptureMsg_BufferReady(controller_id.device_id, buffer_id, 152 Send(new VideoCaptureMsg_BufferReady(
131 timestamp, format)); 153 controller_id.device_id, buffer_id, format, timestamp));
154 }
155
156 void VideoCaptureHost::DoSendFilledMailboxBufferOnIOThread(
157 const VideoCaptureControllerID& controller_id,
158 int buffer_id,
159 const gpu::MailboxHolder& mailbox_holder,
160 const media::VideoCaptureFormat& format,
161 base::TimeTicks timestamp) {
162 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
163
164 if (entries_.find(controller_id) == entries_.end())
165 return;
166
167 Send(new VideoCaptureMsg_MailboxBufferReady(
168 controller_id.device_id, buffer_id, mailbox_holder, format, timestamp));
132 } 169 }
133 170
134 void VideoCaptureHost::DoHandleErrorOnIOThread( 171 void VideoCaptureHost::DoHandleErrorOnIOThread(
135 const VideoCaptureControllerID& controller_id) { 172 const VideoCaptureControllerID& controller_id) {
136 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 173 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
137 174
138 if (entries_.find(controller_id) == entries_.end()) 175 if (entries_.find(controller_id) == entries_.end())
139 return; 176 return;
140 177
141 Send(new VideoCaptureMsg_StateChanged(controller_id.device_id, 178 Send(new VideoCaptureMsg_StateChanged(controller_id.device_id,
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 DeleteVideoCaptureControllerOnIOThread(controller_id); 288 DeleteVideoCaptureControllerOnIOThread(controller_id);
252 } 289 }
253 290
254 void VideoCaptureHost::OnPauseCapture(int device_id) { 291 void VideoCaptureHost::OnPauseCapture(int device_id) {
255 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 292 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
256 DVLOG(1) << "VideoCaptureHost::OnPauseCapture, device_id " << device_id; 293 DVLOG(1) << "VideoCaptureHost::OnPauseCapture, device_id " << device_id;
257 // Not used. 294 // Not used.
258 Send(new VideoCaptureMsg_StateChanged(device_id, VIDEO_CAPTURE_STATE_ERROR)); 295 Send(new VideoCaptureMsg_StateChanged(device_id, VIDEO_CAPTURE_STATE_ERROR));
259 } 296 }
260 297
261 void VideoCaptureHost::OnReceiveEmptyBuffer(int device_id, int buffer_id) { 298 void VideoCaptureHost::OnReceiveEmptyBuffer(int device_id,
299 int buffer_id,
300 uint32 sync_point) {
262 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 301 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
263 302
264 VideoCaptureControllerID controller_id(device_id); 303 VideoCaptureControllerID controller_id(device_id);
265 EntryMap::iterator it = entries_.find(controller_id); 304 EntryMap::iterator it = entries_.find(controller_id);
266 if (it != entries_.end()) { 305 if (it != entries_.end()) {
267 const base::WeakPtr<VideoCaptureController>& controller = it->second; 306 const base::WeakPtr<VideoCaptureController>& controller = it->second;
268 if (controller) 307 if (controller)
269 controller->ReturnBuffer(controller_id, this, buffer_id); 308 controller->ReturnBuffer(controller_id, this, buffer_id, sync_point);
270 } 309 }
271 } 310 }
272 311
273 void VideoCaptureHost::OnGetDeviceSupportedFormats( 312 void VideoCaptureHost::OnGetDeviceSupportedFormats(
274 int device_id, 313 int device_id,
275 media::VideoCaptureSessionId capture_session_id) { 314 media::VideoCaptureSessionId capture_session_id) {
276 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 315 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
277 DVLOG(1) << "VideoCaptureHost::OnGetDeviceFormats, capture_session_id " 316 DVLOG(1) << "VideoCaptureHost::OnGetDeviceFormats, capture_session_id "
278 << capture_session_id; 317 << capture_session_id;
279 media::VideoCaptureFormats device_supported_formats; 318 media::VideoCaptureFormats device_supported_formats;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 return; 352 return;
314 353
315 if (it->second) { 354 if (it->second) {
316 media_stream_manager_->video_capture_manager()->StopCaptureForClient( 355 media_stream_manager_->video_capture_manager()->StopCaptureForClient(
317 it->second.get(), controller_id, this); 356 it->second.get(), controller_id, this);
318 } 357 }
319 entries_.erase(it); 358 entries_.erase(it);
320 } 359 }
321 360
322 } // namespace content 361 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698