Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 22 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,18 @@ jobs:
echo "package architecture: $package_arch"

dependencies+=(
"libva-dev:$package_arch"
"libva-glx2:$package_arch"
"libgl1:$package_arch"
"libglx0:$package_arch"
"libdrm-dev:$package_arch"
"libgl-dev:$package_arch"
"libglx-dev:$package_arch"
"libwayland-dev:$package_arch"
"libwayland-client0:$package_arch"
"libx11-dev:$package_arch"
"libx11-xcb-dev:$package_arch"
"libxcb1-dev:$package_arch"
"libxcb-dri3-dev:$package_arch"
"libxcb-xfixes0-dev:$package_arch"
"libxext-dev:$package_arch"
"libxfixes-dev:$package_arch"
)

echo "::group::apt sources"
Expand Down Expand Up @@ -425,27 +433,33 @@ jobs:
devel/cmake \
devel/git \
devel/gmake \
devel/libtool \
devel/llvm${{ env.FREEBSD_CLANG_VERSION }} \
devel/meson \
devel/nasm \
devel/ninja \
devel/pkgconf \
graphics/libdrm \
graphics/libglvnd \
graphics/wayland \
multimedia/libass \
multimedia/libv4l \
multimedia/libva \
multimedia/v4l_compat \
print/freetype2 \
security/gnutls \
shells/bash \
x11/libx11 \
x11/libX11 \
x11/libxcb \
x11/libXfixes
x11/libXext \
x11/libXfixes \
x11/xorgproto

# create symlink for shebang bash compatibility
ln -s /usr/local/bin/bash /bin/bash
release: ${{ matrix.bsd_release }}
run: |
git config --global --add safe.directory "*"
sync: nfs
sync: rsync

- name: Setup ENV
id: root
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ option(BUILD_FFMPEG_NV_CODEC_HEADERS "Build FFmpeg NV Codec Headers" ON)
option(BUILD_FFMPEG_NV_CODEC_HEADERS_PATCHES "Apply FFmpeg NV Codec Headers patches" ON)
option(BUILD_FFMPEG_SVT_AV1 "Build FFmpeg SVT-AV1" ON)
option(BUILD_FFMPEG_SVT_AV1_PATCHES "Apply FFmpeg SVT-AV1 patches" ON)
option(BUILD_FFMPEG_VAAPI "Build FFmpeg with VAAPI support" ON)
option(BUILD_FFMPEG_VAAPI_PATCHES "Apply FFmpeg VAAPI patches" ON)
option(BUILD_FFMPEG_LIBVA "Build FFmpeg with libva support" ON)
option(BUILD_FFMPEG_LIBVA_PATCHES "Apply FFmpeg libva patches" ON)
option(BUILD_FFMPEG_X264 "Build FFmpeg x264" ON)
option(BUILD_FFMPEG_X264_PATCHES "Apply FFmpeg x264 patches" ON)
option(BUILD_FFMPEG_X265 "Build FFmpeg x265" ON)
Expand Down
8 changes: 4 additions & 4 deletions cmake/ffmpeg/_main.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set(FFMPEG_GENERATED_SRC_PATH ${CMAKE_CURRENT_BINARY_DIR}/FFmpeg/FFmpeg)
set(AVCODEC_GENERATED_SRC_PATH ${CMAKE_CURRENT_BINARY_DIR}/FFmpeg/libavcodec)

if(WIN32)
set(BUILD_FFMPEG_VAAPI OFF)
set(BUILD_FFMPEG_LIBVA OFF)

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

if(BUILD_FFMPEG_VAAPI)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/ffmpeg/vaapi.cmake)
if(BUILD_FFMPEG_LIBVA)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/ffmpeg/libva.cmake)
endif()

