Update SVT-AV1 target quality params for v0.9.0 (#557)

* Update SVT-AV1 target quality params for v0.9.0

* Add version check for SVT-AV1

* Fix clippy warning

* Fix args for memmem::find
This commit is contained in:
redzic 2022-01-30 17:08:11 -06:00 committed by GitHub
parent 88ed5a131a
commit e7b2d08379
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,8 +3,9 @@ use arrayvec::ArrayVec;
use cfg_if::cfg_if;
use ffmpeg_next::format::Pixel;
use itertools::chain;
use once_cell::sync::Lazy;
use serde::{Deserialize, Serialize};
use std::{borrow::Cow, cmp, fmt::Display, path::PathBuf};
use std::{borrow::Cow, cmp, fmt::Display, path::PathBuf, process::Command};
use thiserror::Error;
use std::iter::Iterator;
@ -25,6 +26,15 @@ pub enum Encoder {
x265,
}
pub static USE_OLD_SVT_AV1: Lazy<bool> = Lazy::new(|| {
let version = Command::new("SvtAv1EncApp")
.arg("--version")
.output()
.unwrap();
memchr::memmem::find(&version.stdout, b"v0.9.0").is_none()
});
impl Display for Encoder {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(<&'static str>::from(self))
@ -535,69 +545,91 @@ impl Encoder {
format!("--cq-level={}", q),
"--row-mt=1",
],
Self::svt_av1 => inplace_vec![
"SvtAv1EncApp",
"-i",
"stdin",
"--lp",
format!("{}", threads),
"--preset",
"8",
"--keyint",
"240",
"--crf",
format!("{}", q),
"--tile-rows",
"1",
"--tile-columns",
"2",
"--pred-struct",
"0",
"--sg-filter-mode",
"0",
"--enable-restoration-filtering",
"0",
"--cdef-level",
"0",
"--disable-dlf",
"0",
"--mrp-level",
"0",
"--enable-mfmv",
"0",
"--enable-local-warp",
"0",
"--enable-global-motion",
"0",
"--enable-interintra-comp",
"0",
"--obmc-level",
"0",
"--rdoq-level",
"0",
"--filter-intra-level",
"0",
"--enable-intra-edge-filter",
"0",
"--enable-pic-based-rate-est",
"0",
"--pred-me",
"0",
"--bipred-3x3",
"0",
"--compound",
"0",
"--ext-block",
"0",
"--hbd-md",
"0",
"--palette-level",
"0",
"--umv",
"0",
"--tf-level",
"3",
],
Self::svt_av1 => {
if *USE_OLD_SVT_AV1 {
inplace_vec![
"SvtAv1EncApp",
"-i",
"stdin",
"--lp",
format!("{}", threads),
"--preset",
"8",
"--keyint",
"240",
"--crf",
format!("{}", q),
"--tile-rows",
"1",
"--tile-columns",
"2",
"--pred-struct",
"0",
"--sg-filter-mode",
"0",
"--enable-restoration-filtering",
"0",
"--cdef-level",
"0",
"--disable-dlf",
"0",
"--mrp-level",
"0",
"--enable-mfmv",
"0",
"--enable-local-warp",
"0",
"--enable-global-motion",
"0",
"--enable-interintra-comp",
"0",
"--obmc-level",
"0",
"--rdoq-level",
"0",
"--filter-intra-level",
"0",
"--enable-intra-edge-filter",
"0",
"--enable-pic-based-rate-est",
"0",
"--pred-me",
"0",
"--bipred-3x3",
"0",
"--compound",
"0",
"--ext-block",
"0",
"--hbd-md",
"0",
"--palette-level",
"0",
"--umv",
"0",
"--tf-level",
"3",
]
} else {
inplace_vec![
"SvtAv1EncApp",
"-i",
"stdin",
"--lp",
format!("{}", threads),
"--preset",
"12",
"--keyint",
"240",
"--crf",
format!("{}", q),
"--tile-rows",
"1",
"--tile-columns",
"2",
]
}
}
Self::x264 => inplace_vec![
"x264",
"--log-level",