Skip to content

Commit 0b25d62

Browse files
feat(FFmpeg): compile libva dependency
1 parent e3d3442 commit 0b25d62

File tree

8 files changed

+108
-22
lines changed

8 files changed

+108
-22
lines changed

.github/workflows/ci.yml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,18 @@ jobs:
193193
echo "package architecture: $package_arch"
194194
195195
dependencies+=(
196-
"libva-dev:$package_arch"
197-
"libva-glx2:$package_arch"
198-
"libgl1:$package_arch"
199-
"libglx0:$package_arch"
196+
"libdrm-dev:$package_arch"
197+
"libgl-dev:$package_arch"
198+
"libglx-dev:$package_arch"
199+
"libwayland-dev:$package_arch"
200+
"libwayland-client0:$package_arch"
201+
"libx11-dev:$package_arch"
202+
"libx11-xcb-dev:$package_arch"
203+
"libxcb1-dev:$package_arch"
204+
"libxcb-dri3-dev:$package_arch"
205+
"libxcb-xfixes0-dev:$package_arch"
206+
"libxext-dev:$package_arch"
207+
"libxfixes-dev:$package_arch"
200208
)
201209
202210
echo "::group::apt sources"
@@ -425,27 +433,33 @@ jobs:
425433
devel/cmake \
426434
devel/git \
427435
devel/gmake \
436+
devel/libtool \
428437
devel/llvm${{ env.FREEBSD_CLANG_VERSION }} \
438+
devel/meson \
429439
devel/nasm \
430440
devel/ninja \
431441
devel/pkgconf \
442+
graphics/libdrm \
443+
graphics/libglvnd \
444+
graphics/wayland \
432445
multimedia/libass \
433446
multimedia/libv4l \
434-
multimedia/libva \
435447
multimedia/v4l_compat \
436448
print/freetype2 \
437449
security/gnutls \
438450
shells/bash \
439-
x11/libx11 \
451+
x11/libX11 \
440452
x11/libxcb \
441-
x11/libXfixes
453+
x11/libXext \
454+
x11/libXfixes \
455+
x11/xorgproto
442456
443457
# create symlink for shebang bash compatibility
444458
ln -s /usr/local/bin/bash /bin/bash
445459
release: ${{ matrix.bsd_release }}
446460
run: |
447461
git config --global --add safe.directory "*"
448-
sync: nfs
462+
sync: sshfs
449463

450464
- name: Setup ENV
451465
id: root

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ option(BUILD_FFMPEG_NV_CODEC_HEADERS "Build FFmpeg NV Codec Headers" ON)
2828
option(BUILD_FFMPEG_NV_CODEC_HEADERS_PATCHES "Apply FFmpeg NV Codec Headers patches" ON)
2929
option(BUILD_FFMPEG_SVT_AV1 "Build FFmpeg SVT-AV1" ON)
3030
option(BUILD_FFMPEG_SVT_AV1_PATCHES "Apply FFmpeg SVT-AV1 patches" ON)
31-
option(BUILD_FFMPEG_VAAPI "Build FFmpeg with VAAPI support" ON)
32-
option(BUILD_FFMPEG_VAAPI_PATCHES "Apply FFmpeg VAAPI patches" ON)
31+
option(BUILD_FFMPEG_LIBVA "Build FFmpeg with libva support" ON)
32+
option(BUILD_FFMPEG_LIBVA_PATCHES "Apply FFmpeg libva patches" ON)
3333
option(BUILD_FFMPEG_X264 "Build FFmpeg x264" ON)
3434
option(BUILD_FFMPEG_X264_PATCHES "Apply FFmpeg x264 patches" ON)
3535
option(BUILD_FFMPEG_X265 "Build FFmpeg x265" ON)

cmake/ffmpeg/_main.cmake

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ set(FFMPEG_GENERATED_SRC_PATH ${CMAKE_CURRENT_BINARY_DIR}/FFmpeg/FFmpeg)
55
set(AVCODEC_GENERATED_SRC_PATH ${CMAKE_CURRENT_BINARY_DIR}/FFmpeg/libavcodec)
66