if(BUILD_FFMPEG_X264)
Expand Down
7 changes: 6 additions & 1 deletion cmake/ffmpeg/ffmpeg.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,10 @@ list(APPEND FFMPEG_EXTRA_CONFIGURE
--pkg-config-flags='--static'
--extra-cflags='-I${CMAKE_CURRENT_BINARY_DIR_UNIX}/usr/local/include'
--extra-cflags='-I${CMAKE_CURRENT_BINARY_DIR_UNIX}/x264/include'
--extra-cflags='-I${CMAKE_CURRENT_BINARY_DIR_UNIX}/libva/include'
--extra-ldflags='-L${CMAKE_CURRENT_BINARY_DIR_UNIX}/usr/local/lib'
--extra-ldflags='-L${CMAKE_CURRENT_BINARY_DIR_UNIX}/x264/lib'
--extra-ldflags='-L${CMAKE_CURRENT_BINARY_DIR_UNIX}/libva/lib'
--extra-libs='-lpthread -lm'
--disable-all
--disable-autodetect
Expand Down Expand Up @@ -75,7 +77,7 @@ if(BUILD_FFMPEG_SVT_AV1)
--enable-encoder=libsvtav1
)
endif()
if(BUILD_FFMPEG_VAAPI)
if(BUILD_FFMPEG_LIBVA)
list(APPEND FFMPEG_EXTRA_CONFIGURE
--enable-vaapi
--enable-encoder=h264_vaapi,hevc_vaapi,av1_vaapi
Expand Down Expand Up @@ -162,6 +164,9 @@ endif()
if(BUILD_FFMPEG_SVT_AV1)
add_dependencies(ffmpeg SvtAv1)
endif()
if(BUILD_FFMPEG_LIBVA)
add_dependencies(ffmpeg libva)
endif()
if(BUILD_FFMPEG_X264)
add_dependencies(ffmpeg x264)
endif()
Expand Down
71 changes: 71 additions & 0 deletions cmake/ffmpeg/libva.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
CPMGetPackage(libva)

set(LIBVA_GENERATED_SRC_PATH ${libva_SOURCE_DIR})

if(BUILD_FFMPEG_ALL_PATCHES OR BUILD_FFMPEG_LIBVA_PATCHES)
file(GLOB FFMPEG_LIBVA_PATCH_FILES ${CMAKE_CURRENT_SOURCE_DIR}/patches/FFmpeg/libva/*.patch)

foreach(patch_file ${FFMPEG_LIBVA_PATCH_FILES})
APPLY_GIT_PATCH(${LIBVA_GENERATED_SRC_PATH} ${patch_file})
endforeach()
endif()

# libva uses autotools build system
set(WORKING_DIR "${LIBVA_GENERATED_SRC_PATH}")
UNIX_PATH(WORKING_DIR_UNIX ${WORKING_DIR})

# Configure options for libva
list(APPEND LIBVA_EXTRA_CONFIGURE
--prefix=${CMAKE_CURRENT_BINARY_DIR_UNIX}/libva
--enable-static
--disable-shared
--enable-drm
--enable-x11
--enable-glx
--enable-wayland
--without-legacy
)

# On FreeBSD, disable dependency tracking to avoid gmake/make compatibility issues
if(FREEBSD)
list(APPEND LIBVA_EXTRA_CONFIGURE --disable-dependency-tracking)
endif()

if(CMAKE_CROSSCOMPILING)
set(LIBVA_EXTRA_CONFIGURE
${LIBVA_EXTRA_CONFIGURE}
--host=${CMAKE_C_COMPILER_TARGET}
)
endif()

# Convert list to string
# configure command will only take the first argument if not converted to string
string(REPLACE ";" " " LIBVA_EXTRA_CONFIGURE "${LIBVA_EXTRA_CONFIGURE}")

add_custom_target(libva ALL
COMMAND ${SHELL_CMD} "${MAKE_COMPILER_FLAGS} ./autogen.sh ${LIBVA_EXTRA_CONFIGURE}"
COMMAND ${SHELL_CMD} "${MAKE_COMPILER_FLAGS} ${MAKE_EXECUTABLE} --jobs=${N_PROC}"
COMMAND ${SHELL_CMD} "${MAKE_COMPILER_FLAGS} ${MAKE_EXECUTABLE} install"
WORKING_DIRECTORY ${WORKING_DIR}
COMMENT "Target: libva"
COMMAND_EXPAND_LISTS
USES_TERMINAL
VERBATIM
BYPRODUCTS
"${CMAKE_CURRENT_BINARY_DIR}/libva/lib/libva.a"
"${CMAKE_CURRENT_BINARY_DIR}/libva/lib/libva-drm.a"
"${CMAKE_CURRENT_BINARY_DIR}/libva/lib/libva-x11.a"
"${CMAKE_CURRENT_BINARY_DIR}/libva/lib/libva-glx.a"
"${CMAKE_CURRENT_BINARY_DIR}/libva/lib/libva-wayland.a"
)
add_dependencies(${CMAKE_PROJECT_NAME} libva)

# Install libva headers and libraries
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libva/include/"
DESTINATION include)
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libva/lib/"
DESTINATION lib
FILES_MATCHING PATTERN "*.a")

# Add to PKG_CONFIG_PATH for FFmpeg to find
set(PKG_CONFIG_PATH "${CMAKE_CURRENT_BINARY_DIR_UNIX}/libva/lib/pkgconfig:${PKG_CONFIG_PATH}")
7 changes: 0 additions & 7 deletions cmake/ffmpeg/vaapi.cmake

This file was deleted.

9 changes: 9 additions & 0 deletions package-lock.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,12 @@ CPMDeclarePackage(Boost
"${PATCH_DIRECTORY}/boost/02-no-link-libatomic-clang-windows.patch"
DOWNLOAD_ONLY YES
)

# libva
CPMDeclarePackage(libva
NAME libva
VERSION 2.22.0
GIT_REPOSITORY https://github.com/intel/libva.git
GIT_TAG 2.22.0
DOWNLOAD_ONLY YES
)
File renamed without changes.
Loading