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

Side by Side Diff: webrtc/media/engine/webrtcvideocapturer.cc

Issue 1817953005: Use rtc::scoped_refptr for WebRtcVideoCapturer. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: remove incorrect early return Created 4 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
« no previous file with comments | « webrtc/media/engine/webrtcvideocapturer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 { FOURCC_UYVY, webrtc::kVideoUYVY }, // 16 bpp, fast conversion. 45 { FOURCC_UYVY, webrtc::kVideoUYVY }, // 16 bpp, fast conversion.
46 { FOURCC_NV12, webrtc::kVideoNV12 }, // 12 bpp, fast conversion. 46 { FOURCC_NV12, webrtc::kVideoNV12 }, // 12 bpp, fast conversion.
47 { FOURCC_NV21, webrtc::kVideoNV21 }, // 12 bpp, fast conversion. 47 { FOURCC_NV21, webrtc::kVideoNV21 }, // 12 bpp, fast conversion.
48 { FOURCC_MJPG, webrtc::kVideoMJPEG }, // compressed, slow conversion. 48 { FOURCC_MJPG, webrtc::kVideoMJPEG }, // compressed, slow conversion.
49 { FOURCC_ARGB, webrtc::kVideoARGB }, // 32 bpp, slow conversion. 49 { FOURCC_ARGB, webrtc::kVideoARGB }, // 32 bpp, slow conversion.
50 { FOURCC_24BG, webrtc::kVideoRGB24 }, // 24 bpp, slow conversion. 50 { FOURCC_24BG, webrtc::kVideoRGB24 }, // 24 bpp, slow conversion.
51 }; 51 };
52 52
53 class WebRtcVcmFactory : public WebRtcVcmFactoryInterface { 53 class WebRtcVcmFactory : public WebRtcVcmFactoryInterface {
54 public: 54 public:
55 virtual webrtc::VideoCaptureModule* Create(int id, const char* device) { 55 virtual rtc::scoped_refptr<webrtc::VideoCaptureModule> Create(
56 int id,
57 const char* device) {
56 return webrtc::VideoCaptureFactory::Create(id, device); 58 return webrtc::VideoCaptureFactory::Create(id, device);
57 } 59 }
58 virtual webrtc::VideoCaptureModule::DeviceInfo* CreateDeviceInfo(int id) { 60 virtual webrtc::VideoCaptureModule::DeviceInfo* CreateDeviceInfo(int id) {
59 return webrtc::VideoCaptureFactory::CreateDeviceInfo(id); 61 return webrtc::VideoCaptureFactory::CreateDeviceInfo(id);
60 } 62 }
61 virtual void DestroyDeviceInfo(webrtc::VideoCaptureModule::DeviceInfo* info) { 63 virtual void DestroyDeviceInfo(webrtc::VideoCaptureModule::DeviceInfo* info) {
62 delete info; 64 delete info;
63 } 65 }
64 }; 66 };
65 67
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 123
122 WebRtcVideoCapturer::WebRtcVideoCapturer(WebRtcVcmFactoryInterface* factory) 124 WebRtcVideoCapturer::WebRtcVideoCapturer(WebRtcVcmFactoryInterface* factory)
123 : factory_(factory), 125 : factory_(factory),
124 module_(nullptr), 126 module_(nullptr),
125 captured_frames_(0), 127 captured_frames_(0),
126 start_thread_(nullptr), 128 start_thread_(nullptr),
127 async_invoker_(nullptr) { 129 async_invoker_(nullptr) {
128 set_frame_factory(new WebRtcVideoFrameFactory()); 130 set_frame_factory(new WebRtcVideoFrameFactory());
129 } 131 }
130 132
131 WebRtcVideoCapturer::~WebRtcVideoCapturer() { 133 WebRtcVideoCapturer::~WebRtcVideoCapturer() {}
132 if (module_) {
133 module_->Release();
134 }
135 }
136 134
137 bool WebRtcVideoCapturer::Init(const Device& device) { 135 bool WebRtcVideoCapturer::Init(const Device& device) {
138 RTC_DCHECK(!start_thread_); 136 RTC_DCHECK(!start_thread_);
139 if (module_) { 137 if (module_) {
140 LOG(LS_ERROR) << "The capturer is already initialized"; 138 LOG(LS_ERROR) << "The capturer is already initialized";
141 return false; 139 return false;
142 } 140 }
143 141
144 webrtc::VideoCaptureModule::DeviceInfo* info = factory_->CreateDeviceInfo(0); 142 webrtc::VideoCaptureModule::DeviceInfo* info = factory_->CreateDeviceInfo(0);
145 if (!info) { 143 if (!info) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 return false; 189 return false;
192 } 190 }
193 191
194 module_ = factory_->Create(0, vcm_id); 192 module_ = factory_->Create(0, vcm_id);
195 if (!module_) { 193 if (!module_) {
196 LOG(LS_ERROR) << "Failed to create capturer for id: " << device.id; 194 LOG(LS_ERROR) << "Failed to create capturer for id: " << device.id;
197 return false; 195 return false;
198 } 196 }
199 197
200 // It is safe to change member attributes now. 198 // It is safe to change member attributes now.
201 module_->AddRef();
202 SetId(device.id); 199 SetId(device.id);
203 SetSupportedFormats(supported); 200 SetSupportedFormats(supported);
204 201
205 return true; 202 return true;
206 } 203 }
207 204
208 bool WebRtcVideoCapturer::Init(webrtc::VideoCaptureModule* module) { 205 bool WebRtcVideoCapturer::Init(
206 const rtc::scoped_refptr<webrtc::VideoCaptureModule>& module) {
209 RTC_DCHECK(!start_thread_); 207 RTC_DCHECK(!start_thread_);
210 if (module_) { 208 if (module_) {
211 LOG(LS_ERROR) << "The capturer is already initialized"; 209 LOG(LS_ERROR) << "The capturer is already initialized";
212 return false; 210 return false;
213 } 211 }
214 if (!module) { 212 if (!module) {
215 LOG(LS_ERROR) << "Invalid VCM supplied"; 213 LOG(LS_ERROR) << "Invalid VCM supplied";
216 return false; 214 return false;
217 } 215 }
218 // TODO(juberti): Set id and formats. 216 // TODO(juberti): Set id and formats.
219 (module_ = module)->AddRef(); 217 module_ = module;
220 return true; 218 return true;
221 } 219 }
222 220
223 bool WebRtcVideoCapturer::GetBestCaptureFormat(const VideoFormat& desired, 221 bool WebRtcVideoCapturer::GetBestCaptureFormat(const VideoFormat& desired,
224 VideoFormat* best_format) { 222 VideoFormat* best_format) {
225 if (!best_format) { 223 if (!best_format) {
226 return false; 224 return false;
227 } 225 }
228 226
229 if (!VideoCapturer::GetBestCaptureFormat(desired, best_format)) { 227 if (!VideoCapturer::GetBestCaptureFormat(desired, best_format)) {
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 pixel_width = 1; 415 pixel_width = 1;
418 pixel_height = 1; 416 pixel_height = 1;
419 // Convert units from VideoFrame RenderTimeMs to CapturedFrame (nanoseconds). 417 // Convert units from VideoFrame RenderTimeMs to CapturedFrame (nanoseconds).
420 time_stamp = sample.render_time_ms() * rtc::kNumNanosecsPerMillisec; 418 time_stamp = sample.render_time_ms() * rtc::kNumNanosecsPerMillisec;
421 data_size = rtc::checked_cast<uint32_t>(length); 419 data_size = rtc::checked_cast<uint32_t>(length);
422 data = buffer; 420 data = buffer;
423 rotation = sample.rotation(); 421 rotation = sample.rotation();
424 } 422 }
425 423
426 } // namespace cricket 424 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvideocapturer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698