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

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

Issue 13616004: Switch event type when a capture device has been stopped from the render process. This make sure th… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed code review comments. Created 7 years, 8 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
« no previous file with comments | « no previous file | content/browser/renderer_host/media/video_capture_controller_event_handler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_controller.h" 5 #include "content/browser/renderer_host/media/video_capture_controller.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 int session_id) { 204 int session_id) {
205 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 205 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
206 DVLOG(1) << "VideoCaptureController::StopSession, id " << session_id; 206 DVLOG(1) << "VideoCaptureController::StopSession, id " << session_id;
207 207
208 ControllerClient* client = FindClient(session_id, pending_clients_); 208 ControllerClient* client = FindClient(session_id, pending_clients_);
209 if (!client) 209 if (!client)
210 client = FindClient(session_id, controller_clients_); 210 client = FindClient(session_id, controller_clients_);
211 211
212 if (client) { 212 if (client) {
213 client->session_closed = true; 213 client->session_closed = true;
214 client->event_handler->OnPaused(client->controller_id); 214 client->event_handler->OnEnded(client->controller_id);
215 } 215 }
216 } 216 }
217 217
218 void VideoCaptureController::ReturnBuffer( 218 void VideoCaptureController::ReturnBuffer(
219 const VideoCaptureControllerID& id, 219 const VideoCaptureControllerID& id,
220 VideoCaptureControllerEventHandler* event_handler, 220 VideoCaptureControllerEventHandler* event_handler,
221 int buffer_id) { 221 int buffer_id) {
222 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 222 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
223 223
224 ControllerClient* client = FindClient(id, event_handler, 224 ControllerClient* client = FindClient(id, event_handler,
(...skipping 27 matching lines...) Expand all
252 // Implements VideoCaptureDevice::EventHandler. 252 // Implements VideoCaptureDevice::EventHandler.
253 // OnIncomingCapturedFrame is called the thread running the capture device. 253 // OnIncomingCapturedFrame is called the thread running the capture device.
254 // I.e.- DirectShow thread on windows and v4l2_thread on Linux. 254 // I.e.- DirectShow thread on windows and v4l2_thread on Linux.
255 void VideoCaptureController::OnIncomingCapturedFrame( 255 void VideoCaptureController::OnIncomingCapturedFrame(
256 const uint8* data, 256 const uint8* data,
257 int length, 257 int length,
258 base::Time timestamp, 258 base::Time timestamp,
259 int rotation, 259 int rotation,
260 bool flip_vert, 260 bool flip_vert,
261 bool flip_horiz) { 261 bool flip_horiz) {
262 DCHECK (frame_info_.color == media::VideoCaptureCapability::kI420 || 262 DCHECK(frame_info_.color == media::VideoCaptureCapability::kI420 ||
263 frame_info_.color == media::VideoCaptureCapability::kYV12 || 263 frame_info_.color == media::VideoCaptureCapability::kYV12 ||
264 (rotation == 0 && !flip_vert && !flip_horiz)); 264 (rotation == 0 && !flip_vert && !flip_horiz));
265 265
266 scoped_refptr<media::VideoFrame> dst; 266 scoped_refptr<media::VideoFrame> dst;
267 { 267 {
268 base::AutoLock lock(buffer_pool_lock_); 268 base::AutoLock lock(buffer_pool_lock_);
269 if (!buffer_pool_) 269 if (!buffer_pool_)
270 return; 270 return;
271 dst = buffer_pool_->ReserveForProducer(rotation); 271 dst = buffer_pool_->ReserveForProducer(rotation);
272 } 272 }
273 273
274 if (!dst) 274 if (!dst)
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 controller_clients_.push_back((*client_it)); 668 controller_clients_.push_back((*client_it));
669 pending_clients_.erase(client_it++); 669 pending_clients_.erase(client_it++);
670 } 670 }
671 // Request the manager to start the actual capture. 671 // Request the manager to start the actual capture.
672 video_capture_manager_->Start(current_params_, this); 672 video_capture_manager_->Start(current_params_, this);
673 state_ = VIDEO_CAPTURE_STATE_STARTED; 673 state_ = VIDEO_CAPTURE_STATE_STARTED;
674 device_in_use_ = true; 674 device_in_use_ = true;
675 } 675 }
676 676
677 } // namespace content 677 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/renderer_host/media/video_capture_controller_event_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698