| --end-usage=arg | Rate control mode (vbr, cbr(default), cq, q). VBR and CBR are self explanatory. CQ is constant quantizer with a bitrate ceiling(Constrained Quality), Q is for Quality. |
| --cq-level=arg | Constant/Constrained Quality level, used in Q/CQ modes. |
| --cpu-used=arg | CPU Used (0..6) Good mode, (5..9) realtime mode 1(default). Default is good mode(CPU-0 to CPU-6): unless you specify the realtime flag(--rt), every speed set above 6 will default back to 6. Lower numbers are slower. |
| --bit-depth=arg | Bit depth (8, 10, 12). Default is the bit-depth recognized by aomenc from the source file. 12-bit is not recommended for end compression, as it is not supported in the main AV1 HW decoding profile. |
| --tile-columns=arg | Number of tile columns to use, log2 (number to power of 2). With --tile-columns=2, it'll do 2²= 4 tile columns. |
| --tile-rows=arg | Number of tile rows to use, log2 (number to power of 2). With --tile-rows=1, it'll do 2¹= 2 tile rows. |
| --threads=arg | Allowed number of threads to use. |
| --lag-in-frames=arg | Number of lagged frames used by the encoder for lookahead and alternate reference frame placement(default 19, max 35).
| --enable-cdef=arg | Enable the constrained directional enhancement filter (0: false, 1: true (default)). CDEF is a very powerful filter used to clean up ringing, haloing and ringing artifacts. It works very well in that regard. |
| --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.). It is recommended to leave it at default unless you really know what you're doing. |
| --enable-chroma-deltaq=arg | Enable chroma delta quant (0: false (default), 1: true). May be broken below --cq-level=15.
| --color-primaries=arg | Color primaries (CICP) of input content: bt709, unspecified, bt601, bt470m, bt470bg, smpte240, film, bt2020, xyz, smpte431, smpte432, ebu3213. | Leave at default unless you have HDR content or your source's color-primaries information is different; in that case, set it to whatever your content is, usually BT2020.
| --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. | Leave at default unless you have HDR content or your source's transfer characteristics are different; in that case, set it to whatever your content is.
| --matrix-coefficients=arg | Matrix coefficients (CICP) of input content: identity, bt709, unspecified, fcc73, bt470bg, bt601, smpte240, ycgco, bt2020ncl, bt2020cl, smpte2085, chromncl, chromcl, ictcp. | Leave at default unless you have HDR content or your source's matrix coefficients information is different; in that case, set it to whatever your content is.
It is recommended to set it the rate control --end-usage=q to get the highest quality rate control method possible. Only use CQ if you are planning to stream with a maximum bitrate, and CBR for livestreaming.
It is recommended to the --cq-level to 20-24 for higher quality encodes, 25-30 for slightly lower quality encodes. With native 10-bit sources, the rate control is changed, so you need to considerably lower the CQ to get the same bitrate; therefore, it is recommended to set it to 13-15 to get similar average bitrate compared to 8-bit 19-24. All these previous recommendations are for 1080p30 content. Therefore, it is recommended to use a higher quantizer(more compression potential) for 1080p60 content, with a delta of usually around +15.|
For highest efficiency while keeping good threading, it is recommended to set it to --tile-columns=1 and --tile-rows=0 at 1080p30. For higher resolution/higher framerate encoding, set it to --tile-columns=2 and --tile-rows=1.
#### CPU preset:
` ... --cpu-used=6 ... `
--cpu-used=6 is recommended if you want good compression efficiency and fast encoding, and --cpu-used=4 if you want to crank up the efficiency even further. It is not recommended to use slower presets as they are much slower without much gain.
#### Bit-depth:
` ... --bit-depth=10 ... `
It is recommended to set it to 10-bit even for 8-bit content for higher efficiency and less banding due to no precision losses going from an 8-bit YUV source to 8-bit YUV, and allows for higher calculation precision. However, as of January 23rd 2021, it is not very easy to decode 10-bit AV1 video on x86_64 CPUs due to a lack of assembly optimizations. For now, use 10-bit encoding for 1080p30 content. Otherwise, use 8-bit with --bit-depth=8.
#### Threading and tile threading
` ... --threads=8 --tile-columns=1 --tile-rows=0 ... ` or ` ... --threads=16 --tile-columns=2 --tile-rows=1 ... ` for single instance encoding.
If you have say an 8C/16T CPU, it is recommended to set to #cores/2 you have for chunked encoding. If you have a higher thread count CPU, limiting it to 4 threads is also a good option to prevent thread oversaturation. Give it how many threads you have for single worker encoding.
#### Lag-in-frames
` ... --lag-in-frames=35 ... `
More is better, but it makes the encoder slower, up to a limit of 35 (default is 19).
#### CDEF usage
` ... --enable-cdef=0 ... ` if you want to encode >1080p30 10-bit as of January 2021.
For video game content and content in 8-bit, I always recommend keeping it on, as it makes the image much cleaner overall by preventing aliasing from ruining the imag, and gives a nice boost to subjective quality. However, for 10-bit AV1 on x86_64 CPUs, there is currently a big decoding performance penalty, so if you have >1080p30 footage or want maximum decode performance NOW, you can set --enable-cdef=0.
#### Adaptive quantization mode
` ... --aq-mode=2 ... `
Adaptive quantization mode (0: Default. 1: Variance, in which the encoder lowers the quantizer value for flat low complexity blocks, like clouds or dark scenes. Not recommended unless you know what you are doing. 2: Complexity, in which the encoder lowers the quantizer for complex parts of the image. 3: Cyclic refresh. Ups the quantizer value as much as possible for static flat looking blocks, only doing block refreshes in cycles if needed. Not recommend unless when used for live-streaming or conferencing.)
#### Content tune
` ... --tune-content=default ...` If you are encoding without the tune, it it **not necessary to specify it**.
default: tuned for most content. screen: tuned for screen recordings, low complexity animations, and most videos games. Not recommended for complex animation like anime as it disables some post-processing making it look worse in some way.
#### Forward keyframes and maximum adaptive keyframe distance
` ... --enable-fwd-kf=1 --kf-max-dist=240 ... `
It is recommended to set it to a MAX of 10s worth of frames, or 240 for 24FPS, 300 for 30FPS, and 600 for 60FPS for easier seeking. For video game content or >=60FPS content, is is also possible to use a max of 5s worth of frames to help with seeking performance. Leave it to default if you want maximum efficiency at the cost of worse seeking performance in some footage.
#### Alternative Reference Noise Reduced frames max number and ARNR strength
` ... --arnr-maxframes=7 --arnr-strength=5 ... ` is the default
For --arnr-maxframes: It is recommended to leave it at default unless you want to crank up the efficiency for low motion scenes.
For --arnr-strength: It is recommended to leave it at default, although you can lower it to 4 for slightly better noise retention.
#### Other flags that can be used to give higher efficiency
` ... --enable-qm=1 --enable-chroma-deltaq=1 --quant-b-adapt=1 --mv-cost-upd-freq=2 ... ` Description of what each setting does can be found in the description above.
#### Flags used for most native 10-bit HDR content