| Index: media/video/capture/win/video_capture_device_factory_win.cc
|
| diff --git a/media/video/capture/win/video_capture_device_factory_win.cc b/media/video/capture/win/video_capture_device_factory_win.cc
|
| index a158dc8c33b0749f3910af8c16eb6d151ff04070..75ee59d3bf495be332468550d2bb9ef22a16ef5d 100644
|
| --- a/media/video/capture/win/video_capture_device_factory_win.cc
|
| +++ b/media/video/capture/win/video_capture_device_factory_win.cc
|
| @@ -167,23 +167,26 @@ static void GetDeviceNamesMediaFoundation(
|
| if (!EnumerateVideoDevicesMediaFoundation(&devices, &count))
|
| return;
|
|
|
| - HRESULT hr;
|
| for (UINT32 i = 0; i < count; ++i) {
|
| - UINT32 name_size, id_size;
|
| - ScopedCoMem<wchar_t> name, id;
|
| - if (SUCCEEDED(hr = devices[i]->GetAllocatedString(
|
| - MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME, &name, &name_size)) &&
|
| - SUCCEEDED(hr = devices[i]->GetAllocatedString(
|
| - MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK, &id,
|
| - &id_size))) {
|
| - std::wstring name_w(name, name_size), id_w(id, id_size);
|
| - VideoCaptureDevice::Name device(base::SysWideToUTF8(name_w),
|
| - base::SysWideToUTF8(id_w),
|
| - VideoCaptureDevice::Name::MEDIA_FOUNDATION);
|
| - device_names->push_back(device);
|
| - } else {
|
| - DLOG(WARNING) << "GetAllocatedString failed: " << std::hex << hr;
|
| + ScopedCoMem<wchar_t> name;
|
| + UINT32 name_size;
|
| + HRESULT hr = devices[i]->GetAllocatedString(
|
| + MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME, &name, &name_size);
|
| + if (SUCCEEDED(hr)) {
|
| + ScopedCoMem<wchar_t> id;
|
| + UINT32 id_size;
|
| + hr = devices[i]->GetAllocatedString(
|
| + MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK, &id,
|
| + &id_size);
|
| + if (SUCCEEDED(hr)) {
|
| + device_names->push_back(VideoCaptureDevice::Name(
|
| + base::SysWideToUTF8(std::wstring(name, name_size)),
|
| + base::SysWideToUTF8(std::wstring(id, id_size)),
|
| + VideoCaptureDevice::Name::MEDIA_FOUNDATION));
|
| + }
|
| }
|
| + if (FAILED(hr))
|
| + DLOG(WARNING) << "GetAllocatedString failed: " << std::hex << hr;
|
| devices[i]->Release();
|
| }
|
| }
|
| @@ -286,18 +289,21 @@ static void GetDeviceSupportedFormatsMediaFoundation(
|
| return;
|
| }
|
|
|
| - HRESULT hr;
|
| base::win::ScopedComPtr<IMFSourceReader> reader;
|
| - if (FAILED(hr = MFCreateSourceReaderFromMediaSource(source, NULL,
|
| - reader.Receive()))) {
|
| + HRESULT hr =
|
| + MFCreateSourceReaderFromMediaSource(source, NULL, reader.Receive());
|
| + if (FAILED(hr)) {
|
| DLOG(ERROR) << "MFCreateSourceReaderFromMediaSource: " << std::hex << hr;
|
| return;
|
| }
|
|
|
| DWORD stream_index = 0;
|
| ScopedComPtr<IMFMediaType> type;
|
| - while (SUCCEEDED(hr = reader->GetNativeMediaType(
|
| - MF_SOURCE_READER_FIRST_VIDEO_STREAM, stream_index, type.Receive()))) {
|
| + for (hr = reader->GetNativeMediaType(kFirstVideoStream, stream_index,
|
| + type.Receive());
|
| + SUCCEEDED(hr);
|
| + hr = reader->GetNativeMediaType(kFirstVideoStream, stream_index,
|
| + type.Receive())) {
|
| UINT32 width, height;
|
| hr = MFGetAttributeSize(type, MF_MT_FRAME_SIZE, &width, &height);
|
| if (FAILED(hr)) {
|
| @@ -380,14 +386,13 @@ scoped_ptr<VideoCaptureDevice> VideoCaptureDeviceFactoryWin::Create(
|
| }
|
| if (!static_cast<VideoCaptureDeviceMFWin*>(device.get())->Init(source))
|
| device.reset();
|
| - } else if (device_name.capture_api_type() ==
|
| - VideoCaptureDevice::Name::DIRECT_SHOW) {
|
| + } else {
|
| + DCHECK_EQ(device_name.capture_api_type(),
|
| + VideoCaptureDevice::Name::DIRECT_SHOW);
|
| device.reset(new VideoCaptureDeviceWin(device_name));
|
| DVLOG(1) << " DirectShow Device: " << device_name.name();
|
| if (!static_cast<VideoCaptureDeviceWin*>(device.get())->Init())
|
| device.reset();
|
| - } else {
|
| - NOTREACHED() << " Couldn't recognize VideoCaptureDevice type";
|
| }
|
| return device.Pass();
|
| }
|
|
|