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

Unified Diff: media/video/capture/win/video_capture_device_mf_win.cc

Issue 558503003: Windows video capture: Remove duplicated code from GetDeviceSupportedFormats* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: media/video/capture/win/video_capture_device_mf_win.cc
diff --git a/media/video/capture/win/video_capture_device_mf_win.cc b/media/video/capture/win/video_capture_device_mf_win.cc
index 0e199da26dd0dd56efe10dcc9d418f8b011a3761..dadfb8ef71019c26fd9db4b463150e7bfc355d99 100644
--- a/media/video/capture/win/video_capture_device_mf_win.cc
+++ b/media/video/capture/win/video_capture_device_mf_win.cc
@@ -26,58 +26,49 @@ const char kVidPrefix[] = "vid_"; // Also contains '\0'.
const char kPidPrefix[] = "pid_"; // Also contains '\0'.
const size_t kVidPidSize = 4;
-static bool GetFrameSize(IMFMediaType* type, gfx::Size* frame_size) {
- UINT32 width32, height32;
- if (FAILED(MFGetAttributeSize(type, MF_MT_FRAME_SIZE, &width32, &height32)))
+static bool FillCapabilitiesFromType(IMFMediaType* type,
+ VideoCaptureFormat* format) {
+ UINT32 width, height;
+ HRESULT hr = MFGetAttributeSize(type, MF_MT_FRAME_SIZE, &width, &height);
+ if (FAILED(hr)) {
+ DLOG(ERROR) << "MFGetAttributeSize failed: "
+ << logging::SystemErrorCodeToString(hr);
return false;
- frame_size->SetSize(width32, height32);
- return true;
-}
+ }
-static bool GetFrameRate(IMFMediaType* type,
- int* frame_rate_numerator,
- int* frame_rate_denominator) {
UINT32 numerator, denominator;
- if (FAILED(MFGetAttributeRatio(type, MF_MT_FRAME_RATE, &numerator,
- &denominator))||
- !denominator) {
+ hr = MFGetAttributeRatio(type, MF_MT_FRAME_RATE, &numerator, &denominator);
+ if (FAILED(hr)) {
+ DLOG(ERROR) << "MFGetAttributeSize failed: "
+ << logging::SystemErrorCodeToString(hr);
return false;
}
- *frame_rate_numerator = numerator;
- *frame_rate_denominator = denominator;
- return true;
-}
-static bool FillCapabilitiesFromType(IMFMediaType* type,
- VideoCaptureCapabilityWin* capability) {
GUID type_guid;
- if (FAILED(type->GetGUID(MF_MT_SUBTYPE, &type_guid)) ||
- !GetFrameSize(type, &capability->supported_format.frame_size) ||
- !GetFrameRate(type,
- &capability->frame_rate_numerator,
- &capability->frame_rate_denominator) ||
- !VideoCaptureDeviceMFWin::FormatFromGuid(type_guid,
- &capability->supported_format.pixel_format)) {
+ hr = type->GetGUID(MF_MT_SUBTYPE, &type_guid);
+ if (FAILED(hr)) {
+ DLOG(ERROR) << "GetGUID failed: " << logging::SystemErrorCodeToString(hr);
return false;
}
- capability->supported_format.frame_rate =
- capability->frame_rate_numerator / capability->frame_rate_denominator;
+ format->frame_size.SetSize(width, height);
+ format->frame_rate =
+ denominator ? static_cast<float>(numerator) / denominator : 0.0f;
+ VideoCaptureDeviceMFWin::FormatFromGuid(type_guid, &format->pixel_format);
return true;
}
-HRESULT FillCapabilities(IMFSourceReader* source,
- CapabilityList* capabilities) {
+// static
+HRESULT VideoCaptureDeviceMFWin::FillCapabilities(
+ IMFSourceReader* source,
+ CapabilityList* capabilities) {
DWORD stream_index = 0;
ScopedComPtr<IMFMediaType> type;
HRESULT hr;
- for (hr = source->GetNativeMediaType(kFirstVideoStream, stream_index,
- type.Receive());
- SUCCEEDED(hr);
- hr = source->GetNativeMediaType(kFirstVideoStream, stream_index,
- type.Receive())) {
+ while (SUCCEEDED(hr = source->GetNativeMediaType(
+ kFirstVideoStream, stream_index, type.Receive()))) {
perkj_chrome 2014/09/19 10:04:55 indentation. while (SUCCEEDED(hr = source->GetNati
VideoCaptureCapabilityWin capability(stream_index++);
- if (FillCapabilitiesFromType(type, &capability))
+ if (FillCapabilitiesFromType(type, &capability.supported_format))
capabilities->Add(capability);
type.Release();
}

Powered by Google App Engine
This is Rietveld 408576698