Index: trunk/src/media/video/capture/win/video_capture_device_mf_win.cc |
=================================================================== |
--- trunk/src/media/video/capture/win/video_capture_device_mf_win.cc (revision 236934) |
+++ trunk/src/media/video/capture/win/video_capture_device_mf_win.cc (working copy) |
@@ -94,11 +94,12 @@ |
return false; |
} |
-bool GetFrameSize(IMFMediaType* type, gfx::Size* frame_size) { |
+bool GetFrameSize(IMFMediaType* type, int* width, int* height) { |
UINT32 width32, height32; |
if (FAILED(MFGetAttributeSize(type, MF_MT_FRAME_SIZE, &width32, &height32))) |
return false; |
- frame_size->SetSize(width32, height32); |
+ *width = width32; |
+ *height = height32; |
return true; |
} |
@@ -120,15 +121,15 @@ |
VideoCaptureCapabilityWin* capability) { |
GUID type_guid; |
if (FAILED(type->GetGUID(MF_MT_SUBTYPE, &type_guid)) || |
- !GetFrameSize(type, &capability->supported_format.frame_size) || |
+ !FormatFromGuid(type_guid, &capability->color) || |
+ !GetFrameSize(type, &capability->width, &capability->height) || |
!GetFrameRate(type, |
&capability->frame_rate_numerator, |
- &capability->frame_rate_denominator) || |
- !FormatFromGuid(type_guid, &capability->supported_format.pixel_format)) { |
+ &capability->frame_rate_denominator)) { |
return false; |
} |
// Keep the integer version of the frame_rate for (potential) returns. |
- capability->supported_format.frame_rate = |
+ capability->frame_rate = |
capability->frame_rate_numerator / capability->frame_rate_denominator; |
return true; |
@@ -336,7 +337,7 @@ |
} |
void VideoCaptureDeviceMFWin::AllocateAndStart( |
- const VideoCaptureParams& params, |
+ const VideoCaptureCapability& capture_format, |
scoped_ptr<VideoCaptureDevice::Client> client) { |
DCHECK(CalledOnValidThread()); |
@@ -353,10 +354,13 @@ |
} |
VideoCaptureCapabilityWin found_capability = |
- capabilities.GetBestMatchedFormat( |
- params.requested_format.frame_size.width(), |
- params.requested_format.frame_size.height(), |
- params.requested_format.frame_rate); |
+ capabilities.GetBestMatchedCapability(capture_format.width, |
+ capture_format.height, |
+ capture_format.frame_rate); |
+ DLOG(INFO) << "Chosen capture format= (" << found_capability.width << "x" |
+ << found_capability.height << ")@(" |
+ << found_capability.frame_rate_numerator << "/" |
+ << found_capability.frame_rate_denominator << ")fps"; |
ScopedComPtr<IMFMediaType> type; |
if (FAILED(hr = reader_->GetNativeMediaType( |
@@ -373,7 +377,7 @@ |
OnError(hr); |
return; |
} |
- capture_format_ = found_capability.supported_format; |
+ current_setting_ = found_capability; |
capture_ = true; |
} |
@@ -420,7 +424,7 @@ |
rotation, |
flip_vert, |
flip_horiz, |
- capture_format_); |
+ current_setting_); |
if (capture_) { |
HRESULT hr = reader_->ReadSample(MF_SOURCE_READER_FIRST_VIDEO_STREAM, 0, |