I would like to propose new package libvpl.
This is Intel GPU accelerator driver dispatcher, which has
the same function with mfx_dispatch package.
mfx_dispatch is used by ffmpeg package, however, recent
ffmpeg complains that libmfx is deprecated and use libvpl
instead.
--
Takashi Yano <[email protected]>
NAME="libvpl"
VERSION=2.10.2
RELEASE=1
LICENSE="MIT"
CATEGORY="Libs"
SUMMARY="Intel® Video Processing Library (Intel® VPL) dispatcher"
DESCRIPTION="This package provides the headers and the library which loads
Intel MediaSDK dlls dynamically. The codec itself is implemented in the dlls
and the Intel GPU."
HOMEPAGE="https://github.com/intel/libvpl/"
SRC_URI="https://github.com/intel/libvpl/archive/refs/tags/v${VERSION}.tar.gz"
inherit cmake
CYGCMAKE_ARGS="
-DBUILD_TOOLS=OFF
-DINSTALL_EXAMPLE_CODE=OFF
"
PKG_NAMES="libvpl libvpl-devel"
libvpl_CONTENTS="usr/bin usr/share"
libvpl_devel_CONTENTS="usr/include/ usr/lib/"
PKG_IGNORE="usr/etc/vpl/vars.sh"
src_install () {
cd ${B}
ninja_install
dosym ../bin/cygvpl-2.dll /usr/lib/libvpl.dll
}
--- origsrc/libvpl-2.10.2/cmake/CompileOptions.cmake 2024-02-21
06:41:06.000000000 +0900
+++ src/libvpl-2.10.2/cmake/CompileOptions.cmake 2024-02-21
16:11:27.826793000 +0900
@@ -51,16 +51,10 @@ else()
add_compile_options("-Werror=format-security")
if(NOT MINGW)
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
- if(NOT CMAKE_BUILD_TYPE MATCHES debug)
- add_definitions("-D_FORTIFY_SOURCE=2")
- endif()
endif()
if(NOT MINGW)
add_compile_options("-fstack-protector-strong")
endif()
- if(NOT MINGW)
- add_link_options("-Wl,-z,relro,-z,now,-z,noexecstack")
- endif()
add_compile_options("-Wall")
if(ENABLE_WARNING_AS_ERROR)
add_compile_options("-Werror")
--- origsrc/libvpl-2.10.2/libvpl/src/mfx_dispatcher_vpl.h 2024-02-21
06:41:06.000000000 +0900
+++ src/libvpl-2.10.2/libvpl/src/mfx_dispatcher_vpl.h 2024-02-21
15:44:48.647479800 +0900
@@ -48,7 +48,7 @@ typedef char CHAR_TYPE;
#define MSDK_LIB_NAME L"libmfxhw64."
#endif
#define ONEVPL_PRIORITY_PATH_VAR L"ONEVPL_PRIORITY_PATH"
-#elif defined(__linux__)
+#elif defined(__linux__) || defined(__CYGWIN__)
// Linux x64
#define MSDK_LIB_NAME "libmfxhw64."
#define ONEVPL_PRIORITY_PATH_VAR "ONEVPL_PRIORITY_PATH"
--- origsrc/libvpl-2.10.2/libvpl/src/mfx_dispatcher_vpl_loader.cpp
2024-02-21 06:41:06.000000000 +0900
+++ src/libvpl-2.10.2/libvpl/src/mfx_dispatcher_vpl_loader.cpp 2024-02-21
15:43:05.531476800 +0900
@@ -409,7 +409,7 @@ mfxU32 LoaderCtxVPL::GetSearchPathsLegac
mfxU32 LoaderCtxVPL::GetSearchPathsSystemDefault(std::list<STRING_TYPE>
&searchDirs) {
searchDirs.clear();
-#ifdef __linux__
+#if defined(__linux__) || defined(__CYGWIN__)
// Add the standard path for libmfx1 install in Ubuntu
searchDirs.push_back("/usr/lib/x86_64-linux-gnu");
--- origsrc/libvpl-2.10.2/libvpl/src/mfx_dispatcher_vpl_lowlatency.cpp
2024-02-21 06:41:06.000000000 +0900
+++ src/libvpl-2.10.2/libvpl/src/mfx_dispatcher_vpl_lowlatency.cpp
2024-02-21 15:46:45.692207300 +0900
@@ -18,6 +18,9 @@
#define LIB_ONEVPL L"libmfx64-gen.dll"
#define LIB_MSDK L"libmfxhw64.dll"
#endif
+#elif defined(__CYGWIN__)
+ #define LIB_ONEVPL "libmfx64-gen.dll"
+ #define LIB_MSDK "libmfxhw64.dll"
#elif defined(__linux__)
// Linux x64
#define LIB_ONEVPL "libmfx-gen.so.1.2"
@@ -191,7 +194,7 @@ mfxStatus LoaderCtxVPL::LoadLibsFromSyst
}
mfxStatus LoaderCtxVPL::LoadLibsFromMultipleDirs(LibType libType) {
-#ifdef __linux__
+#if defined(__linux__) || defined(__CYGWIN__)
// clang-format off
// standard paths for RT installation on Linux
--- origsrc/libvpl-2.10.2/libvpl/src/mfx_dispatcher_vpl_msdk.cpp
2024-02-21 06:41:06.000000000 +0900
+++ src/libvpl-2.10.2/libvpl/src/mfx_dispatcher_vpl_msdk.cpp 2024-02-21
15:47:17.135104700 +0900
@@ -11,7 +11,7 @@
#include "src/mfx_dispatcher_vpl_win.h"
#endif
-#ifdef __linux__
+#if defined(__linux__) || defined(__CYGWIN__)
#include <pthread.h>
#define strncpy_s(dst, size, src, cnt) strncpy((dst), (src), (cnt)) //
NOLINT
#endif
@@ -97,7 +97,7 @@ static const mfxImplementedFunctions msd
(mfxChar**)msdkImplFuncsNames
};
-#ifdef __linux__
+#if defined(__linux__) || defined(__CYGWIN__)
// optional extBuf to limit threads created in MSDK session creation
// to enable, set vplParam.NumExtParam and vplParam.ExtParam before calling
MFXInitEx2()
static const mfxExtThreadsParam extThreadParam = {
@@ -142,7 +142,7 @@ mfxStatus LoaderCtxMSDK::OpenSession(mfx
mfxInitializationParam vplParam = {};
vplParam.AccelerationMode = accelMode;
-#ifdef __linux__
+#if defined(__linux__) || defined(__CYGWIN__)
vplParam.ExtParam = (mfxExtBuffer **)&extParams;
vplParam.NumExtParam = 1;
#else
@@ -183,7 +183,7 @@ mfxAccelerationMode LoaderCtxMSDK::CvtAc
}
mfxStatus LoaderCtxMSDK::GetDefaultAccelType(mfxU32 adapterID, mfxIMPL
*implDefault, mfxU64 *luid) {
-#ifdef __linux__
+#if defined(__linux__) || defined(__CYGWIN__)
// VAAPI only
*implDefault = MFX_IMPL_VIA_VAAPI;
*luid = 0;
@@ -235,7 +235,7 @@ mfxStatus LoaderCtxMSDK::QueryAPIVersion
vplParam.AccelerationMode =
(mfxAccelerationMode)CvtAccelType(MFX_IMPL_HARDWARE, implDefault &
0xFF00);
-#ifdef __linux__
+#if defined(__linux__) || defined(__CYGWIN__)
vplParam.ExtParam = (mfxExtBuffer **)&extParams;
vplParam.NumExtParam = 1;
#else
@@ -279,7 +279,7 @@ mfxStatus LoaderCtxMSDK::QueryMSDKCaps(S
m_libNameFull = libNameFull;
m_deviceID = 0;
-#ifdef __linux__
+#if defined(__linux__) || defined(__CYGWIN__)
// require pthreads to be linked in for MSDK RT to load
pthread_key_t pkey;
if (pthread_key_create(&pkey, NULL) == 0) {
@@ -510,7 +510,7 @@ mfxStatus LoaderCtxMSDK::GetRenderNodeDe
vendorID = 0;
deviceID = 0;
-#if defined(__linux__)
+#if defined(__linux__) || defined(__CYGWIN__)
mfxU32 DRMRenderNodeNum = 128 + adapterID;
std::string nodeStr = std::to_string(DRMRenderNodeNum);
@@ -583,7 +583,7 @@ mfxStatus LoaderCtxMSDK::QueryExtDeviceI
luidArr >>= 8;
}
}
-#elif defined(__linux__)
+#elif defined(__linux__) || defined(__CYGWIN__)
extDeviceID->DRMPrimaryNodeNum = adapterID;
extDeviceID->DRMRenderNodeNum = 128 + adapterID;
#endif