| commit | 166f7d1ac255f9b891a03a58704734b91af8e455 | [log] [tgz] |
|---|---|---|
| author | Vignesh Venkat <vigneshv@google.com> | Wed May 14 14:52:11 2025 -0700 |
| committer | Copybara-Service <copybara-worker@google.com> | Wed May 14 14:52:50 2025 -0700 |
| tree | 49d680caecbe3a7e16e59ffa65b2a37930f54684 | |
| parent | b097e11df62db2a6b8561f60aeae0718901122cb [diff] |
capi: Refactor image conversion Move avifImage -> image::Image conversion code from reformat.rs to image.rs. Earlier it was only used for color format conversion, but in upcoming CLs it will be used by the encoder API as well. Also copy all the fields instead of those needed for color conversion. PiperOrigin-RevId: 758844125
Avif parser/decoder implementation in Rust.
Feel free to file an issue for any question, suggestion or bug report. Contributions are also welcome, see CONTRIBUTING.
git clone https://github.com/webmproject/CrabbyAvif.git # If dav1d system library can be found with pkg-config, this step can be skipped. cd CrabbyAvif/sys/dav1d-sys ./dav1d.cmd # If libyuv system library can be found with pkg-config, this step can be skipped. cd ../libyuv-sys ./libyuv.cmd cd ../.. cargo build
cargo test -- --skip test_conformance
git clone https://github.com/AOMediaCodec/av1-avif.git external/av1-avif git clone https://github.com/AOMediaCodec/libavif.git external/libavif cd external/libavif/ext ./dav1d.cmd cd .. cmake -S . -B build -DAVIF_CODEC_DAV1D=LOCAL -DAVIF_LIBYUV=OFF -DAVIF_BUILD_APPS=ON cmake --build build --parallel -t avifdec cd ../.. cargo test -- test_conformance
If you already have the av1-avif repository checked out and the avifdec binary available, you can point to those by setting the following environment variables:
sh CRABBYAVIF_CONFORMANCE_TEST_DATA_DIR=<path> CRABBYAVIF_CONFORMANCE_TEST_AVIFDEC=<avifdec_binary> cargo test -- test_conformance
# Build google test cd external ./googletest.cmd cd .. # Build the library with C API enabled cargo build --features capi --release # Build and run the C/C++ Tests mkdir c_build cd c_build cmake ../c_api_tests/ make make test
The decoder tests can be run on Android using dinghy.
# One time set up cargo install cargo-dinghy # Set path to NDK export ANDROID_NDK_HOME=<path_to_ndk> # Install rust toolchain for target rustup target add aarch64-linux-android # End of One time set up # Make sure the device/emulator is available via adb. cargo dinghy -d android test --no-default-features --features android_mediacodec,libyuv --target aarch64-linux-android --test decoder_tests
See the Apache v2.0 license file.