summaryrefslogtreecommitdiffstats
path: root/media/video
diff options
context:
space:
mode:
Diffstat (limited to 'media/video')
-rw-r--r--media/video/capture/win/video_capture_device_mf_win.cc27
-rw-r--r--media/video/capture/win/video_capture_device_mf_win.h7
-rw-r--r--media/video/capture/win/video_capture_device_win.cc12
3 files changed, 10 insertions, 36 deletions
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 67fd979..131bc7e 100644
--- a/media/video/capture/win/video_capture_device_mf_win.cc
+++ b/media/video/capture/win/video_capture_device_mf_win.cc
@@ -12,7 +12,6 @@
#include "base/synchronization/waitable_event.h"
#include "base/sys_string_conversions.h"
#include "base/win/scoped_co_mem.h"
-#include "base/win/windows_version.h"
#include "media/video/capture/win/capability_list_win.h"
using base::win::ScopedCoMem;
@@ -144,23 +143,6 @@ HRESULT FillCapabilities(IMFSourceReader* source,
return (hr == MF_E_NO_MORE_TYPES) ? S_OK : hr;
}
-bool LoadMediaFoundationDlls() {
- static const wchar_t* const kMfDLLs[] = {
- L"%WINDIR%\\system32\\mf.dll",
- L"%WINDIR%\\system32\\mfplat.dll",
- L"%WINDIR%\\system32\\mfreadwrite.dll",
- };
-
- for (int i = 0; i < arraysize(kMfDLLs); ++i) {
- wchar_t path[MAX_PATH] = {0};
- ExpandEnvironmentStringsW(kMfDLLs[i], path, arraysize(path));
- if (!LoadLibraryExW(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH))
- return false;
- }
-
- return true;
-}
-
} // namespace
class MFReaderCallback
@@ -240,15 +222,6 @@ class MFReaderCallback
};
// static
-bool VideoCaptureDeviceMFWin::PlatformSupported() {
- if (base::win::GetVersion() < base::win::VERSION_VISTA)
- return false;
-
- static bool g_dlls_available = LoadMediaFoundationDlls();
- return g_dlls_available;
-}
-
-// static
void VideoCaptureDeviceMFWin::GetDeviceNames(Names* device_names) {
ScopedCoMem<IMFActivate*> devices;
UINT32 count;
diff --git a/media/video/capture/win/video_capture_device_mf_win.h b/media/video/capture/win/video_capture_device_mf_win.h
index 773b1ed..6f229b05 100644
--- a/media/video/capture/win/video_capture_device_mf_win.h
+++ b/media/video/capture/win/video_capture_device_mf_win.h
@@ -46,13 +46,6 @@ class VideoCaptureDeviceMFWin
virtual void DeAllocate() OVERRIDE;
virtual const Name& device_name() OVERRIDE;
- // Returns true iff the current platform supports the Media Foundation API
- // and that the DLLs are available. On Vista this API is an optional download
- // but the API is advertised as a part of Windows 7 and onwards. However,
- // we've seen that the required DLLs are not available in some Win7
- // distributions such as Windows 7 N and Windows 7 KN.
- static bool PlatformSupported();
-
static void GetDeviceNames(Names* device_names);
// Captured a new video frame.
diff --git a/media/video/capture/win/video_capture_device_win.cc b/media/video/capture/win/video_capture_device_win.cc
index 875ca00..e83b15e6d 100644
--- a/media/video/capture/win/video_capture_device_win.cc
+++ b/media/video/capture/win/video_capture_device_win.cc
@@ -10,6 +10,7 @@
#include "base/string_util.h"
#include "base/sys_string_conversions.h"
#include "base/win/scoped_variant.h"
+#include "base/win/windows_version.h"
#include "media/video/capture/win/video_capture_device_mf_win.h"
using base::win::ScopedComPtr;
@@ -143,13 +144,20 @@ void DeleteMediaType(AM_MEDIA_TYPE* mt) {
}
}
+bool ShouldUseMediaFoundationAPI() {
+ // Although Media Foundation is supported on Vista, it requires a special
+ // update to be available. For now we don't risk it and use DirectShow
+ // on Vista but MF on Win7 and higher.
+ return base::win::GetVersion() >= base::win::VERSION_WIN7;
+}
+
} // namespace
namespace media {
// static
void VideoCaptureDevice::GetDeviceNames(Names* device_names) {
- if (VideoCaptureDeviceMFWin::PlatformSupported()) {
+ if (ShouldUseMediaFoundationAPI()) {
VideoCaptureDeviceMFWin::GetDeviceNames(device_names);
} else {
VideoCaptureDeviceWin::GetDeviceNames(device_names);
@@ -159,7 +167,7 @@ void VideoCaptureDevice::GetDeviceNames(Names* device_names) {
// static
VideoCaptureDevice* VideoCaptureDevice::Create(const Name& device_name) {
VideoCaptureDevice* ret = NULL;
- if (VideoCaptureDeviceMFWin::PlatformSupported()) {
+ if (ShouldUseMediaFoundationAPI()) {
scoped_ptr<VideoCaptureDeviceMFWin> device(
new VideoCaptureDeviceMFWin(device_name));
if (device->Init())