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

Side by Side Diff: media/capture/video/win/video_capture_device_factory_win.cc

Issue 2824773002: Rename ScopedComPtr::get() to ScopedComPtr::Get() (Closed)
Patch Set: Update to 5293966 Created 3 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "media/capture/video/win/video_capture_device_factory_win.h" 5 #include "media/capture/video/win/video_capture_device_factory_win.h"
6 6
7 #include <mfapi.h> 7 #include <mfapi.h>
8 #include <mferror.h> 8 #include <mferror.h>
9 #include <stddef.h> 9 #include <stddef.h>
10 10
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 93
94 static bool CreateVideoCaptureDeviceMediaFoundation(const char* sym_link, 94 static bool CreateVideoCaptureDeviceMediaFoundation(const char* sym_link,
95 IMFMediaSource** source) { 95 IMFMediaSource** source) {
96 ScopedComPtr<IMFAttributes> attributes; 96 ScopedComPtr<IMFAttributes> attributes;
97 if (!PrepareVideoCaptureAttributesMediaFoundation(attributes.Receive(), 2)) 97 if (!PrepareVideoCaptureAttributesMediaFoundation(attributes.Receive(), 2))
98 return false; 98 return false;
99 99
100 attributes->SetString(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK, 100 attributes->SetString(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK,
101 base::SysUTF8ToWide(sym_link).c_str()); 101 base::SysUTF8ToWide(sym_link).c_str());
102 102
103 return SUCCEEDED(MFCreateDeviceSource(attributes.get(), source)); 103 return SUCCEEDED(MFCreateDeviceSource(attributes.Get(), source));
104 } 104 }
105 105
106 static bool EnumerateVideoDevicesMediaFoundation(IMFActivate*** devices, 106 static bool EnumerateVideoDevicesMediaFoundation(IMFActivate*** devices,
107 UINT32* count) { 107 UINT32* count) {
108 ScopedComPtr<IMFAttributes> attributes; 108 ScopedComPtr<IMFAttributes> attributes;
109 if (!PrepareVideoCaptureAttributesMediaFoundation(attributes.Receive(), 1)) 109 if (!PrepareVideoCaptureAttributesMediaFoundation(attributes.Receive(), 1))
110 return false; 110 return false;
111 111
112 return SUCCEEDED(MFEnumDeviceSources(attributes.get(), devices, count)); 112 return SUCCEEDED(MFEnumDeviceSources(attributes.Get(), devices, count));
113 } 113 }
114 114
115 static bool IsDeviceBlackListed(const std::string& name) { 115 static bool IsDeviceBlackListed(const std::string& name) {
116 DCHECK_EQ(BLACKLISTED_CAMERA_MAX + 1, 116 DCHECK_EQ(BLACKLISTED_CAMERA_MAX + 1,
117 static_cast<int>(arraysize(kBlacklistedCameraNames))); 117 static_cast<int>(arraysize(kBlacklistedCameraNames)));
118 for (size_t i = 0; i < arraysize(kBlacklistedCameraNames); ++i) { 118 for (size_t i = 0; i < arraysize(kBlacklistedCameraNames); ++i) {
119 if (base::StartsWith(name, kBlacklistedCameraNames[i], 119 if (base::StartsWith(name, kBlacklistedCameraNames[i],
120 base::CompareCase::INSENSITIVE_ASCII)) { 120 base::CompareCase::INSENSITIVE_ASCII)) {
121 DVLOG(1) << "Enumerated blacklisted device: " << name; 121 DVLOG(1) << "Enumerated blacklisted device: " << name;
122 UMA_HISTOGRAM_ENUMERATION("Media.VideoCapture.BlacklistedDevice", i, 122 UMA_HISTOGRAM_ENUMERATION("Media.VideoCapture.BlacklistedDevice", i,
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 // exists. Therefore the FAILED macro can't be used. 255 // exists. Therefore the FAILED macro can't be used.
256 if (hr != S_OK) 256 if (hr != S_OK)
257 return; 257 return;
258 258
259 // Walk the capture devices. No need to check for device presence again since 259 // Walk the capture devices. No need to check for device presence again since
260 // that is anyway needed in GetDeviceFilter(). "google camera adapter" and old 260 // that is anyway needed in GetDeviceFilter(). "google camera adapter" and old
261 // VFW devices are already skipped previously in GetDeviceNames() enumeration. 261 // VFW devices are already skipped previously in GetDeviceNames() enumeration.
262 base::win::ScopedComPtr<IBaseFilter> capture_filter; 262 base::win::ScopedComPtr<IBaseFilter> capture_filter;
263 hr = VideoCaptureDeviceWin::GetDeviceFilter(descriptor.device_id, 263 hr = VideoCaptureDeviceWin::GetDeviceFilter(descriptor.device_id,
264 capture_filter.Receive()); 264 capture_filter.Receive());
265 if (!capture_filter.get()) { 265 if (!capture_filter.Get()) {
266 DLOG(ERROR) << "Failed to create capture filter: " 266 DLOG(ERROR) << "Failed to create capture filter: "
267 << logging::SystemErrorCodeToString(hr); 267 << logging::SystemErrorCodeToString(hr);
268 return; 268 return;
269 } 269 }
270 270
271 base::win::ScopedComPtr<IPin> output_capture_pin( 271 base::win::ScopedComPtr<IPin> output_capture_pin(
272 VideoCaptureDeviceWin::GetPin(capture_filter.get(), PINDIR_OUTPUT, 272 VideoCaptureDeviceWin::GetPin(capture_filter.Get(), PINDIR_OUTPUT,
273 PIN_CATEGORY_CAPTURE, GUID_NULL)); 273 PIN_CATEGORY_CAPTURE, GUID_NULL));
274 if (!output_capture_pin.get()) { 274 if (!output_capture_pin.Get()) {
275 DLOG(ERROR) << "Failed to get capture output pin"; 275 DLOG(ERROR) << "Failed to get capture output pin";
276 return; 276 return;
277 } 277 }
278 278
279 ScopedComPtr<IAMStreamConfig> stream_config; 279 ScopedComPtr<IAMStreamConfig> stream_config;
280 hr = output_capture_pin.QueryInterface(stream_config.Receive()); 280 hr = output_capture_pin.QueryInterface(stream_config.Receive());
281 if (FAILED(hr)) { 281 if (FAILED(hr)) {
282 DLOG(ERROR) << "Failed to get IAMStreamConfig interface from " 282 DLOG(ERROR) << "Failed to get IAMStreamConfig interface from "
283 "capture device: " << logging::SystemErrorCodeToString(hr); 283 "capture device: " << logging::SystemErrorCodeToString(hr);
284 return; 284 return;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 DVLOG(1) << "GetDeviceSupportedFormatsMediaFoundation for " 333 DVLOG(1) << "GetDeviceSupportedFormatsMediaFoundation for "
334 << descriptor.display_name; 334 << descriptor.display_name;
335 ScopedComPtr<IMFMediaSource> source; 335 ScopedComPtr<IMFMediaSource> source;
336 if (!CreateVideoCaptureDeviceMediaFoundation(descriptor.device_id.c_str(), 336 if (!CreateVideoCaptureDeviceMediaFoundation(descriptor.device_id.c_str(),
337 source.Receive())) { 337 source.Receive())) {
338 return; 338 return;
339 } 339 }
340 340
341 base::win::ScopedComPtr<IMFSourceReader> reader; 341 base::win::ScopedComPtr<IMFSourceReader> reader;
342 HRESULT hr = 342 HRESULT hr =
343 MFCreateSourceReaderFromMediaSource(source.get(), NULL, reader.Receive()); 343 MFCreateSourceReaderFromMediaSource(source.Get(), NULL, reader.Receive());
344 if (FAILED(hr)) { 344 if (FAILED(hr)) {
345 DLOG(ERROR) << "MFCreateSourceReaderFromMediaSource failed: " 345 DLOG(ERROR) << "MFCreateSourceReaderFromMediaSource failed: "
346 << logging::SystemErrorCodeToString(hr); 346 << logging::SystemErrorCodeToString(hr);
347 return; 347 return;
348 } 348 }
349 349
350 DWORD stream_index = 0; 350 DWORD stream_index = 0;
351 ScopedComPtr<IMFMediaType> type; 351 ScopedComPtr<IMFMediaType> type;
352 while (SUCCEEDED(reader->GetNativeMediaType(kFirstVideoStream, stream_index, 352 while (SUCCEEDED(reader->GetNativeMediaType(kFirstVideoStream, stream_index,
353 type.Receive()))) { 353 type.Receive()))) {
354 UINT32 width, height; 354 UINT32 width, height;
355 hr = MFGetAttributeSize(type.get(), MF_MT_FRAME_SIZE, &width, &height); 355 hr = MFGetAttributeSize(type.Get(), MF_MT_FRAME_SIZE, &width, &height);
356 if (FAILED(hr)) { 356 if (FAILED(hr)) {
357 DLOG(ERROR) << "MFGetAttributeSize failed: " 357 DLOG(ERROR) << "MFGetAttributeSize failed: "
358 << logging::SystemErrorCodeToString(hr); 358 << logging::SystemErrorCodeToString(hr);
359 return; 359 return;
360 } 360 }
361 VideoCaptureFormat capture_format; 361 VideoCaptureFormat capture_format;
362 capture_format.frame_size.SetSize(width, height); 362 capture_format.frame_size.SetSize(width, height);
363 363
364 UINT32 numerator, denominator; 364 UINT32 numerator, denominator;
365 hr = MFGetAttributeRatio(type.get(), MF_MT_FRAME_RATE, &numerator, 365 hr = MFGetAttributeRatio(type.Get(), MF_MT_FRAME_RATE, &numerator,
366 &denominator); 366 &denominator);
367 if (FAILED(hr)) { 367 if (FAILED(hr)) {
368 DLOG(ERROR) << "MFGetAttributeSize failed: " 368 DLOG(ERROR) << "MFGetAttributeSize failed: "
369 << logging::SystemErrorCodeToString(hr); 369 << logging::SystemErrorCodeToString(hr);
370 return; 370 return;
371 } 371 }
372 capture_format.frame_rate = 372 capture_format.frame_rate =
373 denominator ? static_cast<float>(numerator) / denominator : 0.0f; 373 denominator ? static_cast<float>(numerator) / denominator : 0.0f;
374 374
375 GUID type_guid; 375 GUID type_guid;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 } 460 }
461 461
462 // static 462 // static
463 VideoCaptureDeviceFactory* 463 VideoCaptureDeviceFactory*
464 VideoCaptureDeviceFactory::CreateVideoCaptureDeviceFactory( 464 VideoCaptureDeviceFactory::CreateVideoCaptureDeviceFactory(
465 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) { 465 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
466 return new VideoCaptureDeviceFactoryWin(); 466 return new VideoCaptureDeviceFactoryWin();
467 } 467 }
468 468
469 } // namespace media 469 } // namespace media
OLDNEW
« no previous file with comments | « media/capture/video/win/pin_base_win.cc ('k') | media/capture/video/win/video_capture_device_mf_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698