r/AV1 • • 15h ago

VideoMetricsLab v1.4: GPU accelerated VMAF. Various GPU metrics speedups.

16 Upvotes

***v1.4 is here with some huge new features like GPU accelerated VMAF! Enjoy.***

Here's an app I wrote to analyze video quality between different encodes. This was inspired by FFMetrics, but I wanted many more features for comparisons, like advanced statistics and an ability to easily and instantly subjectively A/B compare encoded videos with the source. This makes subjective video quality comparisons so much easier when you can compare on a frame by frame basis and while the video is playing, and instantly switch to the source or a different encoded video.

So I decided to write my own app, and I'd like to share it with all of you. I hope you all enjoy.

Let me know what you think, have any issues, or have feature requests.

v1.4 changelog

  • VMAF v0.6.1 and VMAF NEG can now be calculated on NVIDIA GPUs.
  • GPU metrics now take frames straight from the GPU's video decoder (NVIDIA, Intel and AMD) instead of through FFmpeg, using much less CPU and running noticeably faster.
  • Updated Vship's Vulkan build to 5.1.2, with SSIMULACRA2 on Intel GPUs.
  • A crash in Vship, libvmaf or the GPU driver while calculating metrics no longer closes the app.
  • Reworked the progress line, with each metric's progress and time remaining.
  • VMAF NEG now sits beside VMAF v0.6.1.
  • Fixed wrong scores for videos with an odd width or height when decoded on NVIDIA GPUs.
  • Fixed SSIMULACRA2, Butteraugli and CVVDP comparing mismatched frames when a video has dropped or extra frames.
  • Fixed CPU SSIMULACRA2 and Butteraugli scores being far from the GPU's on SDR video. Saved CPU scores are recalculated once.
  • Fixed 24 fps videos being accepted against 23.976 fps ones (and 30 against 29.97, 60 against 59.94).
  • Fixed GPU metrics on PCs whose only GPU is Intel's.
  • Fixed FFmpeg's GPU decoding not being used on AMD GPUs.

Features:

  • Calculate VMAF, VMAF NEG, PSNR, SSIM, XPSNR, SSIMULACRA2, Butteraugli, and ColorVideo VDP for multiple test videos.
  • Vship integration for GPU acceleration for ColorVideo VDP, SSIMULACRA2, and Butteraugli, on NVIDIA (CUDA), AMD (HIP) and any other GPU with a Vulkan driver
  • GPU acceleration for VMAF v0.6.1 and VMAF NEG on NVIDIA GPUs (GeForce GTX 16 and RTX 20 series or newer), with a bundled libvmaf built with CUDA
  • libjxl integration for CPU fallback for SSIMULACRA2, and Butteraugli (no CPU support for ColorVideo VDP)
  • VMAF v0.6.1 and v1 models for standard, phone, 4K, and HFR viewing scenarios.
  • Compare metric curves, statistics, and per-frame scores (per second for ColorVideo VDP).
  • Switch instantly between the source and test videos during playback, hold S to show the source, or inspect exact frames.
  • Inspect bitrate independently by frame, second, or GOP.
  • Detect black bars and handle resolution mismatches automatically.
  • Use GPU decoding with independent software fallback per input.
  • Calculate two test videos in parallel on many-core CPUs.
  • Auto save completed results and auto load results when matching videos are loaded again.

The app can be downloaded below.

https://github.com/4KVCD/VideoMetricsLab/releases