Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
82a02d85
Commit
82a02d85
authored
Dec 14, 2018
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #13436 from alalek:cmake_with_msmf_dxva_3.4
parents
3903174f
b7bb79c7
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
26 additions
and
21 deletions
+26
-21
CMakeLists.txt
CMakeLists.txt
+5
-1
OpenCVFindLibsVideo.cmake
cmake/OpenCVFindLibsVideo.cmake
+8
-7
CMakeLists.txt
modules/videoio/CMakeLists.txt
+3
-3
cap_msmf.cpp
modules/videoio/src/cap_msmf.cpp
+10
-10
No files found.
CMakeLists.txt
View file @
82a02d85
...
...
@@ -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
VISIBLE_IF WIN32 AND NOT ARM AND NOT WINRT
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
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
VISIBLE_IF NOT ANDROID AND NOT WINRT
VERIFY HAVE_XIMEA
)
...
...
@@ -1478,6 +1481,7 @@ endif()
if
(
WITH_MSMF OR HAVE_MSMF
)
status
(
" Media Foundation:"
HAVE_MSMF THEN YES ELSE NO
)
status
(
" DXVA:"
HAVE_MSMF_DXVA THEN YES ELSE NO
)
endif
()
if
(
WITH_XIMEA OR HAVE_XIMEA
)
...
...
cmake/OpenCVFindLibsVideo.cmake
View file @
82a02d85
...
...
@@ -274,14 +274,15 @@ endif(WITH_DSHOW)
ocv_clear_vars
(
HAVE_MSMF
)
if
(
WITH_MSMF
)
check_include_file
(
Mfapi.h HAVE_MSMF
)
check_include_file
(
D3D11.h D3D11_found
)
check_include_file
(
D3d11_4.h D3D11_4_found
)
if
(
D3D11_found AND D3D11_4_found
)
set
(
HAVE_DXVA YES
)
else
()
set
(
HAVE_DXVA NO
)
set
(
HAVE_MSMF_DXVA
""
)
if
(
WITH_MSMF_DXVA
)
check_include_file
(
D3D11.h D3D11_found
)
check_include_file
(
D3d11_4.h D3D11_4_found
)
if
(
D3D11_found AND D3D11_4_found
)
set
(
HAVE_MSMF_DXVA YES
)
endif
()
endif
()
endif
(
WITH_MSMF
)
endif
()
# --- Extra HighGUI and VideoIO libs on Windows ---
if
(
WIN32
)
...
...
modules/videoio/CMakeLists.txt
View file @
82a02d85
...
...
@@ -85,11 +85,11 @@ if (WIN32 AND HAVE_DSHOW)
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.cpp
)
if
(
HAVE
_DXVA
)
add_definitions
(
-DHAVE_DXVA
)
if
(
HAVE_MSMF
_DXVA
)
add_definitions
(
-DHAVE_
MSMF_
DXVA
)
endif
()
endif
()
...
...
modules/videoio/src/cap_msmf.cpp
View file @
82a02d85
...
...
@@ -55,15 +55,15 @@
#include <windows.h>
#include <guiddef.h>
#include <mfidl.h>
#include <
M
fapi.h>
#include <
m
fapi.h>
#include <mfplay.h>
#include <mfobjects.h>
#include <tchar.h>
#include <strsafe.h>
#include <Mfreadwrite.h>
#ifdef HAVE_DXVA
#include <
D3D
11.h>
#include <
D
3d11_4.h>
#ifdef HAVE_
MSMF_
DXVA
#include <
d3d
11.h>
#include <
d
3d11_4.h>
#endif
#include <new>
#include <map>
...
...
@@ -81,7 +81,7 @@
#pragma comment(lib, "mfuuid")
#pragma comment(lib, "Strmiids")
#pragma comment(lib, "Mfreadwrite")
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
#pragma comment(lib, "d3d11")
// MFCreateDXGIDeviceManager() is available since Win8 only.
// To avoid OpenCV loading failure on Win7 use dynamic detection of this symbol.
...
...
@@ -710,7 +710,7 @@ protected:
cv
::
String
filename
;
int
camid
;
MSMFCapture_Mode
captureMode
;
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
_ComPtr
<
ID3D11Device
>
D3DDev
;
_ComPtr
<
IMFDXGIDeviceManager
>
D3DMgr
;
#endif
...
...
@@ -735,7 +735,7 @@ CvCapture_MSMF::CvCapture_MSMF():
filename
(
""
),
camid
(
-
1
),
captureMode
(
MODE_SW
),
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
D3DDev
(
NULL
),
D3DMgr
(
NULL
),
#endif
...
...
@@ -774,7 +774,7 @@ void CvCapture_MSMF::close()
bool
CvCapture_MSMF
::
configureHW
(
bool
enable
)
{
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
if
((
enable
&&
D3DMgr
&&
D3DDev
)
||
(
!
enable
&&
!
D3DMgr
&&
!
D3DDev
))
return
true
;
if
(
!
pMFCreateDXGIDeviceManager_initialized
)
...
...
@@ -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_ADVANCED_VIDEO_PROCESSING
,
TRUE
)))
{
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
if
(
D3DMgr
)
srAttr
->
SetUnknown
(
MF_SOURCE_READER_D3D_MANAGER
,
D3DMgr
.
Get
());
#endif
...
...
@@ -1022,7 +1022,7 @@ bool CvCapture_MSMF::open(const cv::String& _filename)
SUCCEEDED
(
srAttr
->
SetUINT32
(
MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING
,
true
))
)
{
#ifdef HAVE_DXVA
#ifdef HAVE_
MSMF_
DXVA
if
(
D3DMgr
)
srAttr
->
SetUnknown
(
MF_SOURCE_READER_D3D_MANAGER
,
D3DMgr
.
Get
());
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment