Skip to content

Commit

Permalink
WIP libvpx
Browse files Browse the repository at this point in the history
  • Loading branch information
askmeaboutlo0m committed Jul 30, 2024
1 parent 9fd0242 commit bc88d16
Show file tree
Hide file tree
Showing 4 changed files with 257 additions and 182 deletions.
7 changes: 6 additions & 1 deletion .github/actions/build-deps/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ inputs:
description: Commit of libx264 to build
default: '31e19f92f00c7003fa115047ce50978bc98c3a0d'
type: string
libvpx:
description: Version of libvpx to build
default: '1.14.1'
type: string
ffmpeg:
description: Version of ffmpeg to build
default: '7.0.1'
Expand Down Expand Up @@ -117,13 +121,14 @@ runs:
- uses: ./.github/actions/build-and-cache
with:
name: ffmpeg dependencies
cache_key: ffmpeg-${{ inputs.cache_key }}-${{ inputs.libx264 }}-${{ inputs.ffmpeg }}
cache_key: ffmpeg-${{ inputs.cache_key }}-${{ inputs.libx264 }}-${{ inputs.libvpx }}-${{ inputs.ffmpeg }}
path: ${{ inputs.path }}/ffmpeg
pre_build: ${{ inputs.ffmpeg_pre_build }}
build: >
cmake
-DBUILD_TYPE=${{ inputs.build_type }}
"-DLIBX264=${{ inputs.libx264 }}"
"-DLIBVPX=${{ inputs.libvpx }}"
"-DFFMPEG=${{ inputs.ffmpeg }}"
"-DCMAKE_PREFIX_PATH=${{ github.workspace }}/${{ inputs.path }}/qt"
"-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/${{ inputs.path }}/ffmpeg"
Expand Down
68 changes: 68 additions & 0 deletions .github/scripts/build-ffmpeg.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ list(APPEND CMAKE_MODULE_PATH

set(LIBX264 "31e19f92f00c7003fa115047ce50978bc98c3a0d" CACHE STRING
"The commit of libx264 to build")
set(LIBVPX "1.14.1" CACHE STRING
"The version of libvpx to build")
set(FFMPEG "7.0.1" CACHE STRING
"The version of ffmpeg to build")
option(KEEP_ARCHIVES "Keep downloaded archives instead of deleting them" OFF)
Expand All @@ -18,6 +20,69 @@ set(TARGET_ARCH "x86_64" CACHE STRING

include(BuildDependency)

if(LIBVPX)
set(libvpx_configure_args
--disable-dependency-tracking
--disable-docs
--disable-examples
--disable-tools
--disable-unit-tests
--disable-vp8-decoder
--disable-vp9
--enable-pic
--enable-vp8-encoder
)

if(APPLE)
if(TARGET_ARCH STREQUAL "arm64")
list(PREPEND libvpx_configure_args --target=arm64-darwin20-gcc)
elseif(TARGET_ARCH STREQUAL "x86_64")
list(PREPEND libvpx_configure_args --target=x86_64-darwin20-gcc)
else()
message(FATAL_ERROR "Unhandled TARGET_ARCH '${TARGET_ARCH}'")
endif()
elseif(ANDROID)
if(TARGET_ARCH STREQUAL "arm32")
list(PREPEND libvpx_configure_args --target=armv7-android-gcc)
elseif(TARGET_ARCH STREQUAL "arm64")
list(PREPEND libvpx_configure_args --target=arm64-android-gcc)
else()
message(FATAL_ERROR "Unhandled TARGET_ARCH '${TARGET_ARCH}'")
endif()
elseif(WIN32)
if(TARGET_ARCH STREQUAL "x86")
list(PREPEND libvpx_configure_args --target=x86-win32-vs17)
elseif(TARGET_ARCH STREQUAL "x86_64")
list(PREPEND libvpx_configure_args --target=x86_64-win64-vs17)
else()
message(FATAL_ERROR "Unhandled TARGET_ARCH '${TARGET_ARCH}'")
endif()
elseif(UNIX)
if(TARGET_ARCH STREQUAL "x86")
list(PREPEND libvpx_configure_args --target=x86-linux-gcc)
elseif(TARGET_ARCH STREQUAL "x86_64")
list(PREPEND libvpx_configure_args --target=x86_64-linux-gcc)
else()
message(FATAL_ERROR "Unhandled TARGET_ARCH '${TARGET_ARCH}'")
endif()
else()
message(FATAL_ERROR "Unknown platform")
endif()

build_dependency(libvpx ${LIBVPX} ${BUILD_TYPE}
URL https://github.com/webmproject/libvpx/archive/refs/tags/v@version@.tar.gz
TARGET_ARCH "${TARGET_ARCH}"
VERSIONS
1.14.1
SHA384=42392dcae787ac556e66776a03bd064e0bb5795e7d763a6459edd2127e7ffae4aafe5c755d16ec4a4ab6e9785c27684c
ALL_PLATFORMS
AUTOMAKE
ASSIGN_PREFIX
ALL
${libvpx_configure_args}
)
endif()

if(LIBX264)
build_dependency(x264 ${LIBX264} ${BUILD_TYPE}
URL https://code.videolan.org/videolan/x264/-/archive/@version@/x264-@version@.tar.gz
Expand Down Expand Up @@ -69,6 +134,7 @@ if(FFMPEG)
--disable-xlib
--disable-zlib
--enable-libx264
--enable-libvpx
--disable-encoders
--disable-decoders
--disable-muxers
Expand All @@ -81,7 +147,9 @@ if(FFMPEG)
--disable-devices
--disable-filters
--enable-encoder=libx264
--enable-encoder=libvpx_vp8
--enable-muxer=mp4
--enable-muxer=webm
)

if(ANDROID)
Expand Down
2 changes: 2 additions & 0 deletions .github/scripts/cmake/BuildDependency.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ function(_build_automake build_type target_bits source_dir)
list(APPEND make_flags ${ARG_MAKE_FLAGS})
endif()

list(APPEND make_flags V=1)

list(APPEND env "MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")

# https://developer.android.com/ndk/guides/other_build_systems#autoconf
Expand Down
Loading

0 comments on commit bc88d16

Please sign in to comment.