---
name: "kvazaar"
section: "1"
platform: "linux"
package: "kvazaar"
version: "2.3.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/kvazaar"
---

# kvazaar(1)

open source HEVC encoder

## NAME

kvazaar - open source HEVC encoder

## SYNOPSIS

**kvazaar** -i \<input\> --input-res \<width\>x\<height\> -o \<output\>

## DESCRIPTION

### Required:

- **-i**, **--input \<filename\>**

  **Input file**

- **--input-res \<res\>**

  **Input resolution \[auto\]**\
       **- auto: Detect from file name.**\
       **- \<int\>x\<int\>: width times height**

- **-o**, **--output \<filename\>**

  **Output file**

### Presets:

- **--preset \<preset\>**

  **Set options to a preset \[medium\]**\
       **- ultrafast, superfast, veryfast, faster,**\
         **fast, medium, slow, slower, veryslow**\
         **placebo**

### Input:

- **-n**, **--frames \<integer\>**

  **Number of frames to code \[all\]**

- **--seek \<integer\>**

  **First frame to code \[0\]**

- **--input-fps \<num\>\[/\<denom\>\]**

  **Frame rate of the input video \[25\]**

- **--source-scan-type \<string\>**

  **Source scan type \[progressive\]**\
       **- progressive: Progressive scan**\
       **- tff: Top field first**\
       **- bff: Bottom field first**

- **--input-format \<string\>**

  **P420 or P400 \[P420\]**

- **--input-bitdepth \<int\>**

  **8-16 \[8\]**

- **--loop-input**

  **Re-read input file forever.**

- **--input-file-format \<string\>**

  **Input file format \[auto\]**\
        **- auto: Check the file ending for format**\
        **- y4m (skips frame headers)**\
        **- yuv**

### Options:

- **--help**

  **Print this help message and exit.**

- **--version**

  **Print version information and exit.**

- **--(no-)aud**

  **Use access unit delimiters. \[disabled\]**

- **--debug \<filename\>**

  **Output internal reconstruction.**

- **--(no-)cpuid**

  **Enable runtime CPU optimizations. \[enabled\]**

- **--hash \<string\>**

  **Decoded picture hash \[checksum\]**\
       **- none: 0 bytes**\
       **- checksum: 18 bytes**\
       **- md5: 56 bytes**

- **--(no-)psnr**

  **Calculate PSNR for frames. \[enabled\]**

- **--(no-)info**

  **Add encoder info SEI. \[enabled\]**

- **--(no-)enable-logging**

  **Enable logging for regular encoder performance,** **error messages are always disblayed. \[enabled\]**

- **--crypto \<string\>**

  **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 \<string\>**

  **Encryption key \[16,213,27,56,255,127,242,112,**\
                   **97,126,197,204,25,59,38,30\]**

- **--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.**

### Video structure:

- **-q**, **--qp \<integer\>**

  **Quantization parameter \[22\]**

- **-p**, **--period \<integer\>**

  **Period of intra pictures \[64\]**\
       **- 0: Only first picture is intra.**\
       **- 1: All pictures are intra.**\
       **- N: Every Nth picture is intra.**

- **--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.**

- **-r**, **--ref \<integer\>**

  **Number of reference frames, in range 1..15 \[4\]**

- **--gop \<string\>**

  **GOP structure \[16\]**\
       **-  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)**

- **--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.**

- **--(no-)open-gop**

  **Use open GOP configuration. \[enabled\]**

- **--cqmfile \<filename\>**

  **Read custom quantization matrices from a file.**

- **--scaling-list \<string\>: Set scaling list mode. \[off\]**

      **- off: Disable scaling lists.**\
       **- custom: use custom list (with --cqmfile).**\
       **- default: Use default lists.**

- **--bitrate \<integer\>**

  **Target bitrate \[0\]**\
       **- 0: Disable rate control.**\
       **- N: Target N bits per second.**

- **--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**

- **--(no-)intra-bits**

  **Use Hadamard cost based allocation for intra** **frames. Default on for gop 8 and off for lp-gop**

