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

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

Issue 7649016: Removing singleton property of MediaStreamManager and creating thread first when needed. (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
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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 "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "content/browser/browser_thread.h" 8 #include "content/browser/browser_thread.h"
9 #include "content/browser/renderer_host/media/media_stream_manager.h" 9 #include "content/browser/renderer_host/media/media_stream_manager.h"
10 #include "content/browser/renderer_host/media/video_capture_manager.h" 10 #include "content/browser/renderer_host/media/video_capture_manager.h"
11 #include "content/browser/resource_context.h"
11 #include "media/base/yuv_convert.h" 12 #include "media/base/yuv_convert.h"
12 13
13 // The number of TransportDIBs VideoCaptureController allocate. 14 // The number of TransportDIBs VideoCaptureController allocate.
14 static const size_t kNoOfDIBS = 3; 15 static const size_t kNoOfDIBS = 3;
15 16
16 VideoCaptureController::VideoCaptureController( 17 VideoCaptureController::VideoCaptureController(
17 const VideoCaptureControllerID& id, 18 const VideoCaptureControllerID& id,
18 base::ProcessHandle render_process, 19 base::ProcessHandle render_process,
19 VideoCaptureControllerEventHandler* event_handler) 20 VideoCaptureControllerEventHandler* event_handler,
21 const content::ResourceContext* resource_context)
20 : render_handle_(render_process), 22 : render_handle_(render_process),
21 report_ready_to_delete_(false), 23 report_ready_to_delete_(false),
22 event_handler_(event_handler), 24 event_handler_(event_handler),
23 id_(id) { 25 id_(id),
26 resource_context_(resource_context) {
24 memset(&params_, 0, sizeof(params_)); 27 memset(&params_, 0, sizeof(params_));
25 } 28 }
26 29
27 VideoCaptureController::~VideoCaptureController() { 30 VideoCaptureController::~VideoCaptureController() {
28 // Delete all TransportDIBs. 31 // Delete all TransportDIBs.
29 STLDeleteContainerPairSecondPointers(owned_dibs_.begin(), 32 STLDeleteContainerPairSecondPointers(owned_dibs_.begin(),
30 owned_dibs_.end()); 33 owned_dibs_.end());
31 } 34 }
32 35
33 void VideoCaptureController::StartCapture( 36 void VideoCaptureController::StartCapture(
34 const media::VideoCaptureParams& params) { 37 const media::VideoCaptureParams& params) {
35 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 38 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
36 39
37 params_ = params; 40 params_ = params;
38 media_stream::VideoCaptureManager* manager =
39 media_stream::MediaStreamManager::Get()->video_capture_manager();
40 // Order the manager to start the actual capture. 41 // Order the manager to start the actual capture.
41 manager->Start(params, this); 42 resource_context_->media_stream_manager()->video_capture_manager()->
43 Start(params, this);
42 } 44 }
43 45
44 void VideoCaptureController::StopCapture(Task* stopped_task) { 46 void VideoCaptureController::StopCapture(Task* stopped_task) {
45 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 47 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
46 48
47 media_stream::VideoCaptureManager* manager = 49 resource_context_->media_stream_manager()->video_capture_manager()->
48 media_stream::MediaStreamManager::Get()->video_capture_manager(); 50 Stop(params_.session_id,
49 manager->Stop(params_.session_id, 51 NewRunnableMethod(this,
50 NewRunnableMethod(this, 52 &VideoCaptureController::OnDeviceStopped,
51 &VideoCaptureController::OnDeviceStopped, 53 stopped_task));
52 stopped_task));
53 } 54 }
54 55
55 void VideoCaptureController::ReturnBuffer(int buffer_id) { 56 void VideoCaptureController::ReturnBuffer(int buffer_id) {
56 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 57 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
57 58
58 bool ready_to_delete; 59 bool ready_to_delete;
59 { 60 {
60 base::AutoLock lock(lock_); 61 base::AutoLock lock(lock_);
61 free_dibs_.push_back(buffer_id); 62 free_dibs_.push_back(buffer_id);
62 ready_to_delete = (free_dibs_.size() == owned_dibs_.size()); 63 ready_to_delete = (free_dibs_.size() == owned_dibs_.size());
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 } 151 }
151 default: 152 default:
152 NOTREACHED(); 153 NOTREACHED();
153 } 154 }
154 155
155 event_handler_->OnBufferReady(id_, buffer_id, timestamp); 156 event_handler_->OnBufferReady(id_, buffer_id, timestamp);
156 } 157 }
157 158
158 void VideoCaptureController::OnError() { 159 void VideoCaptureController::OnError() {
159 event_handler_->OnError(id_); 160 event_handler_->OnError(id_);
160 media_stream::MediaStreamManager::Get()->video_capture_manager()-> 161 resource_context_->media_stream_manager()->video_capture_manager()->
161 Error(params_.session_id); 162 Error(params_.session_id);
162 } 163 }
163 164
164 void VideoCaptureController::OnFrameInfo( 165 void VideoCaptureController::OnFrameInfo(
165 const media::VideoCaptureDevice::Capability& info) { 166 const media::VideoCaptureDevice::Capability& info) {
166 DCHECK(owned_dibs_.empty()); 167 DCHECK(owned_dibs_.empty());
167 bool frames_created = true; 168 bool frames_created = true;
168 const size_t needed_size = (info.width * info.height * 3) / 2; 169 const size_t needed_size = (info.width * info.height * 3) / 2;
169 for (size_t i = 1; i <= kNoOfDIBS; ++i) { 170 for (size_t i = 1; i <= kNoOfDIBS; ++i) {
170 base::SharedMemory* shared_memory = new base::SharedMemory(); 171 base::SharedMemory* shared_memory = new base::SharedMemory();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 } 207 }
207 208
208 if (ready_to_delete_now) { 209 if (ready_to_delete_now) {
209 event_handler_->OnReadyToDelete(id_); 210 event_handler_->OnReadyToDelete(id_);
210 } 211 }
211 if (stopped_task) { 212 if (stopped_task) {
212 stopped_task->Run(); 213 stopped_task->Run();
213 delete stopped_task; 214 delete stopped_task;
214 } 215 }
215 } 216 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698