summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorgrunell@chromium.org <grunell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-19 16:11:36 +0000
committergrunell@chromium.org <grunell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-19 16:20:00 +0000
commit9e8975cd1bfab7cd1a9c22c7db6ad7d950186152 (patch)
treee7913c70334fe43c87b7acacf8191c03b3365582 /media
parent3e38f1f9ee9225a78bf89f836de1340f2208340d (diff)
downloadchromium_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.cc15
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);