77
if(WIN32)
8-
set(BUILD_FFMPEG_VAAPI OFF)
8+
set(BUILD_FFMPEG_LIBVA OFF)
99

1010
# We must disable CUDA and NVENC on ARM64 until following issues is resolved
1111
# https://github.com/FFmpeg/FFmpeg/blob/4e5523c98597a417eb43555933b1075d18ec5f8b/configure#L7443
@@ -16,7 +16,7 @@ elseif(APPLE)
1616
set(BUILD_FFMPEG_AMF OFF)
1717
set(BUILD_FFMPEG_MF OFF)
1818
set(BUILD_FFMPEG_NV_CODEC_HEADERS OFF)
19-
set(BUILD_FFMPEG_VAAPI OFF)
19+
set(BUILD_FFMPEG_LIBVA OFF)
2020
elseif(FREEBSD)
2121
set(BUILD_FFMPEG_AMF OFF)
2222
set(BUILD_FFMPEG_MF OFF)
@@ -43,8 +43,8 @@ if(BUILD_FFMPEG_SVT_AV1)
4343
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/ffmpeg/svt_av1.cmake)
4444
endif()
4545

46-
if(BUILD_FFMPEG_VAAPI)
47-
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/ffmpeg/vaapi.cmake)
46+
if(BUILD_FFMPEG_LIBVA)
47+
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/ffmpeg/libva.cmake)
4848
endif()
4949

5050
if(BUILD_FFMPEG_X264)

