![]() |
MainConcept Hybrid HEVC/H.265 Encoder Plug-in 3.3.0
|
The following briefly describes how to use the MainConcept Hybrid HEVC Encoder plug-in for FFmpeg.
The command-line format should follow the structure below, depending on which operating system you are using.
The following is a sample command line:
ffmpeg -r 25 -pix_fmt yuv420p -s 1920x1080 -i 1920x1080p_25p_YV12.yuv -b:v 3500k -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "force_omx_param=1:preset=main: perf_level=10:acc_type=nvenc:acc_mode=hybrid:[HEVC Settings]:time_scale=20000000:num_units_in_tick=1000000:[HEVC Layer 0000]:bit_rate_mode=3:hrd_conformance=2" 1920x1080p_25p_YV12_ffmpeg.hevc -y
Here is a command-line example using a configuration file:
ffmpeg -r 25 -pix_fmt yuv420p -s 1920x1080 -i 1920x1080p_25p_YV12.yuv -b:v 3500k -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "force_omx_param=0:cfg_file_path=sample_enc_hevc.ini" 1920x1080p_25p_YV12_ffmpeg.hevc -y
/opt/mainconcept/ffmpeg-omx/bin/
. Ensure this folder is in your search path for the following examples.The following is a sample command line:
ffmpeg -r 25 -pix_fmt yuv420p -s 1920x1080 -i 1920x1080p_25p_YV12.yuv -b:v 3500k -c:v omx_enc_hevc -omx_core libomxil_core.so -omx_name OMX.MainConcept.enc_hevc.video -omx_param "force_omx_param=1:preset=main: perf_level=10:acc_type=nvenc:acc_mode=hybrid:[HEVC Settings]:time_scale=20000000:num_units_in_tick=1000000:[HEVC Layer 0000]:bit_rate_mode=3:hrd_conformance=2" 1920x1080p_25p_YV12_ffmpeg.hevc -y
Here is a command-line example using a configuration file:
ffmpeg -r 25 -pix_fmt yuv420p -s 1920x1080 -i 1920x1080p_25p_YV12.yuv -b:v 3500k -c:v omx_enc_hevc -omx_core libomxil_core.so -omx_name OMX.MainConcept.enc_hevc.video -omx_param "force_omx_param=0:cfg_file_path=sample_enc_hevc.ini" 1920x1080p_25p_YV12_ffmpeg.hevc -y
The following FFmpeg options are mapped from the command-line to the MainConcept HEVC/H.265 Video Encoder:
FFmpeg option | Usage example |
---|---|
bit_rate | -b:v 1M -b:a 192k |
pix_fmt | -pix_fmt yuv420p |
gop_size | -g 4 |
max_b_frames | -bf 2 |
interlace_mode | -flags +ildct |
framerate | -r 30 (or 30000/1001) |
width ; height | -s 720x480 |
All settings below are optional parameters for omx_param (mc-general-params/mc-codec-params):
Function | Description |
---|---|
force_omx_param | Specifies whether to prioritize the FFmpeg generic global options or the MainConcept codec specific settings:
|
perf_level | Specifies the predefined performance level 1 to 31 for encoding. Default is 15. Other predefined values permitted are:
|
acc_type | Specifies whether you want to use software (âswâ), Intel Quick Sync Video (âiqsvâ), NVIDIA NVENC (ânvencâ) or AMD AMF (âamfâ) for encoding. IQSV, NVENC and AMF are GPU encoding modes. |
acc_mode | Special encoding modes for NVIDIA RTX boards:
|
preset | Specifies the built-in encoder presets. Available options are "main", "main_10", "main_422_10", "4k", "4k_10", "hls_l1"..."hls_l12", "dash_l1"..."dash_l12". For more details, see Command line examples |
cfg_file_path | Specifies path to HEVC/H.265 encoder configuration file containing all parameters for encoding. -omx_param "cfg_file_path=sample_enc_hevc.ini" |
pass | 2-pass encoding is an option to achieve better visual quality but with strict target bitrate and HRD compliance. It cannot be used in live encoding. In the first encoding pass, called analysis, intermediate statistics are saved for further use in the second pass where the actual encoding will take place. 2-pass encoding can take up to twice as long as single-pass encoding. 1: Analysis pass. 2: Encoding pass that uses statistics saved in a temporary file during the analysis pass. For 2-pass encoding, you must run FFmpeg twice; the first pass covers the analyzing step and the second pass the actual encoding step. The following are command-line examples: ffmpeg -s 720x576 -pix_fmt yuv420p -i /home/Projects/ffmpeg_omx/test/streams/input.yuv -c:v omx_enc_hevc -omx_core /home/scum/Projects/omx_sdk_battoolbar/bin/libomxil_core.so -omx_name OMX.MainConcept.enc_hevc.video -b:v 500000 -profile main -omx_param "pass=1" mc_ffmpeg_2pass.h265 ffmpeg -s 720x576 -pix_fmt yuv420p -i /home/Projects/ffmpeg_omx/test/streams/input.yuv -c:v omx_enc_hevc -omx_core /home/scum/Projects/omx_sdk_battoolbar/bin/libomxil_core.so -omx_name OMX.MainConcept.enc_hevc.video -b:v 500000 -profile main -omx_param "pass=2" mc_ffmpeg_2pass.h26 |
passlogfile | Specifies the filename and path where you store the log file that includes the data and statistics from the first analyzing pass. This parameter is optional. If not specified, the file is created using default naming conventions in the current working directory. The following are command-line examples: ffmpeg -s 720x576 -pix_fmt yuv420p -i /home/Projects/ffmpeg_omx/test/streams/input.yuv -c:v omx_enc_hevc -omx_core /home/scum/Projects/omx_sdk_battoolbar/bin/libomxil_core.so -omx_name OMX.MainConcept.enc_hevc.video -b:v 500000 -profile main -omx_param "pass=1:passlogfile=mc_mpass_hevc" mc_ffmpeg_2pass.h265 ffmpeg -s 720x576 -pix_fmt yuv420p -i /home/Projects/ffmpeg_omx/test/streams/input.yuv -c:v omx_enc_hevc -omx_core /home/scum/Projects/omx_sdk_battoolbar/bin/libomxil_core.so -omx_name OMX.MainConcept.enc_hevc.video -b:v 500000 -profile main -omx_param "pass=2:passlogfile=mc_mpass_hevc" mc_ffmpeg_2pass.h265 |
[HEVC Settings] | Specifies parameters from the HEVC/H.265 encoder configuration on the command line, which can be applied under "[HEVC Settings]". Use : as a separator and = as a value set for the key. They must have the same structure and order as they would appear in an *.ini file, e.g. -omx_param "force_omx_param=1:preset=4k:acc_type=nvenc:acc_mode=hybrid:[HEVC Settings]:max_num_reencodings=0:input_filtering=2: ... :[HEVC Layer 0000]:bit_rate_mode=3:hrd_conformance=2: ... : ..."These arguments match the MainConcept HEVC/H.265 encoder settings (see \ ref [HEVC Settings] as a reference later or a HEVC encoder configuration file as an example). |
[HEVC Layer 0000] | Specifies parameters from the HEVC/H.265 Encoder configuration on the command line, which can be applied under layer 0 ("[HEVC Layer 0000]"). Use : as a separator and = as a value set for the key. They must have the same structure and order as they would appear in an *.ini file, e.g. -omx_param "force_omx_param=1:preset=4k:acc_type=nvenc:acc_mode=hybrid:[HEVC Settings]:max_num_reencodings=0:input_filtering=2: ... :[HEVC Layer 0000]:bit_rate_mode=3:hrd_conformance=2: ... : ..."These arguments match the MainConcept HEVC/H.265 encoder settings (see [HEVC Layer 0000] as a reference or an HEVC Encoder configuration file as an example). |
This plug-in offers an option to force the current frame to become an IDR frame with FFmpeg. This option is essential for adaptive bitrate streaming formats to create segments that only occur at key frames. This will provide smooth and proper playback of the segments.
You can use FFmpeg's generic force_key_frames
parameter to specify when a new IDR frame should be set. However, you also need to define some MainConcept Encoder parameters via -omx_param
. So if -force_key_frames 'expr:gte(t,n_forced*N)'
is present (N is the number of seconds) then you should disable fixed_intra_position
(by setting it to 0), which means irregular IRAP (Intra Random Access Pictures ) placement.
There are currently two typical use cases to set force_key_frames
in FFmpeg:
-omx_core omxil_core.dll
, you need to specify -omx_core libomxil_core.so
on Linux. -force_key_frames 'expr:gte(t,n_forced*N)'
where N is the number of seconds.ffmpeg -i source_1920x1080.m2ts-vf scale=416:234-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l1:acc_type=sw:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l1_416x234.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=480:270-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l2:acc_type=sw:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l2_480x270.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=640:360-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l3:acc_type=sw:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l3_640x360.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=768:432-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l4:acc_type=sw:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l4_768x432.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=960:540-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l5:acc_type=iqsv:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l5_960x540.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=1280:720-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l6:acc_type=sw:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l6_1280x720.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=1280:720-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l7:acc_type=nvenc:[HEVC Settings]:acc_mode=full:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l7_1280x720.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=1280:960-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l8:acc_type=sw:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l8_1280x960.mp4
ffmpeg -i source_1920x1080.m2ts-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l9:acc_type=nvenc:acc_mode=hybrid:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l9_1920x1080.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=2560:1440-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l10:acc_type=nvenc:acc_mode=driven:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l10_2560x1440.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=3840:2160-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l11:acc_type=sw:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l11_3840x2160.mp4
ffmpeg -i source_1920x1080.m2ts-vf scale=3840:2160-force_key_frames 'expr:gte(t,n_forced*N) -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=hls_l12:acc_type=iqsv:[HEVC Settings]:fixed_intra_position=0:vscd_mode= 0" output_hls_l12_3840x2160.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=768:432 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l1:acc_type=sw" output_dash_l1_768x432.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=768:432 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param -preset=dash_l2:acc_type=sw" output_dash_l2_768x432.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=1280:720 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l3:acc_type=sw" output_dash_l3_1280x720.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=1280:720 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l4:acc_type=sw" output_dash_l4_1280x720.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=1280:720 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l5:acc_type=iqsv" output_dash_l5_1280x720.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=1280:720 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l6:acc_type=nvenc:acc_mode=full" output_dash_l6_1280x720.mp4
ffmpeg -i source_1920x1080.m2ts -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l7:acc_type=sw" output_dash_l7_1920x1080.mp4
ffmpeg -i source_1920x1080.m2ts -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l8:acc_type=sw" output_dash_l8_1920x1080.mp4
ffmpeg -i source_1920x1080.m2ts -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l9:acc_type=sw" output_dash_l9_1920x1080.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=3840:2160 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l10:acc_type=nvenc:acc_mode=hybrid" output_dash_l10_3840x2160.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=3840:2160 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l11:acc_type=nvenc:acc_mode=driven" output_dash_l11_3840x2160.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=3840:2160 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=dash_l12:acc_type=iqsv" output_dash_l12_3840x2160.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=1280:720 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=main:acc_type=sw" output_main_1280x720.mp4
ffmpeg -i source_1920x1080.m2ts -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=main_10:acc_type:iqsv" output_main10_1920x1080.mp4
ffmpeg -i source_1920x1080.m2ts -vf scale=3840:2160 -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=4k:acc_type=nvenc:acc_mode=hybrid" output_4k_3840x2160.mp4
ffmpeg -i source_1920x1080.m2ts -c:v omx_enc_hevc -omx_core omxil_core.dll -omx_name OMX.MainConcept.enc_hevc.video -omx_param "preset=4k_10:acc_type=nvenc:acc_mode=full" output_4k10_1920x1080.mp4
The MainConcept HEVC/H.265 Encoder plug-in for FFmpeg comes with a sample configuration (*.ini) files that cover the following encoder settings and parameters. You can modify them manually in a normal text editor and pass them to FFmpeg via
There is a specific priority order when passing parameters to FFmpeg on the command-line. It is important to be aware of this as it can have a crucial impact on the expected encoder output:
omx_param:
This has the highest priority and overrides everything that was previously set via cfg_file
or via FFmpeg optionscfg_file:
This only overrides FFmpeg optionsMethod | Setting |
---|---|
file.ini (setting framerate to 24 fps) | [HEVC Settings] time_scale=27000000 num_units_in_tick=1125000 |
ffmpeg_cmdline (Windows) | ffmpeg -r 27 -pix_fmt yuv420p -s 1920x1080 -i file1920x1080.yuv \ -c:v omx_enc_hevc -omx_coreomxil_core.dll \ -omx_name OMX.MainConcept.enc_hevc.video \ -omx_param "force_omx_param=1:cfg_file_path file.ini:[HEVC Settings]:time_scale=20000000:num_units_in_tick=1000000" ffmpeg_res_filename.hevc |
ffmpeg_cmdline (Linux) | ffmpeg -r 27 -pix_fmt yuv420p -s 1920x1080 -i file1920x1080.yuv \ -c:v omx_enc_hevc -omx_core libomxil_core.so \ -omx_name OMX.MainConcept.enc_hevc.video \ -omx_param "force_omx_param=1:cfg_file_path file.ini:[HEVC Settings]:time_scale=20000000:num_units_in_tick=1000000" ffmpeg_res_filename.hevc |
HEVC settings are covered under the following:
chroma_format
bit_depth_chroma
bit_depth_chroma
and bit_depth_luma
must be set to the same value.bit_depth_luma
bit_depth_luma
and bit_depth_chroma
must be set to the same value.max_dec_pic_buffering
min_src_pic_buffering:
max_src_pic_buffering
time_scale
num_units_in_tick
(frame rate in fps = time_scale/num_units_in_tick). time_scale
is the number of time units that pass in one second. By default, time_scale
is set to 27000000 (27 MHz clock). These two values are used to calculate the exact frame rate of an encoded stream, where fps = time_scale/num_units_in_tick.persistent_parsets
temporal_sub_layers
input_filtering
filter_low_delay_mode
filter_accuracy
aq_mode
weighted_refs
min_intra_period
max_intra_period
hevc_v_settings::irap_period
. Value range is [1, 360]. Default value is 200.irap_period
irap_period_type
fixed_intra_position
hevc_v_settings::max_intra_period
. Only these pictures are taken into account for IRAP placement, I-frames inserted by SCD are just ignored. Finally, the encoder places IRAPs at the positions of hevc_v_settings::max_intra_period x hevc_v_settings::irap_period
hevc_v_settings::max_intra_period
x hevc_v_settings::irap_period
)force_key_frames
parameter, see Force key frame settings.vscd_mode
hevc_v_settings::min_intra_period
to hevc_v_settings::max_intra_period
. In addition, more frequent I-pictures reduce the distance between two consequent IRAP pictures. To avoid influence of SCD on IRAP placement use hevc_v_settings::fixed_intra_position
feature. force_key_frames
parameter, see Force key frame settings.max_num_ref_pics_p
max_num_b_pics
adaptive_num_b_pics
max_num_ref_pics_b_l0
max_num_ref_pics_b_l1
wide_ref_pics_b
max_num_ref_pics_b_l0
and max_num_ref_pics_b_l1
respectively.max_num_ref_pics_p
.by
max_num_ref_pics_p.scene_change_type
vscd_mode
.intra_period_type
max_intra_period
.num_threads
num_parallel_pics
min_encoding_fps
max_num_reencodings
hw_acceleration
hevc_v_settings::hw_acc_idx
to specify device if several devices match hw_acceleration
. Use hevc_v_settings::hw_acc_mode
to specify what is carried out on hardware.hw_acc_indices
hw_acc_indices
is used together with hevc_v_settings::hw_acceleration
and helps to pick a particular device from the list of compatible hardware.hw_acc_mode
hevc_v_settings::hw_acceleration
to choose what is delegated to hardware.input_colorimetry.signal_range
output_colorimetry.signal_range
input_colorimetry.color_primaries
input_colorimetry.transfer_characteristics
input_colorimetry.matrix_coefficients
output_colorimetry.color_primaries
output_colorimetry.transfer_characteristics
output_colorimetry.matrix_coefficients
HEVC Layer 0000 settings are covered under the following:
width
height
level
high_tier
wavefront_processing
slice_mode
slice_data
.slice_data
parameter specifies the number of slices per picture. The number of CTU rows per slice is calculated by dividing the total number of CTU rows in a picture by slice_data
(i.e. by number of slices).slice_data
parameter specifies the number of CTU rows per slice. The number of CTU rows per slice is explicitly set in slice_data
.slice_data
slice_mode
parameter specifies the units.min_cu_size_increase
min_cu_size
depending on pic_level
.log2_min_cu_size
log2_max_cu_size
log2_min_tu_size
log2_max_tu_size
max_tu_depth_inter
log2_max_cu_size
- log2_min_cu_size
].max_tu_depth_intra
log2_max_cu_size
- log2_min_cu_size
].intra_partitioning
chroma_mode_search
strong_intra_smoothing
intra_at_nonref_pics
motion_search_range
motion_search_precision
Value | P-pictures | Ref. B-pictures | Non-ref. B-pictures |
---|---|---|---|
0 | Up to 1 pix | Up to 1 pix | Up to 1 pix |
1 | Up to 1/2 pix | Up to 1 pix | Up to 1 pix |
2 | Up to 1/2 pix | Up to 1/2 pix | Up to 1 pix |
3 | Up to 1/4 pix | Up to 1/2 pix | Up to 1 pix |
4 | Up to 1/4 pix | Up to 1/2 pix | Up to 1/2 pix |
5 | Up to 1/4 pix | Up to 1/4 pix | Up to 1/2 pix |
6 | Up to 1/4 pix | Up to 1/4 pix | Up to 1/4 pix |
out_of_pic_mvs
max_num_merge_cand
inter_partitioning
temporal_mv_prediction
chroma_evaluation
motion_search_pattern
bi_pred_mode
motion_search_refine_cands
deblocking_filter
beta_offset
tc_offset
sao_filter_luma
sao_filter_chroma
adaptive_deblocking
sao_on_ref_b_pics
bit_rate_mode
Value | HRD on | HRD off |
---|---|---|
0 | Constant bitrate (CBR) | Variable bitrate (VBR) |
1 | N/A | Constant quantization (CQT) |
2 | Variable bitrate (VBR) | Average bitrate |
3 | Average quantization (AQP) | Average quantization (AQP) |
4 | Constant rate factor (CRF) | Constant rate factor (CRF) |
hrd_conformance
hevc_v_layer::max_qp
is reachedhevc_v_layer::max_qp
or hevc_v_settings::max_num_reencodings
is reachedbit_rate
hss_rate
bit_rate
.cpb_size
sign_data_hiding
transform_skip
cb_qp_offset
cr_qp_offset
rdo_quantization
qp_delta_depth
intra_skip_dist
fast_cu_split_decision
st_me_skip_decision
fast_inter_nnz_decision
pu_pred_pattern_mode
fast_type_decision
ssd_for_intra_cu
unref_pic_weak_rdo
fast_bit_counting
fast_intra_mode
intra_pattern_mode
precise_inter_mode_decision
precise_intra_mode_decision
sar_idc
Value | Meaning |
---|---|
0 | Unspecified |
1 | 1:1 |
2 | 12:11 |
3 | 10:11 |
4 | 16:11 |
5 | 40:33 |
6 | 24:11 |
7 | 20:11 |
8 | 32:11 |
9 | 80:33 |
10 | 18:11 |
11 | 15:11 |
12 | 64:33 |
13 | 160:99 |
14 | 4:3 |
15 | 3:2 |
16 | 2:1 |
255 | Extended |
300 | Auto |
sar_width
sar_idc
= 255 or 300. The value is used as a factor for width. The real aspect ratio is then given by: (sar_width * width) / (sar_height * height)
. The value range is [1, 4096].sar_height
sar_idc
= 255 or 300. The value is used as factor for height. The real aspect ratio is then given by: (sar_width * width) / (sar_height * height)
. The value range is [1, 4096].frame_field_info_present
pic_timing
SEI message with pic_struct
data.pic_timing
SEI messagepic_timing
SEI messagechroma_location_present
chroma_location_top_field
chroma_location_bottom_field
stream_type
au_delimiter
seq_end_code
single_sei_per_nalu
timing_info