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

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

Issue 2887243002: Remove ScopedComPtr::CreateInstance() (Closed)
Patch Set: Created 3 years, 7 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 (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 "media/capture/video/win/video_capture_device_win.h" 5 #include "media/capture/video/win/video_capture_device_win.h"
6 6
7 #include <ks.h> 7 #include <ks.h>
8 #include <ksmedia.h> 8 #include <ksmedia.h>
9 #include <objbase.h> 9 #include <objbase.h>
10 10
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 return control_range; 101 return control_range;
102 } 102 }
103 103
104 // Finds and creates a DirectShow Video Capture filter matching the |device_id|. 104 // Finds and creates a DirectShow Video Capture filter matching the |device_id|.
105 // static 105 // static
106 HRESULT VideoCaptureDeviceWin::GetDeviceFilter(const std::string& device_id, 106 HRESULT VideoCaptureDeviceWin::GetDeviceFilter(const std::string& device_id,
107 IBaseFilter** filter) { 107 IBaseFilter** filter) {
108 DCHECK(filter); 108 DCHECK(filter);
109 109
110 ScopedComPtr<ICreateDevEnum> dev_enum; 110 ScopedComPtr<ICreateDevEnum> dev_enum;
111 HRESULT hr = 111 HRESULT hr = ::CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC,
112 dev_enum.CreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC); 112 IID_PPV_ARGS(&dev_enum));
113 if (FAILED(hr)) 113 if (FAILED(hr))
114 return hr; 114 return hr;
115 115
116 ScopedComPtr<IEnumMoniker> enum_moniker; 116 ScopedComPtr<IEnumMoniker> enum_moniker;
117 hr = dev_enum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, 117 hr = dev_enum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,
118 enum_moniker.GetAddressOf(), 0); 118 enum_moniker.GetAddressOf(), 0);
119 // CreateClassEnumerator returns S_FALSE on some Windows OS 119 // CreateClassEnumerator returns S_FALSE on some Windows OS
120 // when no camera exist. Therefore the FAILED macro can't be used. 120 // when no camera exist. Therefore the FAILED macro can't be used.
121 if (hr != S_OK) 121 if (hr != S_OK)
122 return hr; 122 return hr;
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 309
310 // Create the sink filter used for receiving Captured frames. 310 // Create the sink filter used for receiving Captured frames.
311 sink_filter_ = new SinkFilter(this); 311 sink_filter_ = new SinkFilter(this);
312 if (sink_filter_.get() == NULL) { 312 if (sink_filter_.get() == NULL) {
313 DLOG(ERROR) << "Failed to create sink filter"; 313 DLOG(ERROR) << "Failed to create sink filter";
314 return false; 314 return false;
315 } 315 }
316 316
317 input_sink_pin_ = sink_filter_->GetPin(0); 317 input_sink_pin_ = sink_filter_->GetPin(0);
318 318
319 hr = graph_builder_.CreateInstance(CLSID_FilterGraph, NULL, 319 hr = ::CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
320 CLSCTX_INPROC_SERVER); 320 IID_PPV_ARGS(&graph_builder_));
321 DLOG_IF_FAILED_WITH_HRESULT("Failed to create capture filter", hr); 321 DLOG_IF_FAILED_WITH_HRESULT("Failed to create capture filter", hr);
322 if (FAILED(hr)) 322 if (FAILED(hr))
323 return false; 323 return false;
324 324
325 hr = capture_graph_builder_.CreateInstance(CLSID_CaptureGraphBuilder2, NULL, 325 hr = ::CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC,
326 CLSCTX_INPROC); 326 IID_PPV_ARGS(&capture_graph_builder_));
327 DLOG_IF_FAILED_WITH_HRESULT("Failed to create the Capture Graph Builder", hr); 327 DLOG_IF_FAILED_WITH_HRESULT("Failed to create the Capture Graph Builder", hr);
328 if (FAILED(hr)) 328 if (FAILED(hr))
329 return false; 329 return false;
330 330
331 hr = capture_graph_builder_->SetFiltergraph(graph_builder_.Get()); 331 hr = capture_graph_builder_->SetFiltergraph(graph_builder_.Get());
332 DLOG_IF_FAILED_WITH_HRESULT("Failed to give graph to capture graph builder", 332 DLOG_IF_FAILED_WITH_HRESULT("Failed to give graph to capture graph builder",
333 hr); 333 hr);
334 if (FAILED(hr)) 334 if (FAILED(hr))
335 return false; 335 return false;
336 336
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 void VideoCaptureDeviceWin::SetErrorState( 848 void VideoCaptureDeviceWin::SetErrorState(
849 const tracked_objects::Location& from_here, 849 const tracked_objects::Location& from_here,
850 const std::string& reason, 850 const std::string& reason,
851 HRESULT hr) { 851 HRESULT hr) {
852 DCHECK(thread_checker_.CalledOnValidThread()); 852 DCHECK(thread_checker_.CalledOnValidThread());
853 DLOG_IF_FAILED_WITH_HRESULT(reason, hr); 853 DLOG_IF_FAILED_WITH_HRESULT(reason, hr);
854 state_ = kError; 854 state_ = kError;
855 client_->OnError(from_here, reason); 855 client_->OnError(from_here, reason);
856 } 856 }
857 } // namespace media 857 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698