cmake/ffmpeg/ffmpeg.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@ list(APPEND FFMPEG_EXTRA_CONFIGURE
3030
--pkg-config-flags='--static'
3131
--extra-cflags='-I${CMAKE_CURRENT_BINARY_DIR_UNIX}/usr/local/include'
3232
--extra-cflags='-I${CMAKE_CURRENT_BINARY_DIR_UNIX}/x264/include'
33+
--extra-cflags='-I${CMAKE_CURRENT_BINARY_DIR_UNIX}/libva/include'
3334
--extra-ldflags='-L${CMAKE_CURRENT_BINARY_DIR_UNIX}/usr/local/lib'
3435
--extra-ldflags='-L${CMAKE_CURRENT_BINARY_DIR_UNIX}/x264/lib'
36+
--extra-ldflags='-L${CMAKE_CURRENT_BINARY_DIR_UNIX}/libva/lib'
3537
--extra-libs='-lpthread -lm'
3638
--disable-all
3739
--disable-autodetect
@@ -75,7 +77,7 @@ if(BUILD_FFMPEG_SVT_AV1)
7577
--enable-encoder=libsvtav1
7678
)
7779
endif()
78-
if(BUILD_FFMPEG_VAAPI)
80+
if(BUILD_FFMPEG_LIBVA)
7981
list(APPEND FFMPEG_EXTRA_CONFIGURE
8082
--enable-vaapi
8183
--enable-encoder=h264_vaapi,hevc_vaapi,av1_vaapi
@@ -162,6 +164,9 @@ endif()
162164
if(BUILD_FFMPEG_SVT_AV1)
163165
add_dependencies(ffmpeg SvtAv1)
164166
endif()
167+
if(BUILD_FFMPEG_LIBVA)
168+
add_dependencies(ffmpeg libva)
169+
endif()
165170
if(BUILD_FFMPEG_X264)
166171
add_dependencies(ffmpeg x264)
167172
endif()

cmake/ffmpeg/libva.cmake

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
CPMGetPackage(libva)
2+
3+
set(LIBVA_GENERATED_SRC_PATH ${libva_SOURCE_DIR})
4+
5+
if(BUILD_FFMPEG_ALL_PATCHES OR BUILD_FFMPEG_LIBVA_PATCHES)
6+
file(GLOB FFMPEG_LIBVA_PATCH_FILES ${CMAKE_CURRENT_SOURCE_DIR}/patches/FFmpeg/libva/*.patch)
7+
8+
foreach(patch_file ${FFMPEG_LIBVA_PATCH_FILES})
9+
APPLY_GIT_PATCH(${LIBVA_GENERATED_SRC_PATH} ${patch_file})
10+
endforeach()
11+
endif()
12+
13+
# libva uses autotools build system
14+
set(WORKING_DIR "${LIBVA_GENERATED_SRC_PATH}")
15+
UNIX_PATH(WORKING_DIR_UNIX ${WORKING_DIR})
16+
17+
# Configure options for libva
18+
list(APPEND LIBVA_EXTRA_CONFIGURE
19+
--prefix=${CMAKE_CURRENT_BINARY_DIR_UNIX}/libva
20+
--enable-static
21+
--disable-shared
22+
--enable-drm
23+
--enable-x11
24+
--enable-glx
25+
--enable-wayland
26+
--without-legacy
27+
)
28+
29+
if(CMAKE_CROSSCOMPILING)
30+
set(LIBVA_EXTRA_CONFIGURE
31+
${LIBVA_EXTRA_CONFIGURE}
32+
--host=${CMAKE_C_COMPILER_TARGET}
33+
)
34+
endif()
35+
36+
# Convert list to string
37+
# configure command will only take the first argument if not converted to string
38+
string(REPLACE ";" " " LIBVA_EXTRA_CONFIGURE "${LIBVA_EXTRA_CONFIGURE}")
39+
40+
add_custom_target(libva ALL
41+
COMMAND ${SHELL_CMD} "${MAKE_COMPILER_FLAGS} ./autogen.sh ${LIBVA_EXTRA_CONFIGURE}"
42+
COMMAND ${SHELL_CMD} "${MAKE_COMPILER_FLAGS} ${MAKE_EXECUTABLE} --jobs=${N_PROC}"
43+
COMMAND ${SHELL_CMD} "${MAKE_COMPILER_FLAGS} ${MAKE_EXECUTABLE} install"
44+
WORKING_DIRECTORY ${WORKING_DIR}
45+
COMMENT "Target: libva"
46+
COMMAND_EXPAND_LISTS
47+
USES_TERMINAL
48+
VERBATIM
49+
BYPRODUCTS
50+
"${CMAKE_CURRENT_BINARY_DIR}/libva/lib/libva.a"
51+
"${CMAKE_CURRENT_BINARY_DIR}/libva/lib/libva-drm.a"
52+
"${CMAKE_CURRENT_BINARY_DIR}/libva/lib/libva-x11.a"
53+
"${CMAKE_CURRENT_BINARY_DIR}/libva/lib/libva-glx.a"
54+
)
55+
add_dependencies(${CMAKE_PROJECT_NAME} libva)
56+
57+
# Install libva headers and libraries
58+
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libva/include/"
59+
DESTINATION include)
60+
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libva/lib/"
61+
DESTINATION lib
62+
FILES_MATCHING PATTERN "*.a")
63+
64+
# Add to PKG_CONFIG_PATH for FFmpeg to find
65+
set(PKG_CONFIG_PATH "${CMAKE_CURRENT_BINARY_DIR_UNIX}/libva/lib/pkgconfig:${PKG_CONFIG_PATH}")

cmake/ffmpeg/vaapi.cmake

Lines changed: 0 additions & 7 deletions
This file was deleted.

package-lock.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,12 @@ CPMDeclarePackage(Boost
2222
"${PATCH_DIRECTORY}/boost/02-no-link-libatomic-clang-windows.patch"
2323
DOWNLOAD_ONLY YES
2424
)
25+
26+
# libva
27+
CPMDeclarePackage(libva
28+
NAME libva
29+
VERSION 2.22.0
30+
GIT_REPOSITORY https://github.com/intel/libva.git
31+
GIT_TAG 2.22.0
32+
DOWNLOAD_ONLY YES
33+
)
File renamed without changes.

0 commit comments

Comments
 (0)