diff options
author | grunell@chromium.org <grunell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-19 16:11:36 +0000 |
---|---|---|
committer | grunell@chromium.org <grunell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-19 16:20:00 +0000 |
commit | 9e8975cd1bfab7cd1a9c22c7db6ad7d950186152 (patch) | |
tree | e7913c70334fe43c87b7acacf8191c03b3365582 /media | |
parent | 3e38f1f9ee9225a78bf89f836de1340f2208340d (diff) | |
download | chromium_src-9e8975cd1bfab7cd1a9c22c7db6ad7d950186152.zip chromium_src-9e8975cd1bfab7cd1a9c22c7db6ad7d950186152.tar.gz chromium_src-9e8975cd1bfab7cd1a9c22c7db6ad7d950186152.tar.bz2 |
Fix some error states in VideoCaptureDeviceWin::AllocateAndStart.
Review URL: https://codereview.chromium.org/482413002
Cr-Commit-Position: refs/heads/master@{#290580}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290580 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/video/capture/win/video_capture_device_win.cc | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/media/video/capture/win/video_capture_device_win.cc b/media/video/capture/win/video_capture_device_win.cc index 29ccf5a..a7d1f10 100644 --- a/media/video/capture/win/video_capture_device_win.cc +++ b/media/video/capture/win/video_capture_device_win.cc @@ -312,9 +312,14 @@ void VideoCaptureDeviceWin::AllocateAndStart( ScopedMediaType media_type; // Get the windows capability from the capture device. + // GetStreamCaps can return S_FALSE which we consider an error. Therefore the + // FAILED macro can't be used. hr = stream_config->GetStreamCaps( found_capability.stream_index, media_type.Receive(), caps.get()); - if (SUCCEEDED(hr)) { + if (hr != S_OK) { + SetErrorState("Failed to get capture device capabilities"); + return; + } else { if (media_type->formattype == FORMAT_VideoInfo) { VIDEOINFOHEADER* h = reinterpret_cast<VIDEOINFOHEADER*>(media_type->pbFormat); @@ -325,11 +330,13 @@ void VideoCaptureDeviceWin::AllocateAndStart( sink_filter_->SetRequestedMediaFormat(format); // Order the capture device to use this format. hr = stream_config->SetFormat(media_type.get()); + if (FAILED(hr)) { + // TODO(grunell): Log the error. http://crbug.com/405016. + SetErrorState("Failed to set capture device output format"); + return; + } } - if (FAILED(hr)) - SetErrorState("Failed to set capture device output format"); - if (format.pixel_format == PIXEL_FORMAT_MJPEG && !mjpg_filter_.get()) { // Create MJPG filter if we need it. hr = mjpg_filter_.CreateInstance(CLSID_MjpegDec, NULL, CLSCTX_INPROC); |