Skip to content

Commit de149fb

Browse files
feat: add H264 VA-API adapter
1 parent e51f042 commit de149fb

8 files changed

Lines changed: 1357 additions & 0 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
steps:
1111
- uses: actions/checkout@v5
12+
- run: sudo apt-get update && sudo apt-get install -y --no-install-recommends libva-dev
1213
- run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
1314
- run: cmake --build build --parallel
1415
- run: ctest --test-dir build --output-on-failure

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/build/
2+
/build-va/
23
/build-android-*/
34
*.raw
45
*.h264

CMakeLists.txt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,30 @@ else()
2929
add_executable(fake-media-acceld src/fake/fake-media-acceld.c)
3030
target_link_libraries(fake-media-acceld PRIVATE fma-common)
3131

32+
include(GNUInstallDirs)
33+
find_package(PkgConfig QUIET)
34+
if(PkgConfig_FOUND)
35+
pkg_check_modules(LIBVA QUIET IMPORTED_TARGET libva)
36+
endif()
37+
if(LIBVA_FOUND)
38+
add_library(fma-va-driver SHARED
39+
src/va/fma_drv_video.c
40+
src/va/h264_annexb.c
41+
)
42+
target_include_directories(fma-va-driver PRIVATE include src/va)
43+
target_link_libraries(fma-va-driver PRIVATE fma-client PkgConfig::LIBVA)
44+
set_target_properties(fma-va-driver PROPERTIES
45+
OUTPUT_NAME fma_drv_video
46+
PREFIX ""
47+
)
48+
install(TARGETS fma-va-driver
49+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/dri)
50+
add_executable(fma-va-driver-test tests/va-driver-test.c)
51+
target_link_libraries(fma-va-driver-test PRIVATE
52+
fma-va-driver PkgConfig::LIBVA
53+
)
54+
endif()
55+
3256
include(CTest)
3357
if(BUILD_TESTING)
3458
add_executable(fma-protocol-test tests/protocol-test.c)
@@ -41,5 +65,12 @@ else()
4165
${CMAKE_BINARY_DIR}/fake-roundtrip.sock
4266
${CMAKE_SOURCE_DIR}/LICENSE
4367
${CMAKE_BINARY_DIR}/fake-roundtrip.nv12)
68+
if(LIBVA_FOUND)
69+
add_test(NAME va-roundtrip
70+
COMMAND sh ${CMAKE_SOURCE_DIR}/tests/va-roundtrip.sh
71+
$<TARGET_FILE:fake-media-acceld>
72+
$<TARGET_FILE:fma-va-driver-test>
73+
${CMAKE_BINARY_DIR}/va-roundtrip.sock)
74+
endif()
4475
endif()
4576
endif()

0 commit comments

Comments
 (0)