| commit | 47102d7ea60d9c6fffb2aa7124bfb9290b097702 | [log] [tgz] |
|---|---|---|
| author | Vignesh Venkat <vigneshv@google.com> | Thu Apr 10 09:58:32 2025 -0700 |
| committer | Copybara-Service <copybara-worker@google.com> | Thu Apr 10 09:59:02 2025 -0700 |
| tree | f21c7b8c0b6b3ea5450f37e0f319e5399de4d713 | |
| parent | e76ec1bf25138dfabd16642eb8458bc3a4ac78f7 [diff] |
scale: Support scaling P010 images P010 images cannot be scaled with ScalePlane_12 since the U and V planes are interleaved. libyuv doesn't have a function to do this scaling directly. So convert the image into I010 (which has separate U and V planes) and then scale each plane by calling ScalePlane_12. There is a small nuance in the C-API code where we will have to explicitly allocate the V plane's memory buffer when going through this case. PiperOrigin-RevId: 746071652
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.