- **--(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.**

- **--(no-)lossless**

  **Use lossless coding. \[disabled\]**

- **--mv-constraint \<string\>**

  **Constrain movement vectors. \[none\]**\
       **- none: No constraint**\
       **- frametile: Constrain within the tile.**\
       **- frametilemargin: Constrain even more.**

- **--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.**

- **--set-qp-in-cu**

  **Set QP at CU level keeping pic\_init\_qp\_minus26.** **in PPS and slice\_qp\_delta in slize header zero.**

- **--(no-)erp-aqp**

  **Use adaptive QP for 360 degree video with** **equirectangular projection. \[disabled\]**

- **--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**

- **--force-level \<number\>**

  **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.** **High tier requires level 4 or higher.**

- **--(no-)vaq \<integer\>**

  **Enable variance adaptive quantization with given** **strength, in range 1..20. Recommended: 5.** **\[disabled\]**

### Compression tools:

- **--(no-)deblock \<beta:tc\>**

  **Deblocking filter. \[0:0\]**\
       **- beta: Between -6 and 6**\
       **- tc: Between -6 and 6**

- **--sao \<string\>**

  **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. \[disabled\]**

- **--(no-)signhide**

  **Sign hiding \[disabled\]**

- **--(no-)smp**

  **Symmetric motion partition \[disabled\]**

- **--(no-)amp**

  **Asymmetric motion partition \[disabled\]**

- **--rd \<integer\>**

  **Mode search complexity \[0\]**\
       **- 0: Skip intra if inter is good enough.**\
       **- 1: Rough intra mode search with SATD.**\
       **- 2: Refine mode search with SSE.**\
       **- 3: More SSE candidates for inter and**\
            **chroma mode search for 4x4 intra.**\
       **- 4: Even more SSE candidates for both.**\
       **- 5: Try all intra modes.**

- **--(no-)mv-rdo**

  **Rate-distortion optimized motion vector costs** **\[disabled\]**

- **--(no-)zero-coeff-rdo**

  **If a CU is set inter, check if forcing zero** **residual improves the RD cost. \[enabled\]**

- **--(no-)full-intra-search**

  **Try all intra modes during rough search.** **\[disabled\]**

- **--(no-)intra-chroma-search**

  **Test non-derived intra chroma modes.**\
       **\[disabled\]**

- **--(no-)transform-skip**

  **Try transform skip \[disabled\]**

- **--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**

- **--me-steps \<integer\>**

  **Motion estimation search step limit. Only** **affects 'hexbs' and 'dia'. \[-1\]**

- **--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**

- **--(no-)fast-bipred**

  **Only perform fast bipred search. \[enabled\]**

- **--pu-depth-inter \<int\>-\<int\>**

  **Inter prediction units sizes \[0-3\]**\
       **- 0, 1, 2, 3: from 64x64 to 8x8**\
       **- 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).**

- **--pu-depth-intra \<int\>-\<int\>**

  **Intra prediction units sizes \[1-4\]**\
       **- 0, 1, 2, 3, 4: from 64x64 to 4x4**\
       **- 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).**

- **--ml-pu-depth-intra**

  **Predict the pu-depth-intra using machine**\
    **learning trees, overrides the**\
    **--pu-depth-intra parameter. \[disabled\]**

- **--(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\]**

- **--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\]**

- **--tr-depth-intra \<int\>**

  **Transform split depth for intra blocks \[0\]**

- **--(no-)bipred**

  **Bi-prediction \[enabled\]**

- **--cu-split-termination \<string\>**

  **CU split search termination \[zero\]**\
       **- off: Don't terminate early.**\
       **- zero: Terminate when residual is zero.**

- **--me-early-termination \<string\>**

  **Motion estimation termination \[on\]**\
       **- off: Don't terminate early.**\
       **- on: Terminate early.**\
       **- sensitive: Terminate even earlier.**

- **--fast-residual-cost \<int\>**

  **Skip CABAC cost for residual coefficients**\
       **when QP is below the limit. \[0\]**

- **--fast-coeff-table \<string\>**

  **Read custom weights for residual**\
        **coefficients from a file instead of using**\
        **defaults \[default\]**

- **--fast-rd-sampling**

  **Enable learning data sampling for fast coefficient**\
                              **table generation**

- **--fastrd-accuracy-check**

  **Evaluate the accuracy of fast coefficient**\
    **prediction**

- **--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**

- **--(no-)intra-rdo-et**

  **Check intra modes in rdo stage only until** **a zero coefficient CU is found. \[disabled\]**

- **--(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\]**

- **--max-merge \<integer\>**

  **Maximum number of merge candidates, 1..5 \[5\]**

- **--(no-)implicit-rdpcm**

  **Implicit residual DPCM. Currently only supported** **with lossless coding. \[disabled\]**

- **--(no-)tmvp**

  **Temporal motion vector prediction \[enabled\]**

### Parallel processing:

- **--threads \<integer\>**

  **Number of threads to use \[auto\]**\
       **- 0: Process everything with main thread.**\
       **- N: Use N threads for encoding.**\
       **- auto: Select automatically.**

- **--owf \<integer\>**

  **Frame-level 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. Enabling wpp with tiles is,** **however, an experimental feature since it is** **not supported in any HEVC profile.**

- **--tiles \<int\>x\<int\>**

  **Split picture into width x height uniform tiles.**

- **--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.**

- **--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.**

- **--slices \<string\>**

  **Control how slices are used.**\
       **- tiles: Put tiles in independent slices.**\
       **- wpp: Put rows in dependent slices.**\
       **- tiles+wpp: Do both.**

- **--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.**

### Video Usability Information:

- **--sar \<width:height\>**

  **Specify sample aspect ratio**

- **--overscan \<string\>**

  **Specify crop overscan setting \[undef\]**\
       **- undef, show, crop**

- **--videoformat \<string\>**

  **Specify video format \[undef\]**\
       **- undef, component, pal, ntsc, secam, mac**

- **--range \<string\>**

  **Specify color range \[tv\]**\
       **- tv, pc**

- **--colorprim \<string\>**

  **Specify color primaries \[undef\]**\
       **- undef, bt709, bt470m, bt470bg,**\
         **smpte170m, smpte240m, film, bt2020**

- **--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**

- **--colormatrix \<string\>**

  **Specify color matrix setting \[undef\]**\
       **- undef, bt709, fcc, bt470bg, smpte170m,**\
         **smpte240m, GBR, YCgCo, bt2020nc, bt2020c**

- **--chromaloc \<integer\>**

  **Specify chroma sample location (0 to 5) \[0\]**
