Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
c4ca9a7b
O
Opencv
项目概览
Greenplum
/
Opencv
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
c4ca9a7b
编写于
4月 15, 2021
作者:
M
Maksim Shabunin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Initial oneVPL support
上级
e68657cd
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
47 addition
and
13 deletion
+47
-13
modules/videoio/cmake/detect_msdk.cmake
modules/videoio/cmake/detect_msdk.cmake
+16
-1
modules/videoio/src/cap_mfx_common.hpp
modules/videoio/src/cap_mfx_common.hpp
+31
-12
未找到文件。
modules/videoio/cmake/detect_msdk.cmake
浏览文件 @
c4ca9a7b
set
(
MFX_DEFS
""
)
if
(
NOT HAVE_MFX
)
find_package
(
VPL
)
if
(
VPL_FOUND
)
set
(
MFX_INCLUDE_DIRS
""
)
set
(
MFX_LIBRARIES
"
${
VPL_IMPORTED_TARGETS
}
"
)
set
(
HAVE_MFX TRUE
)
list
(
APPEND MFX_DEFS
"HAVE_ONEVPL"
)
endif
()
endif
()
if
(
NOT HAVE_MFX
)
set
(
paths
"
${
MFX_HOME
}
"
ENV
"MFX_HOME"
ENV
"INTELMEDIASDKROOT"
)
if
(
MSVC
)
...
...
@@ -24,6 +37,7 @@ if(NOT HAVE_MFX)
set
(
HAVE_MFX TRUE
)
set
(
MFX_INCLUDE_DIRS
"
${
MFX_INCLUDE
}
"
)
set
(
MFX_LIBRARIES
"
${
MFX_LIBRARY
}
"
)
list
(
APPEND MFX_DEFS
"HAVE_MFX_PLUGIN"
)
endif
()
endif
()
...
...
@@ -49,7 +63,8 @@ if(HAVE_MFX AND UNIX)
endif
()
if
(
HAVE_MFX
)
ocv_add_external_target
(
mediasdk
"
${
MFX_INCLUDE_DIRS
}
"
"
${
MFX_LIBRARIES
}
"
"HAVE_MFX"
)
list
(
APPEND MFX_DEFS
"HAVE_MFX"
)
ocv_add_external_target
(
mediasdk
"
${
MFX_INCLUDE_DIRS
}
"
"
${
MFX_LIBRARIES
}
"
"
${
MFX_DEFS
}
"
)
endif
()
set
(
HAVE_MFX
${
HAVE_MFX
}
PARENT_SCOPE
)
modules/videoio/src/cap_mfx_common.hpp
浏览文件 @
c4ca9a7b
...
...
@@ -12,12 +12,22 @@
#include <fstream>
#include <sstream>
#include <mfxcommon.h>
#include <mfxstructures.h>
#include <mfxvideo++.h>
#include <mfxvp8.h>
#include <mfxjpeg.h>
#include <mfxplugin++.h>
#ifdef HAVE_ONEVPL
# include <vpl/mfxcommon.h>
# include <vpl/mfxstructures.h>
# include <vpl/mfxvideo++.h>
# include <vpl/mfxvp8.h>
# include <vpl/mfxjpeg.h>
#else
# include <mfxcommon.h>
# include <mfxstructures.h>
# include <mfxvideo++.h>
# include <mfxvp8.h>
# include <mfxjpeg.h>
# ifdef HAVE_MFX_PLUGIN
# include <mfxplugin++.h>
# endif
#endif
// //
// Debug helpers //
...
...
@@ -93,8 +103,6 @@ inline std::string mfxStatusToString(mfxStatus s) {
case
MFX_ERR_UNDEFINED_BEHAVIOR
:
return
"MFX_ERR_UNDEFINED_BEHAVIOR"
;
case
MFX_ERR_DEVICE_FAILED
:
return
"MFX_ERR_DEVICE_FAILED"
;
case
MFX_ERR_MORE_BITSTREAM
:
return
"MFX_ERR_MORE_BITSTREAM"
;
case
MFX_ERR_INCOMPATIBLE_AUDIO_PARAM
:
return
"MFX_ERR_INCOMPATIBLE_AUDIO_PARAM"
;
case
MFX_ERR_INVALID_AUDIO_PARAM
:
return
"MFX_ERR_INVALID_AUDIO_PARAM"
;
case
MFX_ERR_GPU_HANG
:
return
"MFX_ERR_GPU_HANG"
;
case
MFX_ERR_REALLOC_SURFACE
:
return
"MFX_ERR_REALLOC_SURFACE"
;
case
MFX_WRN_IN_EXECUTION
:
return
"MFX_WRN_IN_EXECUTION"
;
...
...
@@ -105,8 +113,7 @@ inline std::string mfxStatusToString(mfxStatus s) {
case
MFX_WRN_VALUE_NOT_CHANGED
:
return
"MFX_WRN_VALUE_NOT_CHANGED"
;
case
MFX_WRN_OUT_OF_RANGE
:
return
"MFX_WRN_OUT_OF_RANGE"
;
case
MFX_WRN_FILTER_SKIPPED
:
return
"MFX_WRN_FILTER_SKIPPED"
;
case
MFX_WRN_INCOMPATIBLE_AUDIO_PARAM
:
return
"MFX_WRN_INCOMPATIBLE_AUDIO_PARAM"
;
default:
return
"<Invalid mfxStatus>"
;
default:
return
"<Invalid or unknown mfxStatus>"
;
}
}
...
...
@@ -174,33 +181,45 @@ class Plugin
public:
static
Plugin
*
loadEncoderPlugin
(
MFXVideoSession
&
session
,
mfxU32
codecId
)
{
#ifdef HAVE_MFX_PLUGIN
static
const
mfxPluginUID
hevc_enc_uid
=
{
0x6f
,
0xad
,
0xc7
,
0x91
,
0xa0
,
0xc2
,
0xeb
,
0x47
,
0x9a
,
0xb6
,
0xdc
,
0xd5
,
0xea
,
0x9d
,
0xa3
,
0x47
};
if
(
codecId
==
MFX_CODEC_HEVC
)
return
new
Plugin
(
session
,
hevc_enc_uid
);
#else
CV_UNUSED
(
session
);
CV_UNUSED
(
codecId
);
#endif
return
0
;
}
static
Plugin
*
loadDecoderPlugin
(
MFXVideoSession
&
session
,
mfxU32
codecId
)
{
#ifdef HAVE_MFX_PLUGIN
static
const
mfxPluginUID
hevc_dec_uid
=
{
0x33
,
0xa6
,
0x1c
,
0x0b
,
0x4c
,
0x27
,
0x45
,
0x4c
,
0xa8
,
0xd8
,
0x5d
,
0xde
,
0x75
,
0x7c
,
0x6f
,
0x8e
};
if
(
codecId
==
MFX_CODEC_HEVC
)
return
new
Plugin
(
session
,
hevc_dec_uid
);
#else
CV_UNUSED
(
session
);
CV_UNUSED
(
codecId
);
#endif
return
0
;
}
~
Plugin
()
{
#ifdef HAVE_MFX_PLUGIN
if
(
isGood
())
MFXVideoUSER_UnLoad
(
session
,
&
uid
);
#endif
}
bool
isGood
()
const
{
return
res
>=
MFX_ERR_NONE
;
}
private:
MFXVideoSession
&
session
;
mfxPluginUID
uid
;
mfxStatus
res
;
private:
#ifdef HAVE_MFX_PLUGIN
MFXVideoSession
&
session
;
mfxPluginUID
uid
;
Plugin
(
MFXVideoSession
&
_session
,
mfxPluginUID
_uid
)
:
session
(
_session
),
uid
(
_uid
)
{
res
=
MFXVideoUSER_Load
(
session
,
&
uid
,
1
);
}
#endif
Plugin
(
const
Plugin
&
);
Plugin
&
operator
=
(
const
Plugin
&
);
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录