AMF Options - obsproject/obs-studio GitHub Wiki
Parameters and options are written as such in the config window:
Usage=transcoding Quality=speed
Parameter types:
- i = int (whole number),
- enum is also whole number. technically means something non-numeric, but...
- b = boolean (true/false),
- s = string
This table is currently only reasonably complete for H.264. Reasonably, as in "options that matter".
H.264
General
Parameter | Options | Default | Explanation |
---|---|---|---|
Usage | transcoding, ultralowlatency, lowlatency, webcam, hq, hqll | Transcoding | Changes a lot of settings based on usage. Highly recommend sticking to "transcoding". |
Quality | speed, balanced, quality | Quality | Controls the speed vs quality. Note: Can fall back to faster presets if throughput is too high vs max throughput. |
Profile | main, high, constrained_baseline, constrained_high | High | h264 profile. "High" should work for all modern devices (think iphone 4 and later). |
ProfileLevel | i (10-62) | 42 (4.2) | H264 profile level. Specifies constraints for decode. |
MaxNumRefFrames | i | 4 | Limits the max number of reference frames (0-16). This max is also limited by hardware and h264 levels. More ref frames means more encoder work, but potentially better compression. Stick to 4 or less, for the sake of compatibility and profile conformity. The encoder is currently likely to use a single reference frame unless b-frames are active. |
Rate Control
Parameter | Options | Default | Explanation |
---|---|---|---|
RateControlPreanalysisEnable | enum (0 or 1) | 1 (enabled) | Pre-encode assisted rate control. |
EnforceHRD | b | True | Enforce Hypothetical Reference Decoder. Constraints on QP variation within a picture to meet HRD requirements. |
FillerDataEnable | b | False (True if CBR) | Filler data. Useful for strict CBR encoding, like live streaming. |
VBVBufferSize | i | N/A | Note: in bits (bps) |
InitialVBVBufferFullness | i | 64 (100%) | Note: 0=0%, 64=100% |
PeakBitrate | i | N/A | Note: in bits (bps) |
MinQP | i | 0 | |
MaxQP | i | 51 |
B-Frames
B-Frames and its features currently require RDNA2 (RX 6000 and higher). Seems to currently cause some issues, try BPicturesPattern
set to 1 or 2. Only H.264 has B-frame support.
Parameter | Options | Default | Explanation |
---|---|---|---|
MaxConsecutiveBPictures | I (0-3) | 3 (if supported) | Max consecutive b-frames. Is overridden by BPicturesPattern=0 . |
BPicturesPattern | i (0-3) | 0 | Sets the number of consecutive b-frames per GOP (area between two i-frames). 0=off. |
AdaptiveMiniGOP | b | False | Variable amount of b-frames between p-frames. Note: Might require Pre-Analysis, or at least works better with it. |
BReferenceEnable | b | True | Enable/Disable the use of b-frames as reference frames. |
Psy
Parameter | Options | Default | Explanation |
---|---|---|---|
DeBlockingFilter | b | True | Enable/Disable the de-blocking filter. Only for H.264. |
EnableVBAQ | b | True (Unless CQP) | Adaptive quantization (H.264). Prioritize bits to parts of the image humans care about. |
HighMotionQualityBoostEnable | b | False |
Motion Estimation
Parameter | Options | Default | Explanation |
---|---|---|---|
HalfPixel | b | True | |
QuarterPixel | b | True |
H.265
Parameter | Options | Default | Explanation |
---|---|---|---|
Usage | transcoding, ultralowlatency, lowlatency, webcam, hq, hqll | Transcoding | Changes a lot of settings based on usage. Highly recommend sticking to "transcoding". |
Quality | speed, balanced, quality | Quality | Controls the speed vs quality. Note: Can fall back to faster presets if throughput is too high vs max throughput. |
Profile | main, main10 | main | h265 profile. main10 is for 10-bit (HDR). |
Tier | main, high | high | h265 tier. |
ProfileLevel | i (10-62) | 62 (6.2) | H264 profile level. Specifies constraints for decode. |
This above is a (still incomplete) list of main options. Some are really specific to H.265. Others are basically the same, but with an annoying name prefix. For example, EnableVBAQ
becomes HevcEnableVBAQ
. Use the AMF documentation linked below in "See also".
AV1
Parameter | Options | Default | Explanation |
---|---|---|---|
Usage | transcoding, ultralowlatency, lowlatency, webcam, hq, hqll | Transcoding | Changes a lot of settings based on usage. Highly recommend sticking to "transcoding". |
Quality | speed, balanced, quality | Quality | Controls the speed vs quality. Note: Can fall back to faster presets if throughput is too high vs max throughput. |
Profile | main | main | av1 profile. Can only be main. |
ProfileLevel | i (20-73) | 62 (6.2) | AV1 profile level. Specifies constraints for decode. |
Same deal here: some options really specific, others renamed.
Pre-Analysis
Parameter | Options | Default | Explanation |
---|---|---|---|
EnablePreAnalysis | b | False | Pseudo 2-pass for a certain number of frames. Enabling will disable VBAQ. GPU load hit (spends traditional 3d/render resources). This is the only PA property that gets affected by codec names (EnablePreAnalysis for H.264, HevcEnablePreAnalysis for H.265, Av1EnablePreAnalysis for AV1). |
PASceneChangeDetectionEnable | b | True | Akin to scenecut (adaptive I-frame insertion). Safest to disable for HLS transcode platforms, as is potentially risky for muxer segment/split. |
PAFrameSadEnable | b | True | Frame SAD (Sum of Absolute Difference) algorithm |
PALookAheadBufferDepth | i | 0 | Pre-Analysis lookahead buffer size |
PAPerceptualAQMode | Enum 0/1 | 0 (None, off) | PA Perceptual adaptive quantization mode. |
PATemporalAQMode | Enum 0-2 | 0 (None, off) | PA Temporal adaptive quantization mode. 1 for non-gaming applications, 2 gaming applications. |
PAHighMotionQualityBoostMode | Enum 0/1 | 0 (None, off) | PA High motion quality boost mode |
PACAQStrength | Enum (0-2) | 1 (medium) | 0=low, 1=med, 2=high. Content Adaptive Quantization (CAQ) strength |
References
AMF documentation
All the parameter names come directly from the AMD AMF library at https://github.com/GPUOpen-LibrariesAndSDKs/AMF/tree/master/amf. For example, to find how PATemporalAQMode
is defined, simply use the search box on top to look for PATemporalAQMode
in the code. That will bring you to a #define AMF_PA_TAQ_MODE
, so you go on and search for AMF_PA_TAQ_MODE
in the documentation.
AMF documentation corresponding to sections of this page:
- "General", "Rate Control", "B frame", "Psy", "Motion Estimation" are documented in codec-specific pages. See AMF_Video_Encode_API.md, AMF_Video_Encode_HEVC_API.md, AMF_Video_Encode_AV1_API.md
- "Pre-Analysis" is its own component, documented in AMF_Video_PreAnalysis_API.md. It is not dependent on the choice of codec.
The AMF documentation uses #define
names for parameters and values. Use the search box on top to convert them into the L"string"
names.
TODOs
- Evaluate the "HQ" usage mode, which sacrifices throughput for quality.