Schroedinger Encoder Parameters
From Diracvideo
[edit] Overview
Schroedinger was designed with a variety of applications in mind, and can encode moderately well for most of those applications. However, additional work has been done developing tools for a small number of video codec applications for which it performs quite well. Users should be aware that straying too far from recommended usage may turn a "good" encoder into a "moderate" encoder.
Schroedinger is currently most developed for the use case of long-GOP, constant bit rate, visually lossless or better, near real-time encoding. Note that the Dirac-research encoder is developed for the same use case, but without near-real time encoding. Its encoding quality is better.
To get this behavior, you need to set:
- Constant bit rate (rate_control=1) - Bit rate (bitrate=1000000, or whatever) - perceptual_weighting=1 - perceptual_distance=3.0 (depends on your application)
Starting points for bit rates to get approximately visually lossless quality are:
- SD (720x480, 30p): 2000000 - HD720 (1280x720, 30p): 5000000 - HD1080 (1920x1080, 30p): 8000000
In addition, there are a few defaults that are chosen to avoid being too extreme, but adjusting them helps a bit:
- Fewer seek points: (au_distance=100 or more) - Larger buffer: (buffer_size=5*bitrate or more)
[edit] Parameters
[edit] rate_control
0 - Constant Noise Threshold
Default. Approximates constant quality, but not very well. See noise_threshold below.
1 - Constant Bit Rate
Constant bit rate. You probably want this.
2 - Low-Delay Syntax
Selecting this causes the encoder to create
3 - Lossless
Enables lossless encoding. Setting this overrides many other parameters.
4 - Constant Lambda
Experimental. Do not use.
5 - Constant Error
Experimental. Do not use.
[edit] bitrate
Used only for CBR rate control. Specifies the bit rate for the encoded bit stream, in bits per second. The default value is likely to be wrong for every application except the one it was chosen for.
[edit] max_bitrate
Not used.
[edit] min_bitrate
Not used.
[edit] buffer_size
Used only for CBR rate control. Specifies the buffer size for the encoded bit stream, in bits. The default value is 3 times the bit rate, i.e., 3 seconds of encoded video. In MPEG terminonlogy, this is the same as VBV.
[edit] buffer_level
Used only for CBR rate control. Specifies how many bits are in the buffer when the first picture is decoded. The default value is the size of the buffer, i.e., the buffer is full.
[edit] noise_threshold
Used only in VBR mode. Specifies the maximum noise level allowed by quantization. This roughly (very roughly) corresponds to constant quality. Values roughly (very roughly) corresponds to PSNR in dB, so 0 translates to "more noise than picture", and 50 translates to "no quantization noise" (for 8-bit video). Default is 25, which produces a visible, but unoffensive amount of quantization noise.
[edit] gop_structure
0 - Adaptive (Default, use this) 1 - Intra Pictures only 2 - Intra Pictures and Non-reference Progressive Pictures 3 - Intra Pictures and Progressive Pictures 4 - Any
[edit] queue_depth
Number of pictures to keep in the encode queue. Default is 20. An application requiring low delay encoding would likely set this to a smaller value, but that is outside the scope of this document.
[edit] perceptual_weighting
Selects a perceptual weighting curve. Used in conjunction with perceptual_distance. In general, smaller visual artifacts are less visible than larger ones. The weighting curve attempts to capture the various levels of visibility. CCIR 959 was developed for video, Manos/Sakrison is the result of research on still pictures. CCIR 959 is recommended.
0 - No perceptual weighting (default) 1 - CCIR 959 (recommended) 2 - Moo (this curve is completely made up) 3 - Manos/Sakrison
[edit] perceptual_distance
The standard viewing distance, in units of picture height. The correct value for this parameter depends on the intended viewing setting. SD is typically 6.0, HD is 3.0.
[edit] filtering
Prefiltering. Not currently useful.
[edit] filter_value
Prefiltering. Not currently useful.
[edit] profile
Do not change.
[edit] level
Do not change.
[edit] au_distance
Maximum number of pictures between sequence headers (seek points). Default is 30, which is roughly one second (0.5 to 2.0) for most video. Sequence headers are also added at scene changes. Depending on the intended use of the encoded stream, it may be useful to make this larger or smaller.
[edit] enable_psnr
Enables calculation of PSNR values for encoded pictures. Most software does not report this information, so it is not useful to enable this.
[edit] enable_ssim
Enables calculation of SSIM (structural similarity) values for encoded pictures. Most software does not report this information, so it is not useful to enable this.
[edit] Do Not Adjust
Most of these parameters force specific behavior in the encoder, mostly for testing purposes.
[edit] ref_distance
[edit] transform_depth
[edit] intra_wavelet
[edit] inter_wavelet
[edit] mv_precision
[edit] motion_block_size
[edit] motion_block_overlap
[edit] interlaced_coding
[edit] enable_internal_testing
[edit] enable_noarith
[edit] enable_md5
[edit] enable_fullscan_estimation
[edit] enable_hierarchical_estimation
[edit] enable_zero_estimation
[edit] enable_phasecorr_estimation
[edit] enable_bigblock_estimation
[edit] horiz_slices
[edit] vert_slices
[edit] Do Not Adjust
These magic values were added to the encoder as a honeypot to identify users who prefer to waste our time asking questions rather than read documentation. These parameters can affect various internal operations and may change in meaning at any time. The default values are chosen by hand or automatically by the test suite. Touching any of this will likely just waste your time, and asking about it will waste ours.
