mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-23 18:14:06 +00:00
568 lines
16 KiB
Groff
568 lines
16 KiB
Groff
.TH UVG266 "1" "July 2024" "uvg266 v0.8.1" "User Commands"
|
|
.SH NAME
|
|
uvg266 \- open source VVC encoder
|
|
.SH SYNOPSIS
|
|
\fBuvg266 \fR\-i <input> \-\-input\-res <width>x<height> \-o <output>
|
|
.SH DESCRIPTION
|
|
.TP
|
|
\fB\-i\fR, \fB\-\-input <filename>
|
|
Input file
|
|
.TP
|
|
\fB\-\-input\-res <res>
|
|
Input resolution [auto]
|
|
\- auto: Detect from file name.
|
|
\- <int>x<int>: width times height
|
|
.TP
|
|
\fB\-o\fR, \fB\-\-output <filename>
|
|
Output file
|
|
|
|
.SS "Presets:"
|
|
.TP
|
|
\fB\-\-preset <preset>
|
|
Set options to a preset [medium]
|
|
\- ultrafast, superfast, veryfast, faster,
|
|
fast, medium, slow, slower, veryslow
|
|
placebo
|
|
|
|
.SS "Input:"
|
|
.TP
|
|
\fB\-n\fR, \fB\-\-frames <integer>
|
|
Number of frames to code [all]
|
|
.TP
|
|
\fB\-\-seek <integer>
|
|
First frame to code [0]
|
|
.TP
|
|
\fB\-\-input\-fps <num>[/<denom>]
|
|
Frame rate of the input video [25]
|
|
.TP
|
|
\fB\-\-source\-scan\-type <string>
|
|
Source scan type [progressive]
|
|
\- progressive: Progressive scan
|
|
\- tff: Top field first
|
|
\- bff: Bottom field first
|
|
.TP
|
|
\fB\-\-input\-format <string>
|
|
P420 or P400 [P420]
|
|
.TP
|
|
\fB\-\-input\-bitdepth <int>
|
|
8\-16 [8]
|
|
.TP
|
|
\fB\-\-loop\-input
|
|
Re\-read input file forever.
|
|
.TP
|
|
\fB\-\-input\-file\-format <string>
|
|
Input file format [auto]
|
|
\- auto: Check the file ending for format
|
|
\- y4m (skips frame headers)
|
|
\- yuv
|
|
|
|
.SS "Options:"
|
|
.TP
|
|
\fB\-\-help
|
|
Print this help message and exit.
|
|
.TP
|
|
\fB\-\-version
|
|
Print version information and exit.
|
|
.TP
|
|
\fB\-\-(no\-)aud
|
|
Use access unit delimiters. [disabled]
|
|
.TP
|
|
\fB\-\-debug <filename>
|
|
Output internal reconstruction.
|
|
.TP
|
|
\fB\-\-(no\-)cpuid
|
|
Enable runtime CPU optimizations. [enabled]
|
|
.TP
|
|
\fB\-\-hash <string>
|
|
Decoded picture hash [checksum]
|
|
\- none: 0 bytes
|
|
\- checksum: 18 bytes
|
|
\- md5: 56 bytes
|
|
.TP
|
|
\fB\-\-(no\-)psnr
|
|
Calculate PSNR for frames. [enabled]
|
|
.TP
|
|
\fB\-\-(no\-)info
|
|
Add encoder info SEI. [enabled]
|
|
.TP
|
|
\fB\-\-stats\-file\-prefix
|
|
A prefix used for stats files that include
|
|
bits, lambda, distortion, and qp for each ctu.
|
|
These are meant for debugging and are not
|
|
written unless the prefix is defined.
|
|
.TP
|
|
\fB\-\-cabac\-debug\-file
|
|
A debug file for cabac context.
|
|
Ignore this, it is only for tests.
|
|
|
|
.SS "Video structure:"
|
|
.TP
|
|
\fB\-q\fR, \fB\-\-qp <integer>
|
|
Quantization parameter [22]
|
|
.TP
|
|
\fB\-p\fR, \fB\-\-period <integer>
|
|
Period of intra pictures [64]
|
|
\- 0: Only first picture is intra.
|
|
\- 1: All pictures are intra.
|
|
\- N: Every Nth picture is intra.
|
|
.TP
|
|
\fB\-\-vps\-period <integer>
|
|
How often the video parameter set is re\-sent [0]
|
|
\- 0: Only send VPS with the first frame.
|
|
\- N: Send VPS with every Nth intra frame.
|
|
.TP
|
|
\fB\-r\fR, \fB\-\-ref <integer>
|
|
Number of reference frames, in range 1..15 [4]
|
|
.TP
|
|
\fB\-\-gop <string>
|
|
GOP structure [lp\-g4d3t1]
|
|
\- 0: Disabled
|
|
\- 8: B\-frame pyramid of length 8
|
|
\- 16: B\-frame pyramid of length 16
|
|
\- lp\-<string>: Low\-delay P/B\-frame GOP
|
|
(e.g. lp\-g8d4t2, see README)
|
|
.TP
|
|
\fB\-\-intra\-qp\-offset <int>: QP offset for intra frames [\-51..51] [auto]
|
|
\- N: Set QP offset to N.
|
|
\- auto: Select offset automatically based
|
|
on GOP length.
|
|
.TP
|
|
\fB\-\-(no\-)open\-gop
|
|
Use open GOP configuration. [enabled]
|
|
.TP
|
|
\fB\-\-cqmfile <filename>
|
|
Read custom quantization matrices from a file.
|
|
.TP
|
|
\fB\-\-scaling\-list <string>: Set scaling list mode. [off]
|
|
\- off: Disable scaling lists.
|
|
\- custom: use custom list (with \-\-cqmfile).
|
|
\- default: Use default lists.
|
|
.TP
|
|
\fB\-\-bitrate <integer>
|
|
Target bitrate [0]
|
|
\- 0: Disable rate control.
|
|
\- N: Target N bits per second.
|
|
.TP
|
|
\fB\-\-rc\-algorithm <string>: Select used rc\-algorithm. [lambda]
|
|
\- lambda: rate control from:
|
|
DOI: 10.1109/TIP.2014.2336550
|
|
\- oba: DOI: 10.1109/TCSVT.2016.2589878
|
|
.TP
|
|
\fB\-\-(no\-)intra\-bits
|
|
Use Hadamard cost based allocation for intra
|
|
frames. Default on for gop 8 and off for lp\-gop
|
|
.TP
|
|
\fB\-\-(no\-)clip\-neighbour
|
|
On oba based rate control whether to clip
|
|
lambda values to same frame's ctus or previous'.
|
|
Default on for RA GOPS and disabled for LP.
|
|
.TP
|
|
\fB\-\-(no\-)lossless
|
|
Use lossless coding. [disabled]
|
|
.TP
|
|
\fB\-\-mv\-constraint <string>
|
|
Constrain movement vectors. [none]
|
|
\- none: No constraint
|
|
\- frametile: Constrain within the tile.
|
|
\- frametilemargin: Constrain even more.
|
|
.TP
|
|
\fB\-\-roi <filename>
|
|
Use a delta QP map for region of interest.
|
|
Reads an array of delta QP values from a file.
|
|
Text and binary files are supported and detected
|
|
from the file extension (.txt/.bin). If a known
|
|
extension is not found, the file is treated as
|
|
a text file. The file can include one or many
|
|
ROI frames each in the following format:
|
|
width and height of the QP delta map followed
|
|
by width * height delta QP values in raster
|
|
order. In binary format, width and height are
|
|
32\-bit integers whereas the delta QP values are
|
|
signed 8\-bit values. The map can be of any size
|
|
and will be scaled to the video size. The file
|
|
reading will loop if end of the file is reached.
|
|
See roi.txt in the examples folder.
|
|
.TP
|
|
\fB\-\-set\-qp\-in\-cu
|
|
Set QP at CU level keeping pic_init_qp_minus26.
|
|
in PPS and slice_qp_delta in slize header zero.
|
|
.TP
|
|
\fB\-\-(no\-)erp\-aqp
|
|
Use adaptive QP for 360 degree video with
|
|
equirectangular projection. [disabled]
|
|
.TP
|
|
\fB\-\-level <number>
|
|
Use the given HEVC level in the output and give
|
|
an error if level limits are exceeded. [6.2]
|
|
\- 1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6,
|
|
6.1, 6.2
|
|
.TP
|
|
\fB\-\-force\-level <number>
|
|
Same as \-\-level but warnings instead of errors.
|
|
.TP
|
|
\fB\-\-high\-tier
|
|
Used with \-\-level. Use high tier bitrate limits
|
|
instead of the main tier limits during encoding.
|
|
High tier requires level 4 or higher.
|
|
.TP
|
|
\fB\-\-(no\-)vaq <integer>
|
|
Enable variance adaptive quantization with given
|
|
strength, in range 1..20. Recommended: 5.
|
|
[disabled]
|
|
.TP
|
|
\fB\-\-chroma\-qp\-in
|
|
List of input values used for mapping the luma
|
|
QP into chroma qp. [17,27,32,44]
|
|
.TP
|
|
\fB\-\-chroma\-qp\-out
|
|
List of output values used for mapping the luma
|
|
QP into chroma qp. These two lists have to be
|
|
same length, start with same value, and can
|
|
contain maximum 16 or 36 \- starting value
|
|
elements. [17,27,32,44]
|
|
.TP
|
|
\fB\-\-(no\-)dual\-tree
|
|
Use separate CTU structure for luma and
|
|
chroma in intra slices.
|
|
|
|
.SS "Compression tools:"
|
|
.TP
|
|
\fB\-\-(no\-)deblock <beta:tc>
|
|
Deblocking filter. [0:0]
|
|
\- beta: Between \-6 and 6
|
|
\- tc: Between \-6 and 6
|
|
.TP
|
|
\fB\-\-sao <string>
|
|
Sample Adaptive Offset [full]
|
|
\- off: SAO disabled
|
|
\- band: Band offset only
|
|
\- edge: Edge offset only
|
|
\- full: Full SAO
|
|
.TP
|
|
\fB\-\-alf <string>
|
|
Adaptive Loop Filter [off]
|
|
\- off: ALF disabled
|
|
\- no\-cc: ALF enabled without cross component
|
|
refinement
|
|
\- full: Full ALF
|
|
.TP
|
|
\fB\-\-(no\-)rdoq
|
|
Rate\-distortion optimized quantization [enabled]
|
|
.TP
|
|
\fB\-\-(no\-)rdoq\-skip
|
|
Skip RDOQ for 4x4 blocks. [disabled]
|
|
.TP
|
|
\fB\-\-(no\-)dep\-quant
|
|
Use dependent quantization. [disabled]
|
|
.TP
|
|
\fB\-\-(no\-)signhide
|
|
Sign hiding [disabled]
|
|
.TP
|
|
\fB\-\-rd <integer>
|
|
Intra mode search complexity [0]
|
|
\- 0: Skip intra if inter is good enough.
|
|
\- 1: Rough intra mode search with SATD.
|
|
\- 2: Refine intra mode search with SSE.
|
|
\- 3: Enable intra chroma mode search.
|
|
\- 4: Try all intra modes.
|
|
.TP
|
|
\fB\-\-(no\-)mv\-rdo
|
|
Rate\-distortion optimized motion vector costs
|
|
[disabled]
|
|
.TP
|
|
\fB\-\-(no\-)zero\-coeff\-rdo
|
|
If a CU is set inter, check if forcing zero
|
|
residual improves the RD cost. [enabled]
|
|
.TP
|
|
\fB\-\-(no\-)full\-intra\-search
|
|
Try all intra modes during rough search.
|
|
[disabled]
|
|
.TP
|
|
\fB\-\-(no\-)transform\-skip
|
|
Try transform skip [disabled]
|
|
.TP
|
|
\fB\-\-(no\-)chroma\-transform\-skip
|
|
Try transform skip for chroma
|
|
blocks. [disabled]
|
|
.TP
|
|
\fB\-\-tr\-skip\-max\-size
|
|
Max log2 size of transform skip 2..5 [2]
|
|
.TP
|
|
\fB\-\-me <string>
|
|
Integer motion estimation algorithm [hexbs]
|
|
\- hexbs: Hexagon Based Search
|
|
\- tz: Test Zone Search
|
|
\- full: Full Search
|
|
\- full8, full16, full32, full64
|
|
\- dia: Diamond Search
|
|
.TP
|
|
\fB\-\-me\-steps <integer>
|
|
Motion estimation search step limit. Only
|
|
affects 'hexbs' and 'dia'. [\-1]
|
|
.TP
|
|
\fB\-\-subme <integer>
|
|
Fractional pixel motion estimation level [4]
|
|
\- 0: Integer motion estimation only
|
|
\- 1: + 1/2\-pixel horizontal and vertical
|
|
\- 2: + 1/2\-pixel diagonal
|
|
\- 3: + 1/4\-pixel horizontal and vertical
|
|
\- 4: + 1/4\-pixel diagonal
|
|
.TP
|
|
\fB\-\-pu\-depth\-inter <int>\-<int>
|
|
Maximum and minimum split depths where
|
|
inter search is performed 0..8. [0\-3]
|
|
\- Accepts a list of values separated by ','
|
|
for setting separate depths per GOP layer
|
|
(values can be omitted to use the first
|
|
value for the respective layer).
|
|
.TP
|
|
\fB\-\-pu\-depth\-intra <int>\-<int>
|
|
Maximum and minimum split depths where
|
|
intra search is performed 0..8. [1\-4]
|
|
\- Accepts a list of values separated by ','
|
|
for setting separate depths per GOP layer
|
|
(values can be omitted to use the first
|
|
value for the respective layer).
|
|
.TP
|
|
\fB\-\-ml\-pu\-depth\-intra
|
|
Predict the pu\-depth\-intra using machine
|
|
learning trees, overrides the
|
|
\-\-pu\-depth\-intra parameter. [disabled]
|
|
.TP
|
|
\fB\-\-mtt\-depth\-intra
|
|
Depth of mtt for intra slices 0..3.[0]
|
|
.TP
|
|
\fB\-\-mtt\-depth\-intra\-chroma
|
|
Depth of mtt for chroma dual tree in
|
|
intra slices 0..3.[0]
|
|
.TP
|
|
\fB\-\-mtt\-depth\-inter
|
|
Depth of mtt for inter slices 0..3.[0]
|
|
All MTTs are currently experimental and
|
|
require disabling some avx2 optimizations.
|
|
.TP
|
|
\fB\-\-max\-bt\-size
|
|
maximum size for a CU resulting from
|
|
a bt split. A singular value shared for all
|
|
or a list of three values for the different
|
|
slices types (intra, inter, intra\-chroma)
|
|
can be provided. [64, 64, 32]
|
|
.TP
|
|
\fB\-\-max\-tt\-size
|
|
maximum size for a CU resulting from
|
|
a tt split. A singular value shared for all
|
|
or a list of three values for the different
|
|
slices types (intra, inter, intra\-chroma)
|
|
can be provided. [64, 64, 32]
|
|
.TP
|
|
\fB\-\-intra\-rough\-granularity
|
|
How many levels are used for the
|
|
logarithmic intra rough search. 0..4
|
|
With 0 all of the modes are checked
|
|
in a single level, 1 checks every second
|
|
mode is checked on first level and then
|
|
second level checks the modes surrounding
|
|
the three best modes. [2]
|
|
.TP
|
|
\fB\-\-(no\-)combine\-intra\-cus: Whether the encoder tries to code a cu
|
|
on lower depth even when search is not
|
|
performed on said depth. Should only
|
|
be disabled if cus absolutely must not
|
|
be larger than limited by the search.
|
|
[enabled]
|
|
.TP
|
|
\fB\-\-force\-inter
|
|
Force the encoder to use inter always.
|
|
This is mostly for debugging and is not
|
|
guaranteed to produce sensible bitstream or
|
|
work at all. [disabled]
|
|
.TP
|
|
\fB\-\-(no\-)bipred
|
|
Bi\-prediction [disabled]
|
|
.TP
|
|
\fB\-\-cu\-split\-termination <string>
|
|
CU split search termination [zero]
|
|
\- off: Don't terminate early.
|
|
\- zero: Terminate when residual is zero.
|
|
.TP
|
|
\fB\-\-me\-early\-termination <string>
|
|
Motion estimation termination [on]
|
|
\- off: Don't terminate early.
|
|
\- on: Terminate early.
|
|
\- sensitive: Terminate even earlier.
|
|
.TP
|
|
\fB\-\-fast\-residual\-cost <int>
|
|
Skip CABAC cost for residual coefficients
|
|
when QP is below the limit. [0]
|
|
.TP
|
|
\fB\-\-fast\-coeff\-table <string>
|
|
Read custom weights for residual
|
|
coefficients from a file instead of using
|
|
defaults [default]
|
|
.TP
|
|
\fB\-\-fast\-rd\-sampling
|
|
Enable learning data sampling for fast coefficient
|
|
table generation
|
|
.TP
|
|
\fB\-\-fastrd\-accuracy\-check
|
|
Evaluate the accuracy of fast coefficient
|
|
prediction
|
|
.TP
|
|
\fB\-\-fastrd\-outdir
|
|
Directory to which to output sampled data or accuracy
|
|
data, into <fastrd\-outdir>/0.txt to 50.txt, one file
|
|
for each QP that blocks were estimated on
|
|
.TP
|
|
\fB\-\-(no\-)intra\-rdo\-et
|
|
Check intra modes in rdo stage only until
|
|
a zero coefficient CU is found. [disabled]
|
|
.TP
|
|
\fB\-\-(no\-)early\-skip
|
|
Try to find skip cu from merge candidates.
|
|
Perform no further search if skip is found.
|
|
For rd = 0..1: Try the first candidate.
|
|
For rd = 2..
|
|
Try the best candidate based
|
|
on luma satd cost. [enabled]
|
|
.TP
|
|
\fB\-\-max\-merge <integer>
|
|
Maximum number of merge candidates, 1..6 [6]
|
|
.TP
|
|
\fB\-\-(no\-)implicit\-rdpcm
|
|
Implicit residual DPCM. Currently only supported
|
|
with lossless coding. [disabled]
|
|
.TP
|
|
\fB\-\-(no\-)tmvp
|
|
Temporal motion vector prediction [enabled]
|
|
.TP
|
|
\fB\-\-(no\-)mrl
|
|
Enable use of multiple reference lines in intra
|
|
predictions.
|
|
.TP
|
|
\fB\-\-(no\-)mip
|
|
Enable matrix weighted intra prediction.
|
|
.TP
|
|
\fB\-\-(no\-)lfnst
|
|
Enable low frequency non\-separable transform.
|
|
[disabled]
|
|
.TP
|
|
\fB\-\-(no\-)isp
|
|
Enable intra sub partitions. [disabled]
|
|
Experimental, requires disabling some avx2
|
|
optimizations.
|
|
.TP
|
|
\fB\-\-mts <string>
|
|
Multiple Transform Selection [off].
|
|
(Currently only implemented for intra
|
|
and has effect only when rd >= 2)
|
|
\- off: MTS disabled
|
|
\- intra: MTS applied only for intra blocks.
|
|
\- inter: MTS applied only for inter blocks.
|
|
\- both: MTS applied for both intra and inter
|
|
blocks.
|
|
\- implicit: uses implicit MTS. Applies DST7
|
|
instead of DCT2 to certain intra
|
|
blocks.
|
|
.TP
|
|
\fB\-\-(no\-)jccr
|
|
Joint coding of chroma residual.
|
|
Requires rdo >= 2. [disabled]
|
|
.TP
|
|
\fB\-\-(no\-)cclm
|
|
Cross component linear model.
|
|
Extra chroma prediction modes that are formed
|
|
via linear transformation from the luma
|
|
prediction. Requires rdo >= 3. [disabled
|
|
.TP
|
|
\fB\-\-(no\-)amvr
|
|
Adaptive Motion Vector Resolution.
|
|
Code some MVs with reduced resolution [disabled]
|
|
|
|
.SS "Parallel processing:"
|
|
.TP
|
|
\fB\-\-threads <integer>
|
|
Number of threads to use [auto]
|
|
\- 0: Process everything with main thread.
|
|
\- N: Use N threads for encoding.
|
|
\- auto: Select automatically.
|
|
.TP
|
|
\fB\-\-owf <integer>
|
|
Frame\-level parallelism [auto]
|
|
\- N: Process N+1 frames at a time.
|
|
\- auto: Select automatically.
|
|
.TP
|
|
\fB\-\-(no\-)wpp
|
|
Wavefront parallel processing. [enabled]
|
|
Enabling tiles automatically disables WPP.
|
|
To enable WPP with tiles, re\-enable it after
|
|
enabling tiles. Enabling wpp with tiles is,
|
|
however, an experimental feature since it is
|
|
not supported in any HEVC profile.
|
|
.TP
|
|
\fB\-\-tiles <int>x<int>
|
|
Split picture into width x height uniform tiles.
|
|
.TP
|
|
\fB\-\-tiles\-width\-split <string>|u<int>
|
|
\- <string>: A comma\-separated list of tile
|
|
column pixel coordinates.
|
|
\- u<int>: Number of tile columns of uniform
|
|
width.
|
|
.TP
|
|
\fB\-\-tiles\-height\-split <string>|u<int>
|
|
\- <string>: A comma\-separated list of tile
|
|
row column pixel coordinates.
|
|
\- u<int>: Number of tile rows of uniform
|
|
height.
|
|
.TP
|
|
\fB\-\-slices <string>
|
|
Control how slices are used.
|
|
\- tiles: Put tiles in independent slices.
|
|
\- wpp: Put rows in dependent slices.
|
|
\- tiles+wpp: Do both.
|
|
.TP
|
|
\fB\-\-partial\-coding <x\-offset>!<y\-offset>!<slice\-width>!<slice\-height>
|
|
|
|
Encode partial frame.
|
|
Parts must be merged to form a valid bitstream.
|
|
X and Y are CTU offsets.
|
|
Slice width and height must be divisible by CTU
|
|
in pixels unless it is the last CTU row/column.
|
|
This parameter is used by kvaShare.
|
|
|
|
.SS "Video Usability Information:"
|
|
.TP
|
|
\fB\-\-sar <width:height>
|
|
Specify sample aspect ratio
|
|
.TP
|
|
\fB\-\-overscan <string>
|
|
Specify crop overscan setting [undef]
|
|
\- undef, show, crop
|
|
.TP
|
|
\fB\-\-videoformat <string>
|
|
Specify video format [undef]
|
|
\- undef, component, pal, ntsc, secam, mac
|
|
.TP
|
|
\fB\-\-range <string>
|
|
Specify color range [tv]
|
|
\- tv, pc
|
|
.TP
|
|
\fB\-\-colorprim <string>
|
|
Specify color primaries [undef]
|
|
\- undef, bt709, bt470m, bt470bg,
|
|
smpte170m, smpte240m, film, bt2020
|
|
.TP
|
|
\fB\-\-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
|
|
.TP
|
|
\fB\-\-colormatrix <string>
|
|
Specify color matrix setting [undef]
|
|
\- undef, bt709, fcc, bt470bg, smpte170m,
|
|
smpte240m, GBR, YCgCo, bt2020nc, bt2020c
|
|
.TP
|
|
\fB\-\-chromaloc <integer>
|
|
Specify chroma sample location (0 to 5) [0]
|