Replace last regex with hand written parser (#441)

* Replace panic with error return

* Replace last regex with hand written parser

* Update dependencies

* Fix clippy warnings

* Adjust idx check

* More idiomatic rust
This commit is contained in:
redzic 2021-12-10 01:23:24 -06:00 committed by GitHub
parent 07710cb088
commit 6f46ef8531
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 2648 additions and 80 deletions

90
Cargo.lock generated
View file

@ -4,9 +4,9 @@ version = 3
[[package]]
name = "addr2line"
version = "0.17.0"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"
checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a"
dependencies = [
"gimli",
]
@ -31,9 +31,9 @@ dependencies = [
[[package]]
name = "aho-corasick"
version = "0.7.18"
version = "0.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5"
dependencies = [
"memchr",
]
@ -144,7 +144,7 @@ dependencies = [
"av-data",
"av-format",
"log",
"nom 6.1.2",
"nom 6.2.1",
]
[[package]]
@ -191,7 +191,7 @@ dependencies = [
"shlex 1.1.0",
"structopt",
"thiserror",
"vergen 5.1.18",
"vergen 5.1.17",
]
[[package]]
@ -219,7 +219,6 @@ dependencies = [
"paste",
"path_abs",
"plotters",
"regex",
"serde",
"serde_json",
"simdutf8",
@ -238,9 +237,9 @@ dependencies = [
[[package]]
name = "backtrace"
version = "0.3.63"
version = "0.3.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6"
checksum = "4717cfcbfaa661a0fd48f8453951837ae7e8f81e481fbb136e3202d72805a744"
dependencies = [
"addr2line",
"cc",
@ -647,9 +646,9 @@ dependencies = [
[[package]]
name = "gimli"
version = "0.26.1"
version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4"
checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189"
[[package]]
name = "git2"
@ -681,9 +680,9 @@ dependencies = [
[[package]]
name = "hermit-abi"
version = "0.1.19"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
checksum = "c7a30908dbce072eca83216eab939d2290080e00ca71611b96a09e5cdce5f3fa"
dependencies = [
"libc",
]
@ -702,7 +701,7 @@ dependencies = [
[[package]]
name = "indicatif"
version = "0.17.0-beta.1"
source = "git+https://github.com/mitsuhiko/indicatif#16e755cd17570b95adff7d22c00c36b8014cd3e9"
source = "git+https://github.com/mitsuhiko/indicatif#f80adc3310e3764d25ceac4542eccf6cd334aa80"
dependencies = [
"console",
"number_prefix",
@ -732,9 +731,9 @@ dependencies = [
[[package]]
name = "itertools"
version = "0.10.1"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf"
checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
dependencies = [
"either",
]
@ -790,9 +789,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.108"
version = "0.2.110"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119"
checksum = "b58a4469763e4e3a906c4ed786e1c70512d16aa88f84dded826da42640fc6a1c"
[[package]]
name = "libfuzzer-sys"
@ -864,15 +863,15 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
[[package]]
name = "memchr"
version = "2.4.1"
version = "2.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
[[package]]
name = "memoffset"
version = "0.6.4"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
dependencies = [
"autocfg",
]
@ -911,9 +910,9 @@ dependencies = [
[[package]]
name = "nasm-rs"
version = "0.2.1"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9dbff86bd2ee8cb407e8608e2c3504412a967c06286ef7e5cf7c1b9db756f0a9"
checksum = "a06380d23b58dcdaf892fa36c3950cad3110e7d76851275d5f85c22eb9cdd614"
dependencies = [
"rayon",
]
@ -943,9 +942,9 @@ dependencies = [
[[package]]
name = "nom"
version = "6.1.2"
version = "6.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2"
checksum = "9c5c51b9083a3c620fa67a2a635d1ce7d95b897e957d6b28ff9a5da960a103a6"
dependencies = [
"bitvec",
"funty",
@ -1040,12 +1039,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
[[package]]
name = "object"
version = "0.27.1"
version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9"
dependencies = [
"memchr",
]
checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170"
[[package]]
name = "once_cell"
@ -1116,9 +1112,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
[[package]]
name = "pkg-config"
version = "0.3.22"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f"
checksum = "d1a3ea4f0dd7f1f3e512cf97bf100819aa547f36a6eccac8dbaae839eb92363e"
[[package]]
name = "plotters"
@ -1180,9 +1176,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.32"
version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43"
checksum = "fb37d2df5df740e582f28f8560cf425f52bb267d872fe58358eadb554909f07a"
dependencies = [
"unicode-xid",
]
@ -1313,9 +1309,9 @@ dependencies = [
[[package]]
name = "regex"
version = "1.5.4"
version = "1.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
checksum = "2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759"
dependencies = [
"aho-corasick",
"memchr",
@ -1373,9 +1369,9 @@ dependencies = [
[[package]]
name = "rustversion"
version = "1.0.5"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088"
checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
[[package]]
name = "ryu"
@ -1397,18 +1393,18 @@ checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012"
[[package]]
name = "serde"
version = "1.0.130"
version = "1.0.131"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
checksum = "b4ad69dfbd3e45369132cc64e6748c2d65cdfb001a2b1c232d128b4ad60561c1"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.130"
version = "1.0.131"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b"
checksum = "b710a83c4e0dff6a3d511946b95274ad9ca9e5d3ae497b63fda866ac955358d2"
dependencies = [
"proc-macro2",
"quote",
@ -1603,9 +1599,9 @@ dependencies = [
[[package]]
name = "sysinfo"
version = "0.21.1"
version = "0.21.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb6c2c4a6ca462f07ca89841a2618dca6e405304d19ae238997e64915d89f513"
checksum = "8f88d66f3341b688163d3585037954ff276cf24a234d015b30025318a3e3449a"
dependencies = [
"cfg-if 1.0.0",
"core-foundation-sys",
@ -1867,9 +1863,9 @@ dependencies = [
[[package]]
name = "vergen"
version = "5.1.18"
version = "5.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d48696c0fbbdafd9553e14c4584b4b9583931e9474a3ae506f1872b890d0b47"
checksum = "6cf88d94e969e7956d924ba70741316796177fa0c79a2c9f4ab04998d96e966e"
dependencies = [
"anyhow",
"cfg-if 1.0.0",

View file

@ -22,7 +22,6 @@ anyhow = "1.0.42"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sysinfo = "0.21.0"
regex = "1.5.4"
splines = "4.0.0"
# the latest git version is currently required since wide_bar

View file

@ -4,6 +4,10 @@
//! runtime detection that the corresponding feature
//! set is available before calling them.
use std::{borrow::Cow, collections::HashSet};
use crate::encoder::Encoder;
// We can safely always ignore this prefix, as the second number will
// always be at some point after this prefix. See examples of aomenc
// output below to see why this is the case.
@ -261,10 +265,107 @@ pub fn parse_x26x_frames(s: &str) -> Option<u64> {
.and_then(|s| s.parse().ok())
}
/// Returns the set of valid parameters given a help text for the given encoder
#[must_use]
pub fn valid_params(help_text: &str, encoder: Encoder) -> HashSet<Cow<'_, str>> {
// x265 has 292 parameters, which is the most of any encoder, so we round up
// slightly just in case
let mut params = HashSet::with_capacity(300);
for s in help_text.split_ascii_whitespace() {
if s.starts_with('-') {
if s.len() == 1 || s == "--" {
continue;
}
if encoder == Encoder::x265 {
// x265 does this: -m/--subme
// or even: -w/--[no-]weightp
// So we need to ensure that in this case the short parameter is also handled.
let s = s.get("-x/".len()..).map_or(s, |stripped| {
if stripped.starts_with("--") {
params.insert(Cow::Borrowed(&s[..2]));
stripped
} else {
s
}
});
// Somehow x265 manages to have a buggy --help, where a single option (--[no-]-hrd-concat)
// has an extra dash.
let arg = s
.strip_prefix("--[no-]")
.map(|stripped| stripped.strip_prefix('-').unwrap_or(stripped));
if let Some(arg) = arg {
params.insert(Cow::Owned(format!("--{}", arg)));
params.insert(Cow::Owned(format!("--no-{}", arg)));
continue;
}
}
// aomenc outputs '--tune=<arg>' for example, so we have to find the character
// from the left so as to not miss the leftmost char
if let Some(idx) = s.find(|c: char| !c.is_ascii_alphanumeric() && c != '-' && c != '_') {
// In some weird cases (like with x264) there may be a dash followed by a non alphanumeric
// character, so we just ignore that.
if idx > 1 {
params.insert(Cow::Borrowed(&s[..idx]));
}
} else {
// It's a little concerning how *two* encoders manage to have buggy help output.
let arg = if encoder == Encoder::vpx {
// vpxenc randomly truncates the "Vizier Rate Control Options" in the help
// outout, which sometimes causes it to truncate at a dash, which breaks the
// tests if we don't do this. Not sure what the correct solution in this case is.
s.strip_suffix('-').unwrap_or(s)
} else {
s
};
params.insert(Cow::Borrowed(arg));
}
}
}
params
}
#[cfg(test)]
mod tests {
use crate::parse::*;
#[test]
fn valid_params_works() {
use std::borrow::Borrow;
macro_rules! generate_tests {
($($x:ident),* $(,)?) => {
$(
let returned: HashSet<String> = valid_params(include_str!(concat!("../tests/", stringify!($x), "_help.txt")), Encoder::$x)
.iter()
.map(|s| s.to_string())
.collect();
let expected: HashSet<String> = include_str!(concat!("../tests/", stringify!($x), "_params.txt"))
.split_ascii_whitespace()
.map(|s| s.to_string())
.collect();
for arg in expected.iter() {
assert!(returned.contains(Borrow::<str>::borrow(&**arg)), "expected '{}', but it was missing in return value (for encoder {})", arg, stringify!($x));
}
for arg in returned.iter() {
assert!(expected.contains(Borrow::<str>::borrow(&**arg)), "return value contains '{}', but it was not expected (for encoder {})", arg, stringify!($x));
}
assert_eq!(returned, expected);
)*
};
}
generate_tests!(aom, rav1e, svt_av1, vpx, x264, x265);
}
#[test]
fn rav1e_parsing() {
let test_cases = [

View file

@ -1,3 +1,4 @@
use crate::parse::valid_params;
use crate::progress_bar::{reset_bar_at, reset_mp_bar_at};
use crate::vapoursynth::{is_ffms2_installed, is_lsmash_installed};
use crate::{
@ -11,7 +12,7 @@ use crate::{
finish_progress_bar, inc_bar, inc_mp_bar, init_multi_progress_bar, init_progress_bar,
update_mp_msg,
},
read_chunk_queue, regex, save_chunk_queue,
read_chunk_queue, save_chunk_queue,
scene_detect::av_scenechange_detect,
split::{extra_splits, segment, write_scenes_to_file},
vapoursynth::create_vs_file,
@ -23,6 +24,7 @@ use anyhow::{bail, ensure, Context};
use crossbeam_utils;
use ffmpeg_next::format::Pixel;
use itertools::Itertools;
use std::borrow::Borrow;
use std::cmp::Ordering;
use std::{
borrow::Cow,
@ -363,29 +365,23 @@ impl EncodeArgs {
}
fn validate_encoder_params(&self) {
/// Returns the set of valid parameters given a help text of an encoder
#[must_use]
fn valid_params(help_text: &str) -> HashSet<&str> {
regex!(r"\s+(-\w+|(?:--\w+(?:-\w+)*))")
.find_iter(help_text)
.filter_map(|m| m.as_str().split_ascii_whitespace().next())
.collect()
}
#[must_use]
fn invalid_params<'a>(
params: &'a [&'a str],
valid_options: &'a HashSet<&'a str>,
valid_options: &'a HashSet<Cow<'a, str>>,
) -> Vec<&'a str> {
params
.iter()
.filter(|param| !valid_options.contains(*param))
.filter(|param| !valid_options.contains(Borrow::<str>::borrow(&**param)))
.copied()
.collect()
}
#[must_use]
fn suggest_fix<'a>(wrong_arg: &str, arg_dictionary: &'a HashSet<&'a str>) -> Option<&'a str> {
fn suggest_fix<'a>(
wrong_arg: &str,
arg_dictionary: &'a HashSet<Cow<'a, str>>,
) -> Option<&'a str> {
// Minimum threshold to consider a suggestion similar enough that it could be a typo
const MIN_THRESHOLD: f64 = 0.75;
@ -393,9 +389,9 @@ impl EncodeArgs {
.iter()
.map(|arg| (arg, strsim::jaro_winkler(arg, wrong_arg)))
.max_by(|(_, a), (_, b)| a.partial_cmp(b).unwrap_or(Ordering::Less))
.and_then(|(&suggestion, score)| {
.and_then(|(suggestion, score)| {
if score > MIN_THRESHOLD {
Some(suggestion)
Some(suggestion.borrow())
} else {
None
}
@ -423,7 +419,7 @@ impl EncodeArgs {
let [cmd, arg] = self.encoder.help_command();
String::from_utf8(Command::new(cmd).arg(arg).output().unwrap().stdout).unwrap()
};
let valid_params = valid_params(&help_text);
let valid_params = valid_params(&help_text, self.encoder);
let invalid_params = invalid_params(&video_params, &valid_params);
for wrong_param in &invalid_params {
@ -554,7 +550,7 @@ properly into a mkv file. Specify mkvmerge as the concatenation method by settin
Ok(chunks)
}
fn calc_split_locations(&self) -> Vec<usize> {
fn calc_split_locations(&self) -> anyhow::Result<Vec<usize>> {
match self.split_method {
SplitMethod::AvScenechange => av_scenechange_detect(
&self.input,
@ -564,9 +560,8 @@ properly into a mkv file. Specify mkvmerge as the concatenation method by settin
self.verbosity,
self.sc_method,
self.sc_downscale_height,
)
.unwrap(),
SplitMethod::None => Vec::new(),
),
SplitMethod::None => Ok(Vec::new()),
}
}
@ -581,7 +576,7 @@ properly into a mkv file. Specify mkvmerge as the concatenation method by settin
let mut scenes = if (self.scenes.is_some() && scene_file.exists()) || self.resume {
crate::split::read_scenes_from_file(scene_file.as_path())?.0
} else {
self.calc_split_locations()
self.calc_split_locations()?
};
let scenes_before = scenes.len() + 1;
if let Some(split_len) = self.extra_splits_len {

View file

@ -1,11 +1,3 @@
#[macro_export]
macro_rules! regex {
($re:literal $(,)?) => {{
static RE: once_cell::sync::OnceCell<regex::Regex> = once_cell::sync::OnceCell::new();
RE.get_or_init(|| regex::Regex::new($re).unwrap())
}};
}
/// Count the number of elements passed to this macro.
///
/// Extra commas in between other commas are counted as an element.

View file

@ -71,13 +71,13 @@ fn get_num_frames(env: &mut Environment) -> anyhow::Result<usize> {
let info = get_clip_info(env);
let num_frames = {
if let Property::Variable = info.format {
if Property::Variable == info.format {
bail!("Cannot output clips with varying format");
}
if let Property::Variable = info.resolution {
if Property::Variable == info.resolution {
bail!("Cannot output clips with varying dimensions");
}
if let Property::Variable = info.framerate {
if Property::Variable == info.framerate {
bail!("Cannot output clips with varying framerate");
}

View file

@ -0,0 +1,255 @@
Usage: aomenc <options> -o dst_filename src_filename
Options:
--help Show usage options and exit
-c <arg>, --cfg=<arg> Config file to use
-D, --debug Debug mode (makes output deterministic)
-o <arg>, --output=<arg> Output filename
--codec=<arg> Codec to use
-p <arg>, --passes=<arg> Number of passes (1/2/3)
--pass=<arg> Pass to execute (1/2/3)
--fpf=<arg> First pass statistics file name
--limit=<arg> Stop encoding after n input frames
--skip=<arg> Skip the first n input frames
--good Use Good Quality Deadline
--rt Use Realtime Quality Deadline
--allintra Use all intra mode
-q, --quiet Do not print encode progress
-v, --verbose Show encoder parameters
--psnr=<arg> Show PSNR in status line(0: Disable PSNR status line display, 1: PSNR calculated using input bit-depth (default), 2: PSNR calculated using stream bit-depth), takes default option when arguments are not specified
--webm Output WebM (default when WebM IO is enabled)
--ivf Output IVF
--obu Output OBU
--q-hist=<arg> Show quantizer histogram (n-buckets)
--rate-hist=<arg> Show rate histogram (n-buckets)
--disable-warnings Disable warnings about potentially incorrect encode settings.
-y, --disable-warning-prompt Display warnings, but do not prompt user to continue.
--test-decode=<arg> Test encode/decode mismatch
off, fatal, warn
Encoder Global Options:
--yv12 Input file is YV12
--i420 Input file is I420 (default)
--i422 Input file is I422
--i444 Input file is I444
-u <arg>, --usage=<arg> Usage profile number to use (0: good, 1: rt, 2: allintra)
-t <arg>, --threads=<arg> Max number of threads to use
--profile=<arg> Bitstream profile number to use
-w <arg>, --width=<arg> Frame width
-h <arg>, --height=<arg> Frame height
--forced_max_frame_width=<arg>
Maximum frame width value to force
--forced_max_frame_height=<arg>
Maximum frame height value to force
--stereo-mode=<arg> Stereo 3D video format
mono, left-right, bottom-top, top-bottom, right-left
--timebase=<arg> Output timestamp precision (fractional seconds)
--fps=<arg> Stream frame rate (rate/scale)
--global-error-resilient=<arg>
Enable global error resiliency features
-b <arg>, --bit-depth=<arg> Bit depth for codec (8 for version <=1, 10 or 12 for version 2)
8, 10, 12
--input-bit-depth=<arg> Bit depth of input
--lag-in-frames=<arg> Max number of frames to lag
--large-scale-tile=<arg> Large scale tile coding (0: off (default), 1: on (ivf output only))
--monochrome Monochrome video (no chroma planes)
--full-still-picture-hdr Use full header for still picture
--use-16bit-internal Force use of 16-bit pipeline
--annexb=<arg> Save as Annex-B
Rate Control Options:
--drop-frame=<arg> Temporal resampling threshold (buf %)
--resize-mode=<arg> Frame resize mode
--resize-denominator=<arg> Frame resize denominator
--resize-kf-denominator=<arg>
Frame resize keyframe denominator
--superres-mode=<arg> Frame super-resolution mode
--superres-denominator=<arg>
Frame super-resolution denominator
--superres-kf-denominator=<arg>
Frame super-resolution keyframe denominator
--superres-qthresh=<arg> Frame super-resolution qindex threshold
--superres-kf-qthresh=<arg> Frame super-resolution keyframe qindex threshold
--end-usage=<arg> Rate control mode
vbr, cbr, cq, q
--target-bitrate=<arg> Bitrate (kbps)
--min-q=<arg> Minimum (best) quantizer
--max-q=<arg> Maximum (worst) quantizer
--undershoot-pct=<arg> Datarate undershoot (min) target (%)
--overshoot-pct=<arg> Datarate overshoot (max) target (%)
--buf-sz=<arg> Client buffer size (ms)
--buf-initial-sz=<arg> Client initial buffer size (ms)
--buf-optimal-sz=<arg> Client optimal buffer size (ms)
--bias-pct=<arg> CBR/VBR bias (0=CBR, 100=VBR)
--minsection-pct=<arg> GOP min bitrate (% of target)
--maxsection-pct=<arg> GOP max bitrate (% of target)
Keyframe Placement Options:
--enable-fwd-kf=<arg> Enable forward reference keyframes
--kf-min-dist=<arg> Minimum keyframe interval (frames)
--kf-max-dist=<arg> Maximum keyframe interval (frames)
--disable-kf Disable keyframe placement
--sframe-dist=<arg> S-Frame interval (frames)
--sframe-mode=<arg> S-Frame insertion mode (1..2)
AV1 Specific Options:
--cpu-used=<arg> Speed setting (0..6 in good mode, 6..9 in realtime mode)
--auto-alt-ref=<arg> Enable automatic alt reference frames
--sharpness=<arg> Bias towards block sharpness in rate-distortion optimization of transform coefficients (0..7), default is 0
--static-thresh=<arg> Motion detection threshold
--row-mt=<arg> Enable row based multi-threading (0: off, 1: on (default))
--tile-columns=<arg> Number of tile columns to use, log2
--tile-rows=<arg> Number of tile rows to use, log2
--enable-tpl-model=<arg> RDO based on frame temporal dependency (0: off, 1: backward source based). This is required for deltaq mode.
--enable-keyframe-filtering=<arg>
Apply temporal filtering on key frame(0: no filter, 1: filter without overlay (default), 2: filter with overlay - experimental, may break random access in players.)
--arnr-maxframes=<arg> AltRef max frames (0..15)
--arnr-strength=<arg> AltRef filter strength (0..6)
--tune=<arg> Distortion metric tuned with
psnr, ssim, vmaf_with_preprocessing, vmaf_without_preprocessing, vmaf, vmaf_neg, butteraugli, image_perceptual_quality
--cq-level=<arg> Constant/Constrained Quality level
--max-intra-rate=<arg> Max I-frame bitrate (pct)
--max-inter-rate=<arg> Max P-frame bitrate (pct)
--gf-cbr-boost=<arg> Boost for Golden Frame in CBR mode (pct)
--lossless=<arg> Lossless mode (0: false (default), 1: true)
--enable-cdef=<arg> Enable the constrained directional enhancement filter (0: false, 1: true (default), 2: disable for non-reference frames)
--enable-restoration=<arg> Enable the loop restoration filter (0: false (default in Realtime mode), 1: true (default in Non-realtime mode))
--enable-rect-partitions=<arg>
Enable rectangular partitions (0: false, 1: true (default))
--enable-ab-partitions=<arg>
Enable ab partitions (0: false, 1: true (default))
--enable-1to4-partitions=<arg>
Enable 1:4 and 4:1 partitions (0: false, 1: true (default))
--min-partition-size=<arg> Set min partition size (4:4x4, 8:8x8, 16:16x16, 32:32x32, 64:64x64, 128:128x128). On frame with 4k+ resolutions or higher speed settings, the min partition size will have a minimum of 8.
--max-partition-size=<arg> Set max partition size (4:4x4, 8:8x8, 16:16x16, 32:32x32, 64:64x64, 128:128x128)
--enable-dual-filter=<arg> Enable dual filter (0: false, 1: true (default))
--enable-chroma-deltaq=<arg>
Enable chroma delta quant (0: false (default), 1: true)
--enable-intra-edge-filter=<arg>
Enable intra edge filtering (0: false, 1: true (default))
--enable-order-hint=<arg> Enable order hint (0: false, 1: true (default))
--enable-tx64=<arg> Enable 64-pt transform (0: false, 1: true (default))
--enable-flip-idtx=<arg> Enable extended transform type (0: false, 1: true (default)) including FLIPADST_DCT, DCT_FLIPADST, FLIPADST_FLIPADST, ADST_FLIPADST, FLIPADST_ADST, IDTX, V_DCT, H_DCT, V_ADST, H_ADST, V_FLIPADST, H_FLIPADST
--enable-rect-tx=<arg> Enable rectangular transform (0: false, 1: true (default))
--enable-dist-wtd-comp=<arg>
Enable distance-weighted compound (0: false, 1: true (default))
--enable-masked-comp=<arg> Enable masked (wedge/diff-wtd) compound (0: false, 1: true (default))
--enable-onesided-comp=<arg>
Enable one sided compound (0: false, 1: true (default))
--enable-interintra-comp=<arg>
Enable interintra compound (0: false, 1: true (default))
--enable-smooth-interintra=<arg>
Enable smooth interintra mode (0: false, 1: true (default))
--enable-diff-wtd-comp=<arg>
Enable difference-weighted compound (0: false, 1: true (default))
--enable-interinter-wedge=<arg>
Enable interinter wedge compound (0: false, 1: true (default))
--enable-interintra-wedge=<arg>
Enable interintra wedge compound (0: false, 1: true (default))
--enable-global-motion=<arg>
Enable global motion (0: false, 1: true (default))
--enable-warped-motion=<arg>
Enable local warped motion (0: false, 1: true (default))
--enable-filter-intra=<arg> Enable filter intra prediction mode (0: false, 1: true (default))
--enable-smooth-intra=<arg> Enable smooth intra prediction modes (0: false, 1: true (default))
--enable-paeth-intra=<arg> Enable Paeth intra prediction mode (0: false, 1: true (default))
--enable-cfl-intra=<arg> Enable chroma from luma intra prediction mode (0: false, 1: true (default))
--enable-diagonal-intra=<arg>
Enable diagonal (D45 to D203) intra prediction modes, which are a subset of directional modes. Has no effect if enable-directional-intra is 0 (0: false, 1: true (default))
--force-video-mode=<arg> Force video mode (0: false, 1: true (default))
--enable-obmc=<arg> Enable OBMC (0: false, 1: true (default))
--enable-overlay=<arg> Enable coding overlay frames (0: false, 1: true (default))
--enable-palette=<arg> Enable palette prediction mode (0: false, 1: true (default))
--enable-intrabc=<arg> Enable intra block copy prediction mode (0: false, 1: true (default))
--enable-angle-delta=<arg> Enable intra angle delta (0: false, 1: true (default))
--disable-trellis-quant=<arg>
Disable trellis optimization of quantized coefficients (0: false 1: true 2: true for rd search 3: true for estimate yrd serch (default))
--enable-qm=<arg> Enable quantisation matrices (0: false (default), 1: true)
--qm-min=<arg> Min quant matrix flatness (0..15), default is 8
--qm-max=<arg> Max quant matrix flatness (0..15), default is 15
--reduced-tx-type-set=<arg> Use reduced set of transform types
--use-intra-dct-only=<arg> Use DCT only for INTRA modes
--use-inter-dct-only=<arg> Use DCT only for INTER modes
--use-intra-default-tx-only=<arg>
Use Default-transform only for INTRA modes
--quant-b-adapt=<arg> Use adaptive quantize_b
--coeff-cost-upd-freq=<arg> Update freq for coeff costs. 0: SB, 1: SB Row per Tile, 2: Tile, 3: Off
--mode-cost-upd-freq=<arg> Update freq for mode costs. 0: SB, 1: SB Row per Tile, 2: Tile, 3: Off
--mv-cost-upd-freq=<arg> Update freq for mv costs. 0: SB, 1: SB Row per Tile, 2: Tile, 3: Off
--frame-parallel=<arg> Enable frame parallel decodability features (0: false (default), 1: true)
--error-resilient=<arg> Enable error resilient features (0: false (default), 1: true)
--aq-mode=<arg> Adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3: cyclic refresh)
--deltaq-mode=<arg> Delta qindex mode (0: off, 1: deltaq objective (default), 2: deltaq placeholder, 3: key frame visual quality, 4: user rating based visual quality optimization). Currently this requires enable-tpl-model as a prerequisite.
--deltaq-strength=<arg> Deltaq strength for --deltaq-mode=4 (%)
--delta-lf-mode=<arg> Enable delta-lf-mode (0: off (default), 1: on)
--frame-boost=<arg> Enable frame periodic boost (0: off (default), 1: on)
--noise-sensitivity=<arg> Noise sensitivity (frames to blur)
--tune-content=<arg> Tune content type
default, screen, film
--cdf-update-mode=<arg> CDF update mode for entropy coding (0: no CDF update, 1: update CDF on all frames(default), 2: selectively update CDF on some frames)
--color-primaries=<arg> Color primaries (CICP) of input content:
bt709, unspecified, bt601, bt470m, bt470bg, smpte240, film, bt2020, xyz, smpte431, smpte432, ebu3213
--transfer-characteristics=<arg>
Transfer characteristics (CICP) of input content:
unspecified, bt709, bt470m, bt470bg, bt601, smpte240, lin, log100, log100sq10, iec61966, bt1361, srgb, bt2020-10bit, bt2020-12bit, smpte2084, hlg, smpte428
--matrix-coefficients=<arg> Matrix coefficients (CICP) of input content:
identity, bt709, unspecified, fcc73, bt470bg, bt601, smpte240, ycgco, bt2020ncl, bt2020cl, smpte2085, chromncl, chromcl, ictcp
--chroma-sample-position=<arg>
The chroma sample position when chroma 4:2:0 is signaled:
unknown, vertical, colocated
--min-gf-interval=<arg> min gf/arf frame interval (default 0, indicating in-built behavior)
--max-gf-interval=<arg> max gf/arf frame interval (default 0, indicating in-built behavior)
--gf-min-pyr-height=<arg> Min height for GF group pyramid structure (0 (default) to 5)
--gf-max-pyr-height=<arg> maximum height for GF group pyramid structure (0 to 5 (default))
--sb-size=<arg> Superblock size to use
dynamic, 64, 128
--num-tile-groups=<arg> Maximum number of tile groups, default is 1
--mtu-size=<arg> MTU size for a tile group, default is 0 (no MTU targeting), overrides maximum number of tile groups
--timing-info=<arg> Signal timing info in the bitstream (model unly works for no hidden frames, no super-res yet):
unspecified, constant, model
--film-grain-test=<arg> Film grain test vectors (0: none (default), 1: test-1 2: test-2, ... 16: test-16)
--film-grain-table=<arg> Path to file containing film grain parameters
--denoise-noise-level=<arg> Amount of noise (from 0 = don't denoise, to 50)
--denoise-block-size=<arg> Denoise block size (default = 32)
--enable-dnl-denoising=<arg>
Apply denoising to the frame being encoded when denoise-noise-level is enabled (0: false, 1: true (default))
--max-reference-frames=<arg>
maximum number of reference frames allowed per frame (3 to 7 (default))
--reduced-reference-set=<arg>
Use reduced set of single and compound references (0: off (default), 1: on)
--enable-ref-frame-mvs=<arg>
Enable temporal mv prediction (default is 1)
--target-seq-level-idx=<arg>
Target sequence level index. Possible values are in the form of "ABxy"(pad leading zeros if less than 4 digits). AB: Operating point(OP) index, xy: Target level index for the OP. E.g. "0" means target level index 0 for the 0th OP, "1021" means target level index 21 for the 10th OP.
--set-tier-mask=<arg> Set bit mask to specify which tier each of the 32 possible operating points conforms to. Bit value 0(defualt): Main Tier, 1: High Tier.
--min-cr=<arg> Set minimum compression ratio. Take integer values. Default is 0. If non-zero, encoder will try to keep the compression ratio of each frame to be higher than the given value divided by 100.
--vbr-corpus-complexity-lap=<arg>
Set average corpus complexity per mb for single pass VBR using lap. (0..10000), default is 0
--input-chroma-subsampling-x=<arg>
chroma subsampling x value.
--input-chroma-subsampling-y=<arg>
chroma subsampling y value.
--dv-cost-upd-freq=<arg> Update freq for dv costs. 0: SB, 1: SB Row per Tile, 2: Tile, 3: Off
--partition-info-path=<arg> Partition information read and write path
--enable-directional-intra=<arg>
Enable directional intra prediction modes (0: false, 1: true (default))
--enable-tx-size-search=<arg>
Enable transform size search to find the best size for each block. If false, transforms always have the largest possible size (0: false, 1: true (default))
--loopfilter-control=<arg> Control loop filtering (0: Loopfilter disabled for all frames, 1: Enable loopfilter for all frames (default), 2: Disable loopfilter for non-reference frames, 3: Disable loopfilter for frames with low motion
--auto-intra-tools-off=<arg>
Automatically turn off several intra coding tools for allintra mode. Only in effect if --deltaq-mode=3.
-p <arg>, --passes=<arg> Number of passes (1/2/3)
--two-pass-output=<arg> The output file for the first two passes for three-pass encoding.
-spf <arg>, --second-pass-log=<arg> Log file from second pass.
--fwd-kf-dist=<arg> Set distance between forward keyframes. A value of -1 means no repetitive forward keyframes. Default is -1.
Stream timebase (--timebase):
The desired precision of timestamps in the output, expressed
in fractional seconds. Default is 1/1000.
Included encoders:
av1 - AOMedia Project AV1 Encoder 3.2.0-295-g00d80b8bcb (default)
Use --codec to switch to a non-default encoder.

View file

@ -0,0 +1,197 @@
--allintra
--film-grain-test
--chroma-sample-position
--enable-smooth-interintra
-o
--tune
-p
--test-decode
--enable-chroma-deltaq
--help
--superres-qthresh
-w
--enable-tx64
--input-chroma-subsampling-y
--enable-masked-comp
--enable-cfl-intra
--enable-ref-frame-mvs
--enable-dist-wtd-comp
--webm
--psnr
--max-intra-rate
--max-partition-size
--denoise-block-size
--rt
--cfg
-D
-v
--static-thresh
--obu
--use-intra-default-tx-only
-1
-u
--force-video-mode
--cdf-update-mode
--enable-diff-wtd-comp
--enable-global-motion
--height
--tile-rows
--enable-cdef
--buf-optimal-sz
--enable-interintra-comp
--sframe-mode
--vbr-corpus-complexity-lap
--i444
--enable-intra-edge-filter
--film-grain-table
--sframe-dist
--reduced-reference-set
--full-still-picture-hdr
--max-q
--gf-cbr-boost
--drop-frame
--codec
--enable-rect-tx
--coeff-cost-upd-freq
--frame-boost
--enable-angle-delta
--min-partition-size
--deltaq-mode
-b
--bit-depth
--cq-level
--lossless
--buf-sz
--ivf
--enable-fwd-kf
--enable-interintra-wedge
--tile-columns
--tune-content
--matrix-coefficients
--loopfilter-control
--quant-b-adapt
--input-bit-depth
--superres-kf-denominator
--usage
--disable-warnings
-q
--use-intra-dct-only
--frame-parallel
--global-error-resilient
--yv12
--width
--min-gf-interval
--maxsection-pct
--enable-interinter-wedge
-c
--enable-dual-filter
--quiet
--second-pass-log
--output
--enable-1to4-partitions
--forced_max_frame_width
--row-mt
--enable-flip-idtx
--use-16bit-internal
--bias-pct
--set-tier-mask
--superres-mode
--kf-max-dist
--enable-intrabc
--q-hist
--end-usage
--min-q
--enable-rect-partitions
--color-primaries
--rate-hist
--i422
--enable-onesided-comp
-y
--qm-max
--limit
--transfer-characteristics
--minsection-pct
--large-scale-tile
--resize-denominator
--fpf
--disable-trellis-quant
--enable-dnl-denoising
-spf
--fwd-kf-dist
--disable-warning-prompt
-h
--buf-initial-sz
--deltaq-strength
--enable-keyframe-filtering
--skip
--resize-kf-denominator
--enable-tpl-model
--superres-denominator
--arnr-strength
--enable-restoration
--enable-filter-intra
--undershoot-pct
--stereo-mode
--enable-paeth-intra
--noise-sensitivity
--enable-overlay
--gf-min-pyr-height
--sb-size
--num-tile-groups
--max-reference-frames
--error-resilient
--partition-info-path
--enable-palette
--enable-ab-partitions
--auto-intra-tools-off
--kf-min-dist
--delta-lf-mode
-t
--good
--enable-diagonal-intra
--superres-kf-qthresh
--disable-kf
--dv-cost-upd-freq
--auto-alt-ref
--enable-qm
--mtu-size
--verbose
--reduced-tx-type-set
--enable-tx-size-search
--use-inter-dct-only
--input-chroma-subsampling-x
--arnr-maxframes
--denoise-noise-level
--timing-info
--passes
--enable-smooth-intra
--two-pass-output
--enable-warped-motion
--target-bitrate
--debug
--forced_max_frame_height
--monochrome
--enable-order-hint
--mv-cost-upd-freq
--aq-mode
--qm-min
--target-seq-level-idx
--enable-directional-intra
--max-inter-rate
--fps
--profile
--i420
--lag-in-frames
--overshoot-pct
--sharpness
--enable-obmc
--mode-cost-upd-freq
--max-gf-interval
--resize-mode
--cpu-used
--timebase
--gf-max-pyr-height
--min-cr
--annexb
--pass
--threads

View file

@ -0,0 +1,131 @@
rav1e 0.4.1 (release)
AV1 video encoder
USAGE:
rav1e [FLAGS] [OPTIONS] <INPUT> --output <OUTPUT>
FLAGS:
--fullhelp
Prints more detailed help information
--low-latency
Low latency mode; disables frame reordering
Has a significant speed-to-quality trade-off
--still-picture
Still picture mode
--benchmark
Provide a benchmark report at the end of the encoding
-v, --verbose
Verbose logging; outputs info for every frame
-q, --quiet
Do not output any status message
--psnr
Calculate and display PSNR metrics
--metrics
Calulate and display several metrics including PSNR, SSIM, CIEDE2000 etc
-y
Overwrite output file.
-h, --help
Prints help information
-V, --version
Prints version information
OPTIONS:
--threads <THREADS>
Set the threadpool size [default: 0]
-o, --output <OUTPUT>
Compressed AV1 in IVF video output
--first-pass <FIRST_PASS>
Perform the first pass of a two-pass encode, saving the pass data to the specified file for future passes
--second-pass <SECOND_PASS>
Perform the second pass of a two-pass encode, reading the pass data saved from a previous pass from the
specified file
-l, --limit <LIMIT>
Maximum number of frames to encode [default: 0]
--skip <SKIP>
Skip n number of frames and encode [default: 0]
--quantizer <QP>
Quantizer (0-255), smaller values are higher quality [default: 100]
--min-quantizer <MINQP>
Minimum quantizer (0-255) to use in bitrate mode [default: 0]
-b, --bitrate <BITRATE>
Bitrate (kbps)
-s, --speed <SPEED>
Speed level (0 is best quality, 10 is fastest)
Speeds 10 and 0 are extremes and are generally not recommended [default: 6]
-i, --min-keyint <MIN_KEYFRAME_INTERVAL>
Minimum interval between keyframes [default: 12]
-I, --keyint <KEYFRAME_INTERVAL>
Maximum interval between keyframes. When set to 0, disables fixed-interval keyframes. [default: 240]
-S, --switch-frame-interval <SWITCH_FRAME_INTERVAL>
Maximum interval between switch frames. When set to 0, disables switch frames. [default: 0]
--reservoir-frame-delay <RESERVOIR_FRAME_DELAY>
Number of frames over which rate control should distribute the reservoir [default: min(240, 1.5x keyint)]
A minimum value of 12 is enforced.
--rdo-lookahead-frames <RDO_LOOKAHEAD_FRAMES>
Number of frames encoder should lookahead for RDO purposes [default: 40]
--tune <TUNE>
Quality tuning [default: Psychovisual] [possible values: Psnr, Psychovisual]
--tile-rows <TILE_ROWS>
Number of tile rows. Must be a power of 2. rav1e may override this based on video resolution. [default: 0]
--tile-cols <TILE_COLS>
Number of tile columns. Must be a power of 2. rav1e may override this based on video resolution. [default:
0]
--tiles <TILES>
Number of tiles. Tile-cols and tile-rows are overridden
so that the video has at least this many tiles. [default: 0]
--range <PIXEL_RANGE>
Pixel range [default: limited] [possible values: Limited, Full]
--primaries <COLOR_PRIMARIES>
Color primaries used to describe color parameters [default: unspecified] [possible values: BT709,
Unspecified, BT470M, BT470BG, BT601, SMPTE240, GenericFilm, BT2020, XYZ, SMPTE431, SMPTE432, EBU3213]
--transfer <TRANSFER_CHARACTERISTICS>
Transfer characteristics used to describe color parameters [default: unspecified] [possible values: BT709,
Unspecified, BT470M, BT470BG, BT601, SMPTE240, Linear, Log100, Log100Sqrt10, IEC61966, BT1361, SRGB,
BT2020_10Bit, BT2020_12Bit, SMPTE2084, SMPTE428, HLG]
--matrix <MATRIX_COEFFICIENTS>
Matrix coefficients used to describe color parameters [default: unspecified] [possible values: Identity,
BT709, Unspecified, FCC, BT470BG, BT601, SMPTE240, YCgCo, BT2020NCL, BT2020CL, SMPTE2085, ChromatNCL,
ChromatCL, ICtCp]
--mastering-display <MASTERING_DISPLAY>
Mastering display primaries in the form of G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min) [default: unspecified]
--content-light <CONTENT_LIGHT>
Content light level used to describe content luminosity (cll,fall) [default: 0,0]
--frame-rate <FRAME_RATE>
Constant frame rate to set at the output (inferred from input when omitted)
--time-scale <TIME_SCALE>
The time scale associated with the frame rate if provided (ignored otherwise) [default: 1]
-r, --reconstruction <RECONSTRUCTION>
Outputs a Y4M file containing the output from the decoder
ARGS:
<INPUT>
Uncompressed YUV4MPEG2 video input

View file

@ -0,0 +1,51 @@
--still-picture
--quiet
--version
--keyint
--psnr
--threads
--verbose
--low-latency
-q
-h
--skip
--reservoir-frame-delay
--mastering-display
--rdo-lookahead-frames
-s
--output
-i
--tile-cols
--reconstruction
--bitrate
--tiles
-V
--second-pass
-l
-b
-I
--tile-rows
--limit
-o
--min-quantizer
-S
--metrics
-v
--first-pass
-y
--fullhelp
--quantizer
--min-keyint
--switch-frame-interval
--tune
--help
--range
--speed
--primaries
--transfer
--matrix
--benchmark
--content-light
--frame-rate
--time-scale
-r

View file

@ -0,0 +1,138 @@
Usage: SvtAv1EncApp <options> -b dst_filename -i src_filename
Examples:
Two passes encode (VBR only):
SvtAv1EncApp <--stats svtav1_2pass.log> --rc 1 --tbr 1000 --pass 1 -b dst_filename -i src_filename
SvtAv1EncApp <--stats svtav1_2pass.log> --rc 1 --tbr 1000 --pass 2 -b dst_filename -i src_filename
Or a combined cli:
SvtAv1EncApp <--stats svtav1_2pass.log> --passes 2 --rc 1 --tbr 1000 -b dst_filename -i src_filename
Options:
--help Show usage options and exit
-i, --input Input filename
-b, --output Output filename
--errlog Error filename
-o, --recon Recon filename
--stat-file Stat filename
--preset Encoder mode/Preset used (-2 (debugging preset),-1 (debugging preset),0 - 8 [default]) thehigher the preset, the higher the speed, the lower the preset, the lower the quality
Encoder Global Options:
-w, --width Frame width
-h, --height Frame height
-n, --frames Stop encoding after n input frames
--nb Buffer n input frames
--progress Change verbosity of the output (0: no progress is printed, 1: default, 2: aomenc style machine parsable output)
--no-progress Do not print out progress, if set to 1 it is equivalent to `--progress 0`, else `--progress 1`
--color-format Set encoder color format(YUV400, YUV420, YUV422, YUV444 : YUV420 [default])
--profile Bitstream profile number to use(0: main profile[default], 1: high profile, 2: professional profile)
--fps Stream frame rate (rate/scale)
--fps-num Stream frame rate numerator
--fps-denom Stream frame rate denominator
--input-depth Bit depth for codec(8 or 10)
--16bit-pipeline Bit depth for enc-dec(0: lbd[default], 1: hbd)
--compressed-ten-bit-format Offline packing of the 2bits: requires two bits packed input (0: OFF[default], 1: ON)
--inj Inject pictures at defined frame rate(0: OFF[default],1: ON)
--inj-frm-rt Set injector frame rate
--hierarchical-levels Set hierarchical levels (0 - 5 : 4 [default])
--pred-struct Set prediction structure( 0: low delay P, 1: low delay B, 2: random access [default])
--enable-stat-report outputs psnr ssim metrics at the end of the encode (0: OFF[default], 1: ON)
--asm Limit assembly instruction set [0 - 11] or [c, mmx, sse, sse2, sse3, ssse3, sse4_1, sse4_2, avx, avx2, avx512, max], by default highest level supported by CPU
--lp target number of logical cores to be used (1-max number of cores on machine[default])
--unpin Allows the execution to be pined/unpined to/from specific cores set by --lp
The combinational use of --unpin with --lp results in memory reduction while allowing the execution to work on any of the cores and not restrict it to specific cores
--unpin is overwritten to 0 when --ss is set to 0 or 1. ( 0: OFF ,1: ON [default])
Example: 72 core machine:
72 jobs x -- lp 1 -- unpin 1
36 jobs x -- lp 2 -- unpin 1
18 jobs x -- lp 4 -- unpin 1
--ss Specify which socket the encoder runs on--unpin is overwritten to 0 when --ss is set to 0 or 1
Rate Control Options:
--rc Rate control mode(0 = CQP if --enable-tpl-la is set to 0, else CRF , 1 = VBR)
--tbr Target Bitrate (kbps)
--use-q-file Overwrite QP assignment using qp values in QP file
--use-fixed-qindex-offsets Use fixed QIndex offset
--key-frame-qindex-offset Key Frame QIndex Offset
--key-frame-chroma-qindex-offset Key Frame Chroma QIndex Offset
--qindex-offsets QIndexOffsets
--chroma-qindex-offsets ChromaQIndexOffsets
--qpfile Path to Qp file
-q, --qp Constant/Constrained Quality level
--crf Constant Rate Factor, equal to --rc 0 --enable-tpl-la 1 --qp x
--max-qp Maximum (worst) quantizer[0-63] only applicable when --rc > 0
--min-qp Minimum (best) quantizer[0-63] only applicable when --rc > 0
--adaptive-quantization Set adaptive QP level(0: OFF ,1: variance base using segments ,2: Deltaq pred efficiency)
--vbv-bufsize VBV buffer size
--undershoot-pct Datarate undershoot (min) target (%)
--overshoot-pct Datarate overshoot (max) target (%)
--recode-loop Recode loop levels (0 : OFF, 1: Allow recode for KF and exceeding maximum frame bandwidth, 2:Allow recode only for KF/ARF/GF frames, 3: Allow recode for all frames based on bitrate constraints, 4: preset based decision [Default])
Twopass Options:
--pass Multipass bitrate control (1: first pass, generates stats file , 2: second pass, uses stats file)
--stats Filename for 2 pass stats("svtav1_2pass.log" : [Default])
--passes Number of passes (1: one pass encode, 2: two passes encode) applicable only for rc > 0
--bias-pct CBR/VBR bias (0=CBR-like, 100=VBR-like)
--minsection-pct GOP min bitrate (% of target)
--maxsection-pct GOP max bitrate (% of target)
GOP size and type Options:
--keyint Intra period interval(frames) (-2: default intra period , -1: No intra update or [0 - 2^31-2]; [-2-255] if RateControlMode >= 1)
--irefresh-type Intra refresh type (1: FWD Frame (Open GOP), 2: KEY Frame (Closed GOP)[default])
--lookahead, -lad The lookahead option is currently disabled (forced to 0) until further work is done on rate control
AV1 Specific Options:
--tile-rows Number of tile rows to use, log2[0-6]
--tile-columns Number of tile columns to use, log2[0-4]
--disable-dlf Disable loop filter(0: loop filter enabled[default] ,1: loop filter disabled)
--cdef-level CDEF Level, 0: OFF, 1-5: ON with 64,16,8,4,1 step refinement, -1: DEFAULT
--enable-restoration-filtering Enable the loop restoration filter(0: OFF ,1: ON ,-1:DEFAULT)
--sg-filter-mode Self-guided filter mode (0:OFF, 1: step 0, 2: step 1, 3: step 4, 4: step 16, -1: DEFAULT)
--wn-filter-mode Wiener filter mode (0:OFF, 1: 3-Tap luma/ 3-Tap chroma, 2: 5-Tap luma/ 5-Tap chroma, 3: 7-Tap luma/ 7-Tap chroma, -1: DEFAULT)
--mrp-level Multi reference frame levels( 0: OFF, 1: FULL, 2: Level1 .. 9: Level8, -1: DEFAULT)
--enable-tpl-la RDO based on frame temporal dependency (0: off, 1: backward source based)
--enable-mfmv Enable motion field motion vector( 0: OFF, 1: ON, -1: DEFAULT)
--enable-redundant-blk Use the same md results(mode, residual , cost,etc..)as the previously processed identical block(0: OFF, 1: ON, -1: DEFAULT)
--enable-spatial-sse-full-loop-level Enable spatial sse full loop(0: OFF, 1: ON, -1: DEFAULT)
--enable-over-bndry-blk Enable over boundary block mode (0: OFF, 1: ON, -1: DEFAULT)
--enable-new-nrst-near-comb Enable new nearest near comb injection (0: OFF, 1: ON, -1: DEFAULT)
--enable-nsq-table-use Enable nsq table (0: OFF, 1: ON, -1: DEFAULT)
--enable-framend-cdf-upd-mode Enable frame end cdf update mode (0: OFF, 1: ON, -1: DEFAULT)
--chroma-mode Select chroma mode([0-3], -1: DEFAULT)
--disable-cfl Disable chroma from luma (CFL) flag (0: OFF (do not disable), 1: ON (disable), -1: DEFAULT)
--enable-local-warp Enable warped motion use , 0 = OFF, 1 = ON, -1 = DEFAULT
--enable-global-motion Enable global motion (0: OFF, 1: ON [default])
--intra-angle-delta Enable intra angle delta filtering filtering (0: OFF, 1: ON, -1: DEFAULT)
--enable-interintra-comp Enable interintra compound (0: OFF, 1: ON (default))
--enable-paeth Enable paeth (0: OFF, 1: ON, -1: DEFAULT)
--enable-smooth Enable smooth (0: OFF, 1: ON, -1: DEFAULT)
--obmc-level OBMC Level(0: OFF, 1: Fully ON, 2 and 3 are faster levels, -1: DEFAULT)
--rdoq-level Enable RDOQ (0: OFF, 1: ON, -1: DEFAULT)
--filter-intra-level Enable filter intra prediction mode (0: OFF, 1: ON [default])
--enable-intra-edge-filter Enable intra edge filter (0: OFF, 1: ON, -1: DEFAULT)
--enable-pic-based-rate-est Enable picture based rate estimation (0: OFF, 1: ON, -1: DEFAULT)
--pred-me Set predictive motion estimation level(-1: default, [0-5])
--bipred-3x3 Set bipred3x3 injection (0: OFF, 1: ON FULL, 2: Reduced set, -1: DEFAULT)
--compound Enable compound mode(0: OFF, 1:ON[AVG/DIST/DIFF], 2: ON[AVG/DIST/DIFF/WEDGE], -1: default)
--use-default-me-hme Use default motion estimation/hierarchical motion estimation settings(0: OFF, 1: ON[default])
--hme Enable hierarchical motion estimation(0: OFF, 1: ON)
--hme-l0 Enable hierarchical motion estimation Level 0 (0: OFF, 1: ON)
--hme-l1 Enable hierarchical motion estimation Level 1 (0: OFF, 1: ON)
--hme-l2 Enable hierarchical motion estimation Level 2 (0: OFF, 1: ON)
--ext-block Enable the rectangular and asymetric block (0: OFF, 1: ON)
--search-w Set search area in width[1-256]
--search-h Set search area in height[1-256]
--scm Set screen content detection level([0-2], 2 Content adaptive decision: DEFAULT)
--intrabc-mode Set intraBC mode (0: OFF, 1: ON slow, 2: ON faster, 3: ON fastest, -1: DEFAULT)
--hbd-md Enable high bit depth mode decision(0: OFF, 1: ON partially[default],2: fully ON)
--palette-level Set palette prediction mode(-1: default or [0-6])
--umv Allow motion vectors to reach outside of the picture boundary(O: OFF, 1: ON[default])
--film-grain Enable film grain(0: OFF[default], 1-50: ON, film-grain denoising strength)
--tf-level Set altref level(-1: Default; 0: OFF; 1: ON)
--enable-overlays Enable the insertion of an extra picture called overlayer picture which will be used as an extra reference frame for the base-layer picture(0: OFF[default], 1: ON)
--enable-intra-angle-delta Enable intra angle delta filtering filtering (0: OFF, 1: ON, -1: DEFAULT)
Color Description Options:
--color-primaries Color primaries (2: DEFAULT)
--transfer-characteristics Transfer characteristics (2: DEFAULT)
--matrix-coefficients Matrix coefficients (2: DEFAULT)
--color-range Color range, 0: Studio (default), 1: Full

View file

@ -0,0 +1,119 @@
--use-q-file
--enable-overlays
--errlog
-h
--matrix-coefficients
--qpfile
--disable-dlf
--compound
--umv
--obmc-level
--fps-num
--maxsection-pct
--width
--undershoot-pct
--enable-mfmv
--pred-me
--tile-columns
--hme
--wn-filter-mode
--preset
--cdef-level
--compressed-ten-bit-format
-lad
--enable-spatial-sse-full-loop-level
--nb
--sg-filter-mode
--enable-new-nrst-near-comb
--color-range
--hme-l1
--palette-level
--unpin
-q
-b
--adaptive-quantization
--pass
--enable-restoration-filtering
--bipred-3x3
--vbv-bufsize
--mrp-level
--enable-interintra-comp
--inj-frm-rt
--transfer-characteristics
--fps
--ext-block
--enable-intra-edge-filter
--enable-global-motion
--hbd-md
--tf-level
--pred-struct
--input-depth
--qp
--enable-nsq-table-use
--recon
--hme-l0
--inj
--filter-intra-level
--enable-smooth
--frames
--height
--stats
--help
--enable-tpl-la
--search-w
--stat-file
--min-qp
--irefresh-type
--use-default-me-hme
--progress
--output
-n
--lp
--fps-denom
--chroma-qindex-offsets
--color-primaries
--enable-intra-angle-delta
--input
--hierarchical-levels
--disable-cfl
--enable-pic-based-rate-est
--enable-over-bndry-blk
-1
--recode-loop
--scm
--intrabc-mode
--key-frame-chroma-qindex-offset
--enable-stat-report
--tile-rows
-o
--film-grain
--chroma-mode
--enable-framend-cdf-upd-mode
--rdoq-level
--passes
--profile
--key-frame-qindex-offset
--color-format
--no-progress
--use-fixed-qindex-offsets
--max-qp
--enable-redundant-blk
--ss
--enable-local-warp
--minsection-pct
--tbr
--search-h
--enable-paeth
--lookahead
--intra-angle-delta
--bias-pct
--keyint
-i
--crf
--hme-l2
--rc
--qindex-offsets
--16bit-pipeline
--overshoot-pct
-w
--asm

View file

@ -0,0 +1,167 @@
Usage: vpxenc <options> -o dst_filename src_filename
Options:
--help Show usage options and exit
-D, --debug Debug mode (makes output deterministic)
-o <arg>, --output=<arg> Output filename
--codec=<arg> Codec to use
-p <arg>, --passes=<arg> Number of passes (1/2)
--pass=<arg> Pass to execute (1/2)
--fpf=<arg> First pass statistics file name
--limit=<arg> Stop encoding after n input frames
--skip=<arg> Skip the first n input frames
-d <arg>, --deadline=<arg> Deadline per frame (usec)
--best Use Best Quality Deadline
--good Use Good Quality Deadline
--rt Use Realtime Quality Deadline
-q, --quiet Do not print encode progress
-v, --verbose Show encoder parameters
--psnr Show PSNR in status line
--webm Output WebM (default when WebM IO is enabled)
--ivf Output IVF
-P, --output-partitions Makes encoder output partitions. Requires IVF output!
--q-hist=<arg> Show quantizer histogram (n-buckets)
--rate-hist=<arg> Show rate histogram (n-buckets)
--disable-warnings Disable warnings about potentially incorrect encode settings.
-y, --disable-warning-prompt Display warnings, but do not prompt user to continue.
--test-decode=<arg> Test encode/decode mismatch
off, fatal, warn
Encoder Global Options:
--nv12 Input file is NV12
--yv12 Input file is YV12
--i420 Input file is I420 (default)
--i422 Input file is I422
--i444 Input file is I444
--i440 Input file is I440
-u <arg>, --usage=<arg> Usage profile number to use
-t <arg>, --threads=<arg> Max number of threads to use
--profile=<arg> Bitstream profile number to use
-w <arg>, --width=<arg> Frame width
-h <arg>, --height=<arg> Frame height
--stereo-mode=<arg> Stereo 3D video format
mono, left-right, bottom-top, top-bottom, right-left
--timebase=<arg> Output timestamp precision (fractional seconds)
--fps=<arg> Stream frame rate (rate/scale)
--error-resilient=<arg> Enable error resiliency features
--test-16bit-internal Force use of 16 bit internal buffer
--lag-in-frames=<arg> Max number of frames to lag
Rate Control Options:
--drop-frame=<arg> Temporal resampling threshold (buf %)
--resize-allowed=<arg> Spatial resampling enabled (bool)
--resize-width=<arg> Width of encoded frame
--resize-height=<arg> Height of encoded frame
--resize-up=<arg> Upscale threshold (buf %)
--resize-down=<arg> Downscale threshold (buf %)
--end-usage=<arg> Rate control mode
vbr, cbr, cq, q
--target-bitrate=<arg> Bitrate (kbps)
--min-q=<arg> Minimum (best) quantizer
--max-q=<arg> Maximum (worst) quantizer
--undershoot-pct=<arg> Datarate undershoot (min) target (%)
--overshoot-pct=<arg> Datarate overshoot (max) target (%)
--buf-sz=<arg> Client buffer size (ms)
--buf-initial-sz=<arg> Client initial buffer size (ms)
--buf-optimal-sz=<arg> Client optimal buffer size (ms)
Twopass Rate Control Options:
--bias-pct=<arg> CBR/VBR bias (0=CBR, 100=VBR)
--minsection-pct=<arg> GOP min bitrate (% of target)
--maxsection-pct=<arg> GOP max bitrate (% of target)
--corpus-complexity=<arg> corpus vbr complexity midpoint
Keyframe Placement Options:
--kf-min-dist=<arg> Minimum keyframe interval (frames)
--kf-max-dist=<arg> Maximum keyframe interval (frames)
--disable-kf Disable keyframe placement
VP8 Specific Options:
--cpu-used=<arg> CPU Used (-16..16)
--auto-alt-ref=<arg> Enable automatic alt reference frames. (0..1)
--noise-sensitivity=<arg> Noise sensitivity (frames to blur)
--sharpness=<arg> Increase sharpness at the expense of lower PSNR. (0..7)
--static-thresh=<arg> Motion detection threshold
--token-parts=<arg> Number of token partitions to use, log2
--arnr-maxframes=<arg> AltRef max frames (0..15)
--arnr-strength=<arg> AltRef filter strength (0..6)
--arnr-type=<arg> AltRef filter type (1..3)
--tune=<arg> Material to favor
psnr, ssim
--cq-level=<arg> Constant/Constrained Quality level
--max-intra-rate=<arg> Max I-frame bitrate (pct)
--gf-cbr-boost=<arg> Boost for Golden Frame in CBR mode (pct)
--screen-content-mode=<arg Screen content mode
VP9 Specific Options:
--cpu-used=<arg> CPU Used (-9..9)
--auto-alt-ref=<arg> Enable automatic alt reference frames, 2+ enables multi-layer. (0..6)
--sharpness=<arg> Increase sharpness at the expense of lower PSNR. (0..7)
--static-thresh=<arg> Motion detection threshold
--tile-columns=<arg> Number of tile columns to use, log2
--tile-rows=<arg> Number of tile rows to use, log2 (set to 0 while threads > 1)
--enable-tpl=<arg> Enable temporal dependency model
--arnr-maxframes=<arg> AltRef max frames (0..15)
--arnr-strength=<arg> AltRef filter strength (0..6)
--arnr-type=<arg> AltRef filter type (1..3)
--tune=<arg> Material to favor
psnr, ssim
--cq-level=<arg> Constant/Constrained Quality level
--max-intra-rate=<arg> Max I-frame bitrate (pct)
--max-inter-rate=<arg> Max P-frame bitrate (pct)
--gf-cbr-boost=<arg> Boost for Golden Frame in CBR mode (pct)
--lossless=<arg> Lossless mode (0: false (default), 1: true)
--frame-parallel=<arg> Enable frame parallel decodability features
--aq-mode=<arg> Adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3: cyclic refresh, 4: equator360)
--alt-ref-aq=<arg> Special adaptive quantization for the alternate reference frames.
--frame-boost=<arg> Enable frame periodic boost (0: off (default), 1: on)
--noise-sensitivity=<arg> Noise sensitivity (frames to blur)
--tune-content=<arg> Tune content type
default, screen, film
--color-space=<arg> The color space of input content:
unknown, bt601, bt709, smpte170, smpte240, bt2020, reserved, sRGB
--min-gf-interval=<arg> min gf/arf frame interval (default 0, indicating in-built behavior)
--max-gf-interval=<arg> max gf/arf frame interval (default 0, indicating in-built behavior)
--target-level=<arg> Target level
255: off (default)
0: only keep level stats
1: adaptively set alt-ref distance and column tile limit based on picture size, and keep level stats
10: level 1.0 11: level 1.1 ... 62: level 6.2
--row-mt=<arg> Enable row based non-deterministic multi-threading in VP9
--disable-loopfilter=<arg> Control Loopfilter in VP9
0: Loopfilter on for all frames (default)
1: Loopfilter off for non reference frames
2: Loopfilter off for all frames
-b <arg>, --bit-depth=<arg> Bit depth for codec (8 for version <=1, 10 or 12 for version 2)
8, 10, 12
--input-bit-depth=<arg> Bit depth of input
Vizier Rate Control Options:
--use-vizier-rc-params=<ar Use vizier rc params
--active-wq-factor=<arg> Active worst quality factor
--err-per-mb-factor=<arg> Error per macroblock factor
--sr-default-decay-limit=< Second reference default decay limit
--sr-diff-factor=<arg> Second reference diff factor
--kf-err-per-mb-factor=<ar Keyframe error per macroblock factor
--kf-frame-min-boost-facto Keyframe min boost
--kf-frame-max-boost-first Max keyframe boost adjustment factor for first frame
--kf-frame-max-boost-subs- Max boost adjustment factor for subsequent KFs
--kf-max-total-boost-facto Keyframe max total boost factor
--gf-max-total-boost-facto Golden frame max total boost factor
--gf-frame-max-boost-facto Golden frame max per frame boost factor
--zm-factor=<arg> Zero motion power factor
--rd-mult-inter-qp-fac=<ar RD multiplier adjustment for inter frames
--rd-mult-arf-qp-fac=<arg> RD multiplier adjustment for alt-ref frames
--rd-mult-key-qp-fac=<arg> RD multiplier adjustment for key frames
Stream timebase (--timebase):
The desired precision of timestamps in the output, expressed
in fractional seconds. Default is 1/1000.
Included encoders:
vp8 - WebM Project VP8 Encoder v1.11.0
vp9 - WebM Project VP9 Encoder v1.11.0 (default)
Use --codec to switch to a non-default encoder.

View file

@ -0,0 +1,124 @@
-d
--buf-optimal-sz
--zm-factor
--passes
--kf-frame-min-boost-facto
--deadline
--enable-tpl
--err-per-mb-factor
--use-vizier-rc-params
--resize-down
--tile-columns
--lag-in-frames
--rt
--target-bitrate
-q
--cpu-used
--rd-mult-key-qp-fac
--verbose
--help
--kf-err-per-mb-factor
-h
--output
--resize-allowed
--timebase
--maxsection-pct
--kf-min-dist
--cq-level
--static-thresh
-t
--token-parts
--best
--arnr-type
--frame-boost
--gf-frame-max-boost-facto
--sr-diff-factor
-o
--frame-parallel
--rd-mult-arf-qp-fac
--kf-max-total-boost-facto
--codec
--error-resilient
--max-intra-rate
--disable-loopfilter
--auto-alt-ref
--kf-frame-max-boost-subs
--resize-width
--sr-default-decay-limit
--max-gf-interval
--aq-mode
--skip
--width
--tile-rows
-D
--max-inter-rate
--row-mt
--test-decode
--arnr-maxframes
--min-q
--i420
--lossless
--max-q
--input-bit-depth
--overshoot-pct
--target-level
--arnr-strength
--i422
-w
--threads
--good
--resize-height
--quiet
--sharpness
--test-16bit-internal
--q-hist
--output-partitions
--debug
-P
--profile
--resize-up
--rate-hist
--buf-sz
-v
--disable-kf
-u
--screen-content-mode
--height
--i444
--minsection-pct
--color-space
--yv12
--corpus-complexity
--gf-cbr-boost
--active-wq-factor
--nv12
--noise-sensitivity
--pass
--fpf
--bit-depth
--rd-mult-inter-qp-fac
--psnr
-y
--stereo-mode
--end-usage
--tune
-b
--usage
--i440
--limit
--alt-ref-aq
--kf-frame-max-boost-first
-p
--drop-frame
--tune-content
--disable-warning-prompt
--min-gf-interval
--fps
--disable-warnings
--kf-max-dist
--buf-initial-sz
--webm
--gf-max-total-boost-facto
--undershoot-pct
--ivf
--bias-pct

View file

@ -0,0 +1,515 @@
x264 core:163 r3060 5db6aa6
Syntax: x264 [options] -o outfile infile
Infile can be raw (in which case resolution is required),
or YUV4MPEG (*.y4m),
or Avisynth if compiled with support (no).
or libav* formats if compiled with lavf support (no) or ffms support (no).
Outfile type is selected by filename:
.264 -> Raw bytestream
.mkv -> Matroska
.flv -> Flash Video
.mp4 -> MP4 if compiled with GPAC or L-SMASH support (lsmash)
Output bit depth: 8/10
.
Options:
-h, --help List basic options
--longhelp List more options
--fullhelp List all options
Example usage:
Constant quality mode:
x264 --crf 24 -o <output> <input>
Two-pass with a bitrate of 1000kbps:
x264 --pass 1 --bitrate 1000 -o <output> <input>
x264 --pass 2 --bitrate 1000 -o <output> <input>
Lossless:
x264 --qp 0 -o <output> <input>
Maximum PSNR at the cost of speed and visual quality:
x264 --preset placebo --tune psnr -o <output> <input>
Constant bitrate at 1000kbps with a 2 second-buffer:
x264 --vbv-bufsize 2000 --bitrate 1000 -o <output> <input>
Presets:
--profile <string> Force the limits of an H.264 profile
Overrides all settings.
- baseline, main, high, high10, high422, high444
--preset <string> Use a preset to select encoding settings [medium]
Overridden by user settings.
- ultrafast,superfast,veryfast,faster,fast
- medium,slow,slower,veryslow,placebo
--tune <string> Tune the settings for a particular type of source
or situation
Overridden by user settings.
Multiple tunings are separated by commas.
Only one psy tuning can be used at a time.
- psy tunings: film,animation,grain,
stillimage,psnr,ssim
- other tunings: fastdecode,zerolatency
Frame-type options:
-I, --keyint <integer or "infinite"> Maximum GOP size [250]
--tff Enable interlaced mode (top field first)
--bff Enable interlaced mode (bottom field first)
--pulldown <string> Use soft pulldown to change frame rate
- none, 22, 32, 64, double, triple, euro (requires cfr input)
Ratecontrol:
-B, --bitrate <integer> Set bitrate (kbit/s)
--crf <float> Quality-based VBR (-12-51) [23.0]
--vbv-maxrate <integer> Max local bitrate (kbit/s) [0]
--vbv-bufsize <integer> Set size of the VBV buffer (kbit) [0]
-p, --pass <integer> Enable multipass ratecontrol
- 1: First pass, creates stats file
- 2: Last pass, does not overwrite stats file
Input/Output:
-o, --output <string> Specify output file
--sar width:height Specify Sample Aspect Ratio
--fps <float|rational> Specify framerate
--seek <integer> First frame to encode
--frames <integer> Maximum number of frames to encode
--level <string> Specify level (as defined by Annex A)
--quiet Quiet Mode
Filtering:
--vf, --video-filter <filter0>/<filter1>/... Apply video filtering to the input file
Filter options may be specified in <filter>:<option>=<value> format.
Available filters:
crop:left,top,right,bottom
select_every:step,offset1[,...]
redzic@threadripper ~> x264 --fullhelp
x264 core:163 r3060 5db6aa6
Syntax: x264 [options] -o outfile infile
Infile can be raw (in which case resolution is required),
or YUV4MPEG (*.y4m),
or Avisynth if compiled with support (no).
or libav* formats if compiled with lavf support (no) or ffms support (no).
Outfile type is selected by filename:
.264 -> Raw bytestream
.mkv -> Matroska
.flv -> Flash Video
.mp4 -> MP4 if compiled with GPAC or L-SMASH support (lsmash)
Output bit depth: 8/10
.
Options:
-h, --help List basic options
--longhelp List more options
--fullhelp List all options
Example usage:
Constant quality mode:
x264 --crf 24 -o <output> <input>
Two-pass with a bitrate of 1000kbps:
x264 --pass 1 --bitrate 1000 -o <output> <input>
x264 --pass 2 --bitrate 1000 -o <output> <input>
Lossless:
x264 --qp 0 -o <output> <input>
Maximum PSNR at the cost of speed and visual quality:
x264 --preset placebo --tune psnr -o <output> <input>
Constant bitrate at 1000kbps with a 2 second-buffer:
x264 --vbv-bufsize 2000 --bitrate 1000 -o <output> <input>
Presets:
--profile <string> Force the limits of an H.264 profile
Overrides all settings.
- baseline:
--no-8x8dct --bframes 0 --no-cabac
--cqm flat --weightp 0
No interlaced.
No lossless.
- main:
--no-8x8dct --cqm flat
No lossless.
- high:
No lossless.
- high10:
No lossless.
Support for bit depth 8-10.
- high422:
No lossless.
Support for bit depth 8-10.
Support for 4:2:0/4:2:2 chroma subsampling.
- high444:
Support for bit depth 8-10.
Support for 4:2:0/4:2:2/4:4:4 chroma subsampling.
--preset <string> Use a preset to select encoding settings [medium]
Overridden by user settings.
- ultrafast:
--no-8x8dct --aq-mode 0 --b-adapt 0
--bframes 0 --no-cabac --no-deblock
--no-mbtree --me dia --no-mixed-refs
--partitions none --rc-lookahead 0 --ref 1
--scenecut 0 --subme 0 --trellis 0
--no-weightb --weightp 0
- superfast:
--no-mbtree --me dia --no-mixed-refs
--partitions i8x8,i4x4 --rc-lookahead 0
--ref 1 --subme 1 --trellis 0 --weightp 1
- veryfast:
--no-mixed-refs --rc-lookahead 10
--ref 1 --subme 2 --trellis 0 --weightp 1
- faster:
--no-mixed-refs --rc-lookahead 20
--ref 2 --subme 4 --weightp 1
- fast:
--rc-lookahead 30 --ref 2 --subme 6
--weightp 1
- medium:
Default settings apply.
- slow:
--direct auto --rc-lookahead 50 --ref 5
--subme 8 --trellis 2
- slower:
--b-adapt 2 --direct auto --me umh
--partitions all --rc-lookahead 60
--ref 8 --subme 9 --trellis 2
- veryslow:
--b-adapt 2 --bframes 8 --direct auto
--me umh --merange 24 --partitions all
--ref 16 --subme 10 --trellis 2
--rc-lookahead 60
- placebo:
--bframes 16 --b-adapt 2 --direct auto
--slow-firstpass --no-fast-pskip
--me tesa --merange 24 --partitions all
--rc-lookahead 60 --ref 16 --subme 11
--trellis 2
--tune <string> Tune the settings for a particular type of source
or situation
Overridden by user settings.
Multiple tunings are separated by commas.
Only one psy tuning can be used at a time.
- film (psy tuning):
--deblock -1:-1 --psy-rd <unset>:0.15
- animation (psy tuning):
--bframes {+2} --deblock 1:1
--psy-rd 0.4:<unset> --aq-strength 0.6
--ref {Double if >1 else 1}
- grain (psy tuning):
--aq-strength 0.5 --no-dct-decimate
--deadzone-inter 6 --deadzone-intra 6
--deblock -2:-2 --ipratio 1.1
--pbratio 1.1 --psy-rd <unset>:0.25
--qcomp 0.8
- stillimage (psy tuning):
--aq-strength 1.2 --deblock -3:-3
--psy-rd 2.0:0.7
- psnr (psy tuning):
--aq-mode 0 --no-psy
- ssim (psy tuning):
--aq-mode 2 --no-psy
- fastdecode:
--no-cabac --no-deblock --no-weightb
--weightp 0
- zerolatency:
--bframes 0 --force-cfr --no-mbtree
--sync-lookahead 0 --sliced-threads
--rc-lookahead 0
--slow-firstpass Don't force these faster settings with --pass 1:
--no-8x8dct --me dia --partitions none
--ref 1 --subme {2 if >2 else unchanged}
--trellis 0 --fast-pskip
Frame-type options:
-I, --keyint <integer or "infinite"> Maximum GOP size [250]
-i, --min-keyint <integer> Minimum GOP size [auto]
--no-scenecut Disable adaptive I-frame decision
--scenecut <integer> How aggressively to insert extra I-frames [40]
--intra-refresh Use Periodic Intra Refresh instead of IDR frames
-b, --bframes <integer> Number of B-frames between I and P [3]
--b-adapt <integer> Adaptive B-frame decision method [1]
Higher values may lower threading efficiency.
- 0: Disabled
- 1: Fast
- 2: Optimal (slow with high --bframes)
--b-bias <integer> Influences how often B-frames are used [0]
--b-pyramid <string> Keep some B-frames as references [normal]
- none: Disabled
- strict: Strictly hierarchical pyramid
- normal: Non-strict (not Blu-ray compatible)
--open-gop Use recovery points to close GOPs
Only available with b-frames
--no-cabac Disable CABAC
-r, --ref <integer> Number of reference frames [3]
--no-deblock Disable loop filter
-f, --deblock <alpha:beta> Loop filter parameters [0:0]
--slices <integer> Number of slices per frame; forces rectangular
slices and is overridden by other slicing options
--slices-max <integer> Absolute maximum slices per frame; overrides
slice-max-size/slice-max-mbs when necessary
--slice-max-size <integer> Limit the size of each slice in bytes
--slice-max-mbs <integer> Limit the size of each slice in macroblocks (max)
--slice-min-mbs <integer> Limit the size of each slice in macroblocks (min)
--tff Enable interlaced mode (top field first)
--bff Enable interlaced mode (bottom field first)
--constrained-intra Enable constrained intra prediction.
--pulldown <string> Use soft pulldown to change frame rate
- none, 22, 32, 64, double, triple, euro (requires cfr input)
--fake-interlaced Flag stream as interlaced but encode progressive.
Makes it possible to encode 25p and 30p Blu-Ray
streams. Ignored in interlaced mode.
--frame-packing <integer> For stereoscopic videos define frame arrangement
- 0: checkerboard - pixels are alternatively from L and R
- 1: column alternation - L and R are interlaced by column
- 2: row alternation - L and R are interlaced by row
- 3: side by side - L is on the left, R on the right
- 4: top bottom - L is on top, R on bottom
- 5: frame alternation - one view per frame
- 6: mono - 2D frame without any frame packing
- 7: tile format - L is on top-left, R split across
Ratecontrol:
-q, --qp <integer> Force constant QP (0-81, 0=lossless)
-B, --bitrate <integer> Set bitrate (kbit/s)
--crf <float> Quality-based VBR (-12-51) [23.0]
--rc-lookahead <integer> Number of frames for frametype lookahead [40]
--vbv-maxrate <integer> Max local bitrate (kbit/s) [0]
--vbv-bufsize <integer> Set size of the VBV buffer (kbit) [0]
--vbv-init <float> Initial VBV buffer occupancy [0.9]
--crf-max <float> With CRF+VBV, limit RF to this value
May cause VBV underflows!
--qpmin <integer> Set min QP [0]
--qpmax <integer> Set max QP [81]
--qpstep <integer> Set max QP step [4]
--ratetol <float> Tolerance of ABR ratecontrol and VBV [1.0]
--ipratio <float> QP factor between I and P [1.40]
--pbratio <float> QP factor between P and B [1.30]
--chroma-qp-offset <integer> QP difference between chroma and luma [0]
--aq-mode <integer> AQ method [1]
- 0: Disabled
- 1: Variance AQ (complexity mask)
- 2: Auto-variance AQ
- 3: Auto-variance AQ with bias to dark scenes
--aq-strength <float> Reduces blocking and blurring in flat and
textured areas. [1.0]
-p, --pass <integer> Enable multipass ratecontrol
- 1: First pass, creates stats file
- 2: Last pass, does not overwrite stats file
- 3: Nth pass, overwrites stats file
--stats <string> Filename for 2 pass stats ["x264_2pass.log"]
--no-mbtree Disable mb-tree ratecontrol.
--qcomp <float> QP curve compression [0.60]
--cplxblur <float> Reduce fluctuations in QP (before curve compression) [20.0]
--qblur <float> Reduce fluctuations in QP (after curve compression) [0.5]
--zones <zone0>/<zone1>/... Tweak the bitrate of regions of the video
Each zone is of the form
<start frame>,<end frame>,<option>
where <option> is either
q=<integer> (force QP)
or b=<float> (bitrate multiplier)
--qpfile <string> Force frametypes and QPs for some or all frames
Format of each line: framenumber frametype QP
QP is optional (none lets x264 choose). Frametypes: I,i,K,P,B,b.
K=<I or i> depending on open-gop setting
QPs are restricted by qpmin/qpmax.
Analysis:
-A, --partitions <string> Partitions to consider ["p8x8,b8x8,i8x8,i4x4"]
- p8x8, p4x4, b8x8, i8x8, i4x4, none, all
(p4x4 requires p8x8. i8x8 requires --8x8dct.)
--direct <string> Direct MV prediction mode ["spatial"]
- none, spatial, temporal, auto
--no-weightb Disable weighted prediction for B-frames
--weightp <integer> Weighted prediction for P-frames [2]
- 0: Disabled
- 1: Weighted refs
- 2: Weighted refs + Duplicates
--me <string> Integer pixel motion estimation method ["hex"]
- dia: diamond search, radius 1 (fast)
- hex: hexagonal search, radius 2
- umh: uneven multi-hexagon search
- esa: exhaustive search
- tesa: hadamard exhaustive search (slow)
--merange <integer> Maximum motion vector search range [16]
--mvrange <integer> Maximum motion vector length [-1 (auto)]
--mvrange-thread <int> Minimum buffer between threads [-1 (auto)]
-m, --subme <integer> Subpixel motion estimation and mode decision [7]
- 0: fullpel only (not recommended)
- 1: SAD mode decision, one qpel iteration
- 2: SATD mode decision
- 3-5: Progressively more qpel
- 6: RD mode decision for I/P-frames
- 7: RD mode decision for all frames
- 8: RD refinement for I/P-frames
- 9: RD refinement for all frames
- 10: QP-RD - requires trellis=2, aq-mode>0
- 11: Full RD: disable all early terminations
--psy-rd <float:float> Strength of psychovisual optimization ["1.0:0.0"]
#1: RD (requires subme>=6)
#2: Trellis (requires trellis, experimental)
--no-psy Disable all visual optimizations that worsen
both PSNR and SSIM.
--no-mixed-refs Don't decide references on a per partition basis
--no-chroma-me Ignore chroma in motion estimation
--no-8x8dct Disable adaptive spatial transform size
-t, --trellis <integer> Trellis RD quantization. [1]
- 0: disabled
- 1: enabled only on the final encode of a MB
- 2: enabled on all mode decisions
--no-fast-pskip Disables early SKIP detection on P-frames
--no-dct-decimate Disables coefficient thresholding on P-frames
--nr <integer> Noise reduction [0]
--deadzone-inter <int> Set the size of the inter luma quantization deadzone [21]
--deadzone-intra <int> Set the size of the intra luma quantization deadzone [11]
Deadzones should be in the range 0 - 32.
--cqm <string> Preset quant matrices ["flat"]
- flat, jvt
--cqmfile <string> Read custom quant matrices from a JM-compatible file
Overrides any other --cqm* options.
--cqm4 <list> Set all 4x4 quant matrices
Takes a comma-separated list of 16 integers.
--cqm8 <list> Set all 8x8 quant matrices
Takes a comma-separated list of 64 integers.
--cqm4i, --cqm4p, --cqm8i, --cqm8p <list>
Set both luma and chroma quant matrices
--cqm4iy, --cqm4ic, --cqm4py, --cqm4pc <list>
Set individual quant matrices
Video Usability Info (Annex E):
The VUI settings are not used by the encoder but are merely suggestions to
the playback equipment. See doc/vui.txt for details. Use at your own risk.
--overscan <string> Specify crop overscan setting ["undef"]
- undef, show, crop
--videoformat <string> Specify video format ["undef"]
- component, pal, ntsc, secam, mac, undef
--range <string> Specify color range ["auto"]
- auto, tv, pc
--colorprim <string> Specify color primaries ["undef"]
- undef, bt709, bt470m, bt470bg, smpte170m,
smpte240m, film, bt2020, smpte428,
smpte431, smpte432
--transfer <string> Specify transfer characteristics ["undef"]
- undef, bt709, bt470m, bt470bg, smpte170m,
smpte240m, linear, log100, log316,
iec61966-2-4, bt1361e, iec61966-2-1,
bt2020-10, bt2020-12, smpte2084, smpte428,
arib-std-b67
--colormatrix <string> Specify color matrix setting ["???"]
- undef, bt709, fcc, bt470bg, smpte170m,
smpte240m, GBR, YCgCo, bt2020nc, bt2020c,
smpte2085, chroma-derived-nc,
chroma-derived-c, ICtCp
--chromaloc <integer> Specify chroma sample location (0 to 5) [0]
--mastering-display <string> Specify 'G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)'
for primaries, white point, and display brightness
--cll <string> Specify 'max_content,max_frame_average' content
light levels
--alternative-transfer <string> Specify an alternative transfer
characteristics ["undef"]
- same values as --transfer
--nal-hrd <string> Signal HRD information (requires vbv-bufsize)
- none, vbr, cbr (cbr not allowed in .mp4)
--filler Force hard-CBR and generate filler (implied by
--nal-hrd cbr)
--pic-struct Force pic_struct in Picture Timing SEI
--crop-rect <string> Add 'left,top,right,bottom' to the bitstream-level
cropping rectangle
Input/Output:
-o, --output <string> Specify output file
--muxer <string> Specify output container format ["auto"]
- auto, raw, mkv, flv, mp4
--demuxer <string> Specify input container format ["auto"]
- auto, raw, y4m
--input-fmt <string> Specify input file format (requires lavf support)
--input-csp <string> Specify input colorspace format for raw input
- valid csps for `raw' demuxer:
i400, i420, yv12, nv12, nv21, i422, yv16, nv16,
yuyv, uyvy, i444, yv24, bgr, bgra, rgb
--output-csp <string> Specify output colorspace ["i420"]
- i400, i420, i422, i444, rgb
--input-depth <integer> Specify input bit depth for raw input
--output-depth <integer> Specify output bit depth
--input-range <string> Specify input color range ["auto"]
- auto, tv, pc
--input-res <intxint> Specify input resolution (width x height)
--index <string> Filename for input index file
--sar width:height Specify Sample Aspect Ratio
--fps <float|rational> Specify framerate
--seek <integer> First frame to encode
--frames <integer> Maximum number of frames to encode
--level <string> Specify level (as defined by Annex A)
--bluray-compat Enable compatibility hacks for Blu-ray support
--avcintra-class <integer> Use compatibility hacks for AVC-Intra class
- 50, 100, 200
--avcintra-flavor <string> AVC-Intra flavor ["panasonic"]
- panasonic, sony
--stitchable Don't optimize headers based on video content
Ensures ability to recombine a segmented encode
-v, --verbose Print stats for each frame
--no-progress Don't show the progress indicator while encoding
--quiet Quiet Mode
--log-level <string> Specify the maximum level of logging ["info"]
- none, error, warning, info, debug
--psnr Enable PSNR computation
--ssim Enable SSIM computation
--threads <integer> Force a specific number of threads
--lookahead-threads <integer> Force a specific number of lookahead threads
--sliced-threads Low-latency but lower-efficiency threading
--thread-input Run Avisynth in its own thread
--sync-lookahead <integer> Number of buffer frames for threaded lookahead
--non-deterministic Slightly improve quality of SMP, at the cost of repeatability
--cpu-independent Ensure exact reproducibility across different cpus,
as opposed to letting them select different algorithms
--asm <integer> Override CPU detection
--no-asm Disable all CPU optimizations
--opencl Enable use of OpenCL
--opencl-clbin <string> Specify path of compiled OpenCL kernel cache
--opencl-device <integer> Specify OpenCL device ordinal
--dump-yuv <string> Save reconstructed frames
--sps-id <integer> Set SPS and PPS id numbers [0]
--aud Use access unit delimiters
--force-cfr Force constant framerate timestamp generation
--tcfile-in <string> Force timestamp generation with timecode file
--tcfile-out <string> Output timecode v2 file from input timestamps
--timebase <int/int> Specify timebase numerator and denominator
<integer> Specify timebase numerator for input timecode file
or specify timebase denominator for other input
--dts-compress Eliminate initial delay with container DTS hack
Filtering:
--vf, --video-filter <filter0>/<filter1>/... Apply video filtering to the input file
Filter options may be specified in <filter>:<option>=<value> format.
Available filters:
crop:left,top,right,bottom
removes pixels from the edges of the frame
select_every:step,offset1[,...]
apply a selection pattern to input frames
step: the number of frames in the pattern
offsets: the offset into the step to select a frame
see: http://avisynth.nl/index.php/Select#SelectEvery

View file

@ -0,0 +1,170 @@
--fps
--vf
--trellis
--ref
--longhelp
--deadzone-inter
--sync-lookahead
--qblur
--b-pyramid
--cqm4ic
--cll
--input-res
--aud
--asm
--alternative-transfer
--tcfile-in
--transfer
-i
--vbv-bufsize
--rc-lookahead
-r
--no-cabac
--nal-hrd
--zones
--demuxer
--video-filter
--output-csp
--output
--crop-rect
--preset
--avcintra-flavor
-v
--filler
--range
-m
--ratetol
--fullhelp
--frame-packing
--b-bias
--8x8dct
--cqm8p
-o
--dts-compress
--no-deblock
--seek
--slice-max-mbs
--sps-id
--no-psy
--vbv-init
--mvrange-thread
--output-depth
--level
--slice-min-mbs
--qp
--overscan
--avcintra-class
--no-progress
--help
--scenecut
--colorprim
--sliced-threads
--qpfile
--slow-firstpass
--frames
--opencl-device
--vbv-maxrate
--verbose
--threads
--log-level
--mastering-display
--aq-strength
--input-csp
--pass
--no-mbtree
--cqm4
--chromaloc
--partitions
--ipratio
--no-scenecut
--cpu-independent
-b
--pic-struct
--videoformat
--input-range
--cqmfile
--slices-max
-2
--bframes
-3
--slice-max-size
-B
--stats
--cqm4iy
--cqm4pc
--lookahead-threads
-1
--open-gop
--dump-yuv
--me
--psnr
--fast-pskip
--no-chroma-me
--cqm8i
--subme
--mvrange
--pulldown
--crf-max
--muxer
--tcfile-out
-p
-h
--no-8x8dct
--min-keyint
--bff
--qpmax
--aq-mode
--psy-rd
--cqm4p
--thread-input
-t
--cplxblur
--intra-refresh
-A
--bluray-compat
--weightp
--no-fast-pskip
--deadzone-intra
--profile
--chroma-qp-offset
--colormatrix
--input-depth
--constrained-intra
--force-cfr
--qpstep
--tff
-f
--nr
--index
--non-deterministic
--timebase
--b-adapt
--opencl-clbin
--crf
--qpmin
--bitrate
--slices
--cqm8
--sar
--no-weightb
--no-dct-decimate
--cqm
--keyint
--merange
--no-mixed-refs
-q
--no-asm
--direct
--opencl
--input-fmt
--deblock
--tune
--cqm4py
--pbratio
--fake-interlaced
--stitchable
--cqm4i
--qcomp
--quiet
--ssim
-I

View file

@ -0,0 +1,326 @@
x265 [info]: HEVC encoder version 3.5
x265 [info]: build info [Linux][GCC 10.2.0][64 bit] 8bit+10bit+12bit
Syntax: x265 [options] infile [-o] outfile
infile can be YUV or Y4M
outfile is raw HEVC bitstream
Executable Options:
-h/--help Show this help text and exit
--fullhelp Show all options and exit
-V/--version Show version info and exit
Output Options:
-o/--output <filename> Bitstream output file name
-D/--output-depth 8|10|12 Output bit depth (also internal bit depth). Default 8
--log-level <string> Logging level: none error warning info debug full. Default full
--no-progress Disable CLI progress reports
--csv <filename> Comma separated log file, if csv-log-level > 0 frame level statistics, else one line per run
--csv-log-level <integer> Level of csv logging, if csv-log-level > 0 frame level statistics, else one line per run: 0-2
Input Options:
--input <filename> Raw YUV or Y4M input file name. `-` for stdin
--y4m Force parsing of input stream as YUV4MPEG2 regardless of file extension
--fps <float|rational> Source frame rate (float or num/denom), auto-detected if Y4M
--input-res WxH Source picture size [w x h], auto-detected if Y4M
--input-depth <integer> Bit-depth of input file. Default 8
--input-csp <string> Chroma subsampling, auto-detected if Y4M
0 - i400 (4:0:0 monochrome)
1 - i420 (4:2:0 default)
2 - i422 (4:2:2)
3 - i444 (4:4:4)
--dhdr10-info <filename> JSON file containing the Creative Intent Metadata to be encoded as Dynamic Tone Mapping
--[no-]dhdr10-opt Insert tone mapping SEI only for IDR frames and when the tone mapping information changes. Default disabled
--dolby-vision-profile <float|integer> Specifies Dolby Vision profile ID. Currently only profile 5, profile 8.1 and profile 8.2 enabled. Specified as '5' or '50'. Default 0 (disabled).
--dolby-vision-rpu <filename> File containing Dolby Vision RPU metadata.
If given, x265's Dolby Vision metadata parser will fill the RPU field of input pictures with the metadata read from the file. Default NULL(disabled).
--nalu-file <filename> Text file containing SEI messages in the following format : <POC><space><PREFIX><space><NAL UNIT TYPE>/<SEI TYPE><space><SEI Payload>
-f/--frames <integer> Maximum number of frames to encode. Default all
--seek <integer> First frame to encode
--[no-]interlace <bff|tff> Indicate input pictures are interlace fields in temporal order. Default progressive
--[no-]field Enable or disable field coding. Default disabled
--dither Enable dither if downscaling to 8 bit pixels. Default disabled
--[no-]copy-pic Copy buffers of input picture in frame. Default enabled
Quality reporting metrics:
--[no-]ssim Enable reporting SSIM metric scores. Default disabled
--[no-]psnr Enable reporting PSNR metric scores. Default disabled
Profile, Level, Tier:
-P/--profile <string> Enforce an encode profile: main, main10, mainstillpicture
--level-idc <integer|float> Force a minimum required decoder level (as '5.0' or '50')
--[no-]high-tier If a decoder level is specified, this modifier selects High tier of that level
--uhd-bd Enable UHD Bluray compatibility support
--[no-]allow-non-conformance Allow the encoder to generate profile NONE bitstreams. Default disabled
Threading, performance:
--pools <integer,...> Comma separated thread count per thread pool (pool per NUMA node)
'-' implies no threads on node, '+' implies one thread per core on node
-F/--frame-threads <integer> Number of concurrently encoded frames. 0: auto-determined by core count
--[no-]wpp Enable Wavefront Parallel Processing. Default enabled
--[no-]slices <integer> Enable Multiple Slices feature. Default 1
--[no-]pmode Parallel mode analysis. Default disabled
--[no-]pme Parallel motion estimation. Default disabled
--[no-]asm <bool|int|string> Override CPU detection. Default: auto
Presets:
-p/--preset <string> Trade off performance for compression efficiency. Default medium
ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, or placebo
-t/--tune <string> Tune the settings for a particular type of source or situation:
psnr, ssim, grain, zerolatency, fastdecode
Quad-Tree size and depth:
-s/--ctu <64|32|16> Maximum CU size (WxH). Default 64
--min-cu-size <64|32|16|8> Minimum CU size (WxH). Default 8
--max-tu-size <32|16|8|4> Maximum TU size (WxH). Default 32
--tu-intra-depth <integer> Max TU recursive depth for intra CUs. Default 1
--tu-inter-depth <integer> Max TU recursive depth for inter CUs. Default 1
--limit-tu <0..4> Enable early exit from TU recursion for inter coded blocks. Default 0
Analysis:
--rd <1..6> Level of RDO in mode decision 1:least....6:full RDO. Default 3
--[no-]psy-rd <0..5.0> Strength of psycho-visual rate distortion optimization, 0 to disable. Default 2.0
--[no-]rdoq-level <0|1|2> Level of RDO in quantization 0:none, 1:levels, 2:levels & coding groups. Default 0
--[no-]psy-rdoq <0..50.0> Strength of psycho-visual optimization in RDO quantization, 0 to disable. Default 0.0
--dynamic-rd <0..4.0> Strength of dynamic RD, 0 to disable. Default 0.00
--[no-]ssim-rd Enable ssim rate distortion optimization, 0 to disable. Default disabled
--[no-]rd-refine Enable QP based RD refinement for rd levels 5 and 6. Default disabled
--[no-]early-skip Enable early SKIP detection. Default enabled
--rskip <Integer> Enable recursion skip for early exit from CTU analysis during inter prediction. 1: exit using RD cost & CU homogeneity. 2: exit using CU edge density. 0: disabled. Default 1
--rskip-edge-threshold Threshold in terms of percentage (an integer of range [0,100]) for minimum edge density in CU's used to prune the recursion depth. Applicable only to rskip mode 2. Value is preset dependent. Default: 5
--[no-]tskip-fast Enable fast intra transform skipping. Default disabled
--[no-]splitrd-skip Enable skipping split RD analysis when sum of split CU rdCost larger than one split CU rdCost for Intra CU. Default disabled
--nr-intra <integer> An integer value in range of 0 to 2000, which denotes strength of noise reduction in intra CUs. Default 0
--nr-inter <integer> An integer value in range of 0 to 2000, which denotes strength of noise reduction in inter CUs. Default 0
--ctu-info <integer> Enable receiving ctu information asynchronously and determine reaction to the CTU information (0, 1, 2, 4, 6) Default 0
- 1: force the partitions if CTU information is present
- 2: functionality of (1) and reduce qp if CTU information has changed
- 4: functionality of (1) and force Inter modes when CTU Information has changed, merge/skip otherwise
Enable this option only when planning to invoke the API function x265_encoder_ctu_info to copy ctu-info asynchronously
Coding tools:
-w/--[no-]weightp Enable weighted prediction in P slices. Default enabled
--[no-]weightb Enable weighted prediction in B slices. Default disabled
--[no-]cu-lossless Consider lossless mode in CU RDO decisions. Default disabled
--[no-]signhide Hide sign bit of one coeff per TU (rdo). Default enabled
--[no-]tskip Enable intra 4x4 transform skipping. Default disabled
Temporal / motion search options:
--max-merge <1..5> Maximum number of merge candidates. Default 3
--ref <integer> max number of L0 references to be allowed (1 .. 16) Default 3
--limit-refs <0|1|2|3> Limit references per depth (1) or CU (2) or both (3). Default 1
--me <string> Motion search method dia hex umh star full. Default 1
-m/--subme <integer> Amount of subpel refinement to perform (0:least .. 7:most). Default 2
--merange <integer> Motion search range. Default 57
--[no-]rect Enable rectangular motion partitions Nx2N and 2NxN. Default disabled
--[no-]amp Enable asymmetric motion partitions, requires --rect. Default disabled
--[no-]limit-modes Limit rectangular and asymmetric motion predictions. Default 0
--[no-]temporal-mvp Enable temporal MV predictors. Default enabled
--[no-]hme Enable Hierarchical Motion Estimation. Default disabled
--hme-search <string> Motion search-method for HME L0,L1 and L2. Default(L0,L1,L2) is 1,2,2
--hme-range <int>,<int>,<int> Motion search-range for HME L0,L1 and L2. Default(L0,L1,L2) is 16,32,48
Spatial / intra options:
--[no-]strong-intra-smoothing Enable strong intra smoothing for 32x32 blocks. Default enabled
--[no-]constrained-intra Constrained intra prediction (use only intra coded reference pixels) Default disabled
--[no-]b-intra Enable intra in B frames in veryslow presets. Default enabled
--[no-]fast-intra Enable faster search method for angular intra predictions. Default disabled
--rdpenalty <0..2> penalty for 32x32 intra TU in non-I slices. 0:disabled 1:RD-penalty 2:maximum. Default 0
Slice decision options:
--[no-]open-gop Enable open-GOP, allows I slices to be non-IDR. Default enabled
-I/--keyint <integer> Max IDR period in frames. -1 for infinite-gop. Default 250
-i/--min-keyint <integer> Scenecuts closer together than this are coded as I, not IDR. Default: auto
--gop-lookahead <integer> Extends gop boundary if a scenecut is found within this from keyint boundary. Default 0
--no-scenecut Disable adaptive I-frame decision
--scenecut <integer> How aggressively to insert extra I-frames. Default 40
--scenecut-bias <0..100.0> Bias for scenecut detection. Default 5.00
--hist-scenecut Enables histogram based scene-cut detection using histogram based algorithm.
--no-hist-scenecut Disables histogram based scene-cut detection using histogram based algorithm.
--hist-threshold <0.0..1.0> Luma Edge histogram's Normalized SAD threshold for histogram based scenecut detection Default 0.03
--[no-]fades Enable detection and handling of fade-in regions. Default disabled
--scenecut-aware-qp <0..3> Enable increasing QP for frames inside the scenecut window around scenecut. Default disabled
0 - Disabled
1 - Forward masking
2 - Backward masking
3 - Bidirectional masking
--masking-strength <string> Comma separated values which specify the duration and offset for the QP increment for inter-frames when scenecut-aware-qp is enabled.
--radl <integer> Number of RADL pictures allowed in front of IDR. Default 0
--intra-refresh Use Periodic Intra Refresh instead of IDR frames
--rc-lookahead <integer> Number of frames for frame-type lookahead (determines encoder latency) Default 20
--lookahead-slices <0..16> Number of slices to use per lookahead cost estimate. Default 8
--lookahead-threads <integer> Number of threads to be dedicated to perform lookahead only. Default 0
-b/--bframes <0..16> Maximum number of consecutive b-frames. Default 4
--bframe-bias <integer> Bias towards B frame decisions. Default 0
--b-adapt <0..2> 0 - none, 1 - fast, 2 - full (trellis) adaptive B frame scheduling. Default 2
--[no-]b-pyramid Use B-frames as references. Default enabled
--qpfile <string> Force frametypes and QPs for some or all frames
Format of each line: framenumber frametype QP
QP is optional (none lets x265 choose). Frametypes: I,i,K,P,B,b.
QPs are restricted by qpmin/qpmax.
--force-flush <integer> Force the encoder to flush frames. Default 0
0 - flush the encoder only when all the input pictures are over.
1 - flush all the frames even when the input is not over. Slicetype decision may change with this option.
2 - flush the slicetype decided frames only.
--[no-]-hrd-concat Set HRD concatenation flag for the first keyframe in the buffering period SEI. Default disabled
Rate control, Adaptive Quantization:
--bitrate <integer> Target bitrate (kbps) for ABR (implied). Default 0
-q/--qp <integer> QP for P slices in CQP mode (implied). --ipratio and --pbration determine other slice QPs
--crf <float> Quality-based VBR (0-51). Default 28.0
--[no-]lossless Enable lossless: bypass transform, quant and loop filters globally. Default disabled
--crf-max <float> With CRF+VBV, limit RF to this value. Default 0.000000
May cause VBV underflows!
--crf-min <float> With CRF+VBV, limit RF to this value. Default 0.000000
this specifies a minimum rate factor value for encode!
--vbv-maxrate <integer> Max local bitrate (kbit/s). Default 0
--vbv-bufsize <integer> Set size of the VBV buffer (kbit). Default 0
--vbv-init <float> Initial VBV buffer occupancy (fraction of bufsize or in kbits). Default 0.90
--vbv-end <float> Final VBV buffer emptiness (fraction of bufsize or in kbits). Default 0 (disabled)
--min-vbv-fullness <double> Minimum VBV fullness percentage to be maintained. Default 50.00
--max-vbv-fullness <double> Maximum VBV fullness percentage to be maintained. Default 80.00
--vbv-end-fr-adj <float> Frame from which qp has to be adjusted to achieve final decode buffer emptiness. Default 0
--chunk-start <integer> First frame of the chunk. Default 0 (disabled)
--chunk-end <integer> Last frame of the chunk. Default 0 (disabled)
--pass Multi pass rate control.
- 1 : First pass, creates stats file
- 2 : Last pass, does not overwrite stats file
- 3 : Nth pass, overwrites stats file
--[no-]multi-pass-opt-analysis Refine analysis in 2 pass based on analysis information from pass 1
--[no-]multi-pass-opt-distortion Use distortion of CTU from pass 1 to refine qp in 2 pass
--[no-]vbv-live-multi-pass Enable realtime VBV in rate control 2 pass.Default disabled
--stats Filename for stats file in multipass pass rate control. Default x265_2pass.log
--[no-]analyze-src-pics Motion estimation uses source frame planes. Default disable
--[no-]slow-firstpass Enable a slow first pass in a multipass rate control mode. Default enabled
--[no-]strict-cbr Enable stricter conditions and tolerance for bitrate deviations in CBR mode. Default disabled
--analysis-save <filename> Dump analysis info into the specified file. Default Disabled
--analysis-load <filename> Load analysis buffers from the file specified. Default Disabled
--analysis-reuse-file <filename> Specify file name used for either dumping or reading analysis data. Deault x265_analysis.dat
--analysis-reuse-level <1..10> Level of analysis reuse indicates amount of info stored/reused in save/load mode, 1:least..10:most. Now deprecated. Default 0
--analysis-save-reuse-level <1..10> Indicates the amount of analysis info stored in save mode, 1:least..10:most. Default 0
--analysis-load-reuse-level <1..10> Indicates the amount of analysis info reused in load mode, 1:least..10:most. Default 0
--refine-analysis-type <string> Reuse anlaysis information received through API call. Supported options are avc and hevc. Default disabled - 0
--scale-factor <int> Specify factor by which input video is scaled down for analysis save mode. Default 0
--refine-intra <0..4> Enable intra refinement for encode that uses analysis-load.
- 0 : Forces both mode and depth from the save encode.
- 1 : Functionality of (0) + evaluate all intra modes at min-cu-size's depth when current depth is one smaller than min-cu-size's depth.
- 2 : Functionality of (1) + irrespective of size evaluate all angular modes when the save encode decides the best mode as angular.
- 3 : Functionality of (1) + irrespective of size evaluate all intra modes.
- 4 : Re-evaluate all intra blocks, does not reuse data from save encode.
Default:0
--refine-inter <0..3> Enable inter refinement for encode that uses analysis-load.
- 0 : Forces both mode and depth from the save encode.
- 1 : Functionality of (0) + evaluate all inter modes at min-cu-size's depth when current depth is one smaller than
min-cu-size's depth. When save encode decides the current block as skip(for all sizes) evaluate skip/merge.
- 2 : Functionality of (1) + irrespective of size restrict the modes evaluated when specific modes are decided as the best mode by the save encode.
- 3 : Functionality of (1) + irrespective of size evaluate all inter modes.
Default:0
--[no-]dynamic-refine Dynamically changes refine-inter level for each CU. Default disabled
--refine-mv <1..3> Enable mv refinement for load mode. Default 1
--refine-ctu-distortion Store/normalize ctu distortion in analysis-save/load.
- 0 : Disabled.
- 1 : Store/Load ctu distortion to/from the file specified in analysis-save/load.
Default 0 - Disabled
--aq-mode <integer> Mode for Adaptive Quantization - 0:none 1:uniform AQ 2:auto variance 3:auto variance with bias to dark scenes 4:auto variance with edge information. Default 2
--[no-]hevc-aq Mode for HEVC Adaptive Quantization. Default disabled
--aq-strength <float> Reduces blocking and blurring in flat and textured areas (0 to 3.0). Default 1.00
--qp-adaptation-range <float> Delta QP range by QP adaptation based on a psycho-visual model (1.0 to 6.0). Default 1.00
--[no-]aq-motion Block level QP adaptation based on the relative motion between the block and the frame. Default disabled
--qg-size <int> Specifies the size of the quantization group (64, 32, 16, 8). Default 32
--[no-]cutree Enable cutree for Adaptive Quantization. Default enabled
--[no-]rc-grain Enable ratecontrol mode to handle grains specifically. turned on with tune grain. Default disabled
--ipratio <float> QP factor between I and P. Default 1.40
--pbratio <float> QP factor between P and B. Default 1.30
--qcomp <float> Weight given to predicted complexity. Default 0.60
--qpstep <integer> The maximum single adjustment in QP allowed to rate control. Default 4
--qpmin <integer> sets a hard lower limit on QP allowed to ratecontrol. Default 0
--qpmax <integer> sets a hard upper limit on QP allowed to ratecontrol. Default 69
--[no-]const-vbv Enable consistent vbv. turned on with tune grain. Default disabled
--cbqpoffs <integer> Chroma Cb QP Offset [-12..12]. Default 0
--crqpoffs <integer> Chroma Cr QP Offset [-12..12]. Default 0
--scaling-list <string> Specify a file containing HM style quant scaling lists or 'default' or 'off'. Default: off
--zones <zone0>/<zone1>/... Tweak the bitrate of regions of the video
Each zone is of the form
<start frame>,<end frame>,<option>
where <option> is either
q=<integer> (force QP)
or b=<float> (bitrate multiplier)
--zonefile <filename> Zone file containing the zone boundaries and the parameters to be reconfigured.
--lambda-file <string> Specify a file containing replacement values for the lambda tables
MAX_MAX_QP+1 floats for lambda table, then again for lambda2 table
Blank lines and lines starting with hash(#) are ignored
Comma is considered to be white-space
--max-ausize-factor <float> This value controls the maximum AU size defined in specification.
It represents the percentage of maximum AU size used. Default 1.0
Loop filters (deblock and SAO):
--[no-]deblock Enable Deblocking Loop Filter, optionally specify tC:Beta offsets Default enabled
--[no-]sao Enable Sample Adaptive Offset. Default enabled
--[no-]sao-non-deblock Use non-deblocked pixels, else right/bottom boundary areas skipped. Default disabled
--[no-]limit-sao Limit Sample Adaptive Offset types. Default disabled
--selective-sao <int> Enable slice-level SAO filter. Default 0
VUI options:
--sar <width:height|int> Sample Aspect Ratio, the ratio of width to height of an individual pixel.
Choose from 0=undef, 1=1:1("square"), 2=12:11, 3=10:11, 4=16:11,
5=40:33, 6=24:11, 7=20:11, 8=32:11, 9=80:33, 10=18:11, 11=15:11,
12=64:33, 13=160:99, 14=4:3, 15=3:2, 16=2:1 or custom ratio of <int:int>. Default 0
--display-window <string> Describe overscan cropping region as 'left,top,right,bottom' in pixels
--overscan <string> Specify whether it is appropriate for decoder to show cropped region: unknown, show or crop. Default unknown
--videoformat <string> Specify video format from unknown, component, pal, ntsc, secam, mac. Default unknown
--range <string> Specify black level and range of luma and chroma signals as full or limited Default limited
--colorprim <string> Specify color primaries from bt709, unknown, reserved, bt470m, bt470bg, smpte170m,
smpte240m, film, bt2020, smpte428, smpte431, smpte432. Default unknown
--transfer <string> Specify transfer characteristics from bt709, unknown, reserved, bt470m, bt470bg, smpte170m,
smpte240m, linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1,
bt2020-10, bt2020-12, smpte2084, smpte428, arib-std-b67. Default unknown
--colormatrix <string> Specify color matrix setting from unknown, bt709, fcc, bt470bg, smpte170m,
smpte240m, gbr, ycgco, bt2020nc, bt2020c, smpte2085, chroma-derived-nc, chroma-derived-c, ictcp. Default unknown
--chromaloc <integer> Specify chroma sample location (0 to 5). Default of 0
--master-display <string> SMPTE ST 2086 master display color volume info SEI (HDR)
format: G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)
--max-cll <string> Specify content light level info SEI as "cll,fall" (HDR).
--[no-]cll Emit content light level info SEI. Default enabled
--[no-]hdr10 Control dumping of HDR10 SEI packet. If max-cll or master-display has non-zero values, this is enabled. Default disabled
--[no-]hdr-opt Add luma and chroma offsets for HDR/WCG content. Default disabled. Now deprecated.
--[no-]hdr10-opt Block-level QP optimization for HDR10 content. Default disabled.
--min-luma <integer> Minimum luma plane value of input source picture
--max-luma <integer> Maximum luma plane value of input source picture
Bitstream options:
--[no-]repeat-headers Emit SPS and PPS headers at each keyframe. Default disabled
--[no-]info Emit SEI identifying encoder and parameters. Default enabled
--[no-]hrd Enable HRD parameters signaling. Default disabled
--[no-]idr-recovery-sei Emit recovery point infor SEI at each IDR frame
--[no-]temporal-layers Enable a temporal sublayer for unreferenced B frames. Default disabled
--[no-]aud Emit access unit delimiters at the start of each access unit. Default disabled
--hash <integer> Decoded Picture Hash SEI 0: disabled, 1: MD5, 2: CRC, 3: Checksum. Default 0
--atc-sei <integer> Emit the alternative transfer characteristics SEI message where the integer is the preferred transfer characteristics. Default disabled
--pic-struct <integer> Set the picture structure and emits it in the picture timing SEI message. Values in the range 0..12. See D.3.3 of the HEVC spec. for a detailed explanation.
--log2-max-poc-lsb <integer> Maximum of the picture order count
--[no-]vui-timing-info Emit VUI timing information in the bistream. Default enabled
--[no-]vui-hrd-info Emit VUI HRD information in the bistream. Default enabled
--[no-]opt-qp-pps Dynamically optimize QP in PPS (instead of default 26) based on QPs in previous GOP. Default disabled
--[no-]opt-ref-list-length-pps Dynamically set L0 and L1 ref list length in PPS (instead of default 0) based on values in last GOP. Default disabled
--[no-]multi-pass-opt-rps Enable storing commonly used RPS in SPS in multi pass mode. Default disabled
--[no-]opt-cu-delta-qp Optimize to signal consistent CU level delta QPs in frame. Default disabled
Reconstructed video options (debugging):
-r/--recon <filename> Reconstructed raw image YUV or Y4M output file name
--recon-depth <integer> Bit-depth of reconstructed raw image file. Defaults to input bit depth, or 8 if Y4M
--recon-y4m-exec <string> pipe reconstructed frames to Y4M viewer, ex:"ffplay -i pipe:0 -autoexit"
--lowpass-dct Use low-pass subband dct approximation. Default disabled
--[no-]frame-dup Enable Frame duplication. Default disabled
--dup-threshold <integer> PSNR threshold for Frame duplication. Default 70
ABR-ladder settings
--abr-ladder <file> File containing config settings required for the generation of ABR-ladder
Executable return codes:
0 - encode successful
1 - unable to parse command line
2 - unable to open encoder
3 - unable to generate stream headers
4 - encoder abort
Complete documentation may be found at http://x265.readthedocs.org/en/default/cli.html

View file

@ -0,0 +1,292 @@
-b
-D
--uhd-bd
--crf
--cbqpoffs
--gop-lookahead
--refine-intra
-I
--lambda-file
--vbv-init
--nr-inter
--no-hist-scenecut
--max-luma
--recon-y4m-exec
--pic-struct
--qcomp
--ref
--qg-size
--vbv-end
--max-tu-size
--log2-max-poc-lsb
--input-depth
--lookahead-slices
--input-res
--dolby-vision-rpu
-o
--merange
--analysis-load
--analysis-load-reuse-level
--rdpenalty
--rskip-edge-threshold
--csv-log-level
--fullhelp
--rd
-V
--level-idc
--transfer
--me
--analysis-save
--no-progress
--dup-threshold
--dolby-vision-profile
--no-scenecut
--master-display
--hash
--seek
--y4m
--limit-refs
--scenecut-aware-qp
-1
--stats
--force-flush
-P
--qpfile
--zones
--pbration
--sar
--b-adapt
--selective-sao
--fps
--aq-mode
--rskip
--qpstep
--videoformat
--colorprim
--display-window
-p
--overscan
--lowpass-dct
-r
--max-merge
--scenecut-bias
-q
--min-cu-size
--ctu-info
-autoexit
--aq-strength
--crqpoffs
--scaling-list
--crf-max
--colormatrix
--range
--dhdr10-info
--qpmax
-m
--vbv-maxrate
--ipratio
--input-csp
--dither
--limit-tu
--qpmin
--pass
--rc-lookahead
--refine-mv
--atc-sei
--max-cll
--scale-factor
--refine-inter
-t
--min-vbv-fullness
--bitrate
-i
--pools
--abr-ladder
--chunk-start
--lookahead-threads
--analysis-reuse-level
-h
--hist-threshold
--csv
--vbv-bufsize
--max-ausize-factor
--nr-intra
--scenecut
--radl
--bframe-bias
--chunk-end
--max-vbv-fullness
--hist-scenecut
--refine-ctu-distortion
--pbratio
--vbv-end-fr-adj
--hme-range
--analysis-save-reuse-level
--hme-search
-s
-F
--chromaloc
--rect
--min-luma
--log-level
--intra-refresh
--recon-depth
--nalu-file
--dynamic-rd
-w
--refine-analysis-type
--zonefile
--qp-adaptation-range
-f
--tu-inter-depth
--input
--tu-intra-depth
--crf-min
--masking-strength
--analysis-reuse-file
--dhdr10-opt
--no-dhdr10-opt
--interlace
--no-interlace
--field
--no-field
--copy-pic
--no-copy-pic
--ssim
--no-ssim
--psnr
--no-psnr
--high-tier
--no-high-tier
--allow-non-conformance
--no-allow-non-conformance
--wpp
--no-wpp
--slices
--no-slices
--pmode
--no-pmode
--pme
--no-pme
--asm
--no-asm
--psy-rd
--no-psy-rd
--rdoq-level
--no-rdoq-level
--psy-rdoq
--no-psy-rdoq
--ssim-rd
--no-ssim-rd
--rd-refine
--no-rd-refine
--early-skip
--no-early-skip
--tskip-fast
--no-tskip-fast
--splitrd-skip
--no-splitrd-skip
--weightp
--no-weightp
--weightb
--no-weightb
--cu-lossless
--no-cu-lossless
--signhide
--no-signhide
--tskip
--no-tskip
--rect
--no-rect
--amp
--no-amp
--limit-modes
--no-limit-modes
--temporal-mvp
--no-temporal-mvp
--hme
--no-hme
--strong-intra-smoothing
--no-strong-intra-smoothing
--constrained-intra
--no-constrained-intra
--b-intra
--no-b-intra
--fast-intra
--no-fast-intra
--open-gop
--no-open-gop
--fades
--no-fades
--b-pyramid
--no-b-pyramid
--hrd-concat
--no-hrd-concat
--lossless
--no-lossless
--multi-pass-opt-analysis
--no-multi-pass-opt-analysis
--multi-pass-opt-distortion
--no-multi-pass-opt-distortion
--vbv-live-multi-pass
--no-vbv-live-multi-pass
--analyze-src-pics
--no-analyze-src-pics
--slow-firstpass
--no-slow-firstpass
--strict-cbr
--no-strict-cbr
--dynamic-refine
--no-dynamic-refine
--hevc-aq
--no-hevc-aq
--aq-motion
--no-aq-motion
--cutree
--no-cutree
--rc-grain
--no-rc-grain
--const-vbv
--no-const-vbv
--deblock
--no-deblock
--sao
--no-sao
--sao-non-deblock
--no-sao-non-deblock
--limit-sao
--no-limit-sao
--cll
--no-cll
--hdr10
--no-hdr10
--hdr-opt
--no-hdr-opt
--hdr10-opt
--no-hdr10-opt
--repeat-headers
--no-repeat-headers
--info
--no-info
--hrd
--no-hrd
--idr-recovery-sei
--no-idr-recovery-sei
--temporal-layers
--no-temporal-layers
--aud
--no-aud
--vui-timing-info
--no-vui-timing-info
--vui-hrd-info
--no-vui-hrd-info
--opt-qp-pps
--no-opt-qp-pps
--opt-ref-list-length-pps
--no-opt-ref-list-length-pps
--multi-pass-opt-rps
--no-multi-pass-opt-rps
--opt-cu-delta-qp
--no-opt-cu-delta-qp
--frame-dup
--no-frame-dup