From 7185519a1b998ecfd1fe96de8ba0e97a2c845f87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arttu=20Yl=C3=A4-Outinen?= Date: Fri, 23 Mar 2018 12:33:06 +0200 Subject: [PATCH] Update command line help - Adds missing default values. - Adds help for --crypto and --key. - Adds help for --rd=3. - Adds help for --sao options. - Some changes to help wording. --- README.md | 266 +++++++++++++++++++++++--------------------- doc/kvazaar.1 | 300 ++++++++++++++++++++++++++++---------------------- src/cli.c | 267 +++++++++++++++++++++++--------------------- 3 files changed, 447 insertions(+), 386 deletions(-) diff --git a/README.md b/README.md index e48f277d..4e697230 100644 --- a/README.md +++ b/README.md @@ -53,14 +53,14 @@ Usage: kvazaar -i --input-res x -o Required: - -i, --input : Input file + -i, --input : Input file --input-res : Input resolution [auto] - auto: detect from file name - x: width times height - -o, --output : Output file + - auto: Detect from file name. + - x: width times height + -o, --output : Output file Presets: - --preset= : Set options to a preset [medium] + --preset : Set options to a preset [medium] - ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow placebo @@ -68,160 +68,170 @@ Presets: Input: -n, --frames : Number of frames to code [all] --seek : First frame to code [0] - --input-fps [/] : Framerate of the input video [25.0] - --source-scan-type : Set source scan type [progressive]. - - progressive: progressive scan - - tff: top field first - - bff: bottom field first - --input-format : P420 or P400 - --input-bitdepth : 8-16 - --loop-input : Re-read input file forever + --input-fps [/] : Frame rate of the input video [25] + --source-scan-type : Source scan type [progressive] + - progressive: Progressive scan + - tff: Top field first + - bff: Bottom field first + --input-format : P420 or P400 [P420] + --input-bitdepth : 8-16 [8] + --loop-input : Re-read input file forever. Options: - --help : Print this help message and exit - --version : Print version information and exit - --aud : Use access unit delimiters - --debug : Output encoders reconstruction. - --cpuid : Disable runtime cpu optimizations with value 0. - --hash : Decoded picture hash [checksum] + --help : Print this help message and exit. + --version : Print version information and exit. + --(no-)aud : Use access unit delimiters. [disabled] + --debug : Output internal reconstruction. + --(no-)cpuid : Enable runtime CPU optimizations. [enabled] + --hash : Decoded picture hash [checksum] - none: 0 bytes - checksum: 18 bytes - md5: 56 bytes - --no-psnr : Don't calculate PSNR for frames - --no-info : Don't add encoder info SEI. + --(no-)psnr : Calculate PSNR for frames. [enabled] + --(no-)info : Add encoder info SEI. [enabled] + --crypto : Selective encryption. Crypto support must be + enabled at compile-time. Can be 'on' or 'off' or + a list of features separated with a '+'. [off] + - on: Enable all encryption features. + - off: Disable selective encryption. + - mvs: Motion vector magnitudes. + - mv_signs: Motion vector signs. + - trans_coeffs: Coefficient magnitudes. + - trans_coeff_signs: Coefficient signs. + - intra_pred_modes: Intra prediction modes. + --key : Encryption key [16,213,27,56,255,127,242,112, + 97,126,197,204,25,59,38,30] Video structure: - -q, --qp : Quantization Parameter [32] - -p, --period : Period of intra pictures [0] - - 0: only first picture is intra - - 1: all pictures are intra - - 2-N: every Nth picture is intra - --vps-period : Specify 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 - -r, --ref : Reference frames, range 1..15 [3] - --gop : Definition of GOP structure [0] - - 0: disabled + -q, --qp : Quantization parameter [22] + -p, --period : Period of intra pictures [64] + - 0: Only first picture is intra. + - 1: All pictures are intra. + - N: Every Nth picture is intra. + --vps-period : 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. + -r, --ref : Number of reference frames, in range 1..15 [1] + --gop : GOP structure [lp-g4d3t1] + - 0: Disabled - 8: B-frame pyramid of length 8 - - lp-: lp-gop definition - (e.g. lp-g8d4t2, see README) - --cqmfile : Custom Quantization Matrices from a file - --bitrate : Target bitrate. [0] - - 0: disable rate-control - - N: target N bits per second - --lossless : Use lossless coding - --mv-constraint : Constrain movement vectors - - none: no constraint - - frametile: constrain within the tile - - frametilemargin: constrain even more - --roi : Use a delta QP map for region of interest - Read an array of delta QP values from - a file, where the first two values are the - width and height, followed by width*height - delta QP values in raster order. - The delta QP map can be any size or aspect - ratio, and will be mapped to LCU's. - --(no-)erp-aqp : Use adaptive QP for 360 video with - equirectangular projection + - lp-: Low-delay P-frame GOP + (e.g. lp-g8d4t2, see README) + --cqmfile : Read custom quantization matrices from a file. + --bitrate : Target bitrate [0] + - 0: Disable rate control. + - N: Target N bits per second. + --(no-)lossless : Use lossless coding. [disabled] + --mv-constraint : Constrain movement vectors. [none] + - none: No constraint + - frametile: Constrain within the tile. + - frametilemargin: Constrain even more. + --roi : Use a delta QP map for region of interest. + Reads an array of delta QP values from a text + file. The file format is: width and height of + the QP delta map followed by width*height delta + QP values in raster order. The map can be of any + size and will be scaled to the video size. + --(no-)erp-aqp : Use adaptive QP for 360 degree video with + equirectangular projection. [disabled] --level : Use the given HEVC level in the output and give - an error if the input doesn't fit to it's - limits [6.2] - Allowed values are 1, 2, 2.1, 3, 3.1, 4, 4.1 - 5, 5.1, 5.2, 6, 6.1 and 6.2. The dot is - optional. - --force-level : Same as --level, except instead of errors you - get warnings - --high-tier : Used with --level. Tells the encoder to use - high-tier bitrate limits instead of the - main-tier limits during encoding. + 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 + --force-level : Same as --level but warnings instead of errors. + --high-tier : Used with --level. Use high tier bitrate limits + instead of the main tier limits during encoding. Compression tools: - --deblock [] : Deblocking - - beta: between -6 and 6 - - tc: between -6 and 6 - --(no-)sao : Sample Adaptive Offset - --(no-)rdoq : Rate-Distortion Optimized Quantization - --(no-)signhide : Sign Hiding - --(no-)smp : Symmetric Motion Partition - --(no-)amp : Asymmetric Motion Partition - --rd : Intra mode search complexity - - 0: skip intra if inter is good enough - - 1: rough intra mode search with SATD - - 2: refine intra mode search with SSE - --(no-)mv-rdo : Rate-Distortion Optimized motion vector costs - --(no-)full-intra-search - : Try all intra modes during rough search. - --(no-)transform-skip : Transform skip - --me : Integer motion estimation + --(no-)deblock : Deblocking filter. [0:0] + - beta: Between -6 and 6 + - tc: Between -6 and 6 + --sao : Sample Adaptive Offset [full] + - off: SAO disabled + - band: Band offset only + - edge: Edge offset only + - full: Full SAO + --(no-)rdoq : Rate-distortion optimized quantization [enabled] + --(no-)rdoq-skip : Skip RDOQ for 4x4 blocks. [enabled] + --(no-)signhide : Sign hiding [disabled] + --(no-)smp : Symmetric motion partition [disabled] + --(no-)amp : Asymmetric motion partition [disabled] + --rd : Intra mode search complexity [1] + - 0: Skip intra if inter is good enough. + - 1: Rough intra mode search with SATD. + - 2: Refine intra mode search with SSE. + - 3: Try all intra modes and enable intra + chroma mode search. + --(no-)mv-rdo : Rate-distortion optimized motion vector costs + [disabled] + --(no-)full-intra-search : Try all intra modes during rough search. + [disabled] + --(no-)transform-skip : Try transform skip [disabled] + --me : Integer motion estimation algorithm [hexbs] - hexbs: Hexagon Based Search - tz: Test Zone Search - full: Full Search - full8, full16, full32, full64 - dia: Diamond Search - --me-steps : How many search steps does the motion estimation - do before cutting off [-1] - Has effect only for 'hexbs' and 'dia' - --subme : Set fractional pixel motion estimation level - - 0: only integer motion estimation + --me-steps : Motion estimation search step limit. Only + affects 'hexbs' and 'dia'. [-1] + --subme : 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 - --pu-depth-inter - - : Range for sizes for inter predictions + --pu-depth-inter - : Inter prediction units sizes [1-3] - 0, 1, 2, 3: from 64x64 to 8x8 - --pu-depth-intra - : Range for sizes for intra predictions + --pu-depth-intra - : Intra prediction units sizes [1-3] - 0, 1, 2, 3, 4: from 64x64 to 4x4 - --(no-)bipred : Bi-prediction - --(no-)cu-split-termination - : CU split search termination condition - - off: Never terminate cu-split search - - zero: Terminate with zero residual - --(no-)me-early-termination : ME early termination condition - - off: Don't terminate early - - on: Terminate early - - sensitive: Terminate even earlier - --(no-)implicit-rdpcm : Implicit residual DPCM - Currently only supported with lossless coding. - --(no-)tmvp : Temporal Motion Vector Prediction - --(no-)rdoq-skip : Skips RDOQ for 4x4 blocks + --tr-depth-intra : Transform split depth for intra blocks [0] + --(no-)bipred : Bi-prediction [disabled] + --cu-split-termination : CU split search termination [zero] + - off: Don't terminate early. + - zero: Terminate when residual is zero. + --me-early-termination : Motion estimation termination [on] + - off: Don't terminate early. + - on: Terminate early. + - sensitive: Terminate even earlier. + --(no-)implicit-rdpcm : Implicit residual DPCM. Currently only supported + with lossless coding. [disabled] + --(no-)tmvp : Temporal motion vector prediction [enabled] Parallel processing: --threads : Number of threads to use [auto] - - 0: process everything with main thread - - N: use N threads for encoding - - auto: select based on number of cores - --owf : Frame parallelism [auto] - - N: Process N-1 frames at a time - - auto: Select automatically - --(no-)wpp : Wavefront parallel processing [enabled] - Enabling tiles automatically disables WPP. - To enable WPP with tiles, re-enable it after - enabling tiles. + - 0: Process everything with main thread. + - N: Use N threads for encoding. + - auto: Select automatically. + --owf : Frame-level parallelism [auto] + - N: Process N-1 frames at a time. + - auto: Select automatically. + --(no-)wpp : Wavefront parallel processing. + Enabling tiles automatically disables WPP. To + enable WPP with tiles, re-enable it after + enabling tiles. [enabled] --tiles x : Split picture into width x height uniform tiles. --tiles-width-split |u : - Specifies a comma separated list of pixel - positions of tiles columns separation - coordinates. - Can also be u, followed by a single int n, in - which case it produces columns of uniform width. + - : A comma-separated list of tile + column pixel coordinates. + - u: Number of tile columns of uniform + width. --tiles-height-split |u : - Specifies a comma separated list of pixel - positions of tiles rows separation coordinates. - Can also be u followed by and a single int n, in - which case it produces rows of uniform height. - --slices : Control how slices are used - - tiles: put tiles in independent slices - - wpp: put rows in dependent slices - - tiles+wpp: do both + - : A comma-separated list of tile row + column pixel coordinates. + - u: Number of tile rows of uniform + height. + --slices : Control how slices are used. + - tiles: Put tiles in independent slices. + - wpp: Put rows in dependent slices. + - tiles+wpp: Do both. Video Usability Information: - --sar : Specify Sample Aspect Ratio + --sar : Specify sample aspect ratio --overscan : Specify crop overscan setting [undef] - undef, show, crop --videoformat : Specify video format [undef] - - component, pal, ntsc, secam, mac, undef + - undef, component, pal, ntsc, secam, mac --range : Specify color range [tv] - tv, pc --colorprim : Specify color primaries [undef] @@ -238,8 +248,8 @@ Video Usability Information: --chromaloc : Specify chroma sample location (0 to 5) [0] Deprecated parameters: (might be removed at some point) - -w, --width : Use --input-res - -h, --height : Use --input-res + -w, --width : Use --input-res. + -h, --height : Use --input-res. ``` [comment]: # (END KVAZAAR HELP MESSAGE) diff --git a/doc/kvazaar.1 b/doc/kvazaar.1 index 7b234b9b..52efe827 100644 --- a/doc/kvazaar.1 +++ b/doc/kvazaar.1 @@ -1,24 +1,24 @@ -.TH KVAZAAR "1" "November 2017" "kvazaar v1.2.0" "User Commands" +.TH KVAZAAR "1" "March 2018" "kvazaar v1.2.0" "User Commands" .SH NAME kvazaar \- open source HEVC encoder .SH SYNOPSIS \fBkvazaar \fR\-i \-\-input\-res x \-o .SH DESCRIPTION .TP -\fB\-i\fR, \fB\-\-input +\fB\-i\fR, \fB\-\-input Input file .TP \fB\-\-input\-res Input resolution [auto] -auto: detect from file name -x: width times height + \- auto: Detect from file name. + \- x: width times height .TP -\fB\-o\fR, \fB\-\-output +\fB\-o\fR, \fB\-\-output Output file .SS "Presets:" .TP -\fB\-\-preset= +\fB\-\-preset Set options to a preset [medium] \- ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow @@ -32,241 +32,281 @@ Number of frames to code [all] \fB\-\-seek First frame to code [0] .TP -\fB\-\-input\-fps / -Framerate of the input video [25.0] +\fB\-\-input\-fps [/] +Frame rate of the input video [25] .TP \fB\-\-source\-scan\-type -Set source scan type [progressive]. - \- progressive: progressive scan - \- tff: top field first - \- bff: bottom field first +Source scan type [progressive] + \- progressive: Progressive scan + \- tff: Top field first + \- bff: Bottom field first .TP -\fB\-\-input\-format -P420 or P400 +\fB\-\-input\-format +P420 or P400 [P420] .TP -\fB\-\-input\-bitdepth -8\-16 +\fB\-\-input\-bitdepth +8\-16 [8] .TP \fB\-\-loop\-input -Re\-read input file forever +Re\-read input file forever. .SS "Options:" .TP \fB\-\-help -Print this help message and exit +Print this help message and exit. .TP \fB\-\-version -Print version information and exit +Print version information and exit. .TP -\fB\-\-aud -Use access unit delimiters +\fB\-\-(no\-)aud +Use access unit delimiters. [disabled] .TP -\fB\-\-debug -Output encoders reconstruction. +\fB\-\-debug +Output internal reconstruction. .TP -\fB\-\-cpuid -Disable runtime cpu optimizations with value 0. +\fB\-\-(no\-)cpuid +Enable runtime CPU optimizations. [enabled] .TP -\fB\-\-hash +\fB\-\-hash Decoded picture hash [checksum] \- none: 0 bytes \- checksum: 18 bytes \- md5: 56 bytes .TP -\fB\-\-no\-psnr -Don't calculate PSNR for frames +\fB\-\-(no\-)psnr +Calculate PSNR for frames. [enabled] .TP -\fB\-\-no\-info -Don't add encoder info SEI. +\fB\-\-(no\-)info +Add encoder info SEI. [enabled] +.TP +\fB\-\-crypto +Selective encryption. Crypto support must be +enabled at compile\-time. Can be 'on' or 'off' or +a list of features separated with a '+'. [off] + \- on: Enable all encryption features. + \- off: Disable selective encryption. + \- mvs: Motion vector magnitudes. + \- mv_signs: Motion vector signs. + \- trans_coeffs: Coefficient magnitudes. + \- trans_coeff_signs: Coefficient signs. + \- intra_pred_modes: Intra prediction modes. +.TP +\fB\-\-key +Encryption key [16,213,27,56,255,127,242,112, + 97,126,197,204,25,59,38,30] .SS "Video structure:" .TP \fB\-q\fR, \fB\-\-qp -Quantization Parameter [32] +Quantization parameter [22] .TP \fB\-p\fR, \fB\-\-period -Period of intra pictures [0] -\- 0: only first picture is intra -\- 1: all pictures are intra -\- 2\-N: every Nth picture is intra +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 -Specify 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 +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 -Reference frames, range 1..15 [3] +Number of reference frames, in range 1..15 [1] .TP \fB\-\-gop -Definition of GOP structure [0] - \- 0: disabled +GOP structure [lp\-g4d3t1] + \- 0: Disabled \- 8: B\-frame pyramid of length 8 - \- lp\-: lp\-gop definition - (e.g. lp\-g8d4t2, see README) + \- lp\-: Low\-delay P\-frame GOP + (e.g. lp\-g8d4t2, see README) .TP -\fB\-\-cqmfile -Custom Quantization Matrices from a file +\fB\-\-cqmfile +Read custom quantization matrices from a file. .TP \fB\-\-bitrate -Target bitrate. [0] - \- 0: disable rate\-control - \- N: target N bits per second +Target bitrate [0] + \- 0: Disable rate control. + \- N: Target N bits per second. .TP -\fB\-\-lossless -Use lossless coding +\fB\-\-(no\-)lossless +Use lossless coding. [disabled] .TP -\fB\-\-mv\-constraint -Constrain movement vectors - \- none: no constraint - \- frametile: constrain within the tile - \- frametilemargin: constrain even more +\fB\-\-mv\-constraint +Constrain movement vectors. [none] + \- none: No constraint + \- frametile: Constrain within the tile. + \- frametilemargin: Constrain even more. .TP -\fB\-\-roi -Use a delta QP map for region of interest - Read an array of delta QP values from - a file, where the first two values are the - width and height, followed by width*height - delta QP values in raster order. - The delta QP map can be any size or aspect - ratio, and will be mapped to LCU's. +\fB\-\-roi +Use a delta QP map for region of interest. +Reads an array of delta QP values from a text +file. The file format is: width and height of +the QP delta map followed by width*height delta +QP values in raster order. The map can be of any +size and will be scaled to the video size. .TP \fB\-\-(no\-)erp\-aqp -Use adaptive QP for 360 video with -equirectangular projection +Use adaptive QP for 360 degree video with +equirectangular projection. [disabled] +.TP +\fB\-\-level +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 +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. .SS "Compression tools:" .TP -\fB\-\-deblock [] -Deblocking - \- beta: between \-6 and 6 - \- tc: between \-6 and 6 +\fB\-\-(no\-)deblock +Deblocking filter. [0:0] + \- beta: Between \-6 and 6 + \- tc: Between \-6 and 6 .TP -\fB\-\-(no\-)sao -Sample Adaptive Offset +\fB\-\-sao +Sample Adaptive Offset [full] + \- off: SAO disabled + \- band: Band offset only + \- edge: Edge offset only + \- full: Full SAO .TP \fB\-\-(no\-)rdoq -Rate\-Distortion Optimized Quantization +Rate\-distortion optimized quantization [enabled] +.TP +\fB\-\-(no\-)rdoq\-skip +Skip RDOQ for 4x4 blocks. [enabled] .TP \fB\-\-(no\-)signhide -Sign Hiding +Sign hiding [disabled] .TP \fB\-\-(no\-)smp -Symmetric Motion Partition +Symmetric motion partition [disabled] .TP \fB\-\-(no\-)amp -Asymmetric Motion Partition +Asymmetric motion partition [disabled] .TP \fB\-\-rd -Intra mode search complexity - \- 0: skip intra if inter is good enough - \- 1: rough intra mode search with SATD - \- 2: refine intra mode search with SSE +Intra mode search complexity [1] + \- 0: Skip intra if inter is good enough. + \- 1: Rough intra mode search with SATD. + \- 2: Refine intra mode search with SSE. + \- 3: Try all intra modes and enable intra + chroma mode search. .TP \fB\-\-(no\-)mv\-rdo -Rate\-Distortion Optimized motion vector costs +Rate\-distortion optimized motion vector costs +[disabled] .TP \fB\-\-(no\-)full\-intra\-search - Try all intra modes during rough search. +[disabled] .TP \fB\-\-(no\-)transform\-skip -Transform skip +Try transform skip [disabled] .TP \fB\-\-me -Integer motion estimation +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 +Motion estimation search step limit. Only +affects 'hexbs' and 'dia'. [\-1] .TP \fB\-\-subme -Set fractional pixel motion estimation level - \- 0: only integer motion estimation +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 \- - -Range for sizes for inter predictions +Inter prediction units sizes [1\-3] \- 0, 1, 2, 3: from 64x64 to 8x8 .TP \fB\-\-pu\-depth\-intra \- -Range for sizes for intra predictions +Intra prediction units sizes [1\-3] \- 0, 1, 2, 3, 4: from 64x64 to 4x4 .TP +\fB\-\-tr\-depth\-intra +Transform split depth for intra blocks [0] +.TP \fB\-\-(no\-)bipred -Bi\-prediction +Bi\-prediction [disabled] .TP -\fB\-\-(no\-)cu\-split\-termination - -CU split search termination condition - \- off: Never terminate cu\-split search - \- zero: Terminate with zero residual +\fB\-\-cu\-split\-termination +CU split search termination [zero] + \- off: Don't terminate early. + \- zero: Terminate when residual is zero. .TP -\fB\-\-(no\-)me\-early\-termination -ME early termination condition - \- off: Don't terminate early - \- on: Terminate early - \- sensitive: Terminate even earlier +\fB\-\-me\-early\-termination +Motion estimation termination [on] + \- off: Don't terminate early. + \- on: Terminate early. + \- sensitive: Terminate even earlier. .TP \fB\-\-(no\-)implicit\-rdpcm -Implicit residual DPCM -Currently only supported with lossless coding. +Implicit residual DPCM. Currently only supported +with lossless coding. [disabled] .TP \fB\-\-(no\-)tmvp -Temporal Motion Vector Prediction -.TP -\fB\-\-(no\-)rdoq\-skip -Skips RDOQ for 4x4 blocks +Temporal motion vector prediction [enabled] .SS "Parallel processing:" .TP \fB\-\-threads Number of threads to use [auto] - \- 0: process everything with main thread - \- N: use N threads for encoding - \- auto: select based on number of cores + \- 0: Process everything with main thread. + \- N: Use N threads for encoding. + \- auto: Select automatically. .TP \fB\-\-owf -Frame parallelism [auto] - \- N: Process N\-1 frames at a time - \- auto: Select automatically +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. +Wavefront parallel processing. +Enabling tiles automatically disables WPP. To +enable WPP with tiles, re\-enable it after +enabling tiles. [enabled] .TP \fB\-\-tiles x Split picture into width x height uniform tiles. .TP \fB\-\-tiles\-width\-split |u -Specifies a comma separated list of pixel -positions of tiles columns separation coordinates. -Can also be u followed by and a single int n, -in which case it produces columns of uniform width. + \- : A comma\-separated list of tile + column pixel coordinates. + \- u: Number of tile columns of uniform + width. .TP \fB\-\-tiles\-height\-split |u -Specifies a comma separated list of pixel -positions of tiles rows separation coordinates. -Can also be u followed by and a single int n, -in which case it produces rows of uniform height. + \- : A comma\-separated list of tile row + column pixel coordinates. + \- u: Number of tile rows of uniform + height. .TP \fB\-\-slices -Control how slices are used - \- tiles: put tiles in independent slices - \- wpp: put rows in dependent slices - \- tiles+wpp: do both +Control how slices are used. + \- tiles: Put tiles in independent slices. + \- wpp: Put rows in dependent slices. + \- tiles+wpp: Do both. .SS "Video Usability Information:" .TP \fB\-\-sar -Specify Sample Aspect Ratio +Specify sample aspect ratio .TP \fB\-\-overscan Specify crop overscan setting [undef] @@ -274,7 +314,7 @@ Specify crop overscan setting [undef] .TP \fB\-\-videoformat Specify video format [undef] - \- component, pal, ntsc, secam, mac, undef + \- undef, component, pal, ntsc, secam, mac .TP \fB\-\-range Specify color range [tv] diff --git a/src/cli.c b/src/cli.c index 60d443b1..cb4a0a82 100644 --- a/src/cli.c +++ b/src/cli.c @@ -36,9 +36,9 @@ static const struct option long_options[] = { { "input", required_argument, NULL, 'i' }, { "output", required_argument, NULL, 'o' }, { "debug", required_argument, NULL, 'd' }, - { "width", required_argument, NULL, 'w' }, + { "width", required_argument, NULL, 'w' }, // deprecated { "height", required_argument, NULL, 'h' }, // deprecated - { "frames", required_argument, NULL, 'n' }, // deprecated + { "frames", required_argument, NULL, 'n' }, { "qp", required_argument, NULL, 'q' }, { "period", required_argument, NULL, 'p' }, { "ref", required_argument, NULL, 'r' }, @@ -323,15 +323,15 @@ void print_help(void) "\n" /* Word wrap to this width to stay under 80 characters (including ") *************/ "Required:\n" - " -i, --input : Input file\n" + " -i, --input : Input file\n" " --input-res : Input resolution [auto]\n" - " auto: detect from file name\n" - " x: width times height\n" - " -o, --output : Output file\n" + " - auto: Detect from file name.\n" + " - x: width times height\n" + " -o, --output : Output file\n" "\n" /* Word wrap to this width to stay under 80 characters (including ") *************/ "Presets:\n" - " --preset= : Set options to a preset [medium]\n" + " --preset : Set options to a preset [medium]\n" " - ultrafast, superfast, veryfast, faster,\n" " fast, medium, slow, slower, veryslow\n" " placebo\n" @@ -340,160 +340,171 @@ void print_help(void) "Input:\n" " -n, --frames : Number of frames to code [all]\n" " --seek : First frame to code [0]\n" - " --input-fps [/] : Framerate of the input video [25.0]\n" - " --source-scan-type : Set source scan type [progressive].\n" - " - progressive: progressive scan\n" - " - tff: top field first\n" - " - bff: bottom field first\n" - " --input-format : P420 or P400\n" - " --input-bitdepth : 8-16\n" - " --loop-input : Re-read input file forever\n" + " --input-fps [/] : Frame rate of the input video [25]\n" + " --source-scan-type : Source scan type [progressive]\n" + " - progressive: Progressive scan\n" + " - tff: Top field first\n" + " - bff: Bottom field first\n" + " --input-format : P420 or P400 [P420]\n" + " --input-bitdepth : 8-16 [8]\n" + " --loop-input : Re-read input file forever.\n" "\n" /* Word wrap to this width to stay under 80 characters (including ") *************/ "Options:\n" - " --help : Print this help message and exit\n" - " --version : Print version information and exit\n" - " --aud : Use access unit delimiters\n" - " --debug : Output encoders reconstruction.\n" - " --cpuid : Disable runtime cpu optimizations with value 0.\n" - " --hash : Decoded picture hash [checksum]\n" + " --help : Print this help message and exit.\n" + " --version : Print version information and exit.\n" + " --(no-)aud : Use access unit delimiters. [disabled]\n" + " --debug : Output internal reconstruction.\n" + " --(no-)cpuid : Enable runtime CPU optimizations. [enabled]\n" + " --hash : Decoded picture hash [checksum]\n" " - none: 0 bytes\n" " - checksum: 18 bytes\n" " - md5: 56 bytes\n" - " --no-psnr : Don't calculate PSNR for frames\n" - " --no-info : Don't add encoder info SEI.\n" + " --(no-)psnr : Calculate PSNR for frames. [enabled]\n" + " --(no-)info : Add encoder info SEI. [enabled]\n" + " --crypto : Selective encryption. Crypto support must be\n" + " enabled at compile-time. Can be 'on' or 'off' or\n" + " a list of features separated with a '+'. [off]\n" + " - on: Enable all encryption features.\n" + " - off: Disable selective encryption.\n" + " - mvs: Motion vector magnitudes.\n" + " - mv_signs: Motion vector signs.\n" + " - trans_coeffs: Coefficient magnitudes.\n" + " - trans_coeff_signs: Coefficient signs.\n" + " - intra_pred_modes: Intra prediction modes.\n" + " --key : Encryption key [16,213,27,56,255,127,242,112,\n" + " 97,126,197,204,25,59,38,30]\n" "\n" /* Word wrap to this width to stay under 80 characters (including ") *************/ "Video structure:\n" - " -q, --qp : Quantization Parameter [32]\n" - " -p, --period : Period of intra pictures [0]\n" - " - 0: only first picture is intra\n" - " - 1: all pictures are intra\n" - " - 2-N: every Nth picture is intra\n" - " --vps-period : Specify how often the video parameter set is\n" - " re-sent. [0]\n" - " - 0: only send VPS with the first frame\n" - " - N: send VPS with every Nth intra frame\n" - " -r, --ref : Reference frames, range 1..15 [3]\n" - " --gop : Definition of GOP structure [0]\n" - " - 0: disabled\n" + " -q, --qp : Quantization parameter [22]\n" + " -p, --period : Period of intra pictures [64]\n" + " - 0: Only first picture is intra.\n" + " - 1: All pictures are intra.\n" + " - N: Every Nth picture is intra.\n" + " --vps-period : How often the video parameter set is re-sent [0]\n" + " - 0: Only send VPS with the first frame.\n" + " - N: Send VPS with every Nth intra frame.\n" + " -r, --ref : Number of reference frames, in range 1..15 [1]\n" + " --gop : GOP structure [lp-g4d3t1]\n" + " - 0: Disabled\n" " - 8: B-frame pyramid of length 8\n" - " - lp-: lp-gop definition\n" - " (e.g. lp-g8d4t2, see README)\n" - " --cqmfile : Custom Quantization Matrices from a file\n" - " --bitrate : Target bitrate. [0]\n" - " - 0: disable rate-control\n" - " - N: target N bits per second\n" - " --lossless : Use lossless coding\n" - " --mv-constraint : Constrain movement vectors\n" - " - none: no constraint\n" - " - frametile: constrain within the tile\n" - " - frametilemargin: constrain even more\n" - " --roi : Use a delta QP map for region of interest\n" - " Read an array of delta QP values from\n" - " a file, where the first two values are the\n" - " width and height, followed by width*height\n" - " delta QP values in raster order.\n" - " The delta QP map can be any size or aspect\n" - " ratio, and will be mapped to LCU's.\n" - " --(no-)erp-aqp : Use adaptive QP for 360 video with\n" - " equirectangular projection\n" + " - lp-: Low-delay P-frame GOP\n" + " (e.g. lp-g8d4t2, see README)\n" + " --cqmfile : Read custom quantization matrices from a file.\n" + " --bitrate : Target bitrate [0]\n" + " - 0: Disable rate control.\n" + " - N: Target N bits per second.\n" + " --(no-)lossless : Use lossless coding. [disabled]\n" + " --mv-constraint : Constrain movement vectors. [none]\n" + " - none: No constraint\n" + " - frametile: Constrain within the tile.\n" + " - frametilemargin: Constrain even more.\n" + " --roi : Use a delta QP map for region of interest.\n" + " Reads an array of delta QP values from a text\n" + " file. The file format is: width and height of\n" + " the QP delta map followed by width*height delta\n" + " QP values in raster order. The map can be of any\n" + " size and will be scaled to the video size.\n" + " --(no-)erp-aqp : Use adaptive QP for 360 degree video with\n" + " equirectangular projection. [disabled]\n" " --level : Use the given HEVC level in the output and give\n" - " an error if the input doesn't fit to it's\n" - " limits [6.2]\n" - " Allowed values are 1, 2, 2.1, 3, 3.1, 4, 4.1\n" - " 5, 5.1, 5.2, 6, 6.1 and 6.2. The dot is\n" - " optional.\n" - " --force-level : Same as --level, except instead of errors you\n" - " get warnings\n" - " --high-tier : Used with --level. Use high-tier bitrate limits\n" - " instead of the main-tier limits during encoding.\n" + " an error if level limits are exceeded. [6.2]\n" + " - 1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6,\n" + " 6.1, 6.2\n" + " --force-level : Same as --level but warnings instead of errors.\n" + " --high-tier : Used with --level. Use high tier bitrate limits\n" + " instead of the main tier limits during encoding.\n" "\n" /* Word wrap to this width to stay under 80 characters (including ") *************/ "Compression tools:\n" - " --deblock [] : Deblocking\n" - " - beta: between -6 and 6\n" - " - tc: between -6 and 6\n" - " --(no-)sao : Sample Adaptive Offset\n" - " --(no-)rdoq : Rate-Distortion Optimized Quantization\n" - " --(no-)signhide : Sign Hiding\n" - " --(no-)smp : Symmetric Motion Partition\n" - " --(no-)amp : Asymmetric Motion Partition\n" - " --rd : Intra mode search complexity\n" - " - 0: skip intra if inter is good enough\n" - " - 1: rough intra mode search with SATD\n" - " - 2: refine intra mode search with SSE\n" - " --(no-)mv-rdo : Rate-Distortion Optimized motion vector costs\n" - " --(no-)full-intra-search\n" - " : Try all intra modes during rough search.\n" - " --(no-)transform-skip : Transform skip\n" - " --me : Integer motion estimation\n" + " --(no-)deblock : Deblocking filter. [0:0]\n" + " - beta: Between -6 and 6\n" + " - tc: Between -6 and 6\n" + " --sao : Sample Adaptive Offset [full]\n" + " - off: SAO disabled\n" + " - band: Band offset only\n" + " - edge: Edge offset only\n" + " - full: Full SAO\n" + " --(no-)rdoq : Rate-distortion optimized quantization [enabled]\n" + " --(no-)rdoq-skip : Skip RDOQ for 4x4 blocks. [enabled]\n" + " --(no-)signhide : Sign hiding [disabled]\n" + " --(no-)smp : Symmetric motion partition [disabled]\n" + " --(no-)amp : Asymmetric motion partition [disabled]\n" + " --rd : Intra mode search complexity [1]\n" + " - 0: Skip intra if inter is good enough.\n" + " - 1: Rough intra mode search with SATD.\n" + " - 2: Refine intra mode search with SSE.\n" + " - 3: Try all intra modes and enable intra\n" + " chroma mode search.\n" + " --(no-)mv-rdo : Rate-distortion optimized motion vector costs\n" + " [disabled]\n" + " --(no-)full-intra-search : Try all intra modes during rough search.\n" + " [disabled]\n" + " --(no-)transform-skip : Try transform skip [disabled]\n" + " --me : Integer motion estimation algorithm [hexbs]\n" " - hexbs: Hexagon Based Search\n" " - tz: Test Zone Search\n" " - full: Full Search\n" " - full8, full16, full32, full64\n" " - dia: Diamond Search\n" - " --me-steps : How many search steps does the motion estimation\n" - " do before cutting off [-1]\n" - " Has effect only for 'hexbs' and 'dia'\n" - " --subme : Set fractional pixel motion estimation level\n" - " - 0: only integer motion estimation\n" + " --me-steps : Motion estimation search step limit. Only\n" + " affects 'hexbs' and 'dia'. [-1]\n" + " --subme : Fractional pixel motion estimation level [4]\n" + " - 0: Integer motion estimation only\n" " - 1: + 1/2-pixel horizontal and vertical\n" " - 2: + 1/2-pixel diagonal\n" " - 3: + 1/4-pixel horizontal and vertical\n" " - 4: + 1/4-pixel diagonal\n" - " --pu-depth-inter -\n" - " : Range for sizes for inter predictions\n" + " --pu-depth-inter - : Inter prediction units sizes [1-3]\n" " - 0, 1, 2, 3: from 64x64 to 8x8\n" - " --pu-depth-intra - : Range for sizes for intra predictions\n" + " --pu-depth-intra - : Intra prediction units sizes [1-3]\n" " - 0, 1, 2, 3, 4: from 64x64 to 4x4\n" - " --(no-)bipred : Bi-prediction\n" - " --(no-)cu-split-termination\n" - " : CU split search termination condition\n" - " - off: Never terminate cu-split search\n" - " - zero: Terminate with zero residual\n" - " --(no-)me-early-termination : ME early termination condition\n" - " - off: Don't terminate early\n" - " - on: Terminate early\n" - " - sensitive: Terminate even earlier\n" - " --(no-)implicit-rdpcm : Implicit residual DPCM\n" - " Currently only supported with lossless coding.\n" - " --(no-)tmvp : Temporal Motion Vector Prediction\n" - " --(no-)rdoq-skip : Skips RDOQ for 4x4 blocks\n" + " --tr-depth-intra : Transform split depth for intra blocks [0]\n" + " --(no-)bipred : Bi-prediction [disabled]\n" + " --cu-split-termination : CU split search termination [zero]\n" + " - off: Don't terminate early.\n" + " - zero: Terminate when residual is zero.\n" + " --me-early-termination : Motion estimation termination [on]\n" + " - off: Don't terminate early.\n" + " - on: Terminate early.\n" + " - sensitive: Terminate even earlier.\n" + " --(no-)implicit-rdpcm : Implicit residual DPCM. Currently only supported\n" + " with lossless coding. [disabled]\n" + " --(no-)tmvp : Temporal motion vector prediction [enabled]\n" "\n" /* Word wrap to this width to stay under 80 characters (including ") *************/ "Parallel processing:\n" " --threads : Number of threads to use [auto]\n" - " - 0: process everything with main thread\n" - " - N: use N threads for encoding\n" - " - auto: select based on number of cores\n" - " --owf : Frame parallelism [auto]\n" - " - N: Process N-1 frames at a time\n" - " - auto: Select automatically\n" - " --(no-)wpp : Wavefront parallel processing [enabled]\n" - " Enabling tiles automatically disables WPP.\n" - " To enable WPP with tiles, re-enable it after\n" - " enabling tiles.\n" + " - 0: Process everything with main thread.\n" + " - N: Use N threads for encoding.\n" + " - auto: Select automatically.\n" + " --owf : Frame-level parallelism [auto]\n" + " - N: Process N-1 frames at a time.\n" + " - auto: Select automatically.\n" + " --(no-)wpp : Wavefront parallel processing.\n" + " Enabling tiles automatically disables WPP. To\n" + " enable WPP with tiles, re-enable it after\n" + " enabling tiles. [enabled]\n" " --tiles x : Split picture into width x height uniform tiles.\n" " --tiles-width-split |u :\n" - " Specifies a comma separated list of pixel\n" - " positions of tiles columns separation\n" - " coordinates.\n" - " Can also be u, followed by a single int n, in\n" - " which case it produces columns of uniform width.\n" + " - : A comma-separated list of tile\n" + " column pixel coordinates.\n" + " - u: Number of tile columns of uniform\n" + " width.\n" " --tiles-height-split |u :\n" - " Specifies a comma separated list of pixel\n" - " positions of tiles rows separation coordinates.\n" - " Can also be u followed by and a single int n, in\n" - " which case it produces rows of uniform height.\n" - " --slices : Control how slices are used\n" - " - tiles: put tiles in independent slices\n" - " - wpp: put rows in dependent slices\n" - " - tiles+wpp: do both\n" + " - : A comma-separated list of tile row\n" + " column pixel coordinates.\n" + " - u: Number of tile rows of uniform\n" + " height.\n" + " --slices : Control how slices are used.\n" + " - tiles: Put tiles in independent slices.\n" + " - wpp: Put rows in dependent slices.\n" + " - tiles+wpp: Do both.\n" "\n" /* Word wrap to this width to stay under 80 characters (including ") *************/ "Video Usability Information:\n" - " --sar : Specify Sample Aspect Ratio\n" + " --sar : Specify sample aspect ratio\n" " --overscan : Specify crop overscan setting [undef]\n" " - undef, show, crop\n" " --videoformat : Specify video format [undef]\n" @@ -515,8 +526,8 @@ void print_help(void) "\n" /* Word wrap to this width to stay under 80 characters (including ") *************/ "Deprecated parameters: (might be removed at some point)\n" - " -w, --width : Use --input-res\n" - " -h, --height : Use --input-res\n"); + " -w, --width : Use --input-res.\n" + " -h, --height : Use --input-res.\n"); }