Change default AV1 encoder for "slowest"

Previously, having the "Encoding speed" set to "slowest" would choose
libaom-av1 first and librav1e second. This change makes Blender choose
librav1e first (and has a fallback to whatever other AV1 codec is
available if librav1e is not installed).

Addresses /T103849 on systems where librav1e codec available.

Reviewed By: sergey, ISS

Maniphest Tasks: T103849

Differential Revision: https://developer.blender.org/D17002
This commit is contained in:
Stephen Seo 2023-02-01 17:46:32 +01:00 committed by Sergey Sharybin
parent 199233eee1
commit e1ee86b63c
Notes: blender-bot 2023-10-04 09:42:55 +02:00
Referenced by issue #103849, FFmpeg AV1 encoding has artefacts on keyframes at Perceptually Lossless or lower quality
1 changed files with 5 additions and 4 deletions

View File

@ -476,11 +476,12 @@ static const AVCodec *get_av1_encoder(
const AVCodec *codec = NULL;
switch (context->ffmpeg_preset) {
case FFM_PRESET_BEST:
/* Default to libaom-av1 for BEST preset due to it performing better than rav1e in terms of
* video quality (VMAF scores). Fallback to rav1e if libaom-av1 isn't available. */
codec = avcodec_find_encoder_by_name("libaom-av1");
/* libaom-av1 may produce better VMAF-scoring videos in serveral cases, but there are cases
* where using a different encoder is desireable, such as in T103849. */
codec = avcodec_find_encoder_by_name("librav1e");
if (!codec) {
codec = avcodec_find_encoder_by_name("librav1e");
/* Fallback to libaom-av1 if librav1e is not found. */
codec = avcodec_find_encoder_by_name("libaom-av1");
}
break;
case FFM_PRESET_REALTIME: