alexheretic / ab-av1

AV1 re-encoding using ffmpeg, svt-av1 & vmaf.
MIT License
442 stars 29 forks source link

SSIMULACRA2 #167

Closed devedse closed 9 months ago

devedse commented 9 months ago

Hello, I was windering if you'd be interested in adding SSIMULACRA2 as an alternative to VMAF?

Kind regards Devedse

veikk0 commented 9 months ago

While I haven't tried it myself yet, I'd be interested in having SSIMULACRA 2. Even though it's designed as a still image metric AFAIK, I've heard good things. Or at least that it's better than VMAF.

XPSNR is another thing to keep an eye on.

However, neither of these are included in FFmpeg, so implementing them would add complexity and require more dependencies. SSIMULACRA 2 does have a Rust implementation, and a separate Rust binary interface, though the latter depends on Avisynth. And anything that requires installing *synth or the use of Arch is usually an exercise in frustration IME.

devedse commented 9 months ago

Hmm that's too bad. I guess you could "deliver" everything as a docker solution which can be ran from the command line which would then call the compiled SSIMULCRA2 binary but I'm not sure if that's the most ideal solution either.

veikk0 commented 9 months ago

Note: I'm not the developer, just a user providing some background and opinions.

Previously, ab-av1 used SvtAv1EncApp directly, so there was a lot more piping involved, there were some colorspace conversion issues with that I think (at least from my experience as a user), and it was just a bit messy. Going FFmpeg-only made things much better, at least from an installation and usage point of view. And though I have no experience with working on the ab-av1 code, I have used encoders by piping raw video, and it's always an added layer of complexity (and a point of failure) over just being able to use FFmpeg.

The SSIMULACRA 2 Rust implementation is a library, so that would be a single dependency and can be easily installed with Cargo. But currently I think ab-av1 uses FFmpeg by calling the binary and parsing text, so I don't know if there's a desire to calculate a metric using a library and what exactly that would involve.

alexheretic commented 9 months ago

Yes ideally it would be done via ffmpeg. However, perhaps it would be possible to pipe ffmpeg into a ab-av1 ssimulacra2 process using the rust crate. This needs investigation.

We already have an issue for this #104, so I'll close here and we can continue the discussion there.