Skip to content

Releases: alexheretic/ab-av1

v0.6.0

09 Dec 11:39
Compare
Choose a tag to compare
  • Support decimal crf values in sample-encode, encode subcommands (note svt-av1 only supports integer crf).
  • Add crf-search, auto-encode arg --crf-increment. Previously this would always be 1.
    Defaults to 1. -e libx264, libx265 & libvpx-vp9 default to 0.1.
  • Add crf-search, auto-encode arg --thorough which more exhaustively searches to find
    a crf value close to the specified min-vmaf.
  • Cache sample-encode results in $CACHE_DIR/ab-av1 directory. This allows repeated same crf sample encoding
    to be avoided when running sample-encode, crf-search & auto-encode. E.g. repeating a crf-search with
    a different min-vmaf.

    Caching is enabled by default. Can be disabled with --cache false or setting env var AB_AV1_CACHE=false.
  • Use mkv containers for all lossless samples. Previously mp4 samples were used for mp4 inputs, however in all test cases
    mkv 20s samples were better quality. This change improves accuracy for all mp4 input files.
  • Default --max-crf to 46 for libx264 & libx265 encoders.
  • Encode webm outputs with the "cues" seek index at the front to optimise stream usage (as done with mkv).

v0.5.2

04 Dec 15:28
Compare
Choose a tag to compare
  • Fix ffprobe duration conversion error scenarios panicking.
  • Tweak encoded size prediction logic to consider both input file size & encoded sample duration.

v0.5.1

02 Dec 10:33
Compare
Choose a tag to compare
  • Change encoded size prediction logic to estimate video stream size (or image size) only.
    This should be much more consistent than the previous method.
    Change crf-search, sample-encode result text to clarify this.
  • Improve video size prediction logic to account for samples that do not turn out as 20s.
  • Fix full-pass sample encode progress bar.
  • Use label "Full pass" instead of "Sample 1/1" when doing a full pass sample-encode.
  • Add VMAF auto model, n_threads & scaling documentation.

v0.5.0

28 Nov 12:08
Compare
Choose a tag to compare
  • Default to .mkv output format for all inputs (except .mp4 which will continue to output .mp4 by default).
    This also applies to ffmpeg encoder sample output format. The previous behavior used the input extension
    which may not have supported av1 (e.g. .m2ts).
  • For auto-encode use the output extension also for ffmpeg encoder sample outputs if applicable.
  • When creating lossless samples for encode analysis use .mkv (or .mp4) extension for better ffmpeg compatibility.
  • Encode mkv outputs with the "cues" seek index at the front to optimise stream usage.
  • Optimise pixel format choice for VMAF comparisons. Can significantly improve VMAF fps.
    E.g. if both videos are yuv420p use that instead of yuv444p10le.
  • When sampling use full input video when sample time would be >= 85% of the total (down from 100%).
  • Eliminate repeated redundant ffprobe calls.
  • Windows: Support VMAF pixel format conversion for both distorted and reference.
    Gives more consistently accurate results and brings Windows in line with Linux functionality.
  • Windows: ab-av1.exe binaries will now be automatically built and attached to releases.

v0.4.4

03 Nov 12:15
Compare
Choose a tag to compare
  • Add crf-search, auto-encode, encode & vmaf command support for encoding images into avif.
    This works in the same way as videos, example:
    ab-av1 auto-encode -i pic.jpg
    
    The default encoder svt-av1 has some dimension limitations which may cause this to fail. -e libaom-av1 also works and supports more dimensions.
  • Convert to yuv444p10le pixel format when calculating VMAF for accuracy and compatibility.
  • Update to clap v4 which changes help/about output & reduces binary size.
  • Print crf-search attempts even when stderr is not a tty.

v0.4.3

30 Sep 17:53
Compare
Choose a tag to compare
  • Fix terminal breaking sometimes after exiting early.

v0.4.2

13 Aug 11:24
Compare
Choose a tag to compare
  • Update indicatif dependency to 0.17.

v0.4.1

28 Jul 21:32
Compare
Choose a tag to compare
  • For -e libvpx-vp9 map --preset number to ffmpeg -cpu-used (0-5).
  • When overriding with a ffmpeg encoder avoid setting b:a, movflags or ac if explicitly set via --enc.
  • Add error output when using --enc-input with the default svt-av1 encoder.
  • Add errors for --enc/--enc-input args that are already provided by existing args or inferred.

v0.4.0

22 Jul 06:53
Compare
Choose a tag to compare
  • Add --encoder/-e encoder override.
    Any encoder ffmpeg supports
    and that may be controlled using -crf may be used.
  • Add --enc $FFMPEG_ARG for providing arbitrary output options to the ffmpeg encoder invocation.
    These only work when overriding the encoder with -e.

    E.g. Set x265 params: -e libx265 --enc x265-params=lossless=1.
  • Add --enc-input $FFMPEG_ARG for providing ffmpeg input file options, similar to --enc.
  • --preset now supports also word presets like slow, veryfast for ffmpeg encoders like libx264.
  • --preset is no longer required. Default svt-av1 --preset is now 8.
  • Support setting keyint for -e encoders in a similar way as is done for av1.
  • Add default vp9 & libaom-av1 -b:v 0 setting so constant quality crf based encoding works consistently.
  • For -e libaom-av1 map --preset number to ffmpeg -cpu-used (0-8).
  • For *_vaapi encoders map --crf to ffmpeg -qp as crf is not supported.
  • Shell escape file name in "Encoding ..." output.

v0.3.4

24 Jun 09:29
Compare
Choose a tag to compare
  • Shell escape file names when hinting commands.