Skip to content

Commit d245b00

Browse files
authored
Add an option to optimize for rav1e's size (AOMediaCodec#3007)
The default release profile is actually debug with incremental, cf https://github.com/xiph/rav1e/blob/564ae3b0007ae2b06893fd7166bf88c5a84c5b63/Cargo.toml#L203-L204 - use that option in the CI. Locally, rav1e's built goes from 846M to 268M - share Rust's cache between more configs because the compile flags do not impact it - add the corrosion folder to the cache
1 parent 5f6ca18 commit d245b00

6 files changed

Lines changed: 11 additions & 5 deletions

File tree

.github/actions/cache/action.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,8 @@ runs:
5656
path: |
5757
~/.cargo
5858
build/cargo
59-
key: ${{ env.CARGO_CACHE_KEY }}-${{ github.run_id }}
60-
restore-keys: ${{ env.CARGO_CACHE_KEY }}
61-
env:
62-
CARGO_CACHE_KEY: ${{ env.CARGO_KEY }}-${{ runner.os }}-${{ runner.arch }}-${{ inputs.extra-key }}
59+
corrosion
60+
key: ${{ env.CARGO_KEY }}-${{ runner.os }}-${{ runner.arch }}
6361
- name: Cache external dependencies in ext
6462
id: cache-ext
6563
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3

.github/workflows/ci-disable-gtest.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ jobs:
5151
-DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF
5252
-DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL
5353
-DAVIF_CODEC_RAV1E=LOCAL -DAVIF_CODEC_SVT=LOCAL
54+
-DAVIF_OPTIMIZE_RAV1E_FOR_SIZE=ON
5455
-DAVIF_LIBYUV=LOCAL -DAVIF_LIBSHARPYUV=LOCAL
5556
-DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
5657
-DAVIF_BUILD_TESTS=ON -DAVIF_GTEST=OFF

.github/workflows/ci-unix-static.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ jobs:
5555
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DBUILD_SHARED_LIBS=OFF
5656
-DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL
5757
-DAVIF_CODEC_RAV1E=LOCAL -DAVIF_CODEC_SVT=LOCAL
58+
-DAVIF_OPTIMIZE_RAV1E_FOR_SIZE=ON
5859
-DAVIF_CODEC_LIBGAV1=LOCAL
5960
-DAVIF_LIBSHARPYUV=LOCAL -DAVIF_LIBXML2=LOCAL -DAVIF_LIBYUV=LOCAL
6061
-DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON

.github/workflows/ci-windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ jobs:
5555
-DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF
5656
-DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL
5757
-DAVIF_CODEC_RAV1E=LOCAL -DAVIF_CODEC_SVT=LOCAL
58-
-DAVIF_CODEC_LIBGAV1=LOCAL
58+
-DAVIF_CODEC_LIBGAV1=LOCAL -DAVIF_OPTIMIZE_RAV1E_FOR_SIZE=ON
5959
-DAVIF_JPEG=LOCAL -DAVIF_LIBSHARPYUV=LOCAL -DAVIF_LIBXML2=LOCAL
6060
-DAVIF_LIBYUV=LOCAL -DAVIF_ZLIBPNG=LOCAL
6161
-DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ set_codec_option(AOM "AOM" "encoding/decoding" " (see AVIF_CODEC_AOM_DECODE/AVIF
9898
set_codec_option(DAV1D "dav1d" "decoding" "")
9999
set_codec_option(LIBGAV1 "libgav1" "decoding" "")
100100
set_codec_option(RAV1E "rav1e" "encoding" "")
101+
option(AVIF_OPTIMIZE_RAV1E_FOR_SIZE "Overrides rav1e's release setting to optimize for size" OFF)
101102
set_codec_option(SVT "SVT-AV1" "encoding" "")
102103
set_codec_option(AVM "AVM (AV2)" "encoding/decoding" " (EXPERIMENTAL)")
103104

cmake/Modules/LocalRav1e.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@ else()
7474
${CMAKE_CURRENT_BINARY_DIR}/ext/rav1e/usr/lib/${CMAKE_STATIC_LIBRARY_PREFIX}rav1e${CMAKE_STATIC_LIBRARY_SUFFIX}
7575
)
7676
set(RAV1E_ENVVARS)
77+
if(AVIF_OPTIMIZE_RAV1E_FOR_SIZE)
78+
set(RAV1E_ENVVARS "CARGO_PROFILE_RELEASE_DEBUG=0" "CARGO_PROFILE_RELEASE_STRIP=true"
79+
"CARGO_PROFILE_PROFILE_RELEASE_OPT_LEVEL=\"s\"" "CARGO_PROFILE_RELEASE_INCREMENTAL=false"
80+
)
81+
endif()
7782
if(CMAKE_C_IMPLICIT_LINK_DIRECTORIES MATCHES "alpine-linux-musl")
7883
list(APPEND RAV1E_ENVVARS "RUSTFLAGS=-C link-args=-Wl,-z,stack-size=2097152 -C target-feature=-crt-static")
7984
endif()

0 commit comments

Comments
 (0)