aniyomi-ffmpeg-kit 1.17.1
Fork of jmir1/ffmpeg-kit 1.17 with one FFmpeg backport needed for portable animated AVIF scene mining.
What changed vs 1.17
-
Backport FFmpeg e44d76f61f —
avformat/av1: fix uvlc loop past end of bitstream.libavformat/av1.c:uvlc()looped onwhile (get_bits_left(gb)). When an earlierskip_bits_long()has already pushed the reader past the end of a truncated AV1 sequence header,get_bits_left()is negative — which is truthy — so the loop never terminates andleading_zerosclimbs towardINT_MAX.uvlc()is reached fromparse_sequence_header(), whichff_isom_write_av1c()calls to build theav1Cconfiguration box — the exact path used when muxingav1_mediacodecoutput into AVIF.
Everything else is identical to upstream 1.17: same FFmpeg n7.1 base, same enabled components, same aniyomi SAF protocol and custom-protocol patches.
Build
- Built from tag
1.17.1via./android.sh --lts --disable-arm-v7a-neon --enable-cpu-featureswith NDK r27c, all four ABIs (armeabi-v7a, arm64-v8a, x86, x86_64). - Patch applied by an idempotent loop in
android.sh(tools/patches/*.patch).
Verification
- All four ABIs report
FFmpeg version n7.1and contain theavifmuxer. - Disassembly of
libavformat.soconfirms the fix is present: the stock 1.17 build emits the unboundedcmp / cincincrement for theuvlcleading-zero count; this build emits the guardedget_bits_left(gb) < 1check (cset+ boundedcsel) instead. - The
arm64-v8alibavformat.sois byte-identical across two independent builds (reproducible).
Consume via JitPack at com.github.bee-san:ffmpeg-kit:1.17.1.