Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
b7bb79c7
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b7bb79c7
编写于
12月 13, 2018
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
videoio(MSMF): backport WITH_MSMF_DXVA flag
上级
3903174f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
26 addition
and
21 deletion
+26
-21
CMakeLists.txt
CMakeLists.txt
+5
-1
cmake/OpenCVFindLibsVideo.cmake
cmake/OpenCVFindLibsVideo.cmake
+8
-7
modules/videoio/CMakeLists.txt
modules/videoio/CMakeLists.txt
+3
-3
modules/videoio/src/cap_msmf.cpp
modules/videoio/src/cap_msmf.cpp
+10
-10
未找到文件。
CMakeLists.txt
浏览文件 @
b7bb79c7
...
@@ -357,9 +357,12 @@ OCV_OPTION(WITH_LIBV4L "Use libv4l for Video 4 Linux support" OFF
...
@@ -357,9 +357,12 @@ OCV_OPTION(WITH_LIBV4L "Use libv4l for Video 4 Linux support" OFF
OCV_OPTION
(
WITH_DSHOW
"Build VideoIO with DirectShow support"
ON
OCV_OPTION
(
WITH_DSHOW
"Build VideoIO with DirectShow support"
ON
VISIBLE_IF WIN32 AND NOT ARM AND NOT WINRT
VISIBLE_IF WIN32 AND NOT ARM AND NOT WINRT
VERIFY HAVE_DSHOW
)
VERIFY HAVE_DSHOW
)
OCV_OPTION
(
WITH_MSMF
"Build VideoIO with Media Foundation support"
ON
OCV_OPTION
(
WITH_MSMF
"Build VideoIO with Media Foundation support"
NOT MINGW
VISIBLE_IF WIN32
VISIBLE_IF WIN32
VERIFY HAVE_MSMF
)
VERIFY HAVE_MSMF
)
OCV_OPTION
(
WITH_MSMF_DXVA
"Enable hardware acceleration in Media Foundation backend"
WITH_MSMF
VISIBLE_IF WIN32
VERIFY HAVE_MSMF_DXVA
)
OCV_OPTION
(
WITH_XIMEA
"Include XIMEA cameras support"
OFF
OCV_OPTION
(
WITH_XIMEA
"Include XIMEA cameras support"
OFF
VISIBLE_IF NOT ANDROID AND NOT WINRT
VISIBLE_IF NOT ANDROID AND NOT WINRT
VERIFY HAVE_XIMEA
)
VERIFY HAVE_XIMEA
)
...
@@ -1478,6 +1481,7 @@ endif()
...
@@ -1478,6 +1481,7 @@ endif()
if
(
WITH_MSMF OR HAVE_MSMF
)
if
(
WITH_MSMF OR HAVE_MSMF
)
status
(
" Media Foundation:"
HAVE_MSMF THEN YES ELSE NO
)
status
(
" Media Foundation:"
HAVE_MSMF THEN YES ELSE NO
)
status
(
" DXVA:"
HAVE_MSMF_DXVA THEN YES ELSE NO
)
endif
()
endif
()
if
(
WITH_XIMEA OR HAVE_XIMEA
)
if
(
WITH_XIMEA OR HAVE_XIMEA
)
...
...
cmake/OpenCVFindLibsVideo.cmake
浏览文件 @
b7bb79c7
...
@@ -274,14 +274,15 @@ endif(WITH_DSHOW)
...
@@ -274,14 +274,15 @@ endif(WITH_DSHOW)
ocv_clear_vars
(
HAVE_MSMF
)
ocv_clear_vars
(
HAVE_MSMF
)
if
(
WITH_MSMF
)
if
(
WITH_MSMF
)
check_include_file
(
Mfapi.h HAVE_MSMF
)
check_include_file
(
Mfapi.h HAVE_MSMF
)
check_include_file
(
D3D11.h D3D11_found
)
set
(
HAVE_MSMF_DXVA
""
)
check_include_file
(
D3d11_4.h D3D11_4_found
)
if
(
WITH_MSMF_DXVA
)
if
(
D3D11_found AND D3D11_4_found
)
check_include_file
(
D3D11.h D3D11_found
)
set
(
HAVE_DXVA YES
)
check_include_file
(
D3d11_4.h D3D11_4_found
)
else
()
if
(
D3D11_found AND D3D11_4_found
)
set
(
HAVE_DXVA NO
)
set
(
HAVE_MSMF_DXVA YES
)
endif
()
endif
()
endif
()
endif
(
WITH_MSMF
)
endif
()
# --- Extra HighGUI and VideoIO libs on Windows ---
# --- Extra HighGUI and VideoIO libs on Windows ---
if
(
WIN32
)
if
(
WIN32
)
...
...
modules/videoio/CMakeLists.txt
浏览文件 @
b7bb79c7
...
@@ -85,11 +85,11 @@ if (WIN32 AND HAVE_DSHOW)
...
@@ -85,11 +85,11 @@ if (WIN32 AND HAVE_DSHOW)
endif
()
endif
()
endif
()
endif
()
if
(
WIN32 AND HAVE_MSMF
)
if
(
WIN32 AND HAVE_MSMF
)
list
(
APPEND videoio_srcs
${
CMAKE_CURRENT_LIST_DIR
}
/src/cap_msmf.hpp
)
list
(
APPEND videoio_srcs
${
CMAKE_CURRENT_LIST_DIR
}
/src/cap_msmf.hpp
)
list
(
APPEND videoio_srcs
${
CMAKE_CURRENT_LIST_DIR
}
/src/cap_msmf.cpp
)
list
(
APPEND videoio_srcs
${
CMAKE_CURRENT_LIST_DIR
}
/src/cap_msmf.cpp
)
if
(
HAVE
_DXVA
)
if
(
HAVE_MSMF
_DXVA
)
add_definitions
(
-DHAVE_DXVA
)
add_definitions
(
-DHAVE_
MSMF_
DXVA
)
endif
()
endif
()
endif
()
endif
()
...
...
modules/videoio/src/cap_msmf.cpp
浏览文件 @
b7bb79c7
...
@@ -55,15 +55,15 @@
...
@@ -55,15 +55,15 @@
#include <windows.h>
#include <windows.h>
#include <guiddef.h>
#include <guiddef.h>
#include <mfidl.h>
#include <mfidl.h>
#include <
M
fapi.h>
#include <
m
fapi.h>
#include <mfplay.h>
#include <mfplay.h>
#include <mfobjects.h>
#include <mfobjects.h>
#include <tchar.h>
#include <tchar.h>
#include <strsafe.h>
#include <strsafe.h>
#include <Mfreadwrite.h>
#include <Mfreadwrite.h>
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
#include <
D3D
11.h>
#include <
d3d
11.h>
#include <
D
3d11_4.h>
#include <
d
3d11_4.h>
#endif
#endif
#include <new>
#include <new>
#include <map>
#include <map>
...
@@ -81,7 +81,7 @@
...
@@ -81,7 +81,7 @@
#pragma comment(lib, "mfuuid")
#pragma comment(lib, "mfuuid")
#pragma comment(lib, "Strmiids")
#pragma comment(lib, "Strmiids")
#pragma comment(lib, "Mfreadwrite")
#pragma comment(lib, "Mfreadwrite")
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
#pragma comment(lib, "d3d11")
#pragma comment(lib, "d3d11")
// MFCreateDXGIDeviceManager() is available since Win8 only.
// MFCreateDXGIDeviceManager() is available since Win8 only.
// To avoid OpenCV loading failure on Win7 use dynamic detection of this symbol.
// To avoid OpenCV loading failure on Win7 use dynamic detection of this symbol.
...
@@ -710,7 +710,7 @@ protected:
...
@@ -710,7 +710,7 @@ protected:
cv
::
String
filename
;
cv
::
String
filename
;
int
camid
;
int
camid
;
MSMFCapture_Mode
captureMode
;
MSMFCapture_Mode
captureMode
;
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
_ComPtr
<
ID3D11Device
>
D3DDev
;
_ComPtr
<
ID3D11Device
>
D3DDev
;
_ComPtr
<
IMFDXGIDeviceManager
>
D3DMgr
;
_ComPtr
<
IMFDXGIDeviceManager
>
D3DMgr
;
#endif
#endif
...
@@ -735,7 +735,7 @@ CvCapture_MSMF::CvCapture_MSMF():
...
@@ -735,7 +735,7 @@ CvCapture_MSMF::CvCapture_MSMF():
filename
(
""
),
filename
(
""
),
camid
(
-
1
),
camid
(
-
1
),
captureMode
(
MODE_SW
),
captureMode
(
MODE_SW
),
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
D3DDev
(
NULL
),
D3DDev
(
NULL
),
D3DMgr
(
NULL
),
D3DMgr
(
NULL
),
#endif
#endif
...
@@ -774,7 +774,7 @@ void CvCapture_MSMF::close()
...
@@ -774,7 +774,7 @@ void CvCapture_MSMF::close()
bool
CvCapture_MSMF
::
configureHW
(
bool
enable
)
bool
CvCapture_MSMF
::
configureHW
(
bool
enable
)
{
{
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
if
((
enable
&&
D3DMgr
&&
D3DDev
)
||
(
!
enable
&&
!
D3DMgr
&&
!
D3DDev
))
if
((
enable
&&
D3DMgr
&&
D3DDev
)
||
(
!
enable
&&
!
D3DMgr
&&
!
D3DDev
))
return
true
;
return
true
;
if
(
!
pMFCreateDXGIDeviceManager_initialized
)
if
(
!
pMFCreateDXGIDeviceManager_initialized
)
...
@@ -971,7 +971,7 @@ bool CvCapture_MSMF::open(int _index)
...
@@ -971,7 +971,7 @@ bool CvCapture_MSMF::open(int _index)
SUCCEEDED
(
srAttr
->
SetUINT32
(
MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING
,
FALSE
))
&&
SUCCEEDED
(
srAttr
->
SetUINT32
(
MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING
,
FALSE
))
&&
SUCCEEDED
(
srAttr
->
SetUINT32
(
MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING
,
TRUE
)))
SUCCEEDED
(
srAttr
->
SetUINT32
(
MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING
,
TRUE
)))
{
{
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
if
(
D3DMgr
)
if
(
D3DMgr
)
srAttr
->
SetUnknown
(
MF_SOURCE_READER_D3D_MANAGER
,
D3DMgr
.
Get
());
srAttr
->
SetUnknown
(
MF_SOURCE_READER_D3D_MANAGER
,
D3DMgr
.
Get
());
#endif
#endif
...
@@ -1022,7 +1022,7 @@ bool CvCapture_MSMF::open(const cv::String& _filename)
...
@@ -1022,7 +1022,7 @@ bool CvCapture_MSMF::open(const cv::String& _filename)
SUCCEEDED
(
srAttr
->
SetUINT32
(
MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING
,
true
))
SUCCEEDED
(
srAttr
->
SetUINT32
(
MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING
,
true
))
)
)
{
{
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
if
(
D3DMgr
)
if
(
D3DMgr
)
srAttr
->
SetUnknown
(
MF_SOURCE_READER_D3D_MANAGER
,
D3DMgr
.
Get
());
srAttr
->
SetUnknown
(
MF_SOURCE_READER_D3D_MANAGER
,
D3DMgr
.
Get
());
#endif
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录