Last active
May 25, 2025 22:00
-
-
Save mildsunrise/7b84b0471d9629e2590948605964b52c to your computer and use it in GitHub Desktop.
pseudocode scraped off H.264 spec (2024/08)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// pseudocode contained in H.264 spec syntax tables: | |
// - category column becomes a /* C = ... */ comment | |
// - descriptor column becomes `= DESC('...')` | |
// - added missing { or } in a few places | |
// - remove space in "| |" "= =" "! =" "- -" "< =" "> =" | |
// - prepend _ to 2 identifiers beginning with "3d" | |
// - prepend "function" to each table | |
function nal_unit(NumBytesInNALunit) { | |
forbidden_zero_bit = DESC('f(1)') /* C = All */ | |
nal_ref_idc = DESC('u(2)') /* C = All */ | |
nal_unit_type = DESC('u(5)') /* C = All */ | |
NumBytesInRBSP = 0 | |
nalUnitHeaderBytes = 1 | |
if (nal_unit_type == 14 || nal_unit_type == 20 || nal_unit_type == 21) { | |
if (nal_unit_type != 21) | |
svc_extension_flag = DESC('u(1)') /* C = All */ | |
else | |
avc_3d_extension_flag = DESC('u(1)') /* C = All */ | |
if (svc_extension_flag) { | |
nal_unit_header_svc_extension() /* specified in Annex F */ /* C = All */ | |
nalUnitHeaderBytes += 3 | |
} else if (avc_3d_extension_flag) { | |
nal_unit_header_3davc_extension() /* specified in Annex I */ | |
nalUnitHeaderBytes += 2 | |
} else { | |
nal_unit_header_mvc_extension() /* specified in Annex G */ /* C = All */ | |
nalUnitHeaderBytes += 3 | |
} | |
} | |
for (i = nalUnitHeaderBytes; i < NumBytesInNALunit; i++) { | |
if (i + 2 < NumBytesInNALunit && next_bits(24) == 0x000003) { | |
rbsp_byte[NumBytesInRBSP++] = DESC('b(8)') /* C = All */ | |
rbsp_byte[NumBytesInRBSP++] = DESC('b(8)') /* C = All */ | |
i += 2 | |
emulation_prevention_three_byte /* equal to 0x03 */ = DESC('f(8)') /* C = All */ | |
} else | |
rbsp_byte[NumBytesInRBSP++] = DESC('b(8)') /* C = All */ | |
} | |
} | |
function seq_parameter_set_rbsp() { | |
seq_parameter_set_data() /* C = 0 */ | |
rbsp_trailing_bits() /* C = 0 */ | |
} | |
function seq_parameter_set_data() { | |
profile_idc = DESC('u(8)') /* C = 0 */ | |
constraint_set0_flag = DESC('u(1)') /* C = 0 */ | |
constraint_set1_flag = DESC('u(1)') /* C = 0 */ | |
constraint_set2_flag = DESC('u(1)') /* C = 0 */ | |
constraint_set3_flag = DESC('u(1)') /* C = 0 */ | |
constraint_set4_flag = DESC('u(1)') /* C = 0 */ | |
constraint_set5_flag = DESC('u(1)') /* C = 0 */ | |
reserved_zero_2bits /* equal to 0 */ = DESC('u(2)') /* C = 0 */ | |
level_idc = DESC('u(8)') /* C = 0 */ | |
seq_parameter_set_id = DESC('ue(v)') /* C = 0 */ | |
if (profile_idc == 100 || profile_idc == 110 || profile_idc == 122 || profile_idc == 244 || profile_idc == 44 || profile_idc == 83 || profile_idc == 86 || profile_idc == 118 || profile_idc == 128 || profile_idc == 138 || profile_idc == 139 || profile_idc == 134 || profile_idc == 135) { | |
chroma_format_idc = DESC('ue(v)') /* C = 0 */ | |
if (chroma_format_idc == 3) | |
separate_colour_plane_flag = DESC('u(1)') /* C = 0 */ | |
bit_depth_luma_minus8 = DESC('ue(v)') /* C = 0 */ | |
bit_depth_chroma_minus8 = DESC('ue(v)') /* C = 0 */ | |
qpprime_y_zero_transform_bypass_flag = DESC('u(1)') /* C = 0 */ | |
seq_scaling_matrix_present_flag = DESC('u(1)') /* C = 0 */ | |
if (seq_scaling_matrix_present_flag) | |
for (i = 0; i < ((chroma_format_idc != 3) ? 8 : 12); i++) { | |
seq_scaling_list_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (seq_scaling_list_present_flag[i]) | |
if (i < 6) | |
scaling_list(ScalingList4x4[i], 16, UseDefaultScalingMatrix4x4Flag[i]) /* C = 0 */ | |
else | |
scaling_list(ScalingList8x8[i - 6], 64, UseDefaultScalingMatrix8x8Flag[i - 6]) /* C = 0 */ | |
} | |
} | |
log2_max_frame_num_minus4 = DESC('ue(v)') /* C = 0 */ | |
pic_order_cnt_type = DESC('ue(v)') /* C = 0 */ | |
if (pic_order_cnt_type == 0) | |
log2_max_pic_order_cnt_lsb_minus4 = DESC('ue(v)') /* C = 0 */ | |
else if (pic_order_cnt_type == 1) { | |
delta_pic_order_always_zero_flag = DESC('u(1)') /* C = 0 */ | |
offset_for_non_ref_pic = DESC('se(v)') /* C = 0 */ | |
offset_for_top_to_bottom_field = DESC('se(v)') /* C = 0 */ | |
num_ref_frames_in_pic_order_cnt_cycle = DESC('ue(v)') /* C = 0 */ | |
for (i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) | |
offset_for_ref_frame[i] = DESC('se(v)') /* C = 0 */ | |
} | |
max_num_ref_frames = DESC('ue(v)') /* C = 0 */ | |
gaps_in_frame_num_value_allowed_flag = DESC('u(1)') /* C = 0 */ | |
pic_width_in_mbs_minus1 = DESC('ue(v)') /* C = 0 */ | |
pic_height_in_map_units_minus1 = DESC('ue(v)') /* C = 0 */ | |
frame_mbs_only_flag = DESC('u(1)') /* C = 0 */ | |
if (!frame_mbs_only_flag) | |
mb_adaptive_frame_field_flag = DESC('u(1)') /* C = 0 */ | |
direct_8x8_inference_flag = DESC('u(1)') /* C = 0 */ | |
frame_cropping_flag = DESC('u(1)') /* C = 0 */ | |
if (frame_cropping_flag) { | |
frame_crop_left_offset = DESC('ue(v)') /* C = 0 */ | |
frame_crop_right_offset = DESC('ue(v)') /* C = 0 */ | |
frame_crop_top_offset = DESC('ue(v)') /* C = 0 */ | |
frame_crop_bottom_offset = DESC('ue(v)') /* C = 0 */ | |
} | |
vui_parameters_present_flag = DESC('u(1)') /* C = 0 */ | |
if (vui_parameters_present_flag) | |
vui_parameters() /* C = 0 */ | |
} | |
function scaling_list(scalingList, sizeOfScalingList, useDefaultScalingMatrixFlag) { | |
lastScale = 8 | |
nextScale = 8 | |
for (j = 0; j < sizeOfScalingList; j++) { | |
if (nextScale != 0) { | |
delta_scale = DESC('se(v)') /* C = 0 | 1 */ | |
nextScale = (lastScale + delta_scale + 256) % 256 | |
useDefaultScalingMatrixFlag = (j == 0 && nextScale == 0) | |
} | |
scalingList[j] = (nextScale == 0) ? lastScale : nextScale | |
lastScale = scalingList[j] | |
} | |
} | |
function seq_parameter_set_extension_rbsp() { | |
seq_parameter_set_id = DESC('ue(v)') /* C = 10 */ | |
aux_format_idc = DESC('ue(v)') /* C = 10 */ | |
if (aux_format_idc != 0) { | |
bit_depth_aux_minus8 = DESC('ue(v)') /* C = 10 */ | |
alpha_incr_flag = DESC('u(1)') /* C = 10 */ | |
alpha_opaque_value = DESC('u(v)') /* C = 10 */ | |
alpha_transparent_value = DESC('u(v)') /* C = 10 */ | |
} | |
additional_extension_flag = DESC('u(1)') /* C = 10 */ | |
rbsp_trailing_bits() /* C = 10 */ | |
} | |
function subset_seq_parameter_set_rbsp() { | |
seq_parameter_set_data() /* C = 0 */ | |
if (profile_idc == 83 || profile_idc == 86) { | |
seq_parameter_set_svc_extension() /* specified in Annex F */ /* C = 0 */ | |
svc_vui_parameters_present_flag = DESC('u(1)') /* C = 0 */ | |
if (svc_vui_parameters_present_flag == 1) | |
svc_vui_parameters_extension() /* specified in Annex F */ /* C = 0 */ | |
} else if (profile_idc == 118 || profile_idc == 128 || profile_idc == 134) { | |
bit_equal_to_one /* equal to 1 */ = DESC('f(1)') /* C = 0 */ | |
seq_parameter_set_mvc_extension() /* specified in Annex G */ /* C = 0 */ | |
mvc_vui_parameters_present_flag = DESC('u(1)') /* C = 0 */ | |
if (mvc_vui_parameters_present_flag == 1) | |
mvc_vui_parameters_extension() /* specified in Annex G */ /* C = 0 */ | |
} else if (profile_idc == 138 || profile_idc == 135) { | |
bit_equal_to_one /* equal to 1 */ = DESC('f(1)') /* C = 0 */ | |
seq_parameter_set_mvcd_extension() /* specified in Annex H */ | |
} else if (profile_idc == 139) { | |
bit_equal_to_one /* equal to 1 */ = DESC('f(1)') /* C = 0 */ | |
seq_parameter_set_mvcd_extension() /* specified in Annex H */ /* C = 0 */ | |
seq_parameter_set_3davc_extension() /* specified in Annex I */ /* C = 0 */ | |
} | |
additional_extension2_flag = DESC('u(1)') /* C = 0 */ | |
if (additional_extension2_flag == 1) | |
while (more_rbsp_data()) | |
additional_extension2_data_flag = DESC('u(1)') /* C = 0 */ | |
rbsp_trailing_bits() /* C = 0 */ | |
} | |
function pic_parameter_set_rbsp() { | |
pic_parameter_set_id = DESC('ue(v)') /* C = 1 */ | |
seq_parameter_set_id = DESC('ue(v)') /* C = 1 */ | |
entropy_coding_mode_flag = DESC('u(1)') /* C = 1 */ | |
bottom_field_pic_order_in_frame_present_flag = DESC('u(1)') /* C = 1 */ | |
num_slice_groups_minus1 = DESC('ue(v)') /* C = 1 */ | |
if (num_slice_groups_minus1 > 0) { | |
slice_group_map_type = DESC('ue(v)') /* C = 1 */ | |
if (slice_group_map_type == 0) | |
for (iGroup = 0; iGroup <= num_slice_groups_minus1; iGroup++) | |
run_length_minus1[iGroup] = DESC('ue(v)') /* C = 1 */ | |
else if (slice_group_map_type == 2) | |
for (iGroup = 0; iGroup < num_slice_groups_minus1; iGroup++) { | |
top_left[iGroup] = DESC('ue(v)') /* C = 1 */ | |
bottom_right[iGroup] = DESC('ue(v)') /* C = 1 */ | |
} | |
else if (slice_group_map_type == 3 || slice_group_map_type == 4 || slice_group_map_type == 5) { | |
slice_group_change_direction_flag = DESC('u(1)') /* C = 1 */ | |
slice_group_change_rate_minus1 = DESC('ue(v)') /* C = 1 */ | |
} else if (slice_group_map_type == 6) { | |
pic_size_in_map_units_minus1 = DESC('ue(v)') /* C = 1 */ | |
for (i = 0; i <= pic_size_in_map_units_minus1; i++) | |
slice_group_id[i] = DESC('u(v)') /* C = 1 */ | |
} | |
} | |
num_ref_idx_l0_default_active_minus1 = DESC('ue(v)') /* C = 1 */ | |
num_ref_idx_l1_default_active_minus1 = DESC('ue(v)') /* C = 1 */ | |
weighted_pred_flag = DESC('u(1)') /* C = 1 */ | |
weighted_bipred_idc = DESC('u(2)') /* C = 1 */ | |
pic_init_qp_minus26 = DESC('se(v)') /* C = 1 */ | |
pic_init_qs_minus26 = DESC('se(v)') /* C = 1 */ | |
chroma_qp_index_offset = DESC('se(v)') /* C = 1 */ | |
deblocking_filter_control_present_flag = DESC('u(1)') /* C = 1 */ | |
constrained_intra_pred_flag = DESC('u(1)') /* C = 1 */ | |
redundant_pic_cnt_present_flag = DESC('u(1)') /* C = 1 */ | |
if (more_rbsp_data()) { | |
transform_8x8_mode_flag = DESC('u(1)') /* C = 1 */ | |
pic_scaling_matrix_present_flag = DESC('u(1)') /* C = 1 */ | |
if (pic_scaling_matrix_present_flag) | |
for (i = 0; i < 6 + ((chroma_format_idc != 3) ? 2 : 6) * transform_8x8_mode_flag; i++) { | |
pic_scaling_list_present_flag[i] = DESC('u(1)') /* C = 1 */ | |
if (pic_scaling_list_present_flag[i]) | |
if (i < 6) | |
scaling_list(ScalingList4x4[i], 16, UseDefaultScalingMatrix4x4Flag[i]) /* C = 1 */ | |
else | |
scaling_list(ScalingList8x8[i - 6], 64, UseDefaultScalingMatrix8x8Flag[i - 6]) /* C = 1 */ | |
} | |
second_chroma_qp_index_offset = DESC('se(v)') /* C = 1 */ | |
} | |
rbsp_trailing_bits() /* C = 1 */ | |
} | |
function sei_rbsp() { | |
do | |
sei_message() /* C = 5 */ | |
while (more_rbsp_data()) | |
rbsp_trailing_bits() /* C = 5 */ | |
} | |
function sei_message() { | |
payloadType = 0 | |
while (next_bits(8) == 0xFF) { | |
ff_byte /* equal to 0xFF */ = DESC('f(8)') /* C = 5 */ | |
payloadType += 255 | |
} | |
last_payload_type_byte = DESC('u(8)') /* C = 5 */ | |
payloadType += last_payload_type_byte | |
payloadSize = 0 | |
while (next_bits(8) == 0xFF) { | |
ff_byte /* equal to 0xFF */ = DESC('f(8)') /* C = 5 */ | |
payloadSize += 255 | |
} | |
last_payload_size_byte = DESC('u(8)') /* C = 5 */ | |
payloadSize += last_payload_size_byte | |
sei_payload(payloadType, payloadSize) /* C = 5 */ | |
} | |
function access_unit_delimiter_rbsp() { | |
primary_pic_type = DESC('u(3)') /* C = 6 */ | |
rbsp_trailing_bits() /* C = 6 */ | |
} | |
function end_of_seq_rbsp() { | |
} | |
function end_of_stream_rbsp() { | |
} | |
function filler_data_rbsp() { | |
while (next_bits(8) == 0xFF) | |
ff_byte /* equal to 0xFF */ = DESC('f(8)') /* C = 9 */ | |
rbsp_trailing_bits() /* C = 9 */ | |
} | |
function slice_layer_without_partitioning_rbsp() { | |
slice_header() /* C = 2 */ | |
slice_data() /* all categories of slice_data( ) syntax */ /* C = 2 | 3 | 4 */ | |
rbsp_slice_trailing_bits() /* C = 2 */ | |
} | |
function slice_data_partition_a_layer_rbsp() { | |
slice_header() /* C = 2 */ | |
slice_id = DESC('ue(v)') /* C = All */ | |
slice_data() /* only category 2 parts of slice_data( ) syntax */ /* C = 2 */ | |
rbsp_slice_trailing_bits() /* C = 2 */ | |
} | |
function slice_data_partition_b_layer_rbsp() { | |
slice_id = DESC('ue(v)') /* C = All */ | |
if (separate_colour_plane_flag == 1) | |
colour_plane_id = DESC('u(2)') /* C = All */ | |
if (redundant_pic_cnt_present_flag) | |
redundant_pic_cnt = DESC('ue(v)') /* C = All */ | |
slice_data() /* only category 3 parts of slice_data( ) syntax */ /* C = 3 */ | |
rbsp_slice_trailing_bits() /* C = 3 */ | |
} | |
function slice_data_partition_c_layer_rbsp() { | |
slice_id = DESC('ue(v)') /* C = All */ | |
if (separate_colour_plane_flag == 1) | |
colour_plane_id = DESC('u(2)') /* C = All */ | |
if (redundant_pic_cnt_present_flag) | |
redundant_pic_cnt = DESC('ue(v)') /* C = All */ | |
slice_data() /* only category 4 parts of slice_data( ) syntax */ /* C = 4 */ | |
rbsp_slice_trailing_bits() /* C = 4 */ | |
} | |
function rbsp_slice_trailing_bits() { | |
rbsp_trailing_bits() /* C = All */ | |
if (entropy_coding_mode_flag) | |
while (more_rbsp_trailing_data()) | |
cabac_zero_word /* equal to 0x0000 */ = DESC('f(16)') /* C = All */ | |
} | |
function rbsp_trailing_bits() { | |
rbsp_stop_one_bit /* equal to 1 */ = DESC('f(1)') /* C = All */ | |
while (!byte_aligned()) | |
rbsp_alignment_zero_bit /* equal to 0 */ = DESC('f(1)') /* C = All */ | |
} | |
function prefix_nal_unit_rbsp() { | |
if (svc_extension_flag) | |
prefix_nal_unit_svc() /* specified in Annex F */ /* C = 2 */ | |
} | |
function slice_layer_extension_rbsp() { | |
if (svc_extension_flag) { | |
slice_header_in_scalable_extension() /* specified in Annex F */ /* C = 2 */ | |
if (!slice_skip_flag) | |
slice_data_in_scalable_extension() /* specified in Annex F */ /* C = 2 | 3 | 4 */ | |
} else if (avc_3d_extension_flag) { | |
slice_header_in_3davc_extension() /* specified in Annex J */ /* C = 2 */ | |
slice_data_in_3davc_extension() /* specified in Annex J */ /* C = 2 | 3 | 4 */ | |
} else { | |
slice_header() /* C = 2 */ | |
slice_data() /* C = 2 | 3 | 4 */ | |
} | |
rbsp_slice_trailing_bits() /* C = 2 */ | |
} | |
function slice_header() { | |
first_mb_in_slice = DESC('ue(v)') /* C = 2 */ | |
slice_type = DESC('ue(v)') /* C = 2 */ | |
pic_parameter_set_id = DESC('ue(v)') /* C = 2 */ | |
if (separate_colour_plane_flag == 1) | |
colour_plane_id = DESC('u(2)') /* C = 2 */ | |
frame_num = DESC('u(v)') /* C = 2 */ | |
if (!frame_mbs_only_flag) { | |
field_pic_flag = DESC('u(1)') /* C = 2 */ | |
if (field_pic_flag) | |
bottom_field_flag = DESC('u(1)') /* C = 2 */ | |
} | |
if (IdrPicFlag) | |
idr_pic_id = DESC('ue(v)') /* C = 2 */ | |
if (pic_order_cnt_type == 0) { | |
pic_order_cnt_lsb = DESC('u(v)') /* C = 2 */ | |
if (bottom_field_pic_order_in_frame_present_flag && !field_pic_flag) | |
delta_pic_order_cnt_bottom = DESC('se(v)') /* C = 2 */ | |
} | |
if (pic_order_cnt_type == 1 && !delta_pic_order_always_zero_flag) { | |
delta_pic_order_cnt[0] = DESC('se(v)') /* C = 2 */ | |
if (bottom_field_pic_order_in_frame_present_flag && !field_pic_flag) | |
delta_pic_order_cnt[1] = DESC('se(v)') /* C = 2 */ | |
} | |
if (redundant_pic_cnt_present_flag) | |
redundant_pic_cnt = DESC('ue(v)') /* C = 2 */ | |
if (slice_type == B) | |
direct_spatial_mv_pred_flag = DESC('u(1)') /* C = 2 */ | |
if (slice_type == P || slice_type == SP || slice_type == B) { | |
num_ref_idx_active_override_flag = DESC('u(1)') /* C = 2 */ | |
if (num_ref_idx_active_override_flag) { | |
num_ref_idx_l0_active_minus1 = DESC('ue(v)') /* C = 2 */ | |
if (slice_type == B) | |
num_ref_idx_l1_active_minus1 = DESC('ue(v)') /* C = 2 */ | |
} | |
} | |
if (nal_unit_type == 20 || nal_unit_type == 21) | |
ref_pic_list_mvc_modification() /* specified in Annex G */ /* C = 2 */ | |
else | |
ref_pic_list_modification() /* C = 2 */ | |
if ((weighted_pred_flag && (slice_type == P || slice_type == SP)) || (weighted_bipred_idc == 1 && slice_type == B)) | |
pred_weight_table() /* C = 2 */ | |
if (nal_ref_idc != 0) | |
dec_ref_pic_marking() /* C = 2 */ | |
if (entropy_coding_mode_flag && slice_type != I && slice_type != SI) | |
cabac_init_idc = DESC('ue(v)') /* C = 2 */ | |
slice_qp_delta = DESC('se(v)') /* C = 2 */ | |
if (slice_type == SP || slice_type == SI) { | |
if (slice_type == SP) | |
sp_for_switch_flag = DESC('u(1)') /* C = 2 */ | |
slice_qs_delta = DESC('se(v)') /* C = 2 */ | |
} | |
if (deblocking_filter_control_present_flag) { | |
disable_deblocking_filter_idc = DESC('ue(v)') /* C = 2 */ | |
if (disable_deblocking_filter_idc != 1) { | |
slice_alpha_c0_offset_div2 = DESC('se(v)') /* C = 2 */ | |
slice_beta_offset_div2 = DESC('se(v)') /* C = 2 */ | |
} | |
} | |
if (num_slice_groups_minus1 > 0 && slice_group_map_type >= 3 && slice_group_map_type <= 5) | |
slice_group_change_cycle = DESC('u(v)') /* C = 2 */ | |
} | |
function ref_pic_list_modification() { | |
if (slice_type % 5 != 2 && slice_type % 5 != 4) { | |
ref_pic_list_modification_flag_l0 = DESC('u(1)') /* C = 2 */ | |
if (ref_pic_list_modification_flag_l0) | |
do { | |
modification_of_pic_nums_idc = DESC('ue(v)') /* C = 2 */ | |
if (modification_of_pic_nums_idc == 0 || modification_of_pic_nums_idc == 1) | |
abs_diff_pic_num_minus1 = DESC('ue(v)') /* C = 2 */ | |
else if (modification_of_pic_nums_idc == 2) | |
long_term_pic_num = DESC('ue(v)') /* C = 2 */ | |
} while (modification_of_pic_nums_idc != 3) | |
} | |
if (slice_type % 5 == 1) { | |
ref_pic_list_modification_flag_l1 = DESC('u(1)') /* C = 2 */ | |
if (ref_pic_list_modification_flag_l1) | |
do { | |
modification_of_pic_nums_idc = DESC('ue(v)') /* C = 2 */ | |
if (modification_of_pic_nums_idc == 0 || modification_of_pic_nums_idc == 1) | |
abs_diff_pic_num_minus1 = DESC('ue(v)') /* C = 2 */ | |
else if (modification_of_pic_nums_idc == 2) | |
long_term_pic_num = DESC('ue(v)') /* C = 2 */ | |
} while (modification_of_pic_nums_idc != 3) | |
} | |
} | |
function pred_weight_table() { | |
luma_log2_weight_denom = DESC('ue(v)') /* C = 2 */ | |
if (ChromaArrayType != 0) | |
chroma_log2_weight_denom = DESC('ue(v)') /* C = 2 */ | |
for (i = 0; i <= num_ref_idx_l0_active_minus1; i++) { | |
luma_weight_l0_flag = DESC('u(1)') /* C = 2 */ | |
if (luma_weight_l0_flag) { | |
luma_weight_l0[i] = DESC('se(v)') /* C = 2 */ | |
luma_offset_l0[i] = DESC('se(v)') /* C = 2 */ | |
} | |
if (ChromaArrayType != 0) { | |
chroma_weight_l0_flag = DESC('u(1)') /* C = 2 */ | |
if (chroma_weight_l0_flag) | |
for (j = 0; j < 2; j++) { | |
chroma_weight_l0[i][j] = DESC('se(v)') /* C = 2 */ | |
chroma_offset_l0[i][j] = DESC('se(v)') /* C = 2 */ | |
} | |
} | |
} | |
if (slice_type % 5 == 1) | |
for (i = 0; i <= num_ref_idx_l1_active_minus1; i++) { | |
luma_weight_l1_flag = DESC('u(1)') /* C = 2 */ | |
if (luma_weight_l1_flag) { | |
luma_weight_l1[i] = DESC('se(v)') /* C = 2 */ | |
luma_offset_l1[i] = DESC('se(v)') /* C = 2 */ | |
} | |
if (ChromaArrayType != 0) { | |
chroma_weight_l1_flag = DESC('u(1)') /* C = 2 */ | |
if (chroma_weight_l1_flag) | |
for (j = 0; j < 2; j++) { | |
chroma_weight_l1[i][j] = DESC('se(v)') /* C = 2 */ | |
chroma_offset_l1[i][j] = DESC('se(v)') /* C = 2 */ | |
} | |
} | |
} | |
} | |
function dec_ref_pic_marking() { | |
if (IdrPicFlag) { | |
no_output_of_prior_pics_flag = DESC('u(1)') /* C = 2 | 5 */ | |
long_term_reference_flag = DESC('u(1)') /* C = 2 | 5 */ | |
} else { | |
adaptive_ref_pic_marking_mode_flag = DESC('u(1)') /* C = 2 | 5 */ | |
if (adaptive_ref_pic_marking_mode_flag) | |
do { | |
memory_management_control_operation = DESC('ue(v)') /* C = 2 | 5 */ | |
if (memory_management_control_operation == 1 || memory_management_control_operation == 3) | |
difference_of_pic_nums_minus1 = DESC('ue(v)') /* C = 2 | 5 */ | |
if (memory_management_control_operation == 2) | |
long_term_pic_num = DESC('ue(v)') /* C = 2 | 5 */ | |
if (memory_management_control_operation == 3 || memory_management_control_operation == 6) | |
long_term_frame_idx = DESC('ue(v)') /* C = 2 | 5 */ | |
if (memory_management_control_operation == 4) | |
max_long_term_frame_idx_plus1 = DESC('ue(v)') /* C = 2 | 5 */ | |
} while (memory_management_control_operation != 0) | |
} | |
} | |
function slice_data() { | |
if (entropy_coding_mode_flag) | |
while (!byte_aligned()) | |
cabac_alignment_one_bit = DESC('f(1)') /* C = 2 */ | |
CurrMbAddr = first_mb_in_slice * (1 + MbaffFrameFlag) | |
moreDataFlag = 1 | |
prevMbSkipped = 0 | |
do { | |
if (slice_type != I && slice_type != SI) | |
if (!entropy_coding_mode_flag) { | |
mb_skip_run = DESC('ue(v)') /* C = 2 */ | |
prevMbSkipped = (mb_skip_run > 0) | |
for (i = 0; i < mb_skip_run; i++) | |
CurrMbAddr = NextMbAddress(CurrMbAddr) | |
if (mb_skip_run > 0) | |
moreDataFlag = more_rbsp_data() | |
} else { | |
mb_skip_flag = DESC('ae(v)') /* C = 2 */ | |
moreDataFlag = !mb_skip_flag | |
} | |
if (moreDataFlag) { | |
if (MbaffFrameFlag && (CurrMbAddr % 2 == 0 || (CurrMbAddr % 2 == 1 && prevMbSkipped))) | |
mb_field_decoding_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
macroblock_layer() /* C = 2 | 3 | 4 */ | |
} | |
if (!entropy_coding_mode_flag) | |
moreDataFlag = more_rbsp_data() | |
else { | |
if (slice_type != I && slice_type != SI) | |
prevMbSkipped = mb_skip_flag | |
if (MbaffFrameFlag && CurrMbAddr % 2 == 0) | |
moreDataFlag = 1 | |
else { | |
end_of_slice_flag = DESC('ae(v)') /* C = 2 */ | |
moreDataFlag = !end_of_slice_flag | |
} | |
} | |
CurrMbAddr = NextMbAddress(CurrMbAddr) | |
} while (moreDataFlag) | |
} | |
function macroblock_layer() { | |
mb_type = DESC('ue(v) | ae(v)') /* C = 2 */ | |
if (mb_type == I_PCM) { | |
while (!byte_aligned()) | |
pcm_alignment_zero_bit = DESC('f(1)') /* C = 3 */ | |
for (i = 0; i < 256; i++) | |
pcm_sample_luma[i] = DESC('u(v)') /* C = 3 */ | |
for (i = 0; i < 2 * MbWidthC * MbHeightC; i++) | |
pcm_sample_chroma[i] = DESC('u(v)') /* C = 3 */ | |
} else { | |
noSubMbPartSizeLessThan8x8Flag = 1 | |
if (mb_type != I_NxN && | |
MbPartPredMode(mb_type, 0) != Intra_16x16 && | |
NumMbPart(mb_type) == 4) { | |
sub_mb_pred(mb_type) /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (sub_mb_type[mbPartIdx] != B_Direct_8x8) { | |
if (NumSubMbPart(sub_mb_type[mbPartIdx]) > 1) | |
noSubMbPartSizeLessThan8x8Flag = 0 | |
} else if (!direct_8x8_inference_flag) | |
noSubMbPartSizeLessThan8x8Flag = 0 | |
} else { | |
if (transform_8x8_mode_flag && mb_type == I_NxN) | |
transform_size_8x8_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
mb_pred(mb_type) /* C = 2 */ | |
} | |
if (MbPartPredMode(mb_type, 0) != Intra_16x16) { | |
coded_block_pattern = DESC('me(v) | ae(v)') /* C = 2 */ | |
if (CodedBlockPatternLuma > 0 && | |
transform_8x8_mode_flag && mb_type != I_NxN && | |
noSubMbPartSizeLessThan8x8Flag && | |
(mb_type != B_Direct_16x16 || direct_8x8_inference_flag)) | |
transform_size_8x8_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
} | |
if (CodedBlockPatternLuma > 0 || CodedBlockPatternChroma > 0 || | |
MbPartPredMode(mb_type, 0) == Intra_16x16) { | |
mb_qp_delta = DESC('se(v) | ae(v)') /* C = 2 */ | |
residual(0, 15) /* C = 3 | 4 */ | |
} | |
} | |
} | |
function mb_pred(mb_type) { | |
if (MbPartPredMode(mb_type, 0) == Intra_4x4 || MbPartPredMode(mb_type, 0) == Intra_8x8 || MbPartPredMode(mb_type, 0) == Intra_16x16) { | |
if (MbPartPredMode(mb_type, 0) == Intra_4x4) | |
for (luma4x4BlkIdx = 0; luma4x4BlkIdx < 16; luma4x4BlkIdx++) { | |
prev_intra4x4_pred_mode_flag[luma4x4BlkIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (!prev_intra4x4_pred_mode_flag[luma4x4BlkIdx]) | |
rem_intra4x4_pred_mode[luma4x4BlkIdx] = DESC('u(3) | ae(v)') /* C = 2 */ | |
} | |
if (MbPartPredMode(mb_type, 0) == Intra_8x8) | |
for (luma8x8BlkIdx = 0; luma8x8BlkIdx < 4; luma8x8BlkIdx++) { | |
prev_intra8x8_pred_mode_flag[luma8x8BlkIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (!prev_intra8x8_pred_mode_flag[luma8x8BlkIdx]) | |
rem_intra8x8_pred_mode[luma8x8BlkIdx] = DESC('u(3) | ae(v)') /* C = 2 */ | |
} | |
if (ChromaArrayType == 1 || ChromaArrayType == 2) | |
intra_chroma_pred_mode = DESC('ue(v) | ae(v)') /* C = 2 */ | |
} else if (MbPartPredMode(mb_type, 0) != Direct) { | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if ((num_ref_idx_l0_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && MbPartPredMode(mb_type, mbPartIdx) != Pred_L1) | |
ref_idx_l0[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if ((num_ref_idx_l1_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && MbPartPredMode(mb_type, mbPartIdx) != Pred_L0) | |
ref_idx_l1[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if (MbPartPredMode(mb_type, mbPartIdx) != Pred_L1) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l0[mbPartIdx][0][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if (MbPartPredMode(mb_type, mbPartIdx) != Pred_L0) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l1[mbPartIdx][0][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
} | |
} | |
function sub_mb_pred(mb_type) { | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
sub_mb_type[mbPartIdx] = DESC('ue(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if ((num_ref_idx_l0_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && mb_type != P_8x8ref0 && sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L1) | |
ref_idx_l0[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if ((num_ref_idx_l1_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L0) | |
ref_idx_l1[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L1) | |
for (subMbPartIdx = 0; subMbPartIdx < NumSubMbPart(sub_mb_type[mbPartIdx]); subMbPartIdx++) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l0[mbPartIdx][subMbPartIdx][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L0) | |
for (subMbPartIdx = 0; subMbPartIdx < NumSubMbPart(sub_mb_type[mbPartIdx]); subMbPartIdx++) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l1[mbPartIdx][subMbPartIdx][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
} | |
function residual(startIdx, endIdx) { | |
if (!entropy_coding_mode_flag) | |
residual_block = residual_block_cavlc | |
else | |
residual_block = residual_block_cabac | |
residual_luma(i16x16DClevel, i16x16AClevel, level4x4, level8x8, startIdx, endIdx) /* C = 3 | 4 */ | |
Intra16x16DCLevel = i16x16DClevel | |
Intra16x16ACLevel = i16x16AClevel | |
LumaLevel4x4 = level4x4 | |
LumaLevel8x8 = level8x8 | |
if (ChromaArrayType == 1 || ChromaArrayType == 2) { | |
NumC8x8 = 4 / (SubWidthC * SubHeightC) | |
for (iCbCr = 0; iCbCr < 2; iCbCr++) | |
if ((CodedBlockPatternChroma & 3) && startIdx == 0) /* chroma DC residual present */ | |
residual_block(ChromaDCLevel[iCbCr], 0, 4 * NumC8x8 - 1, 4 * NumC8x8) /* C = 3 | 4 */ | |
else | |
for (i = 0; i < 4 * NumC8x8; i++) | |
ChromaDCLevel[iCbCr][i] = 0 | |
for (iCbCr = 0; iCbCr < 2; iCbCr++) | |
for (i8x8 = 0; i8x8 < NumC8x8; i8x8++) | |
for (i4x4 = 0; i4x4 < 4; i4x4++) | |
if (CodedBlockPatternChroma & 2) /* chroma AC residual present */ | |
residual_block(ChromaACLevel[iCbCr][i8x8 * 4 + i4x4], Max(0, startIdx - 1), endIdx - 1, 15) /* C = 3 | 4 */ | |
else | |
for (i = 0; i < 15; i++) | |
ChromaACLevel[iCbCr][i8x8 * 4 + i4x4][i] = 0 | |
} else if (ChromaArrayType == 3) { | |
residual_luma(i16x16DClevel, i16x16AClevel, level4x4, level8x8, startIdx, endIdx) /* C = 3 | 4 */ | |
CbIntra16x16DCLevel = i16x16DClevel | |
CbIntra16x16ACLevel = i16x16AClevel | |
CbLevel4x4 = level4x4 | |
CbLevel8x8 = level8x8 | |
residual_luma(i16x16DClevel, i16x16AClevel, level4x4, level8x8, startIdx, endIdx) /* C = 3 | 4 */ | |
CrIntra16x16DCLevel = i16x16DClevel | |
CrIntra16x16ACLevel = i16x16AClevel | |
CrLevel4x4 = level4x4 | |
CrLevel8x8 = level8x8 | |
} | |
} | |
function residual_luma(i16x16DClevel, i16x16AClevel, level4x4, level8x8, startIdx, endIdx) { | |
if (startIdx == 0 && MbPartPredMode(mb_type, 0) == Intra_16x16) | |
residual_block(i16x16DClevel, 0, 15, 16) /* C = 3 */ | |
for (i8x8 = 0; i8x8 < 4; i8x8++) | |
if (!transform_size_8x8_flag || !entropy_coding_mode_flag) | |
for (i4x4 = 0; i4x4 < 4; i4x4++) { | |
if (CodedBlockPatternLuma & (1 << i8x8)) | |
if (MbPartPredMode(mb_type, 0) == Intra_16x16) | |
residual_block(i16x16AClevel[i8x8 * 4 + i4x4], Max(0, startIdx - 1), endIdx - 1, 15) /* C = 3 */ | |
else | |
residual_block(level4x4[i8x8 * 4 + i4x4], startIdx, endIdx, 16) /* C = 3 | 4 */ | |
else if (MbPartPredMode(mb_type, 0) == Intra_16x16) | |
for (i = 0; i < 15; i++) | |
i16x16AClevel[i8x8 * 4 + i4x4][i] = 0 | |
else | |
for (i = 0; i < 16; i++) | |
level4x4[i8x8 * 4 + i4x4][i] = 0 | |
if (!entropy_coding_mode_flag && transform_size_8x8_flag) | |
for (i = 0; i < 16; i++) | |
level8x8[i8x8][4 * i + i4x4] = level4x4[i8x8 * 4 + i4x4][i] | |
} | |
else if (CodedBlockPatternLuma & (1 << i8x8)) | |
residual_block(level8x8[i8x8], 4 * startIdx, 4 * endIdx + 3, 64) /* C = 3 | 4 */ | |
else | |
for (i = 0; i < 64; i++) | |
level8x8[i8x8][i] = 0 | |
} | |
function residual_block_cavlc(coeffLevel, startIdx, endIdx, maxNumCoeff) { | |
for (i = 0; i < maxNumCoeff; i++) | |
coeffLevel[i] = 0 | |
coeff_token = DESC('ce(v)') /* C = 3 | 4 */ | |
if (TotalCoeff(coeff_token) > 0) { | |
if (TotalCoeff(coeff_token) > 10 && TrailingOnes(coeff_token) < 3) | |
suffixLength = 1 | |
else | |
suffixLength = 0 | |
for (i = 0; i < TotalCoeff(coeff_token); i++) | |
if (i < TrailingOnes(coeff_token)) { | |
trailing_ones_sign_flag = DESC('u(1)') /* C = 3 | 4 */ | |
levelVal[i] = 1 - 2 * trailing_ones_sign_flag | |
} else { | |
level_prefix = DESC('ce(v)') /* C = 3 | 4 */ | |
levelCode = (Min(15, level_prefix) << suffixLength) | |
if (suffixLength > 0 || level_prefix >= 14) { | |
level_suffix = DESC('u(v)') /* C = 3 | 4 */ | |
levelCode += level_suffix | |
} | |
if (level_prefix >= 15 && suffixLength == 0) | |
levelCode += 15 | |
if (level_prefix >= 16) | |
levelCode += (1 << (level_prefix - 3)) - 4096 | |
if (i == TrailingOnes(coeff_token) && TrailingOnes(coeff_token) < 3) | |
levelCode += 2 | |
if (levelCode % 2 == 0) | |
levelVal[i] = (levelCode + 2) >> 1 | |
else | |
levelVal[i] = (-levelCode - 1) >> 1 | |
if (suffixLength == 0) | |
suffixLength = 1 | |
if (Abs(levelVal[i]) > (3 << (suffixLength - 1)) && suffixLength < 6) | |
suffixLength++ | |
} | |
if (TotalCoeff(coeff_token) < endIdx - startIdx + 1) { | |
total_zeros = DESC('ce(v)') /* C = 3 | 4 */ | |
zerosLeft = total_zeros | |
} else | |
zerosLeft = 0 | |
for (i = 0; i < TotalCoeff(coeff_token) - 1; i++) { | |
if (zerosLeft > 0) { | |
run_before = DESC('ce(v)') /* C = 3 | 4 */ | |
runVal[i] = run_before | |
} else | |
runVal[i] = 0 | |
zerosLeft = zerosLeft - runVal[i] | |
} | |
runVal[TotalCoeff(coeff_token) - 1] = zerosLeft | |
coeffNum = -1 | |
for (i = TotalCoeff(coeff_token) - 1; i >= 0; i--) { | |
coeffNum += runVal[i] + 1 | |
coeffLevel[startIdx + coeffNum] = levelVal[i] | |
} | |
} | |
} | |
function residual_block_cabac(coeffLevel, startIdx, endIdx, maxNumCoeff) { | |
if (maxNumCoeff != 64 || ChromaArrayType == 3) | |
coded_block_flag = DESC('ae(v)') /* C = 3 | 4 */ | |
for (i = 0; i < maxNumCoeff; i++) | |
coeffLevel[i] = 0 | |
if (coded_block_flag) { | |
numCoeff = endIdx + 1 | |
i = startIdx | |
while (i < numCoeff - 1) { | |
significant_coeff_flag[i] = DESC('ae(v)') /* C = 3 | 4 */ | |
if (significant_coeff_flag[i]) { | |
last_significant_coeff_flag[i] = DESC('ae(v)') /* C = 3 | 4 */ | |
if (last_significant_coeff_flag[i]) | |
numCoeff = i + 1 | |
} | |
i++ | |
} | |
coeff_abs_level_minus1[numCoeff - 1] = DESC('ae(v)') /* C = 3 | 4 */ | |
coeff_sign_flag[numCoeff - 1] = DESC('ae(v)') /* C = 3 | 4 */ | |
coeffLevel[numCoeff - 1] = (coeff_abs_level_minus1[numCoeff - 1] + 1) * (1 - 2 * coeff_sign_flag[numCoeff - 1]) | |
for (i = numCoeff - 2; i >= startIdx; i--) | |
if (significant_coeff_flag[i]) { | |
coeff_abs_level_minus1[i] = DESC('ae(v)') /* C = 3 | 4 */ | |
coeff_sign_flag[i] = DESC('ae(v)') /* C = 3 | 4 */ | |
coeffLevel[i] = (coeff_abs_level_minus1[i] + 1) * (1 - 2 * coeff_sign_flag[i]) | |
} | |
} | |
} | |
function sei_payload(payloadType, payloadSize) { | |
if (payloadType == 0) | |
buffering_period(payloadSize) /* C = 5 */ | |
else if (payloadType == 1) | |
pic_timing(payloadSize) /* C = 5 */ | |
else if (payloadType == 2) | |
pan_scan_rect(payloadSize) /* C = 5 */ | |
else if (payloadType == 3) | |
filler_payload(payloadSize) /* C = 5 */ | |
else if (payloadType == 4) | |
user_data_registered_itu_t_t35(payloadSize) /* C = 5 */ | |
else if (payloadType == 5) | |
user_data_unregistered(payloadSize) /* C = 5 */ | |
else if (payloadType == 6) | |
recovery_point(payloadSize) /* C = 5 */ | |
else if (payloadType == 7) | |
dec_ref_pic_marking_repetition(payloadSize) /* C = 5 */ | |
else if (payloadType == 8) | |
spare_pic(payloadSize) /* C = 5 */ | |
else if (payloadType == 9) | |
scene_info(payloadSize) /* C = 5 */ | |
else if (payloadType == 10) | |
sub_seq_info(payloadSize) /* C = 5 */ | |
else if (payloadType == 11) | |
sub_seq_layer_characteristics(payloadSize) /* C = 5 */ | |
else if (payloadType == 12) | |
sub_seq_characteristics(payloadSize) /* C = 5 */ | |
else if (payloadType == 13) | |
full_frame_freeze(payloadSize) /* C = 5 */ | |
else if (payloadType == 14) | |
full_frame_freeze_release(payloadSize) /* C = 5 */ | |
else if (payloadType == 15) | |
full_frame_snapshot(payloadSize) /* C = 5 */ | |
else if (payloadType == 16) | |
progressive_refinement_segment_start(payloadSize) /* C = 5 */ | |
else if (payloadType == 17) | |
progressive_refinement_segment_end(payloadSize) /* C = 5 */ | |
else if (payloadType == 18) | |
motion_constrained_slice_group_set(payloadSize) /* C = 5 */ | |
else if (payloadType == 19) | |
film_grain_characteristics(payloadSize) /* C = 5 */ | |
else if (payloadType == 20) | |
deblocking_filter_display_preference(payloadSize) /* C = 5 */ | |
else if (payloadType == 21) | |
stereo_video_info(payloadSize) /* C = 5 */ | |
else if (payloadType == 22) | |
post_filter_hint(payloadSize) /* C = 5 */ | |
else if (payloadType == 23) | |
tone_mapping_info(payloadSize) /* C = 5 */ | |
else if (payloadType == 24) | |
scalability_info(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 25) | |
sub_pic_scalable_layer(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 26) | |
non_required_layer_rep(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 27) | |
priority_layer_info(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 28) | |
layers_not_present(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 29) | |
layer_dependency_change(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 30) | |
scalable_nesting(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 31) | |
base_layer_temporal_hrd(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 32) | |
quality_layer_integrity_check(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 33) | |
redundant_pic_property(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 34) | |
tl0_dep_rep_index(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 35) | |
tl_switching_point(payloadSize) /* specified in Annex F */ /* C = 5 */ | |
else if (payloadType == 36) | |
parallel_decoding_info(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 37) | |
mvc_scalable_nesting(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 38) | |
view_scalability_info(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 39) | |
multiview_scene_info(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 40) | |
multiview_acquisition_info(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 41) | |
non_required_view_component(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 42) | |
view_dependency_change(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 43) | |
operation_points_not_present(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 44) | |
base_view_temporal_hrd(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 45) | |
frame_packing_arrangement(payloadSize) /* C = 5 */ | |
else if (payloadType == 46) | |
multiview_view_position(payloadSize) /* specified in Annex G */ /* C = 5 */ | |
else if (payloadType == 47) | |
display_orientation(payloadSize) /* C = 5 */ | |
else if (payloadType == 48) | |
mvcd_scalable_nesting(payloadSize) /* specified in Annex H */ /* C = 5 */ | |
else if (payloadType == 49) | |
mvcd_view_scalability_info(payloadSize) /* specified in Annex H */ /* C = 5 */ | |
else if (payloadType == 50) | |
depth_representation_info(payloadSize) /* specified in Annex H */ /* C = 5 */ | |
else if (payloadType == 51) | |
three_dimensional_reference_displays_info(payloadSize) /* specified in Annex H */ /* C = 5 */ | |
else if (payloadType == 52) | |
depth_timing(payloadSize) /* specified in Annex H */ /* C = 5 */ | |
else if (payloadType == 53) | |
depth_sampling_info(payloadSize) /* specified in Annex H */ /* C = 5 */ | |
else if (payloadType == 54) | |
constrained_depth_parameter_set_identifier(payloadSize) /* specified in Annex I */ /* C = 5 */ | |
else if (payloadType == 56) | |
green_metadata(payloadSize) /* specified in ISO/IEC 23001-11 */ /* C = 5 */ | |
else if (payloadType == 137) | |
mastering_display_colour_volume(payloadSize) /* C = 5 */ | |
else if (payloadType == 142) | |
colour_remapping_info(payloadSize) /* C = 5 */ | |
else if (payloadType == 144) | |
content_light_level_info(payloadSize) /* C = 5 */ | |
else if (payloadType == 147) | |
alternative_transfer_characteristics(payloadSize) /* C = 5 */ | |
else if (payloadType == 148) | |
ambient_viewing_environment(payloadSize) /* C = 5 */ | |
else if (payloadType == 149) | |
content_colour_volume(payloadSize) /* C = 5 */ | |
else if (payloadType == 150) | |
equirectangular_projection(payloadSize) /* C = 5 */ | |
else if (payloadType == 151) | |
cubemap_projection(payloadSize) /* C = 5 */ | |
else if (payloadType == 154) | |
sphere_rotation(payloadSize) /* C = 5 */ | |
else if (payloadType == 155) | |
regionwise_packing(payloadSize) /* C = 5 */ | |
else if (payloadType == 156) | |
omni_viewport(payloadSize) /* C = 5 */ | |
else if (payloadType == 181) | |
alternative_depth_info(payloadSize) /* specified in Annex H */ /* C = 5 */ | |
else if (payloadType == 200) | |
sei_manifest(payloadSize) /* C = 5 */ | |
else if (payloadType == 201) | |
sei_prefix_indication(payloadSize) /* C = 5 */ | |
else if (payloadType == 202) | |
annotated_regions(payloadSize) /* specified in Rec. ITU-T H.274 | ISO/IEC 23002-7 */ /* C = 5 */ | |
else if (payloadType == 210) | |
nn_post_filter_characteristics(payloadSize) /* specified in Rec. ITU-T H.274 | ISO/IEC 23002-7 */ /* C = 5 */ | |
else if (payloadType == 211) | |
nn_post_filter_activation(payloadSize) /* specified in Rec. ITU-T H.274 | ISO/IEC 23002-7 */ /* C = 5 */ | |
else if (payloadType == 212) | |
phase_indication(payloadSize) /* specified in Rec. ITU-T H.274 | ISO/IEC 23002-7 */ /* C = 5 */ | |
else if (payloadType == 205) | |
shutter_interval_info(payloadSize) /* C = 5 */ | |
else | |
reserved_sei_message(payloadSize) /* C = 5 */ | |
if (!byte_aligned()) { | |
bit_equal_to_one /* equal to 1 */ = DESC('f(1)') /* C = 5 */ | |
while (!byte_aligned()) | |
bit_equal_to_zero /* equal to 0 */ = DESC('f(1)') /* C = 5 */ | |
} | |
} | |
function buffering_period(payloadSize) { | |
seq_parameter_set_id = DESC('ue(v)') /* C = 5 */ | |
if (NalHrdBpPresentFlag) | |
for (SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) { | |
initial_cpb_removal_delay[SchedSelIdx] = DESC('u(v)') /* C = 5 */ | |
initial_cpb_removal_delay_offset[SchedSelIdx] = DESC('u(v)') /* C = 5 */ | |
} | |
if (VclHrdBpPresentFlag) | |
for (SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) { | |
initial_cpb_removal_delay[SchedSelIdx] = DESC('u(v)') /* C = 5 */ | |
initial_cpb_removal_delay_offset[SchedSelIdx] = DESC('u(v)') /* C = 5 */ | |
} | |
} | |
function pic_timing(payloadSize) { | |
if (CpbDpbDelaysPresentFlag) { | |
cpb_removal_delay = DESC('u(v)') /* C = 5 */ | |
dpb_output_delay = DESC('u(v)') /* C = 5 */ | |
} | |
if (pic_struct_present_flag) { | |
pic_struct = DESC('u(4)') /* C = 5 */ | |
for (i = 0; i < NumClockTS; i++) { | |
clock_timestamp_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (clock_timestamp_flag[i]) { | |
ct_type = DESC('u(2)') /* C = 5 */ | |
nuit_field_based_flag = DESC('u(1)') /* C = 5 */ | |
counting_type = DESC('u(5)') /* C = 5 */ | |
full_timestamp_flag = DESC('u(1)') /* C = 5 */ | |
discontinuity_flag = DESC('u(1)') /* C = 5 */ | |
cnt_dropped_flag = DESC('u(1)') /* C = 5 */ | |
n_frames = DESC('u(8)') /* C = 5 */ | |
if (full_timestamp_flag) { | |
seconds_value /* 0..59 */ = DESC('u(6)') /* C = 5 */ | |
minutes_value /* 0..59 */ = DESC('u(6)') /* C = 5 */ | |
hours_value /* 0..23 */ = DESC('u(5)') /* C = 5 */ | |
} else { | |
seconds_flag = DESC('u(1)') /* C = 5 */ | |
if (seconds_flag) { | |
seconds_value /* range 0..59 */ = DESC('u(6)') /* C = 5 */ | |
minutes_flag = DESC('u(1)') /* C = 5 */ | |
if (minutes_flag) { | |
minutes_value /* 0..59 */ = DESC('u(6)') /* C = 5 */ | |
hours_flag = DESC('u(1)') /* C = 5 */ | |
if (hours_flag) | |
hours_value /* 0..23 */ = DESC('u(5)') /* C = 5 */ | |
} | |
} | |
} | |
if (time_offset_length > 0) | |
time_offset = DESC('i(v)') /* C = 5 */ | |
} | |
} | |
} | |
} | |
function pan_scan_rect(payloadSize) { | |
pan_scan_rect_id = DESC('ue(v)') /* C = 5 */ | |
pan_scan_rect_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!pan_scan_rect_cancel_flag) { | |
pan_scan_cnt_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= pan_scan_cnt_minus1; i++) { | |
pan_scan_rect_left_offset[i] = DESC('se(v)') /* C = 5 */ | |
pan_scan_rect_right_offset[i] = DESC('se(v)') /* C = 5 */ | |
pan_scan_rect_top_offset[i] = DESC('se(v)') /* C = 5 */ | |
pan_scan_rect_bottom_offset[i] = DESC('se(v)') /* C = 5 */ | |
} | |
pan_scan_rect_repetition_period = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
function filler_payload(payloadSize) { | |
for (k = 0; k < payloadSize; k++) | |
ff_byte /* equal to 0xFF */ = DESC('f(8)') /* C = 5 */ | |
} | |
function user_data_registered_itu_t_t35(payloadSize) { | |
itu_t_t35_country_code = DESC('b(8)') /* C = 5 */ | |
if (itu_t_t35_country_code != 0xFF) | |
i = 1 | |
else { | |
itu_t_t35_country_code_extension_byte = DESC('b(8)') /* C = 5 */ | |
i = 2 | |
} | |
do { | |
itu_t_t35_payload_byte = DESC('b(8)') /* C = 5 */ | |
i++ | |
} while (i < payloadSize) | |
} | |
function user_data_unregistered(payloadSize) { | |
uuid_iso_iec_11578 = DESC('u(128)') /* C = 5 */ | |
for (i = 16; i < payloadSize; i++) | |
user_data_payload_byte = DESC('b(8)') /* C = 5 */ | |
} | |
function recovery_point(payloadSize) { | |
recovery_frame_cnt = DESC('ue(v)') /* C = 5 */ | |
exact_match_flag = DESC('u(1)') /* C = 5 */ | |
broken_link_flag = DESC('u(1)') /* C = 5 */ | |
changing_slice_group_idc = DESC('u(2)') /* C = 5 */ | |
} | |
function dec_ref_pic_marking_repetition(payloadSize) { | |
original_idr_flag = DESC('u(1)') /* C = 5 */ | |
original_frame_num = DESC('ue(v)') /* C = 5 */ | |
if (!frame_mbs_only_flag) { | |
original_field_pic_flag = DESC('u(1)') /* C = 5 */ | |
if (original_field_pic_flag) | |
original_bottom_field_flag = DESC('u(1)') /* C = 5 */ | |
} | |
dec_ref_pic_marking() /* C = 5 */ | |
} | |
function spare_pic(payloadSize) { | |
target_frame_num = DESC('ue(v)') /* C = 5 */ | |
spare_field_flag = DESC('u(1)') /* C = 5 */ | |
if (spare_field_flag) | |
target_bottom_field_flag = DESC('u(1)') /* C = 5 */ | |
num_spare_pics_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i < num_spare_pics_minus1 + 1; i++) { | |
delta_spare_frame_num[i] = DESC('ue(v)') /* C = 5 */ | |
if (spare_field_flag) | |
spare_bottom_field_flag[i] = DESC('u(1)') /* C = 5 */ | |
spare_area_idc[i] = DESC('ue(v)') /* C = 5 */ | |
if (spare_area_idc[i] == 1) | |
for (j = 0; j < PicSizeInMapUnits; j++) | |
spare_unit_flag[i][j] = DESC('u(1)') /* C = 5 */ | |
else if (spare_area_idc[i] == 2) { | |
mapUnitCnt = 0 | |
for (j = 0; mapUnitCnt < PicSizeInMapUnits; j++) { | |
zero_run_length[i][j] = DESC('ue(v)') /* C = 5 */ | |
mapUnitCnt += zero_run_length[i][j] + 1 | |
} | |
} | |
} | |
} | |
function scene_info(payloadSize) { | |
scene_info_present_flag = DESC('u(1)') /* C = 5 */ | |
if (scene_info_present_flag) { | |
scene_id = DESC('ue(v)') /* C = 5 */ | |
scene_transition_type = DESC('ue(v)') /* C = 5 */ | |
if (scene_transition_type > 3) | |
second_scene_id = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
function sub_seq_info(payloadSize) { | |
sub_seq_layer_num = DESC('ue(v)') /* C = 5 */ | |
sub_seq_id = DESC('ue(v)') /* C = 5 */ | |
first_ref_pic_flag = DESC('u(1)') /* C = 5 */ | |
leading_non_ref_pic_flag = DESC('u(1)') /* C = 5 */ | |
last_pic_flag = DESC('u(1)') /* C = 5 */ | |
sub_seq_frame_num_flag = DESC('u(1)') /* C = 5 */ | |
if (sub_seq_frame_num_flag) | |
sub_seq_frame_num = DESC('ue(v)') /* C = 5 */ | |
} | |
function sub_seq_layer_characteristics(payloadSize) { | |
num_sub_seq_layers_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (layer = 0; layer <= num_sub_seq_layers_minus1; layer++) { | |
accurate_statistics_flag = DESC('u(1)') /* C = 5 */ | |
average_bit_rate = DESC('u(16)') /* C = 5 */ | |
average_frame_rate = DESC('u(16)') /* C = 5 */ | |
} | |
} | |
function sub_seq_characteristics(payloadSize) { | |
sub_seq_layer_num = DESC('ue(v)') /* C = 5 */ | |
sub_seq_id = DESC('ue(v)') /* C = 5 */ | |
duration_flag = DESC('u(1)') /* C = 5 */ | |
if (duration_flag) | |
sub_seq_duration = DESC('u(32)') /* C = 5 */ | |
average_rate_flag = DESC('u(1)') /* C = 5 */ | |
if (average_rate_flag) { | |
accurate_statistics_flag = DESC('u(1)') /* C = 5 */ | |
average_bit_rate = DESC('u(16)') /* C = 5 */ | |
average_frame_rate = DESC('u(16)') /* C = 5 */ | |
} | |
num_referenced_subseqs = DESC('ue(v)') /* C = 5 */ | |
for (n = 0; n < num_referenced_subseqs; n++) { | |
ref_sub_seq_layer_num = DESC('ue(v)') /* C = 5 */ | |
ref_sub_seq_id = DESC('ue(v)') /* C = 5 */ | |
ref_sub_seq_direction = DESC('u(1)') /* C = 5 */ | |
} | |
} | |
function full_frame_freeze(payloadSize) { | |
full_frame_freeze_repetition_period = DESC('ue(v)') /* C = 5 */ | |
} | |
function full_frame_freeze_release(payloadSize) { | |
} | |
function full_frame_snapshot(payloadSize) { | |
snapshot_id = DESC('ue(v)') /* C = 5 */ | |
} | |
function progressive_refinement_segment_start(payloadSize) { | |
progressive_refinement_id = DESC('ue(v)') /* C = 5 */ | |
num_refinement_steps_minus1 = DESC('ue(v)') /* C = 5 */ | |
} | |
function progressive_refinement_segment_end(payloadSize) { | |
progressive_refinement_id = DESC('ue(v)') /* C = 5 */ | |
} | |
function motion_constrained_slice_group_set(payloadSize) { | |
num_slice_groups_in_set_minus1 = DESC('ue(v)') /* C = 5 */ | |
if (num_slice_groups_minus1 > 0) | |
for (i = 0; i <= num_slice_groups_in_set_minus1; i++) | |
slice_group_id[i] = DESC('u(v)') /* C = 5 */ | |
exact_sample_value_match_flag = DESC('u(1)') /* C = 5 */ | |
pan_scan_rect_flag = DESC('u(1)') /* C = 5 */ | |
if (pan_scan_rect_flag) | |
pan_scan_rect_id = DESC('ue(v)') /* C = 5 */ | |
} | |
function film_grain_characteristics(payloadSize) { | |
film_grain_characteristics_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!film_grain_characteristics_cancel_flag) { | |
film_grain_model_id = DESC('u(2)') /* C = 5 */ | |
separate_colour_description_present_flag = DESC('u(1)') /* C = 5 */ | |
if (separate_colour_description_present_flag) { | |
film_grain_bit_depth_luma_minus8 = DESC('u(3)') /* C = 5 */ | |
film_grain_bit_depth_chroma_minus8 = DESC('u(3)') /* C = 5 */ | |
film_grain_full_range_flag = DESC('u(1)') /* C = 5 */ | |
film_grain_colour_primaries = DESC('u(8)') /* C = 5 */ | |
film_grain_transfer_characteristics = DESC('u(8)') /* C = 5 */ | |
film_grain_matrix_coefficients = DESC('u(8)') /* C = 5 */ | |
} | |
blending_mode_id = DESC('u(2)') /* C = 5 */ | |
log2_scale_factor = DESC('u(4)') /* C = 5 */ | |
for (c = 0; c < 3; c++) | |
comp_model_present_flag[c] = DESC('u(1)') /* C = 5 */ | |
for (c = 0; c < 3; c++) | |
if (comp_model_present_flag[c]) { | |
num_intensity_intervals_minus1[c] = DESC('u(8)') /* C = 5 */ | |
num_model_values_minus1[c] = DESC('u(3)') /* C = 5 */ | |
for (i = 0; i <= num_intensity_intervals_minus1[c]; i++) { | |
intensity_interval_lower_bound[c][i] = DESC('u(8)') /* C = 5 */ | |
intensity_interval_upper_bound[c][i] = DESC('u(8)') /* C = 5 */ | |
for (j = 0; j <= num_model_values_minus1[c]; j++) | |
comp_model_value[c][i][j] = DESC('se(v)') /* C = 5 */ | |
} | |
} | |
film_grain_characteristics_repetition_period = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
function deblocking_filter_display_preference(payloadSize) { | |
deblocking_display_preference_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!deblocking_display_preference_cancel_flag) { | |
display_prior_to_deblocking_preferred_flag = DESC('u(1)') /* C = 5 */ | |
dec_frame_buffering_constraint_flag = DESC('u(1)') /* C = 5 */ | |
deblocking_display_preference_repetition_period = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
function stereo_video_info(payloadSize) { | |
field_views_flag = DESC('u(1)') /* C = 5 */ | |
if (field_views_flag) | |
top_field_is_left_view_flag = DESC('u(1)') /* C = 5 */ | |
else { | |
current_frame_is_left_view_flag = DESC('u(1)') /* C = 5 */ | |
next_frame_is_second_view_flag = DESC('u(1)') /* C = 5 */ | |
} | |
left_view_self_contained_flag = DESC('u(1)') /* C = 5 */ | |
right_view_self_contained_flag = DESC('u(1)') /* C = 5 */ | |
} | |
function post_filter_hint(payloadSize) { | |
filter_hint_size_y = DESC('ue(v)') /* C = 5 */ | |
filter_hint_size_x = DESC('ue(v)') /* C = 5 */ | |
filter_hint_type = DESC('u(2)') /* C = 5 */ | |
for (cIdx = 0; cIdx < 3; cIdx++) | |
for (cy = 0; cy < filter_hint_size_y; cy++) | |
for (cx = 0; cx < filter_hint_size_x; cx++) | |
filter_hint_value[cIdx][cx][cy] = DESC('se(v)') /* C = 5 */ | |
additional_extension_flag = DESC('u(1)') /* C = 5 */ | |
} | |
function tone_mapping_info(payloadSize) { | |
tone_map_id = DESC('ue(v)') /* C = 5 */ | |
tone_map_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!tone_map_cancel_flag) { | |
tone_map_repetition_period = DESC('ue(v)') /* C = 5 */ | |
coded_data_bit_depth = DESC('u(8)') /* C = 5 */ | |
target_bit_depth = DESC('u(8)') /* C = 5 */ | |
tone_map_model_id = DESC('ue(v)') /* C = 5 */ | |
if (tone_map_model_id == 0) { | |
min_value = DESC('u(32)') /* C = 5 */ | |
max_value = DESC('u(32)') /* C = 5 */ | |
} | |
if (tone_map_model_id == 1) { | |
sigmoid_midpoint = DESC('u(32)') /* C = 5 */ | |
sigmoid_width = DESC('u(32)') /* C = 5 */ | |
} | |
if (tone_map_model_id == 2) | |
for (i = 0; i < (1 << target_bit_depth); i++) | |
start_of_coded_interval[i] = DESC('u(v)') /* C = 5 */ | |
if (tone_map_model_id == 3) { | |
num_pivots = DESC('u(16)') /* C = 5 */ | |
for (i = 0; i < num_pivots; i++) { | |
coded_pivot_value[i] = DESC('u(v)') /* C = 5 */ | |
target_pivot_value[i] = DESC('u(v)') /* C = 5 */ | |
} | |
} | |
if (tone_map_model_id == 4) { | |
camera_iso_speed_idc = DESC('u(8)') /* C = 5 */ | |
if (camera_iso_speed_idc == Extended_ISO) | |
camera_iso_speed_value = DESC('u(32)') /* C = 5 */ | |
exposure_index_idc = DESC('u(8)') /* C = 5 */ | |
if (exposure_index_idc == Extended_ISO) | |
exposure_index_value = DESC('u(32)') /* C = 5 */ | |
exposure_compensation_value_sign_flag = DESC('u(1)') /* C = 5 */ | |
exposure_compensation_value_numerator = DESC('u(16)') /* C = 5 */ | |
exposure_compensation_value_denom_idc = DESC('u(16)') /* C = 5 */ | |
ref_screen_luminance_white = DESC('u(32)') /* C = 5 */ | |
extended_range_white_level = DESC('u(32)') /* C = 5 */ | |
nominal_black_level_luma_code_value = DESC('u(16)') /* C = 5 */ | |
nominal_white_level_luma_code_value = DESC('u(16)') /* C = 5 */ | |
extended_white_level_luma_code_value = DESC('u(16)') /* C = 5 */ | |
} | |
} | |
} | |
function frame_packing_arrangement(payloadSize) { | |
frame_packing_arrangement_id = DESC('ue(v)') /* C = 5 */ | |
frame_packing_arrangement_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!frame_packing_arrangement_cancel_flag) { | |
frame_packing_arrangement_type = DESC('u(7)') /* C = 5 */ | |
quincunx_sampling_flag = DESC('u(1)') /* C = 5 */ | |
content_interpretation_type = DESC('u(6)') /* C = 5 */ | |
spatial_flipping_flag = DESC('u(1)') /* C = 5 */ | |
frame0_flipped_flag = DESC('u(1)') /* C = 5 */ | |
field_views_flag = DESC('u(1)') /* C = 5 */ | |
current_frame_is_frame0_flag = DESC('u(1)') /* C = 5 */ | |
frame0_self_contained_flag = DESC('u(1)') /* C = 5 */ | |
frame1_self_contained_flag = DESC('u(1)') /* C = 5 */ | |
if (!quincunx_sampling_flag && frame_packing_arrangement_type != 5) { | |
frame0_grid_position_x = DESC('u(4)') /* C = 5 */ | |
frame0_grid_position_y = DESC('u(4)') /* C = 5 */ | |
frame1_grid_position_x = DESC('u(4)') /* C = 5 */ | |
frame1_grid_position_y = DESC('u(4)') /* C = 5 */ | |
} | |
frame_packing_arrangement_reserved_byte = DESC('u(8)') /* C = 5 */ | |
frame_packing_arrangement_repetition_period = DESC('ue(v)') /* C = 5 */ | |
} | |
frame_packing_arrangement_extension_flag = DESC('u(1)') /* C = 5 */ | |
} | |
function display_orientation(payloadSize) { | |
display_orientation_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!display_orientation_cancel_flag) { | |
hor_flip = DESC('u(1)') /* C = 5 */ | |
ver_flip = DESC('u(1)') /* C = 5 */ | |
anticlockwise_rotation = DESC('u(16)') /* C = 5 */ | |
display_orientation_repetition_period = DESC('ue(v)') /* C = 5 */ | |
display_orientation_extension_flag = DESC('u(1)') /* C = 5 */ | |
} | |
} | |
function mastering_display_colour_volume(payloadSize) { | |
for (c = 0; c < 3; c++) { | |
display_primaries_x[c] = DESC('u(16)') /* C = 5 */ | |
display_primaries_y[c] = DESC('u(16)') /* C = 5 */ | |
} | |
white_point_x = DESC('u(16)') /* C = 5 */ | |
white_point_y = DESC('u(16)') /* C = 5 */ | |
max_display_mastering_luminance = DESC('u(32)') /* C = 5 */ | |
min_display_mastering_luminance = DESC('u(32)') /* C = 5 */ | |
} | |
function colour_remapping_info(payloadSize) { | |
colour_remap_id = DESC('ue(v)') /* C = 5 */ | |
colour_remap_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!colour_remap_cancel_flag) { | |
colour_remap_repetition_period = DESC('ue(v)') /* C = 5 */ | |
colour_remap_video_signal_info_present_flag = DESC('u(1)') /* C = 5 */ | |
if (colour_remap_video_signal_info_present_flag) { | |
colour_remap_full_range_flag = DESC('u(1)') /* C = 5 */ | |
colour_remap_primaries = DESC('u(8)') /* C = 5 */ | |
colour_remap_transfer_function = DESC('u(8)') /* C = 5 */ | |
colour_remap_matrix_coefficients = DESC('u(8)') /* C = 5 */ | |
} | |
colour_remap_input_bit_depth = DESC('u(8)') /* C = 5 */ | |
colour_remap_output_bit_depth = DESC('u(8)') /* C = 5 */ | |
for (c = 0; c < 3; c++) { | |
pre_lut_num_val_minus1[c] = DESC('u(8)') /* C = 5 */ | |
if (pre_lut_num_val_minus1[c] > 0) | |
for (i = 0; i <= pre_lut_num_val_minus1[c]; i++) { | |
pre_lut_coded_value[c][i] = DESC('u(v)') /* C = 5 */ | |
pre_lut_target_value[c][i] = DESC('u(v)') /* C = 5 */ | |
} | |
} | |
colour_remap_matrix_present_flag = DESC('u(1)') /* C = 5 */ | |
if (colour_remap_matrix_present_flag) { | |
log2_matrix_denom = DESC('u(4)') /* C = 5 */ | |
for (c = 0; c < 3; c++) | |
for (i = 0; i < 3; i++) | |
colour_remap_coeffs[c][i] = DESC('se(v)') /* C = 5 */ | |
} | |
for (c = 0; c < 3; c++) { | |
post_lut_num_val_minus1[c] = DESC('u(8)') /* C = 5 */ | |
if (post_lut_num_val_minus1[c] > 0) | |
for (i = 0; i <= post_lut_num_val_minus1[c]; i++) { | |
post_lut_coded_value[c][i] = DESC('u(v)') /* C = 5 */ | |
post_lut_target_value[c][i] = DESC('u(v)') /* C = 5 */ | |
} | |
} | |
} | |
} | |
function content_light_level_info(payloadSize) { | |
max_content_light_level = DESC('u(16)') /* C = 5 */ | |
max_pic_average_light_level = DESC('u(16)') /* C = 5 */ | |
} | |
function alternative_transfer_characteristics(payloadSize) { | |
preferred_transfer_characteristics = DESC('u(8)') /* C = 5 */ | |
} | |
function content_colour_volume(payloadSize) { | |
ccv_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!ccv_cancel_flag) { | |
ccv_persistence_flag = DESC('u(1)') /* C = 5 */ | |
ccv_primaries_present_flag = DESC('u(1)') /* C = 5 */ | |
ccv_min_luminance_value_present_flag = DESC('u(1)') /* C = 5 */ | |
ccv_max_luminance_value_present_flag = DESC('u(1)') /* C = 5 */ | |
ccv_avg_luminance_value_present_flag = DESC('u(1)') /* C = 5 */ | |
ccv_reserved_zero_2bits = DESC('u(2)') /* C = 5 */ | |
if (ccv_primaries_present_flag) | |
for (c = 0; c < 3; c++) { | |
ccv_primaries_x[c] = DESC('i(32)') /* C = 5 */ | |
ccv_primaries_y[c] = DESC('i(32)') /* C = 5 */ | |
} | |
if (ccv_min_luminance_value_present_flag) | |
ccv_min_luminance_value = DESC('u(32)') /* C = 5 */ | |
if (ccv_max_luminance_value_present_flag) | |
ccv_max_luminance_value = DESC('u(32)') /* C = 5 */ | |
if (ccv_avg_luminance_value_present_flag) | |
ccv_avg_luminance_value = DESC('u(32)') /* C = 5 */ | |
} | |
} | |
function ambient_viewing_environment(payloadSize) { | |
ambient_illuminance = DESC('u(32)') /* C = 5 */ | |
ambient_light_x = DESC('u(16)') /* C = 5 */ | |
ambient_light_y = DESC('u(16)') /* C = 5 */ | |
} | |
function equirectangular_projection(payloadSize) { | |
erp_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!erp_cancel_flag) { | |
erp_persistence_flag = DESC('u(1)') /* C = 5 */ | |
erp_padding_flag = DESC('u(1)') /* C = 5 */ | |
erp_reserved_zero_2bits = DESC('u(2)') /* C = 5 */ | |
if (erp_padding_flag == 1) { | |
gp_erp_type = DESC('u(3)') /* C = 5 */ | |
left_gb_erp_width = DESC('u(8)') /* C = 5 */ | |
right_gb_erp_width = DESC('u(8)') /* C = 5 */ | |
} | |
} | |
} | |
function cubemap_projection(payloadSize) { | |
cmp_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!cmp_cancel_flag) | |
cmp_persistence_flag = DESC('u(1)') /* C = 5 */ | |
} | |
function sphere_rotation(payloadSize) { | |
sphere_rotation_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!sphere_rotation_cancel_flag) { | |
sphere_rotation_persistence_flag = DESC('u(1)') /* C = 5 */ | |
sphere_rotation_reserved_zero_6bits = DESC('u(6)') /* C = 5 */ | |
yaw_rotation = DESC('i(32)') /* C = 5 */ | |
pitch_rotation = DESC('i(32)') /* C = 5 */ | |
roll_rotation = DESC('i(32)') /* C = 5 */ | |
} | |
} | |
function regionwise_packing(payloadSize) { | |
rwp_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!rwp_cancel_flag) { | |
rwp_persistence_flag = DESC('u(1)') /* C = 5 */ | |
constituent_picture_matching_flag = DESC('u(1)') /* C = 5 */ | |
rwp_reserved_zero_5bits = DESC('u(5)') /* C = 5 */ | |
num_packed_regions = DESC('u(8)') /* C = 5 */ | |
proj_picture_width = DESC('u(32)') /* C = 5 */ | |
proj_picture_height = DESC('u(32)') /* C = 5 */ | |
packed_picture_width = DESC('u(16)') /* C = 5 */ | |
packed_picture_height = DESC('u(16)') /* C = 5 */ | |
for (i = 0; i < num_packed_regions; i++) { | |
rwp_reserved_zero_4bits[i] = DESC('u(4)') /* C = 5 */ | |
transform_type[i] = DESC('u(3)') /* C = 5 */ | |
guard_band_flag[i] = DESC('u(1)') /* C = 5 */ | |
proj_region_width[i] = DESC('u(32)') /* C = 5 */ | |
proj_region_height[i] = DESC('u(32)') /* C = 5 */ | |
proj_region_top[i] = DESC('u(32)') /* C = 5 */ | |
proj_region_left[i] = DESC('u(32)') /* C = 5 */ | |
packed_region_width[i] = DESC('u(16)') /* C = 5 */ | |
packed_region_height[i] = DESC('u(16)') /* C = 5 */ | |
packed_region_top[i] = DESC('u(16)') /* C = 5 */ | |
packed_region_left[i] = DESC('u(16)') /* C = 5 */ | |
if (guard_band_flag[i]) { | |
left_gb_width[i] = DESC('u(8)') /* C = 5 */ | |
right_gb_width[i] = DESC('u(8)') /* C = 5 */ | |
top_gb_height[i] = DESC('u(8)') /* C = 5 */ | |
bottom_gb_height[i] = DESC('u(8)') /* C = 5 */ | |
gb_not_used_for_pred_flag[i] = DESC('u(1)') /* C = 5 */ | |
for (j = 0; j < 4; j++) | |
gb_type[i][j] = DESC('u(3)') /* C = 5 */ | |
rwp_gb_reserved_zero_3bits[i] = DESC('u(3)') /* C = 5 */ | |
} | |
} | |
} | |
} | |
function omni_viewport(payloadSize) { | |
omni_viewport_id = DESC('u(10)') /* C = 5 */ | |
omni_viewport_cancel_flag = DESC('u(1)') /* C = 5 */ | |
if (!omni_viewport_cancel_flag) { | |
omni_viewport_persistence_flag = DESC('u(1)') /* C = 5 */ | |
omni_viewport_cnt_minus1 = DESC('u(4)') /* C = 5 */ | |
for (i = 0; i <= omni_viewport_cnt_minus1; i++) { | |
omni_viewport_azimuth_centre[i] = DESC('i(32)') /* C = 5 */ | |
omni_viewport_elevation_centre[i] = DESC('i(32)') /* C = 5 */ | |
omni_viewport_tilt_centre[i] = DESC('i(32)') /* C = 5 */ | |
omni_viewport_hor_range[i] = DESC('u(32)') /* C = 5 */ | |
omni_viewport_ver_range[i] = DESC('u(32)') /* C = 5 */ | |
} | |
} | |
} | |
function sei_manifest(payloadSize) { | |
manifest_num_sei_msg_types = DESC('u(16)') /* C = 5 */ | |
for (i = 0; i < manifest_num_sei_msg_types; i++) { | |
manifest_sei_payload_type[i] = DESC('u(16)') /* C = 5 */ | |
manifest_sei_description[i] = DESC('u(8)') /* C = 5 */ | |
} | |
} | |
function sei_prefix_indication(payloadSize) { | |
prefix_sei_payload_type = DESC('u(16)') /* C = 5 */ | |
num_sei_prefix_indications_minus1 = DESC('u(8)') /* C = 5 */ | |
for (i = 0; i <= num_sei_prefix_indications_minus1; i++) { | |
num_bits_in_prefix_indication_minus1[i] = DESC('u(16)') /* C = 5 */ | |
for (j = 0; j <= num_bits_in_prefix_indication_minus1[i]; j++) | |
sei_prefix_data_bit[i][j] = DESC('u(1)') /* C = 5 */ | |
while (!byte_aligned()) | |
byte_alignment_bit_equal_to_one /* equal to 1 */ = DESC('f(1)') /* C = 5 */ | |
} | |
} | |
function shutter_interval_info(payloadSize) { | |
sii_sub_layer_idx = DESC('ue(v)') /* C = 5 */ | |
if (sii_sub_layer_idx == 0) { | |
shutter_interval_info_present_flag = DESC('u(1)') /* C = 5 */ | |
if (shutter_interval_info_present_flag) { | |
sii_time_scale = DESC('u(32)') /* C = 5 */ | |
fixed_shutter_interval_within_cvs_flag = DESC('u(1)') /* C = 5 */ | |
if (fixed_shutter_interval_within_cvs_flag) | |
sii_num_units_in_shutter_interval = DESC('u(32)') /* C = 5 */ | |
else { | |
sii_max_sub_layers_minus1 = DESC('u(3)') /* C = 5 */ | |
for (i = 0; i <= sii_max_sub_layers_minus1; i++) | |
sub_layer_num_units_in_shutter_interval[i] = DESC('u(32)') /* C = 5 */ | |
} | |
} | |
} | |
} | |
function reserved_sei_message(payloadSize) { | |
for (i = 0; i < payloadSize; i++) | |
reserved_sei_message_payload_byte = DESC('b(8)') /* C = 5 */ | |
} | |
function vui_parameters() { | |
aspect_ratio_info_present_flag = DESC('u(1)') /* C = 0 */ | |
if (aspect_ratio_info_present_flag) { | |
aspect_ratio_idc = DESC('u(8)') /* C = 0 */ | |
if (aspect_ratio_idc == Extended_SAR) { | |
sar_width = DESC('u(16)') /* C = 0 */ | |
sar_height = DESC('u(16)') /* C = 0 */ | |
} | |
} | |
overscan_info_present_flag = DESC('u(1)') /* C = 0 */ | |
if (overscan_info_present_flag) | |
overscan_appropriate_flag = DESC('u(1)') /* C = 0 */ | |
video_signal_type_present_flag = DESC('u(1)') /* C = 0 */ | |
if (video_signal_type_present_flag) { | |
video_format = DESC('u(3)') /* C = 0 */ | |
video_full_range_flag = DESC('u(1)') /* C = 0 */ | |
colour_description_present_flag = DESC('u(1)') /* C = 0 */ | |
if (colour_description_present_flag) { | |
colour_primaries = DESC('u(8)') /* C = 0 */ | |
transfer_characteristics = DESC('u(8)') /* C = 0 */ | |
matrix_coefficients = DESC('u(8)') /* C = 0 */ | |
} | |
} | |
chroma_loc_info_present_flag = DESC('u(1)') /* C = 0 */ | |
if (chroma_loc_info_present_flag) { | |
chroma_sample_loc_type_top_field = DESC('ue(v)') /* C = 0 */ | |
chroma_sample_loc_type_bottom_field = DESC('ue(v)') /* C = 0 */ | |
} | |
timing_info_present_flag = DESC('u(1)') /* C = 0 */ | |
if (timing_info_present_flag) { | |
num_units_in_tick = DESC('u(32)') /* C = 0 */ | |
time_scale = DESC('u(32)') /* C = 0 */ | |
fixed_frame_rate_flag = DESC('u(1)') /* C = 0 */ | |
} | |
nal_hrd_parameters_present_flag = DESC('u(1)') /* C = 0 */ | |
if (nal_hrd_parameters_present_flag) | |
hrd_parameters() /* C = 0 */ | |
vcl_hrd_parameters_present_flag = DESC('u(1)') /* C = 0 */ | |
if (vcl_hrd_parameters_present_flag) | |
hrd_parameters() /* C = 0 */ | |
if (nal_hrd_parameters_present_flag || vcl_hrd_parameters_present_flag) | |
low_delay_hrd_flag = DESC('u(1)') /* C = 0 */ | |
pic_struct_present_flag = DESC('u(1)') /* C = 0 */ | |
bitstream_restriction_flag = DESC('u(1)') /* C = 0 */ | |
if (bitstream_restriction_flag) { | |
motion_vectors_over_pic_boundaries_flag = DESC('u(1)') /* C = 0 */ | |
max_bytes_per_pic_denom = DESC('ue(v)') /* C = 0 */ | |
max_bits_per_mb_denom = DESC('ue(v)') /* C = 0 */ | |
log2_max_mv_length_horizontal = DESC('ue(v)') /* C = 0 */ | |
log2_max_mv_length_vertical = DESC('ue(v)') /* C = 0 */ | |
max_num_reorder_frames = DESC('ue(v)') /* C = 0 */ | |
max_dec_frame_buffering = DESC('ue(v)') /* C = 0 */ | |
} | |
} | |
function hrd_parameters() { | |
cpb_cnt_minus1 = DESC('ue(v)') /* C = 0 | 5 */ | |
bit_rate_scale = DESC('u(4)') /* C = 0 | 5 */ | |
cpb_size_scale = DESC('u(4)') /* C = 0 | 5 */ | |
for (SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) { | |
bit_rate_value_minus1[SchedSelIdx] = DESC('ue(v)') /* C = 0 | 5 */ | |
cpb_size_value_minus1[SchedSelIdx] = DESC('ue(v)') /* C = 0 | 5 */ | |
cbr_flag[SchedSelIdx] = DESC('u(1)') /* C = 0 | 5 */ | |
} | |
initial_cpb_removal_delay_length_minus1 = DESC('u(5)') /* C = 0 | 5 */ | |
cpb_removal_delay_length_minus1 = DESC('u(5)') /* C = 0 | 5 */ | |
dpb_output_delay_length_minus1 = DESC('u(5)') /* C = 0 | 5 */ | |
time_offset_length = DESC('u(5)') /* C = 0 | 5 */ | |
} | |
function nal_unit_header_svc_extension() { | |
idr_flag = DESC('u(1)') /* C = All */ | |
priority_id = DESC('u(6)') /* C = All */ | |
no_inter_layer_pred_flag = DESC('u(1)') /* C = All */ | |
dependency_id = DESC('u(3)') /* C = All */ | |
quality_id = DESC('u(4)') /* C = All */ | |
temporal_id = DESC('u(3)') /* C = All */ | |
use_ref_base_pic_flag = DESC('u(1)') /* C = All */ | |
discardable_flag = DESC('u(1)') /* C = All */ | |
output_flag = DESC('u(1)') /* C = All */ | |
reserved_three_2bits = DESC('u(2)') /* C = All */ | |
} | |
function seq_parameter_set_svc_extension() { | |
inter_layer_deblocking_filter_control_present_flag = DESC('u(1)') /* C = 0 */ | |
extended_spatial_scalability_idc = DESC('u(2)') /* C = 0 */ | |
if (ChromaArrayType == 1 || ChromaArrayType == 2) | |
chroma_phase_x_plus1_flag = DESC('u(1)') /* C = 0 */ | |
if (ChromaArrayType == 1) | |
chroma_phase_y_plus1 = DESC('u(2)') /* C = 0 */ | |
if (extended_spatial_scalability_idc == 1) { | |
if (ChromaArrayType > 0) { | |
seq_ref_layer_chroma_phase_x_plus1_flag = DESC('u(1)') /* C = 0 */ | |
seq_ref_layer_chroma_phase_y_plus1 = DESC('u(2)') /* C = 0 */ | |
} | |
seq_scaled_ref_layer_left_offset = DESC('se(v)') /* C = 0 */ | |
seq_scaled_ref_layer_top_offset = DESC('se(v)') /* C = 0 */ | |
seq_scaled_ref_layer_right_offset = DESC('se(v)') /* C = 0 */ | |
seq_scaled_ref_layer_bottom_offset = DESC('se(v)') /* C = 0 */ | |
} | |
seq_tcoeff_level_prediction_flag = DESC('u(1)') /* C = 0 */ | |
if (seq_tcoeff_level_prediction_flag) { | |
adaptive_tcoeff_level_prediction_flag = DESC('u(1)') /* C = 0 */ | |
} | |
slice_header_restriction_flag = DESC('u(1)') /* C = 0 */ | |
} | |
function prefix_nal_unit_svc() { | |
if (nal_ref_idc != 0) { | |
store_ref_base_pic_flag = DESC('u(1)') /* C = 2 */ | |
if ((use_ref_base_pic_flag || store_ref_base_pic_flag) && !idr_flag) | |
dec_ref_base_pic_marking() /* C = 2 */ | |
additional_prefix_nal_unit_extension_flag = DESC('u(1)') /* C = 2 */ | |
if (additional_prefix_nal_unit_extension_flag == 1) | |
while (more_rbsp_data()) | |
additional_prefix_nal_unit_extension_data_flag = DESC('u(1)') /* C = 2 */ | |
rbsp_trailing_bits() /* C = 2 */ | |
} else if (more_rbsp_data()) { | |
while (more_rbsp_data()) | |
additional_prefix_nal_unit_extension_data_flag = DESC('u(1)') /* C = 2 */ | |
rbsp_trailing_bits() /* C = 2 */ | |
} | |
} | |
function slice_header_in_scalable_extension() { | |
first_mb_in_slice = DESC('ue(v)') /* C = 2 */ | |
slice_type = DESC('ue(v)') /* C = 2 */ | |
pic_parameter_set_id = DESC('ue(v)') /* C = 2 */ | |
if (separate_colour_plane_flag == 1) | |
colour_plane_id = DESC('u(2)') /* C = 2 */ | |
frame_num = DESC('u(v)') /* C = 2 */ | |
if (!frame_mbs_only_flag) { | |
field_pic_flag = DESC('u(1)') /* C = 2 */ | |
if (field_pic_flag) | |
bottom_field_flag = DESC('u(1)') /* C = 2 */ | |
} | |
if (idr_flag == 1) | |
idr_pic_id = DESC('ue(v)') /* C = 2 */ | |
if (pic_order_cnt_type == 0) { | |
pic_order_cnt_lsb = DESC('u(v)') /* C = 2 */ | |
if (bottom_field_pic_order_in_frame_present_flag && !field_pic_flag) | |
delta_pic_order_cnt_bottom = DESC('se(v)') /* C = 2 */ | |
} | |
if (pic_order_cnt_type == 1 && !delta_pic_order_always_zero_flag) { | |
delta_pic_order_cnt[0] = DESC('se(v)') /* C = 2 */ | |
if (bottom_field_pic_order_in_frame_present_flag && !field_pic_flag) | |
delta_pic_order_cnt[1] = DESC('se(v)') /* C = 2 */ | |
} | |
if (redundant_pic_cnt_present_flag) | |
redundant_pic_cnt = DESC('ue(v)') /* C = 2 */ | |
if (quality_id == 0) { | |
if (slice_type == EB) | |
direct_spatial_mv_pred_flag = DESC('u(1)') /* C = 2 */ | |
if (slice_type == EP || slice_type == EB) { | |
num_ref_idx_active_override_flag = DESC('u(1)') /* C = 2 */ | |
if (num_ref_idx_active_override_flag) { | |
num_ref_idx_l0_active_minus1 = DESC('ue(v)') /* C = 2 */ | |
if (slice_type == EB) | |
num_ref_idx_l1_active_minus1 = DESC('ue(v)') /* C = 2 */ | |
} | |
} | |
ref_pic_list_modification() /* C = 2 */ | |
if ((weighted_pred_flag && slice_type == EP) || (weighted_bipred_idc == 1 && slice_type == EB)) { | |
if (!no_inter_layer_pred_flag) | |
base_pred_weight_table_flag = DESC('u(1)') /* C = 2 */ | |
if (no_inter_layer_pred_flag || !base_pred_weight_table_flag) | |
pred_weight_table() /* C = 2 */ | |
} | |
if (nal_ref_idc != 0) { | |
dec_ref_pic_marking() /* C = 2 */ | |
if (!slice_header_restriction_flag) { | |
store_ref_base_pic_flag = DESC('u(1)') /* C = 2 */ | |
if ((use_ref_base_pic_flag || store_ref_base_pic_flag) && !idr_flag) | |
dec_ref_base_pic_marking() /* C = 2 */ | |
} | |
} | |
} | |
if (entropy_coding_mode_flag && slice_type != EI) | |
cabac_init_idc = DESC('ue(v)') /* C = 2 */ | |
slice_qp_delta = DESC('se(v)') /* C = 2 */ | |
if (deblocking_filter_control_present_flag) { | |
disable_deblocking_filter_idc = DESC('ue(v)') /* C = 2 */ | |
if (disable_deblocking_filter_idc != 1) { | |
slice_alpha_c0_offset_div2 = DESC('se(v)') /* C = 2 */ | |
slice_beta_offset_div2 = DESC('se(v)') /* C = 2 */ | |
} | |
} | |
if (num_slice_groups_minus1 > 0 && slice_group_map_type >= 3 && slice_group_map_type <= 5) | |
slice_group_change_cycle = DESC('u(v)') /* C = 2 */ | |
if (!no_inter_layer_pred_flag && quality_id == 0) { | |
ref_layer_dq_id = DESC('ue(v)') /* C = 2 */ | |
if (inter_layer_deblocking_filter_control_present_flag) { | |
disable_inter_layer_deblocking_filter_idc = DESC('ue(v)') /* C = 2 */ | |
if (disable_inter_layer_deblocking_filter_idc != 1) { | |
inter_layer_slice_alpha_c0_offset_div2 = DESC('se(v)') /* C = 2 */ | |
inter_layer_slice_beta_offset_div2 = DESC('se(v)') /* C = 2 */ | |
} | |
} | |
constrained_intra_resampling_flag = DESC('u(1)') /* C = 2 */ | |
if (extended_spatial_scalability_idc == 2) { | |
if (ChromaArrayType > 0) { | |
ref_layer_chroma_phase_x_plus1_flag = DESC('u(1)') /* C = 2 */ | |
ref_layer_chroma_phase_y_plus1 = DESC('u(2)') /* C = 2 */ | |
} | |
scaled_ref_layer_left_offset = DESC('se(v)') /* C = 2 */ | |
scaled_ref_layer_top_offset = DESC('se(v)') /* C = 2 */ | |
scaled_ref_layer_right_offset = DESC('se(v)') /* C = 2 */ | |
scaled_ref_layer_bottom_offset = DESC('se(v)') /* C = 2 */ | |
} | |
} | |
if (!no_inter_layer_pred_flag) { | |
slice_skip_flag = DESC('u(1)') /* C = 2 */ | |
if (slice_skip_flag) | |
num_mbs_in_slice_minus1 = DESC('ue(v)') /* C = 2 */ | |
else { | |
adaptive_base_mode_flag = DESC('u(1)') /* C = 2 */ | |
if (!adaptive_base_mode_flag) | |
default_base_mode_flag = DESC('u(1)') /* C = 2 */ | |
if (!default_base_mode_flag) { | |
adaptive_motion_prediction_flag = DESC('u(1)') /* C = 2 */ | |
if (!adaptive_motion_prediction_flag) | |
default_motion_prediction_flag = DESC('u(1)') /* C = 2 */ | |
} | |
adaptive_residual_prediction_flag = DESC('u(1)') /* C = 2 */ | |
if (!adaptive_residual_prediction_flag) | |
default_residual_prediction_flag = DESC('u(1)') /* C = 2 */ | |
} | |
if (adaptive_tcoeff_level_prediction_flag) | |
tcoeff_level_prediction_flag = DESC('u(1)') /* C = 2 */ | |
} | |
if (!slice_header_restriction_flag && !slice_skip_flag) { | |
scan_idx_start = DESC('u(4)') /* C = 2 */ | |
scan_idx_end = DESC('u(4)') /* C = 2 */ | |
} | |
} | |
function dec_ref_base_pic_marking() { | |
adaptive_ref_base_pic_marking_mode_flag = DESC('u(1)') /* C = 2 */ | |
if (adaptive_ref_base_pic_marking_mode_flag) | |
do { | |
memory_management_base_control_operation = DESC('ue(v)') /* C = 2 */ | |
if (memory_management_base_control_operation == 1) | |
difference_of_base_pic_nums_minus1 = DESC('ue(v)') /* C = 2 */ | |
if (memory_management_base_control_operation == 2) | |
long_term_base_pic_num = DESC('ue(v)') /* C = 2 */ | |
} while (memory_management_base_control_operation != 0) | |
} | |
function slice_data_in_scalable_extension() { | |
if (entropy_coding_mode_flag) | |
while (!byte_aligned()) | |
cabac_alignment_one_bit = DESC('f(1)') /* C = 2 */ | |
CurrMbAddr = first_mb_in_slice * (1 + MbaffFrameFlag) | |
moreDataFlag = 1 | |
prevMbSkipped = 0 | |
do { | |
if (slice_type != EI) | |
if (!entropy_coding_mode_flag) { | |
mb_skip_run = DESC('ue(v)') /* C = 2 */ | |
prevMbSkipped = (mb_skip_run > 0) | |
for (i = 0; i < mb_skip_run; i++) | |
CurrMbAddr = NextMbAddress(CurrMbAddr) | |
if (mb_skip_run > 0) | |
moreDataFlag = more_rbsp_data() | |
} else { | |
mb_skip_flag = DESC('ae(v)') /* C = 2 */ | |
moreDataFlag = !mb_skip_flag | |
} | |
if (moreDataFlag) { | |
if (MbaffFrameFlag && ((CurrMbAddr % 2) == 0 || ((CurrMbAddr % 2) == 1 && prevMbSkipped))) | |
mb_field_decoding_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
macroblock_layer_in_scalable_extension() /* C = 2 | 3 | 4 */ | |
} | |
if (!entropy_coding_mode_flag) | |
moreDataFlag = more_rbsp_data() | |
else { | |
if (slice_type != EI) | |
prevMbSkipped = mb_skip_flag | |
if (MbaffFrameFlag && (CurrMbAddr % 2) == 0) | |
moreDataFlag = 1 | |
else { | |
end_of_slice_flag = DESC('ae(v)') /* C = 2 */ | |
moreDataFlag = !end_of_slice_flag | |
} | |
} | |
CurrMbAddr = NextMbAddress(CurrMbAddr) | |
} while (moreDataFlag) | |
} | |
function macroblock_layer_in_scalable_extension() { | |
if (InCropWindow(CurrMbAddr) && adaptive_base_mode_flag) | |
base_mode_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (!base_mode_flag) | |
mb_type = DESC('ue(v) | ae(v)') /* C = 2 */ | |
if (mb_type == I_PCM) { | |
while (!byte_aligned()) | |
pcm_alignment_zero_bit = DESC('f(1)') /* C = 3 */ | |
for (i = 0; i < 256; i++) | |
pcm_sample_luma[i] = DESC('u(v)') /* C = 3 */ | |
for (i = 0; i < 2 * MbWidthC * MbHeightC; i++) | |
pcm_sample_chroma[i] = DESC('u(v)') /* C = 3 */ | |
} else { | |
if (!base_mode_flag) { | |
noSubMbPartSizeLessThan8x8Flag = 1 | |
if (mb_type != I_NxN && | |
MbPartPredMode(mb_type, 0) != Intra_16x16 && | |
NumMbPart(mb_type) == 4) { | |
sub_mb_pred_in_scalable_extension(mb_type) /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (sub_mb_type[mbPartIdx] != B_Direct_8x8) { | |
if (NumSubMbPart(sub_mb_type[mbPartIdx]) > 1) | |
noSubMbPartSizeLessThan8x8Flag = 0 | |
} else if (!direct_8x8_inference_flag) | |
noSubMbPartSizeLessThan8x8Flag = 0 | |
} else { | |
if (transform_8x8_mode_flag && mb_type == I_NxN) | |
transform_size_8x8_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
mb_pred_in_scalable_extension(mb_type) /* C = 2 */ | |
} | |
} | |
if (adaptive_residual_prediction_flag && slice_type != EI && | |
InCropWindow(CurrMbAddr) && | |
(base_mode_flag || | |
(MbPartPredMode(mb_type, 0) != Intra_16x16 && | |
MbPartPredMode(mb_type, 0) != Intra_8x8 && | |
MbPartPredMode(mb_type, 0) != Intra_4x4))) | |
residual_prediction_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (scan_idx_end >= scan_idx_start) { | |
if (base_mode_flag || | |
MbPartPredMode(mb_type, 0) != Intra_16x16) { | |
coded_block_pattern = DESC('me(v) | ae(v)') /* C = 2 */ | |
if (CodedBlockPatternLuma > 0 && | |
transform_8x8_mode_flag && | |
(base_mode_flag || | |
(mb_type != I_NxN && | |
noSubMbPartSizeLessThan8x8Flag && | |
(mb_type != B_Direct_16x16 || | |
direct_8x8_inference_flag)))) | |
transform_size_8x8_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
} | |
if (CodedBlockPatternLuma > 0 || | |
CodedBlockPatternChroma > 0 || | |
MbPartPredMode(mb_type, 0) == Intra_16x16) { | |
mb_qp_delta = DESC('se(v) | ae(v)') /* C = 2 */ | |
residual(scan_idx_start, scan_idx_end) /* C = 3 | 4 */ | |
} | |
} | |
} | |
} | |
function mb_pred_in_scalable_extension(mb_type) { | |
if (MbPartPredMode(mb_type, 0) == Intra_4x4 || MbPartPredMode(mb_type, 0) == Intra_8x8 || MbPartPredMode(mb_type, 0) == Intra_16x16) { | |
if (MbPartPredMode(mb_type, 0) == Intra_4x4) | |
for (luma4x4BlkIdx = 0; luma4x4BlkIdx < 16; luma4x4BlkIdx++) { | |
prev_intra4x4_pred_mode_flag[luma4x4BlkIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (!prev_intra4x4_pred_mode_flag[luma4x4BlkIdx]) | |
rem_intra4x4_pred_mode[luma4x4BlkIdx] = DESC('u(3) | ae(v)') /* C = 2 */ | |
} | |
if (MbPartPredMode(mb_type, 0) == Intra_8x8) | |
for (luma8x8BlkIdx = 0; luma8x8BlkIdx < 4; luma8x8BlkIdx++) { | |
prev_intra8x8_pred_mode_flag[luma8x8BlkIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (!prev_intra8x8_pred_mode_flag[luma8x8BlkIdx]) | |
rem_intra8x8_pred_mode[luma8x8BlkIdx] = DESC('u(3) | ae(v)') /* C = 2 */ | |
} | |
if (ChromaArrayType != 0) | |
intra_chroma_pred_mode = DESC('ue(v) | ae(v)') /* C = 2 */ | |
} else if (MbPartPredMode(mb_type, 0) != Direct) { | |
if (InCropWindow(CurrMbAddr) && adaptive_motion_prediction_flag) { | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if (MbPartPredMode(mb_type, mbPartIdx) != Pred_L1) | |
motion_prediction_flag_l0[mbPartIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if (MbPartPredMode(mb_type, mbPartIdx) != Pred_L0) | |
motion_prediction_flag_l1[mbPartIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
} | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if ((num_ref_idx_l0_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && MbPartPredMode(mb_type, mbPartIdx) != Pred_L1 && !motion_prediction_flag_l0[mbPartIdx]) | |
ref_idx_l0[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if ((num_ref_idx_l1_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && MbPartPredMode(mb_type, mbPartIdx) != Pred_L0 && !motion_prediction_flag_l1[mbPartIdx]) | |
ref_idx_l1[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if (MbPartPredMode(mb_type, mbPartIdx) != Pred_L1) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l0[mbPartIdx][0][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if (MbPartPredMode(mb_type, mbPartIdx) != Pred_L0) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l1[mbPartIdx][0][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
} | |
} | |
function sub_mb_pred_in_scalable_extension(mb_type) { | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
sub_mb_type[mbPartIdx] = DESC('ue(v) | ae(v)') /* C = 2 */ | |
if (InCropWindow(CurrMbAddr) && adaptive_motion_prediction_flag) { | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (SubMbPredMode(sub_mb_type[mbPartIdx]) != Direct && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L1) | |
motion_prediction_flag_l0[mbPartIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (SubMbPredMode(sub_mb_type[mbPartIdx]) != Direct && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L0) | |
motion_prediction_flag_l1[mbPartIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
} | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if ((num_ref_idx_l0_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && mb_type != P_8x8ref0 && sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L1 && !motion_prediction_flag_l0[mbPartIdx]) | |
ref_idx_l0[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if ((num_ref_idx_l1_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L0 && !motion_prediction_flag_l1[mbPartIdx]) | |
ref_idx_l1[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L1) | |
for (subMbPartIdx = 0; subMbPartIdx < NumSubMbPart(sub_mb_type[mbPartIdx]); subMbPartIdx++) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l0[mbPartIdx][subMbPartIdx][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L0) | |
for (subMbPartIdx = 0; subMbPartIdx < NumSubMbPart(sub_mb_type[mbPartIdx]); subMbPartIdx++) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l1[mbPartIdx][subMbPartIdx][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
} | |
function scalability_info(payloadSize) { | |
temporal_id_nesting_flag = DESC('u(1)') /* C = 5 */ | |
priority_layer_info_present_flag = DESC('u(1)') /* C = 5 */ | |
priority_id_setting_flag = DESC('u(1)') /* C = 5 */ | |
num_layers_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_layers_minus1; i++) { | |
layer_id[i] = DESC('ue(v)') /* C = 5 */ | |
priority_id[i] = DESC('u(6)') /* C = 5 */ | |
discardable_flag[i] = DESC('u(1)') /* C = 5 */ | |
dependency_id[i] = DESC('u(3)') /* C = 5 */ | |
quality_id[i] = DESC('u(4)') /* C = 5 */ | |
temporal_id[i] = DESC('u(3)') /* C = 5 */ | |
sub_pic_layer_flag[i] = DESC('u(1)') /* C = 5 */ | |
sub_region_layer_flag[i] = DESC('u(1)') /* C = 5 */ | |
iroi_division_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
profile_level_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
bitrate_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
frm_rate_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
frm_size_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
layer_dependency_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
parameter_sets_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
bitstream_restriction_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
exact_inter_layer_pred_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (sub_pic_layer_flag[i] || iroi_division_info_present_flag[i]) | |
exact_sample_value_match_flag[i] = DESC('u(1)') /* C = 5 */ | |
layer_conversion_flag[i] = DESC('u(1)') /* C = 5 */ | |
layer_output_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (profile_level_info_present_flag[i]) | |
layer_profile_level_idc[i] = DESC('u(24)') /* C = 5 */ | |
if (bitrate_info_present_flag[i]) { | |
avg_bitrate[i] = DESC('u(16)') /* C = 5 */ | |
max_bitrate_layer[i] = DESC('u(16)') /* C = 5 */ | |
max_bitrate_layer_representation[i] = DESC('u(16)') /* C = 5 */ | |
max_bitrate_calc_window[i] = DESC('u(16)') /* C = 5 */ | |
} | |
if (frm_rate_info_present_flag[i]) { | |
constant_frm_rate_idc[i] = DESC('u(2)') /* C = 5 */ | |
avg_frm_rate[i] = DESC('u(16)') /* C = 5 */ | |
} | |
if (frm_size_info_present_flag[i] || iroi_division_info_present_flag[i]) { | |
frm_width_in_mbs_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
frm_height_in_mbs_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
} | |
if (sub_region_layer_flag[i]) { | |
base_region_layer_id[i] = DESC('ue(v)') /* C = 5 */ | |
dynamic_rect_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (!dynamic_rect_flag[i]) { | |
horizontal_offset[i] = DESC('u(16)') /* C = 5 */ | |
vertical_offset[i] = DESC('u(16)') /* C = 5 */ | |
region_width[i] = DESC('u(16)') /* C = 5 */ | |
region_height[i] = DESC('u(16)') /* C = 5 */ | |
} | |
} | |
if (sub_pic_layer_flag[i]) | |
roi_id[i] = DESC('ue(v)') /* C = 5 */ | |
if (iroi_division_info_present_flag[i]) { | |
iroi_grid_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (iroi_grid_flag[i]) { | |
grid_width_in_mbs_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
grid_height_in_mbs_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
} else { | |
num_rois_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_rois_minus1[i]; j++) { | |
first_mb_in_roi[i][j] = DESC('ue(v)') /* C = 5 */ | |
roi_width_in_mbs_minus1[i][j] = DESC('ue(v)') /* C = 5 */ | |
roi_height_in_mbs_minus1[i][j] = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
} | |
if (layer_dependency_info_present_flag[i]) { | |
num_directly_dependent_layers[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j < num_directly_dependent_layers[i]; j++) | |
directly_dependent_layer_id_delta_minus1[i][j] = DESC('ue(v)') /* C = 5 */ | |
} else | |
layer_dependency_info_src_layer_id_delta[i] = DESC('ue(v)') /* C = 5 */ | |
if (parameter_sets_info_present_flag[i]) { | |
num_seq_parameter_sets[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j < num_seq_parameter_sets[i]; j++) | |
seq_parameter_set_id_delta[i][j] = DESC('ue(v)') /* C = 5 */ | |
num_subset_seq_parameter_sets[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j < num_subset_seq_parameter_sets[i]; j++) | |
subset_seq_parameter_set_id_delta[i][j] = DESC('ue(v)') /* C = 5 */ | |
num_pic_parameter_sets_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_pic_parameter_sets_minus1[i]; j++) | |
pic_parameter_set_id_delta[i][j] = DESC('ue(v)') /* C = 5 */ | |
} else | |
parameter_sets_info_src_layer_id_delta[i] = DESC('ue(v)') /* C = 5 */ | |
if (bitstream_restriction_info_present_flag[i]) { | |
motion_vectors_over_pic_boundaries_flag[i] = DESC('u(1)') /* C = 5 */ | |
max_bytes_per_pic_denom[i] = DESC('ue(v)') /* C = 5 */ | |
max_bits_per_mb_denom[i] = DESC('ue(v)') /* C = 5 */ | |
log2_max_mv_length_horizontal[i] = DESC('ue(v)') /* C = 5 */ | |
log2_max_mv_length_vertical[i] = DESC('ue(v)') /* C = 5 */ | |
max_num_reorder_frames[i] = DESC('ue(v)') /* C = 5 */ | |
max_dec_frame_buffering[i] = DESC('ue(v)') /* C = 5 */ | |
} | |
if (layer_conversion_flag[i]) { | |
conversion_type_idc[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j < 2; j++) { | |
rewriting_info_flag[i][j] = DESC('u(1)') /* C = 5 */ | |
if (rewriting_info_flag[i][j]) { | |
rewriting_profile_level_idc[i][j] = DESC('u(24)') /* C = 5 */ | |
rewriting_avg_bitrate[i][j] = DESC('u(16)') /* C = 5 */ | |
rewriting_max_bitrate[i][j] = DESC('u(16)') /* C = 5 */ | |
} | |
} | |
} | |
} | |
if (priority_layer_info_present_flag) { | |
pr_num_dids_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= pr_num_dids_minus1; i++) { | |
pr_dependency_id[i] = DESC('u(3)') /* C = 5 */ | |
pr_num_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= pr_num_minus1[i]; j++) { | |
pr_id[i][j] = DESC('ue(v)') /* C = 5 */ | |
pr_profile_level_idc[i][j] = DESC('u(24)') /* C = 5 */ | |
pr_avg_bitrate[i][j] = DESC('u(16)') /* C = 5 */ | |
pr_max_bitrate[i][j] = DESC('u(16)') /* C = 5 */ | |
} | |
} | |
} | |
if (priority_id_setting_flag) { | |
PriorityIdSettingUriIdx = 0 | |
do | |
priority_id_setting_uri[PriorityIdSettingUriIdx] = DESC('u(8)') /* C = 5 */ | |
while (priority_id_setting_uri[PriorityIdSettingUriIdx++] != 0) | |
} | |
} | |
function sub_pic_scalable_layer(payloadSize) { | |
layer_id = DESC('ue(v)') /* C = 5 */ | |
} | |
function non_required_layer_rep(payloadSize) { | |
num_info_entries_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_info_entries_minus1; i++) { | |
entry_dependency_id[i] = DESC('u(3)') /* C = 5 */ | |
num_non_required_layer_reps_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_non_required_layer_reps_minus1[i]; j++) { | |
non_required_layer_rep_dependency_id[i][j] = DESC('u(3)') /* C = 5 */ | |
non_required_layer_rep_quality_id[i][j] = DESC('u(4)') /* C = 5 */ | |
} | |
} | |
} | |
function priority_layer_info(payloadSize) { | |
pr_dependency_id = DESC('u(3)') /* C = 5 */ | |
num_priority_ids = DESC('u(4)') /* C = 5 */ | |
for (i = 0; i < num_priority_ids; i++) { | |
alt_priority_id[i] = DESC('u(6)') /* C = 5 */ | |
} | |
} | |
function layers_not_present(payloadSize) { | |
num_layers = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i < num_layers; i++) { | |
layer_id[i] = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
function layer_dependency_change(payloadSize) { | |
num_layers_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_layers_minus1; i++) { | |
layer_id[i] = DESC('ue(v)') /* C = 5 */ | |
layer_dependency_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (layer_dependency_info_present_flag[i]) { | |
num_directly_dependent_layers[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j < num_directly_dependent_layers[i]; j++) | |
directly_dependent_layer_id_delta_minus1[i][j] = DESC('ue(v)') /* C = 5 */ | |
} else { | |
layer_dependency_info_src_layer_id_delta_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
} | |
function scalable_nesting(payloadSize) { | |
all_layer_representations_in_au_flag = DESC('u(1)') /* C = 5 */ | |
if (all_layer_representations_in_au_flag == 0) { | |
num_layer_representations_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_layer_representations_minus1; i++) { | |
sei_dependency_id[i] = DESC('u(3)') /* C = 5 */ | |
sei_quality_id[i] = DESC('u(4)') /* C = 5 */ | |
} | |
sei_temporal_id = DESC('u(3)') /* C = 5 */ | |
} | |
while (!byte_aligned()) | |
sei_nesting_zero_bit /* equal to 0 */ = DESC('f(1)') /* C = 5 */ | |
do | |
sei_message() /* C = 5 */ | |
while (more_rbsp_data()) | |
} | |
function base_layer_temporal_hrd(payloadSize) { | |
num_of_temporal_layers_in_base_layer_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_of_temporal_layers_in_base_layer_minus1; i++) { | |
sei_temporal_id[i] = DESC('u(3)') /* C = 5 */ | |
sei_timing_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (sei_timing_info_present_flag[i]) { | |
sei_num_units_in_tick[i] = DESC('u(32)') /* C = 5 */ | |
sei_time_scale[i] = DESC('u(32)') /* C = 5 */ | |
sei_fixed_frame_rate_flag[i] = DESC('u(1)') /* C = 5 */ | |
} | |
sei_nal_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (sei_nal_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 5 */ | |
sei_vcl_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (sei_vcl_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 5 */ | |
if (sei_nal_hrd_parameters_present_flag[i] || sei_vcl_hrd_parameters_present_flag[i]) | |
sei_low_delay_hrd_flag[i] = DESC('u(1)') /* C = 5 */ | |
sei_pic_struct_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
} | |
} | |
function quality_layer_integrity_check(payloadSize) { | |
num_info_entries_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_info_entries_minus1; i++) { | |
entry_dependency_id[i] = DESC('u(3)') /* C = 5 */ | |
quality_layer_crc[i] = DESC('u(16)') /* C = 5 */ | |
} | |
} | |
function redundant_pic_property(payloadSize) { | |
num_dIds_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_dIds_minus1; i++) { | |
dependency_id[i] = DESC('u(3)') /* C = 5 */ | |
num_qIds_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_qIds_minus1[i]; j++) { | |
quality_id[i][j] = DESC('u(4)') /* C = 5 */ | |
num_redundant_pics_minus1[i][j] = DESC('ue(v)') /* C = 5 */ | |
for (k = 0; k <= num_redundant_pics_minus1[i][j]; k++) { | |
redundant_pic_cnt_minus1[i][j][k] = DESC('ue(v)') /* C = 5 */ | |
pic_match_flag[i][j][k] = DESC('u(1)') /* C = 5 */ | |
if (!pic_match_flag[i][j][k]) { | |
mb_type_match_flag[i][j][k] = DESC('u(1)') /* C = 5 */ | |
motion_match_flag[i][j][k] = DESC('u(1)') /* C = 5 */ | |
residual_match_flag[i][j][k] = DESC('u(1)') /* C = 5 */ | |
intra_samples_match_flag[i][j][k] = DESC('u(1)') /* C = 5 */ | |
} | |
} | |
} | |
} | |
} | |
function tl0_dep_rep_index(payloadSize) { | |
tl0_dep_rep_idx = DESC('u(8)') /* C = 5 */ | |
effective_idr_pic_id = DESC('u(16)') /* C = 5 */ | |
} | |
function tl_switching_point(payloadSize) { | |
delta_frame_num = DESC('se(v)') /* C = 5 */ | |
} | |
function svc_vui_parameters_extension() { | |
vui_ext_num_entries_minus1 = DESC('ue(v)') /* C = 0 */ | |
for (i = 0; i <= vui_ext_num_entries_minus1; i++) { | |
vui_ext_dependency_id[i] = DESC('u(3)') /* C = 0 */ | |
vui_ext_quality_id[i] = DESC('u(4)') /* C = 0 */ | |
vui_ext_temporal_id[i] = DESC('u(3)') /* C = 0 */ | |
vui_ext_timing_info_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (vui_ext_timing_info_present_flag[i]) { | |
vui_ext_num_units_in_tick[i] = DESC('u(32)') /* C = 0 */ | |
vui_ext_time_scale[i] = DESC('u(32)') /* C = 0 */ | |
vui_ext_fixed_frame_rate_flag[i] = DESC('u(1)') /* C = 0 */ | |
} | |
vui_ext_nal_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (vui_ext_nal_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 0 */ | |
vui_ext_vcl_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (vui_ext_vcl_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 0 */ | |
if (vui_ext_nal_hrd_parameters_present_flag[i] || vui_ext_vcl_hrd_parameters_present_flag[i]) | |
vui_ext_low_delay_hrd_flag[i] = DESC('u(1)') /* C = 0 */ | |
vui_ext_pic_struct_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
} | |
} | |
function nal_unit_header_mvc_extension() { | |
non_idr_flag = DESC('u(1)') /* C = All */ | |
priority_id = DESC('u(6)') /* C = All */ | |
view_id = DESC('u(10)') /* C = All */ | |
temporal_id = DESC('u(3)') /* C = All */ | |
anchor_pic_flag = DESC('u(1)') /* C = All */ | |
inter_view_flag = DESC('u(1)') /* C = All */ | |
reserved_one_bit = DESC('u(1)') /* C = All */ | |
} | |
function seq_parameter_set_mvc_extension() { | |
num_views_minus1 = DESC('ue(v)') /* C = 0 */ | |
for (i = 0; i <= num_views_minus1; i++) | |
view_id[i] = DESC('ue(v)') /* C = 0 */ | |
for (i = 1; i <= num_views_minus1; i++) { | |
num_anchor_refs_l0[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_anchor_refs_l0[i]; j++) | |
anchor_ref_l0[i][j] = DESC('ue(v)') /* C = 0 */ | |
num_anchor_refs_l1[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_anchor_refs_l1[i]; j++) | |
anchor_ref_l1[i][j] = DESC('ue(v)') /* C = 0 */ | |
} | |
for (i = 1; i <= num_views_minus1; i++) { | |
num_non_anchor_refs_l0[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_non_anchor_refs_l0[i]; j++) | |
non_anchor_ref_l0[i][j] = DESC('ue(v)') /* C = 0 */ | |
num_non_anchor_refs_l1[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_non_anchor_refs_l1[i]; j++) | |
non_anchor_ref_l1[i][j] = DESC('ue(v)') /* C = 0 */ | |
} | |
num_level_values_signalled_minus1 = DESC('ue(v)') /* C = 0 */ | |
for (i = 0; i <= num_level_values_signalled_minus1; i++) { | |
level_idc[i] = DESC('u(8)') /* C = 0 */ | |
num_applicable_ops_minus1[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j <= num_applicable_ops_minus1[i]; j++) { | |
applicable_op_temporal_id[i][j] = DESC('u(3)') /* C = 0 */ | |
applicable_op_num_target_views_minus1[i][j] = DESC('ue(v)') /* C = 0 */ | |
for (k = 0; k <= applicable_op_num_target_views_minus1[i][j]; k++) | |
applicable_op_target_view_id[i][j][k] = DESC('ue(v)') /* C = 0 */ | |
applicable_op_num_views_minus1[i][j] = DESC('ue(v)') /* C = 0 */ | |
} | |
} | |
if (profile_idc == 134) { | |
mfc_format_idc = DESC('u(6)') /* C = 0 */ | |
if (mfc_format_idc == 0 || mfc_format_idc == 1) { | |
default_grid_position_flag = DESC('u(1)') /* C = 0 */ | |
if (!default_grid_position_flag) { | |
view0_grid_position_x = DESC('u(4)') /* C = 0 */ | |
view0_grid_position_y = DESC('u(4)') /* C = 0 */ | |
view1_grid_position_x = DESC('u(4)') /* C = 0 */ | |
view1_grid_position_y = DESC('u(4)') /* C = 0 */ | |
} | |
} | |
rpu_filter_enabled_flag = DESC('u(1)') /* C = 0 */ | |
if (!frame_mbs_only_flag) | |
rpu_field_processing_flag = DESC('u(1)') /* C = 0 */ | |
} | |
} | |
function ref_pic_list_mvc_modification() { | |
if (slice_type % 5 != 2 && slice_type % 5 != 4) { | |
ref_pic_list_modification_flag_l0 = DESC('u(1)') /* C = 2 */ | |
if (ref_pic_list_modification_flag_l0) | |
do { | |
modification_of_pic_nums_idc = DESC('ue(v)') /* C = 2 */ | |
if (modification_of_pic_nums_idc == 0 || modification_of_pic_nums_idc == 1) | |
abs_diff_pic_num_minus1 = DESC('ue(v)') /* C = 2 */ | |
else if (modification_of_pic_nums_idc == 2) | |
long_term_pic_num = DESC('ue(v)') /* C = 2 */ | |
else if (modification_of_pic_nums_idc == 4 || modification_of_pic_nums_idc == 5) | |
abs_diff_view_idx_minus1 = DESC('ue(v)') /* C = 2 */ | |
} while (modification_of_pic_nums_idc != 3) | |
} | |
if (slice_type % 5 == 1) { | |
ref_pic_list_modification_flag_l1 = DESC('u(1)') /* C = 2 */ | |
if (ref_pic_list_modification_flag_l1) | |
do { | |
modification_of_pic_nums_idc = DESC('ue(v)') /* C = 2 */ | |
if (modification_of_pic_nums_idc == 0 || modification_of_pic_nums_idc == 1) | |
abs_diff_pic_num_minus1 = DESC('ue(v)') /* C = 2 */ | |
else if (modification_of_pic_nums_idc == 2) | |
long_term_pic_num = DESC('ue(v)') /* C = 2 */ | |
else if (modification_of_pic_nums_idc == 4 || modification_of_pic_nums_idc == 5) | |
abs_diff_view_idx_minus1 = DESC('ue(v)') /* C = 2 */ | |
} while (modification_of_pic_nums_idc != 3) | |
} | |
} | |
function parallel_decoding_info(payloadSize) { | |
seq_parameter_set_id = DESC('ue(v)') /* C = 5 */ | |
for (i = 1; i <= num_views_minus1; i++) { | |
if (anchor_pic_flag) { | |
for (j = 0; j <= num_anchor_refs_l0[i]; j++) | |
pdi_init_delay_anchor_minus2_l0[i][j] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_anchor_refs_l1[i]; j++) | |
pdi_init_delay_anchor_minus2_l1[i][j] = DESC('ue(v)') /* C = 5 */ | |
} | |
else { | |
for (j = 0; j <= num_non_anchor_refs_l0[i]; j++) | |
pdi_init_delay_non_anchor_minus2_l0[i][j] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_non_anchor_refs_l1[i]; j++) | |
pdi_init_delay_non_anchor_minus2_l1[i][j] = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
} | |
function mvc_scalable_nesting(payloadSize) { | |
operation_point_flag = DESC('u(1)') /* C = 5 */ | |
if (!operation_point_flag) { | |
all_view_components_in_au_flag = DESC('u(1)') /* C = 5 */ | |
if (!all_view_components_in_au_flag) { | |
num_view_components_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_view_components_minus1; i++) | |
sei_view_id[i] = DESC('u(10)') /* C = 5 */ | |
} | |
} else { | |
num_view_components_op_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_view_components_op_minus1; i++) | |
sei_op_view_id[i] = DESC('u(10)') /* C = 5 */ | |
sei_op_temporal_id = DESC('u(3)') /* C = 5 */ | |
} | |
while (!byte_aligned()) | |
sei_nesting_zero_bit /* equal to 0 */ = DESC('f(1)') /* C = 5 */ | |
sei_message() /* C = 5 */ | |
} | |
function view_scalability_info(payloadSize) { | |
num_operation_points_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_operation_points_minus1; i++) { | |
operation_point_id[i] = DESC('ue(v)') /* C = 5 */ | |
priority_id[i] = DESC('u(5)') /* C = 5 */ | |
temporal_id[i] = DESC('u(3)') /* C = 5 */ | |
num_target_output_views_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_target_output_views_minus1[i]; j++) | |
view_id[i][j] = DESC('ue(v)') /* C = 5 */ | |
profile_level_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
bitrate_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
frm_rate_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (!num_target_output_views_minus1[i]) | |
view_dependency_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
parameter_sets_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
bitstream_restriction_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (profile_level_info_present_flag[i]) | |
op_profile_level_idc[i] = DESC('u(24)') /* C = 5 */ | |
if (bitrate_info_present_flag[i]) { | |
avg_bitrate[i] = DESC('u(16)') /* C = 5 */ | |
max_bitrate[i] = DESC('u(16)') /* C = 5 */ | |
max_bitrate_calc_window[i] = DESC('u(16)') /* C = 5 */ | |
} | |
if (frm_rate_info_present_flag[i]) { | |
constant_frm_rate_idc[i] = DESC('u(2)') /* C = 5 */ | |
avg_frm_rate[i] = DESC('u(16)') /* C = 5 */ | |
} | |
if (view_dependency_info_present_flag[i]) { | |
num_directly_dependent_views[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j < num_directly_dependent_views[i]; j++) | |
directly_dependent_view_id[i][j] = DESC('ue(v)') /* C = 5 */ | |
} else | |
view_dependency_info_src_op_id[i] = DESC('ue(v)') /* C = 5 */ | |
if (parameter_sets_info_present_flag[i]) { | |
num_seq_parameter_sets[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j < num_seq_parameter_sets[i]; j++) | |
seq_parameter_set_id_delta[i][j] = DESC('ue(v)') /* C = 5 */ | |
num_subset_seq_parameter_sets[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j < num_subset_seq_parameter_sets[i]; j++) | |
subset_seq_parameter_set_id_delta[i][j] = DESC('ue(v)') /* C = 5 */ | |
num_pic_parameter_sets_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_pic_parameter_sets_minus1[i]; j++) | |
pic_parameter_set_id_delta[i][j] = DESC('ue(v)') /* C = 5 */ | |
} else | |
parameter_sets_info_src_op_id[i] = DESC('ue(v)') /* C = 5 */ | |
if (bitstream_restriction_info_present_flag[i]) { | |
motion_vectors_over_pic_boundaries_flag[i] = DESC('u(1)') /* C = 5 */ | |
max_bytes_per_pic_denom[i] = DESC('ue(v)') /* C = 5 */ | |
max_bits_per_mb_denom[i] = DESC('ue(v)') /* C = 5 */ | |
log2_max_mv_length_horizontal[i] = DESC('ue(v)') /* C = 5 */ | |
log2_max_mv_length_vertical[i] = DESC('ue(v)') /* C = 5 */ | |
max_num_reorder_frames[i] = DESC('ue(v)') /* C = 5 */ | |
max_dec_frame_buffering[i] = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
} | |
function multiview_scene_info(payloadSize) { | |
max_disparity = DESC('ue(v)') /* C = 5 */ | |
} | |
function multiview_acquisition_info(payloadSize) { | |
num_views_minus1 = DESC('ue(v)') | |
intrinsic_param_flag = DESC('u(1)') /* C = 5 */ | |
extrinsic_param_flag = DESC('u(1)') /* C = 5 */ | |
if (instrinsic_param_flag) { | |
intrinsic_params_equal_flag = DESC('u(1)') /* C = 5 */ | |
prec_focal_length = DESC('ue(v)') /* C = 5 */ | |
prec_principal_point = DESC('ue(v)') /* C = 5 */ | |
prec_skew_factor = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= intrinsic_params_equal_flag ? 0 : num_views_minus1; i++) { | |
sign_focal_length_x[i] = DESC('u(1)') /* C = 5 */ | |
exponent_focal_length_x[i] = DESC('u(6)') /* C = 5 */ | |
mantissa_focal_length_x[i] = DESC('u(v)') /* C = 5 */ | |
sign_focal_length_y[i] = DESC('u(1)') /* C = 5 */ | |
exponent_focal_length_y[i] = DESC('u(6)') /* C = 5 */ | |
mantissa_focal_length_y[i] = DESC('u(v)') /* C = 5 */ | |
sign_principal_point_x[i] = DESC('u(1)') /* C = 5 */ | |
exponent_principal_point_x[i] = DESC('u(6)') /* C = 5 */ | |
mantissa_principal_point_x[i] = DESC('u(v)') /* C = 5 */ | |
sign_principal_point_y[i] = DESC('u(1)') /* C = 5 */ | |
exponent_principal_point_y[i] = DESC('u(6)') /* C = 5 */ | |
mantissa_principal_point_y[i] = DESC('u(v)') /* C = 5 */ | |
sign_skew_factor[i] = DESC('u(1)') /* C = 5 */ | |
exponent_skew_factor[i] = DESC('u(6)') /* C = 5 */ | |
mantissa_skew_factor[i] = DESC('u(v)') /* C = 5 */ | |
} | |
} | |
if (extrinsic_param_flag) { | |
prec_rotation_param = DESC('ue(v)') /* C = 5 */ | |
prec_translation_param = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_views_minus1; i++) { | |
for (j = 1; j <= 3; j++) { /* row */ | |
for (k = 1; k <= 3; k++) { /* column */ | |
sign_r[i][j][k] = DESC('u(1)') /* C = 5 */ | |
exponent_r[i][j][k] = DESC('u(6)') /* C = 5 */ | |
mantissa_r[i][j][k] = DESC('u(v)') /* C = 5 */ | |
} | |
sign_t[i][j] = DESC('u(1)') /* C = 5 */ | |
exponent_t[i][j] = DESC('u(6)') /* C = 5 */ | |
mantissa_t[i][j] = DESC('u(v)') /* C = 5 */ | |
} | |
} | |
} | |
} | |
function non_required_view_component(payloadSize) { | |
num_info_entries_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_info_entries_minus1; i++) { | |
view_order_index[i] = DESC('ue(v)') /* C = 5 */ | |
num_non_required_view_components_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_non_required_view_components_minus1[i]; j++) | |
index_delta_minus1[i][j] = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
function view_dependency_change(payloadSize) { | |
seq_parameter_set_id = DESC('ue(v)') /* C = 5 */ | |
anchor_update_flag = DESC('u(1)') /* C = 5 */ | |
non_anchor_update_flag = DESC('u(1)') /* C = 5 */ | |
if (anchor_update_flag) | |
for (i = 1; i <= num_views_minus1; i++) { | |
for (j = 0; j < num_anchor_refs_l0[i]; j++) | |
anchor_ref_l0_flag[i][j] = DESC('u(1)') /* C = 5 */ | |
for (j = 0; j < num_anchor_refs_l1[i]; j++) | |
anchor_ref_l1_flag[i][j] = DESC('u(1)') /* C = 5 */ | |
} | |
if (non_anchor_update_flag) | |
for (i = 1; i <= num_views_minus1; i++) { | |
for (j = 0; j < num_non_anchor_refs_l0[i]; j++) | |
non_anchor_ref_l0_flag[i][j] = DESC('u(1)') /* C = 5 */ | |
for (j = 0; j < num_non_anchor_refs_l1[i]; j++) | |
non_anchor_ref_l1_flag[i][j] = DESC('u(1)') /* C = 5 */ | |
} | |
} | |
function operation_point_not_present(payloadSize) { | |
num_operation_points = DESC('ue(v)') /* C = 5 */ | |
for (k = 0; k < num_operation_points; k++) | |
operation_point_not_present_id[k] = DESC('ue(v)') /* C = 5 */ | |
} | |
function base_view_temporal_hrd(payloadSize) { | |
num_of_temporal_layers_in_base_view_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_of_temporal_layers_in_base_view_minus1; i++) { | |
sei_mvc_temporal_id[i] = DESC('u(3)') /* C = 5 */ | |
sei_mvc_timing_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (sei_mvc_timing_info_present_flag[i]) { | |
sei_mvc_num_units_in_tick[i] = DESC('u(32)') /* C = 5 */ | |
sei_mvc_time_scale[i] = DESC('u(32)') /* C = 5 */ | |
sei_mvc_fixed_frame_rate_flag[i] = DESC('u(1)') /* C = 5 */ | |
} | |
sei_mvc_nal_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (sei_mvc_nal_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 5 */ | |
sei_mvc_vcl_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (sei_mvc_vcl_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 5 */ | |
if (sei_mvc_nal_hrd_parameters_present_flag[i] || sei_mvc_vcl_hrd_parameters_present_flag[i]) | |
sei_mvc_low_delay_hrd_flag[i] = DESC('u(1)') /* C = 5 */ | |
sei_mvc_pic_struct_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
} | |
} | |
function multiview_view_position(payloadSize) { | |
num_views_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_views_minus1; i++) | |
view_position[i] = DESC('ue(v)') /* C = 5 */ | |
multiview_view_position_extension_flag = DESC('u(1)') /* C = 5 */ | |
} | |
function mvc_vui_parameters_extension() { | |
vui_mvc_num_ops_minus1 = DESC('ue(v)') /* C = 0 */ | |
for (i = 0; i <= vui_mvc_num_ops_minus1; i++) { | |
vui_mvc_temporal_id[i] = DESC('u(3)') /* C = 0 */ | |
vui_mvc_num_target_output_views_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= vui_mvc_num_target_output_views_minus1[i]; j++) | |
vui_mvc_view_id[i][j] = DESC('ue(v)') /* C = 5 */ | |
vui_mvc_timing_info_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (vui_mvc_timing_info_present_flag[i]) { | |
vui_mvc_num_units_in_tick[i] = DESC('u(32)') /* C = 0 */ | |
vui_mvc_time_scale[i] = DESC('u(32)') /* C = 0 */ | |
vui_mvc_fixed_frame_rate_flag[i] = DESC('u(1)') /* C = 0 */ | |
} | |
vui_mvc_nal_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (vui_mvc_nal_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 0 */ | |
vui_mvc_vcl_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (vui_mvc_vcl_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 0 */ | |
if (vui_mvc_nal_hrd_parameters_present_flag[i] || vui_mvc_vcl_hrd_parameters_present_flag[i]) | |
vui_mvc_low_delay_hrd_flag[i] = DESC('u(1)') /* C = 0 */ | |
vui_mvc_pic_struct_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
} | |
} | |
function seq_parameter_set_mvcd_extension() { | |
num_views_minus1 = DESC('ue(v)') /* C = 0 */ | |
for (i = 0, NumDepthViews = 0; i <= num_views_minus1; i++) { | |
view_id[i] = DESC('ue(v)') /* C = 0 */ | |
depth_view_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
DepthViewId[NumDepthViews] = view_id[i] | |
NumDepthViews += depth_view_present_flag[i] | |
texture_view_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
} | |
for (i = 1; i <= num_views_minus1; i++) | |
if (depth_view_present_flag[i]) { | |
num_anchor_refs_l0[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_anchor_refs_l0[i]; j++) | |
anchor_ref_l0[i][j] = DESC('ue(v)') /* C = 0 */ | |
num_anchor_refs_l1[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_anchor_refs_l1[i]; j++) | |
anchor_ref_l1[i][j] = DESC('ue(v)') /* C = 0 */ | |
} | |
for (i = 1; i <= num_views_minus1; i++) | |
if (depth_view_present_flag[i]) { | |
num_non_anchor_refs_l0[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_non_anchor_refs_l0[i]; j++) | |
non_anchor_ref_l0[i][j] = DESC('ue(v)') /* C = 0 */ | |
num_non_anchor_refs_l1[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_non_anchor_refs_l1[i]; j++) | |
non_anchor_ref_l1[i][j] = DESC('ue(v)') /* C = 0 */ | |
} | |
num_level_values_signalled_minus1 = DESC('ue(v)') /* C = 0 */ | |
for (i = 0; i <= num_level_values_signalled_minus1; i++) { | |
level_idc[i] = DESC('u(8)') /* C = 0 */ | |
num_applicable_ops_minus1[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j <= num_applicable_ops_minus1[i]; j++) { | |
applicable_op_temporal_id[i][j] = DESC('u(3)') /* C = 0 */ | |
applicable_op_num_target_views_minus1[i][j] = DESC('ue(v)') /* C = 0 */ | |
for (k = 0; k <= applicable_op_num_target_views_minus1[i][j]; k++) { | |
applicable_op_target_view_id[i][j][k] = DESC('ue(v)') /* C = 0 */ | |
applicable_op_depth_flag[i][j][k] = DESC('u(1)') /* C = 0 */ | |
applicable_op_texture_flag[i][j][k] = DESC('u(1)') /* C = 0 */ | |
} | |
applicable_op_num_texture_views_minus1[i][j] = DESC('ue(v)') /* C = 0 */ | |
applicable_op_num_depth_views[i][j] = DESC('ue(v)') /* C = 0 */ | |
} | |
} | |
mvcd_vui_parameters_present_flag = DESC('u(1)') /* C = 0 */ | |
if (mvcd_vui_parameters_present_flag == 1) | |
mvcd_vui_parameters_extension() | |
texture_vui_parameters_present_flag = DESC('u(1)') /* C = 0 */ | |
if (texture_vui_parameters_present_flag == 1) | |
mvc_vui_parameters_extension() /* C = 0 */ | |
} | |
function mvcd_view_scalability_info(payloadSize) { | |
num_operation_points_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_operation_points_minus1; i++) { | |
operation_point_id[i] = DESC('ue(v)') /* C = 5 */ | |
priority_id[i] = DESC('u(5)') /* C = 5 */ | |
temporal_id[i] = DESC('u(3)') /* C = 5 */ | |
num_target_output_views_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_target_output_views_minus1[i]; j++) { | |
view_id[i][j] = DESC('ue(v)') /* C = 5 */ | |
mvcd_op_view_info() | |
} | |
profile_level_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
bitrate_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
frm_rate_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (!num_target_output_views_minus1[i]) | |
view_dependency_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
parameter_sets_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
bitstream_restriction_info_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (profile_level_info_present_flag[i]) | |
op_profile_level_idc[i] = DESC('u(24)') /* C = 5 */ | |
if (bitrate_info_present_flag[i]) { | |
avg_bitrate[i] = DESC('u(16)') /* C = 5 */ | |
max_bitrate[i] = DESC('u(16)') /* C = 5 */ | |
max_bitrate_calc_window[i] = DESC('u(16)') /* C = 5 */ | |
} | |
if (frm_rate_info_present_flag[i]) { | |
constant_frm_rate_idc[i] = DESC('u(2)') /* C = 5 */ | |
avg_frm_rate[i] = DESC('u(16)') /* C = 5 */ | |
} | |
if (view_dependency_info_present_flag[i]) { | |
num_directly_dependent_views[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j < num_directly_dependent_views[i]; j++) { | |
directly_dependent_view_id[i][j] = DESC('ue(v)') /* C = 5 */ | |
mvcd_op_view_info() | |
} | |
} else | |
view_dependency_info_src_op_id[i] = DESC('ue(v)') /* C = 5 */ | |
if (parameter_sets_info_present_flag[i]) { | |
num_seq_parameter_set_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_seq_parameter_set_minus1[i]; j++) | |
seq_parameter_set_id_delta[i][j] = DESC('ue(v)') /* C = 5 */ | |
num_subset_seq_parameter_set_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_subset_seq_parameter_set_minus1[i]; j++) | |
subset_seq_parameter_set_id_delta[i][j] = DESC('ue(v)') /* C = 5 */ | |
num_pic_parameter_set_minus1[i] = DESC('ue(v)') /* C = 5 */ | |
for (j = 0; j <= num_init_pic_parameter_set_minus1[i]; j++) | |
pic_parameter_set_id_delta[i][j] = DESC('ue(v)') /* C = 5 */ | |
} else | |
parameter_sets_info_src_op_id[i] = DESC('ue(v)') /* C = 5 */ | |
if (bitstream_restriction_info_present_flag[i]) { | |
motion_vectors_over_pic_boundaries_flag[i] = DESC('u(1)') /* C = 5 */ | |
max_bytes_per_pic_denom[i] = DESC('ue(v)') /* C = 5 */ | |
max_bits_per_mb_denom[i] = DESC('ue(v)') /* C = 5 */ | |
log2_max_mv_length_horizontal[i] = DESC('ue(v)') /* C = 5 */ | |
log2_max_mv_length_vertical[i] = DESC('ue(v)') /* C = 5 */ | |
num_reorder_frames[i] = DESC('ue(v)') /* C = 5 */ | |
max_dec_frame_buffering[i] = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
} | |
function mvcd_op_view_info() { | |
view_info_depth_view_present_flag = DESC('u(1)') /* C = 5 */ | |
if (view_info_depth_view_present_flag) | |
mvcd_depth_view_flag = DESC('u(1)') /* C = 5 */ | |
view_info_texture_view_present_flag = DESC('u(1)') /* C = 5 */ | |
if (view_info_texture_view_present_flag) | |
mvcd_texture_view_flag = DESC('u(1)') /* C = 5 */ | |
} | |
function mvcd_scalable_nesting(payloadSize) { | |
operation_point_flag = DESC('u(1)') /* C = 5 */ | |
if (!operation_point_flag) { | |
all_view_components_in_au_flag = DESC('u(1)') /* C = 5 */ | |
if (!all_view_components_in_au_flag) { | |
num_view_components_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_view_components_minus1; i++) { | |
sei_view_id[i] = DESC('u(10)') /* C = 5 */ | |
sei_view_applicability_flag[i] = DESC('u(1)') /* C = 5 */ | |
} | |
} | |
} else { | |
sei_op_texture_only_flag = DESC('u(1)') /* C = 5 */ | |
num_view_components_op_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_view_components_op_minus1; i++) { | |
sei_op_view_id[i] = DESC('u(10)') /* C = 5 */ | |
if (!sei_op_texture_only_flag) { | |
sei_op_depth_flag[i] = DESC('u(1)') | |
sei_op_texture_flag[i] = DESC('u(1)') | |
} | |
} | |
sei_op_temporal_id = DESC('u(3)') /* C = 5 */ | |
} | |
while (!byte_aligned()) | |
sei_nesting_zero_bit /* equal to 0 */ = DESC('f(1)') /* C = 5 */ | |
sei_message() /* C = 5 */ | |
} | |
function depth_representation_info(payloadSize) { | |
all_views_equal_flag = DESC('u(1)') /* C = 5 */ | |
if (all_views_equal_flag == 0) { | |
num_views_minus1 = DESC('ue(v)') /* C = 5 */ | |
numViews = num_views_minus1 + 1 | |
} else | |
numViews = 1 | |
z_near_flag = DESC('u(1)') /* C = 5 */ | |
z_far_flag = DESC('u(1)') /* C = 5 */ | |
if (z_near_flag || z_far_flag) { | |
z_axis_equal_flag = DESC('u(1)') /* C = 5 */ | |
if (z_axis_equal_flag) | |
common_z_axis_reference_view = DESC('ue(v)') /* C = 5 */ | |
} | |
d_min_flag = DESC('u(1)') /* C = 5 */ | |
d_max_flag = DESC('u(1)') /* C = 5 */ | |
depth_representation_type = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i < numViews; i++) { | |
depth_info_view_id[i] = DESC('ue(v)') /* C = 5 */ | |
if ((z_near_flag || z_far_flag) && (z_axis_equal_flag == 0)) | |
z_axis_reference_view[i] = DESC('ue(v)') /* C = 5 */ | |
if (d_min_flag || d_max_flag) | |
disparity_reference_view[i] = DESC('ue(v)') /* C = 5 */ | |
if (z_near_flag) | |
depth_representation_sei_element(ZNearSign, ZNearExp, ZNearMantissa, ZNearManLen) | |
if (z_far_flag) | |
depth_representation_sei_element(ZFarSign, ZFarExp, ZFarMantissa, ZFarManLen) | |
if (d_min_flag) | |
depth_representation_sei_element(DMinSign, DMinExp, DMinMantissa, DMinManLen) | |
if (d_max_flag) | |
depth_representation_sei_element(DMaxSign, DMaxExp, DMaxMantissa, DMaxManLen) | |
} | |
if (depth_representation_type == 3) { | |
depth_nonlinear_representation_num_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 1; i <= depth_nonlinear_representation_num_minus1 + 1; i++) | |
depth_nonlinear_representation_model[i] = DESC('ue(v)') /* C = 5 */ | |
} | |
} | |
function depth_representation_sei_element(outSign, outExp, outMantissa, outManLen) { | |
da_sign_flag = DESC('u(1)') /* C = 5 */ | |
da_exponent = DESC('u(7)') /* C = 5 */ | |
da_mantissa_len_minus1 = DESC('u(5)') /* C = 5 */ | |
da_mantissa = DESC('u(v)') /* C = 5 */ | |
} | |
function three_dimensional_reference_displays_info(payloadSize) { | |
prec_ref_baseline = DESC('ue(v)') /* C = 5 */ | |
prec_ref_display_width = DESC('ue(v)') /* C = 5 */ | |
ref_viewing_distance_flag = DESC('u(1)') /* C = 5 */ | |
if (ref_viewing_distance_flag) | |
prec_ref_viewing_dist = DESC('ue(v)') /* C = 5 */ | |
num_ref_displays_minus1 = DESC('ue(v)') /* C = 5 */ | |
numRefDisplays = num_ref_displays_minus1 + 1 | |
for (i = 0; i < numRefDisplays; i++) { | |
exponent_ref_baseline[i] = DESC('u(6)') /* C = 5 */ | |
mantissa_ref_baseline[i] = DESC('u(v)') /* C = 5 */ | |
exponent_ref_display_width[i] = DESC('u(6)') /* C = 5 */ | |
mantissa_ref_display_width[i] = DESC('u(v)') /* C = 5 */ | |
if (ref_viewing_distance_flag) { | |
exponent_ref_viewing_distance[i] = DESC('u(6)') /* C = 5 */ | |
mantissa_ref_viewing_distance[i] = DESC('u(v)') /* C = 5 */ | |
} | |
additional_shift_present_flag[i] = DESC('u(1)') /* C = 5 */ | |
if (additional_shift_present[i]) | |
num_sample_shift_plus512[i] = DESC('u(10)') /* C = 5 */ | |
} | |
three_dimensional_reference_displays_extension_flag = DESC('u(1)') /* C = 5 */ | |
} | |
function depth_timing(payloadSize) { | |
per_view_depth_timing_flag = DESC('u(1)') /* C = 5 */ | |
if (per_view_depth_timing_flag) | |
for (i = 0; i < NumDepthViews; i++) | |
depth_timing_offset() | |
else | |
depth_timing_offset() | |
} | |
function depth_timing_offset() { | |
offset_len_minus1 = DESC('u(5)') /* C = 5 */ | |
depth_disp_delay_offset_fp = DESC('u(v)') /* C = 5 */ | |
depth_disp_delay_offset_dp = DESC('u(6)') /* C = 5 */ | |
} | |
function alternative_depth_info(payloadSize) { | |
depth_type = DESC('ue(v)') /* C = 5 */ | |
if (depth_type == 0) { | |
num_constituent_views_gvd_minus1 = DESC('ue(v)') /* C = 5 */ | |
depth_present_gvd_flag = DESC('u(1)') /* C = 5 */ | |
z_gvd_flag = DESC('u(1)') /* C = 5 */ | |
intrinsic_param_gvd_flag = DESC('u(1)') /* C = 5 */ | |
rotation_gvd_flag = DESC('u(1)') /* C = 5 */ | |
translation_gvd_flag = DESC('u(1)') /* C = 5 */ | |
if (z_gvd_flag) | |
for (i = 0; i <= num_constituent_views_gvd_minus1 + 1; i++) { | |
sign_gvd_z_near_flag[i] = DESC('u(1)') /* C = 5 */ | |
exp_gvd_z_near[i] = DESC('u(7)') /* C = 5 */ | |
man_len_gvd_z_near_minus1[i] = DESC('u(5)') /* C = 5 */ | |
man_gvd_z_near[i] = DESC('u(v)') /* C = 5 */ | |
sign_gvd_z_far_flag[i] = DESC('u(1)') /* C = 5 */ | |
exp_gvd_z_far[i] = DESC('u(7)') /* C = 5 */ | |
man_len_gvd_z_far_minus1[i] = DESC('u(5)') /* C = 5 */ | |
man_gvd_z_far[i] = DESC('u(v)') /* C = 5 */ | |
} | |
if (intrinsic_param_gvd_flag) { | |
prec_gvd_focal_length = DESC('ue(v)') /* C = 5 */ | |
prec_gvd_principal_point = DESC('ue(v)') /* C = 5 */ | |
} | |
if (rotation_gvd_flag) | |
prec_gvd_rotation_param = DESC('ue(v)') /* C = 5 */ | |
if (translation_gvd_flag) | |
prec_gvd_translation_param = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_constituent_views_gvd_minus1 + 1; i++) { | |
if (intrinsic_param_gvd_flag) { | |
sign_gvd_focal_length_x[i] = DESC('u(1)') /* C = 5 */ | |
exp_gvd_focal_length_x[i] = DESC('u(6)') /* C = 5 */ | |
man_gvd_focal_length_x[i] = DESC('u(v)') /* C = 5 */ | |
sign_gvd_focal_length_y[i] = DESC('u(1)') /* C = 5 */ | |
exp_gvd_focal_length_y[i] = DESC('u(6)') /* C = 5 */ | |
man_gvd_focal_length_y[i] = DESC('u(v)') /* C = 5 */ | |
sign_gvd_principal_point_x[i] = DESC('u(1)') /* C = 5 */ | |
exp_gvd_principal_point_x[i] = DESC('u(6)') /* C = 5 */ | |
man_gvd_principal_point_x[i] = DESC('u(v)') /* C = 5 */ | |
sign_gvd_principal_point_y[i] = DESC('u(1)') /* C = 5 */ | |
exp_gvd_principal_point_y[i] = DESC('u(6)') /* C = 5 */ | |
man_gvd_principal_point_y[i] = DESC('u(v)') /* C = 5 */ | |
} | |
if (rotation_gvd_flag) | |
for (j = 0; j < 3; j++) /* row */ | |
for (k = 0; k < 3; k++) { /* column */ | |
sign_gvd_r[i][j][k] = DESC('u(1)') /* C = 5 */ | |
exp_gvd_r[i][j][k] = DESC('u(6)') /* C = 5 */ | |
man_gvd_r[i][j][k] = DESC('u(v)') /* C = 5 */ | |
} | |
if (translation_gvd_flag) { | |
sign_gvd_t_x[i] = DESC('u(1)') /* C = 5 */ | |
exp_gvd_t_x[i] = DESC('u(6)') /* C = 5 */ | |
man_gvd_t_x[i] = DESC('u(v)') /* C = 5 */ | |
} | |
} | |
} | |
} | |
function depth_sampling_info(payloadSize) { | |
dttsr_x_mul = DESC('u(16)') /* C = 5 */ | |
dttsr_x_dp = DESC('u(4)') /* C = 5 */ | |
dttsr_y_mul = DESC('u(16)') /* C = 5 */ | |
dttsr_y_dp = DESC('u(4)') /* C = 5 */ | |
per_view_depth_grid_pos_flag = DESC('u(1)') /* C = 5 */ | |
if (per_view_depth_grid_pos_flag) { | |
num_video_plus_depth_views_minus1 = DESC('ue(v)') /* C = 5 */ | |
for (i = 0; i <= num_video_plus_depth_views_minus1; i++) { | |
depth_grid_view_id[i] = DESC('ue(v)') /* C = 5 */ | |
depth_grid_position() | |
} | |
} else | |
depth_grid_position() | |
} | |
function depth_grid_position() { | |
depth_grid_pos_x_fp = DESC('u(20)') /* C = 5 */ | |
depth_grid_pos_x_dp = DESC('u(4)') /* C = 5 */ | |
depth_grid_pos_x_sign_flag = DESC('u(1)') /* C = 5 */ | |
depth_grid_pos_y_fp = DESC('u(20)') /* C = 5 */ | |
depth_grid_pos_y_dp = DESC('u(4)') /* C = 5 */ | |
depth_grid_pos_y_sign_flag = DESC('u(1)') /* C = 5 */ | |
} | |
function mvcd_vui_parameters_extension() { | |
vui_mvcd_num_ops_minus1 = DESC('ue(v)') /* C = 0 */ | |
for (i = 0; i <= vui_mvcd_num_ops_minus1; i++) { | |
vui_mvcd_temporal_id[i] = DESC('u(3)') /* C = 0 */ | |
vui_mvcd_num_target_output_views_minus1[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j <= vui_mvcd_num_target_output_views_minus1[i]; j++) { | |
vui_mvcd_view_id[i][j] = DESC('ue(v)') /* C = 0 */ | |
vui_mvcd_depth_flag[i][j] = DESC('u(1)') /* C = 0 */ | |
vui_mvcd_texture_flag[i][j] = DESC('u(1)') /* C = 0 */ | |
} | |
vui_mvcd_timing_info_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (vui_mvcd_timing_info_present_flag[i]) { | |
vui_mvcd_num_units_in_tick[i] = DESC('u(32)') /* C = 0 */ | |
vui_mvcd_time_scale[i] = DESC('u(32)') /* C = 0 */ | |
vui_mvcd_fixed_frame_rate_flag[i] = DESC('u(1)') /* C = 0 */ | |
} | |
vui_mvcd_nal_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (vui_mvcd_nal_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 0 */ | |
vui_mvcd_vcl_hrd_parameters_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
if (vui_mvcd_vcl_hrd_parameters_present_flag[i]) | |
hrd_parameters() /* C = 0 */ | |
if (vui_mvcd_nal_hrd_parameters_present_flag[i] || vui_mvcd_vcl_hrd_parameters_present_flag[i]) | |
vui_mvcd_low_delay_hrd_flag[i] = DESC('u(1)') /* C = 0 */ | |
vui_mvcd_pic_struct_present_flag[i] = DESC('u(1)') /* C = 0 */ | |
} | |
} | |
function nal_unit_header_3davc_extension() { | |
view_idx = DESC('u(8)') /* C = All */ | |
depth_flag = DESC('u(1)') /* C = All */ | |
non_idr_flag = DESC('u(1)') /* C = All */ | |
temporal_id = DESC('u(3)') /* C = All */ | |
anchor_pic_flag = DESC('u(1)') /* C = All */ | |
inter_view_flag = DESC('u(1)') /* C = All */ | |
} | |
function seq_parameter_set_3davc_extension() { | |
if (NumDepthViews > 0) { | |
_3dv_acquisition_idc = DESC('ue(v)') /* C = 0 */ | |
for (i = 0; i < NumDepthViews; i++) | |
view_id_3dv[i] = DESC('ue(v)') /* C = 0 */ | |
if (_3dv_acquisition_idc ) { | |
depth_ranges(NumDepthViews, 2, 0) | |
vsp_param(NumDepthViews, 2, 0) | |
} | |
reduced_resolution_flag = DESC('u(1)') /* C = 0 */ | |
if (reduced_resolution_flag) { | |
depth_pic_width_in_mbs_minus1 = DESC('ue(v)') /* C = 0 */ | |
depth_pic_height_in_map_units_minus1 = DESC('ue(v)') /* C = 0 */ | |
depth_hor_mult_minus1 = DESC('ue(v)') /* C = 0 */ | |
depth_ver_mult_minus1 = DESC('ue(v)') /* C = 0 */ | |
depth_hor_rsh = DESC('ue(v)') /* C = 0 */ | |
depth_ver_rsh = DESC('ue(v)') /* C = 0 */ | |
} | |
depth_frame_cropping_flag = DESC('u(1)') /* C = 0 */ | |
if (depth_frame_cropping_flag) { | |
depth_frame_crop_left_offset = DESC('ue(v)') /* C = 0 */ | |
depth_frame_crop_right_offset = DESC('ue(v)') /* C = 0 */ | |
depth_frame_crop_top_offset = DESC('ue(v)') /* C = 0 */ | |
depth_frame_crop_bottom_offset = DESC('ue(v)') /* C = 0 */ | |
} | |
grid_pos_num_views = DESC('ue(v)') /* C = 0 */ | |
for (i = 0; i < grid_pos_num_views; i++) { | |
grid_pos_view_id[i] = DESC('ue(v)') /* C = 0 */ | |
grid_pos_x[grid_pos_view_id[i]] = DESC('se(v)') /* C = 0 */ | |
grid_pos_y[grid_pos_view_id[i]] = DESC('se(v)') /* C = 0 */ | |
} | |
slice_header_prediction_flag = DESC('u(1)') /* C = 0 */ | |
seq_view_synthesis_flag = DESC('u(1)') /* C = 0 */ | |
} | |
alc_sps_enable_flag = DESC('u(1)') /* C = 0 */ | |
enable_rle_skip_flag = DESC('u(1)') /* C = 0 */ | |
if (!AllViewsPairedFlag) { | |
for (i = 1; i <= num_views_minus1; i++) | |
if (texture_view_present_flag[i]) { | |
num_anchor_refs_l0[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_anchor_refs_l0[i]; j++) | |
anchor_ref_l0[i][j] = DESC('ue(v)') /* C = 0 */ | |
num_anchor_refs_l1[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_anchor_refs_l1[i]; j++) | |
anchor_ref_l1[i][j] = DESC('ue(v)') /* C = 0 */ | |
} | |
for (i = 1; i <= num_views_minus1; i++) | |
if (texture_view_present_flag[i]) { | |
num_non_anchor_refs_l0[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_non_anchor_refs_l0[i]; j++) | |
non_anchor_ref_l0[i][j] = DESC('ue(v)') /* C = 0 */ | |
num_non_anchor_refs_l1[i] = DESC('ue(v)') /* C = 0 */ | |
for (j = 0; j < num_non_anchor_refs_l1[i]; j++) | |
non_anchor_ref_l1[i][j] = DESC('ue(v)') /* C = 0 */ | |
} | |
} | |
} | |
function depth_parameter_set_rbsp() { | |
depth_parameter_set_id = DESC('ue(v)') /* C = 11 */ | |
pred_direction = DESC('ue(v)') /* C = 11 */ | |
if (pred_direction == 0 || pred_direction == 1) { | |
ref_dps_id0 = DESC('ue(v)') /* C = 11 */ | |
predWeight0 = 64 | |
} | |
if (pred_direction == 0) { | |
ref_dps_id1 = DESC('ue(v)') /* C = 11 */ | |
pred_weight0 = DESC('u(6)') /* C = 11 */ | |
predWeight0 = pred_weight0 | |
} | |
num_depth_views_minus1 = DESC('ue(v)') /* C = 11 */ | |
depth_ranges(num_depth_views_minus1 + 1, pred_direction, depth_parameter_set_id) | |
vsp_param_flag = DESC('u(1)') /* C = 11 */ | |
if (vsp_param_flag) | |
vsp_param(num_depth_views_minus1 + 1, pred_direction, depth_parameter_set_id) | |
depth_param_additional_extension_flag = DESC('u(1)') /* C = 11 */ | |
nonlinear_depth_representation_num = DESC('ue(v)') /* C = 11 */ | |
for (i = 1; i <= nonlinear_depth_representation_num; i++) | |
nonlinear_depth_representation_model[i] = DESC('ue(v)') /* C = 11 */ | |
if (depth_param_additional_extension_flag == 1) | |
while (more_rbsp_data()) | |
depth_param_additional_extension_data_flag = DESC('u(1)') /* C = 11 */ | |
rbsp_trailing_bits() | |
} | |
function depth_ranges(numViews, predDirection, index) { | |
z_near_flag = DESC('u(1)') /* C = 11 */ | |
z_far_flag = DESC('u(1)') /* C = 11 */ | |
if (z_near_flag) | |
_3dv_acquisition_element(numViews, predDirection, 7, index, ZNearSign, ZNearExp, ZNearMantissa, ZNearManLen) | |
if (z_far_flag) | |
_3dv_acquisition_element(numViews, predDirection, 7, index, ZFarSign, ZFarExp, ZFarMantissa, ZFarManLen) | |
} | |
function _3dv_acquisition_element(numViews, predDirection, expLen, index, outSign, outExp, outMantissa, outManLen) { | |
if (numViews > 1) | |
element_equal_flag = DESC('u(1)') /* C = 11 */ | |
if (element_equal_flag == 0) | |
numValues = numViews | |
else | |
numValues = 1 | |
for (i = 0; i < numValues; i++) { | |
if (predDirection == 2 && i == 0) { | |
mantissa_len_minus1 = DESC('u(5)') /* C = 11 */ | |
outManLen[index, i] = manLen = mantissa_len_minus1 + 1 | |
} | |
if (predDirection == 2) { | |
sign0 = DESC('u(1)') /* C = 11 */ | |
outSign[index, i] = sign0 | |
exponent0 = DESC('u(v)') /* C = 11 */ | |
outExp[index, i] = exponent0 | |
mantissa0 = DESC('u(v)') /* C = 11 */ | |
outMantissa[index, i] = mantissa0 | |
} else { | |
skip_flag = DESC('u(1)') /* C = 11 */ | |
if (skip_flag == 0) { | |
sign1 = DESC('u(1)') /* C = 11 */ | |
outSign[index, i] = sign1 | |
exponent_skip_flag = DESC('u(1)') /* C = 11 */ | |
if (exponent_skip_flag == 0) { | |
exponent1 = DESC('u(v)') /* C = 11 */ | |
outExp[index, i] = exponent1 | |
} else | |
outExp[index, i] = outExp[ref_dps_id0, i] | |
mantissa_diff = DESC('se(v)') /* C = 11 */ | |
if (predDirection == 0) | |
mantissaPred = ((OutMantissa[ref_dps_id0, i] * predWeight0 + outMantissa[ref_dps_id1, i] * (64 - predWeight0) + 32) >> 6) | |
else | |
mantissaPred = outMantissa[ref_dps_id0, i] | |
outMantissa[index, i] = mantissaPred + mantissa_diff | |
outManLen[index, i] = outManLen[ref_dps_id0, i] | |
} else { | |
outSign[index, i] = outSign[ref_dps_id0, i] | |
outExp[index, i] = outExp[ref_dps_id0, i] | |
outMantissa[index, i] = outMantissa[ref_dps_id0, i] | |
outManLen[index, i] = outManLen[ref_dps_id0, i] | |
} | |
} | |
} | |
if (element_equal_flag == 1) { | |
for (i = 1; i < num_views_minus1 + 1 - deltaFlag; i++) { | |
outSign[index, i] = outSign[index, 0] | |
outExp[index, i] = outExp[index, 0] | |
outMantissa[index, i] = outMantissa[index, 0] | |
outManLen[index, i] = outManLen[index, 0] | |
} | |
} | |
} | |
function vsp_param(numViews, predDirection, index) { | |
for (i = 0; i < numViews; i++) | |
for (j = 0; j < i; j++) { | |
disparity_diff_wji[j][i] = DESC('ue(v)') /* C = 0 */ | |
disparity_diff_oji[j][i] = DESC('ue(v)') /* C = 0 */ | |
disparity_diff_wij[i][j] = DESC('ue(v)') /* C = 0 */ | |
disparity_diff_oij[i][j] = DESC('ue(v)') /* C = 0 */ | |
} | |
} | |
function slice_header_in_3davc_extension() { | |
first_mb_in_slice = DESC('ue(v)') /* C = 2 */ | |
slice_type = DESC('ue(v)') /* C = 2 */ | |
pic_parameter_set_id = DESC('ue(v)') /* C = 2 */ | |
if (avc_3d_extension_flag && slice_header_prediction_flag != 0) { | |
pre_slice_header_src = DESC('u(2)') /* C = 2 */ | |
if (slice_type == P || slice_type == SP || slice_type == B) { | |
pre_ref_lists_src = DESC('u(2)') /* C = 2 */ | |
if (!pre_ref_lists_src) { | |
num_ref_idx_active_override_flag = DESC('u(1)') /* C = 2 */ | |
if (num_ref_idx_active_override_flag) { | |
num_ref_idx_l0_active_minus1 = DESC('ue(v)') /* C = 2 */ | |
if (slice_type == B) | |
num_ref_idx_l1_active_minus1 = DESC('ue(v)') /* C = 2 */ | |
} | |
ref_pic_list_mvc_modification() /* specified in Annex G */ /* C = 2 */ | |
} | |
} | |
if ((weighted_pred_flag && (slice_type == P || slice_type == SP)) || (weighted_bipred_idc == 1 && slice_type == B)) { | |
pre_pred_weight_table_src = DESC('u(2)') /* C = 2 */ | |
if (!pre_pred_weight_table_src) | |
pred_weight_table() /* C = 2 */ | |
} | |
if (nal_ref_idc != 0) { | |
pre_dec_ref_pic_marking_src = DESC('u(2)') /* C = 2 */ | |
if (!pre_dec_ref_pic_marking_src) | |
dec_ref_pic_marking() /* C = 2 */ | |
} | |
slice_qp_delta = DESC('se(v)') /* C = 2 */ | |
} else { | |
if (separate_colour_plane_flag == 1) | |
colour_plane_id = DESC('u(2)') /* C = 2 */ | |
frame_num = DESC('u(v)') /* C = 2 */ | |
if (!frame_mbs_only_flag) { | |
field_pic_flag = DESC('u(1)') /* C = 2 */ | |
if (field_pic_flag) | |
bottom_field_flag = DESC('u(1)') /* C = 2 */ | |
} | |
if (IdrPicFlag) | |
idr_pic_id = DESC('ue(v)') /* C = 2 */ | |
if (pic_order_cnt_type == 0) { | |
pic_order_cnt_lsb = DESC('u(v)') /* C = 2 */ | |
if (bottom_field_pic_order_in_frame_present_flag && !field_pic_flag) | |
delta_pic_order_cnt_bottom = DESC('se(v)') /* C = 2 */ | |
} | |
if (pic_order_cnt_type == 1 && !delta_pic_order_always_zero_flag) { | |
delta_pic_order_cnt[0] = DESC('se(v)') /* C = 2 */ | |
if (bottom_field_pic_order_in_frame_present_flag && !field_pic_flag) | |
delta_pic_order_cnt[1] = DESC('se(v)') /* C = 2 */ | |
} | |
if (redundant_pic_cnt_present_flag) | |
redundant_pic_cnt = DESC('ue(v)') /* C = 2 */ | |
if (slice_type == B) | |
direct_spatial_mv_pred_flag = DESC('u(1)') /* C = 2 */ | |
if (slice_type == P || slice_type == SP || slice_type == B) { | |
num_ref_idx_active_override_flag = DESC('u(1)') /* C = 2 */ | |
if (num_ref_idx_active_override_flag) { | |
num_ref_idx_l0_active_minus1 = DESC('ue(v)') /* C = 2 */ | |
if (slice_type == B) | |
num_ref_idx_l1_active_minus1 = DESC('ue(v)') /* C = 2 */ | |
} | |
} | |
if (nal_unit_type == 20 || nal_unit_type == 21) | |
ref_pic_list_mvc_modification() /* specified in Annex G */ /* C = 2 */ | |
else | |
ref_pic_list_modification() /* C = 2 */ | |
if ((weighted_pred_flag && (slice_type == P || slice_type == SP)) || (weighted_bipred_idc == 1 && slice_type == B)) | |
pred_weight_table() /* C = 2 */ | |
if (nal_ref_idc != 0) | |
dec_ref_pic_marking() /* C = 2 */ | |
if (entropy_coding_mode_flag && slice_type != I && slice_type != SI) | |
cabac_init_idc = DESC('ue(v)') /* C = 2 */ | |
slice_qp_delta = DESC('se(v)') /* C = 2 */ | |
if (slice_type == SP || slice_type == SI) { | |
if (slice_type == SP) | |
sp_for_switch_flag = DESC('u(1)') /* C = 2 */ | |
slice_qs_delta = DESC('se(v)') /* C = 2 */ | |
} | |
if (deblocking_filter_control_present_flag) { | |
disable_deblocking_filter_idc = DESC('ue(v)') /* C = 2 */ | |
if (disable_deblocking_filter_idc != 1) { | |
slice_alpha_c0_offset_div2 = DESC('se(v)') /* C = 2 */ | |
slice_beta_offset_div2 = DESC('se(v)') /* C = 2 */ | |
} | |
} | |
if (num_slice_groups_minus1 > 0 && slice_group_map_type >= 3 && slice_group_map_type <= 5) | |
slice_group_change_cycle = DESC('u(v)') /* C = 2 */ | |
if (nal_unit_type == 21 && (slice_type != I && slice_type != SI)) { | |
if (DepthFlag) | |
depth_weighted_pred_flag = DESC('u(1)') /* C = 2 */ | |
else if (avc_3d_extension_flag) { | |
dmvp_flag = DESC('u(1)') /* C = 2 */ | |
if (seq_view_synthesis_flag) | |
slice_vsp_flag = DESC('u(1)') /* C = 2 */ | |
} | |
if (_3dv_acquisition_idc != 1 && (depth_weighted_pred_flag || dmvp_flag) ) | |
dps_id = DESC('ue(v)') /* C = 2 */ | |
} | |
} | |
} | |
function slice_data_in_3davc_extension() { | |
if (entropy_coding_mode_flag) | |
while (!byte_aligned()) | |
cabac_alignment_one_bit = DESC('f(1)') /* C = 2 */ | |
CurrMbAddr = first_mb_in_slice * (1 + MbaffFrameFlag) | |
moreDataFlag = 1 | |
prevMbSkipped = 0 | |
RunLength = 0 | |
do { | |
if (slice_type != I && slice_type != SI) | |
if (!entropy_coding_mode_flag) { | |
mb_skip_run = DESC('ue(v)') /* C = 2 */ | |
prevMbSkipped = (mb_skip_run > 0) | |
for (i = 0; i < mb_skip_run; i++) | |
CurrMbAddr = NextMbAddress(CurrMbAddr) | |
if (nal_unit_type == 21 && !DepthFlag && mb_skip_run > 0 && VspRefExist) | |
mb_skip_type_flag = DESC('u(1)') /* C = 2 */ | |
if (mb_skip_run > 0) | |
moreDataFlag = more_rbsp_data() | |
} else { | |
if (nal_unit_type == 21 && !DepthFlag && VspRefExist && leftMbVSSkipped && upMbVSSkipped) { | |
mb_vsskip_flag = DESC('ae(v)') /* C = 2 */ | |
moreDataFlag = !mb_vsskip_flag | |
if (!mb_vsskip_flag) { | |
mb_skip_flag = DESC('ae(v)') /* C = 2 */ | |
moreDataFlag = !mb_skip_flag | |
} | |
RunLength = 0 | |
} else { | |
rleCtx = RLESkipContext() | |
if (rleCtx && !RunLength) { | |
mb_skip_run_type = DESC('ae(v)') /* C = 2 */ | |
RunLength = 16 | |
} else if (!rleCtx && RunLength) | |
RunLength = 0 | |
if (rleCtx && mb_skip_run_type) | |
RunLength -= 1 | |
else | |
mb_skip_flag = DESC('ae(v)') /* C = 2 */ | |
if (rleCtx && !mb_skip_flag) | |
RunLength = 0 | |
moreDataFlag = !mb_skip_flag | |
if (nal_unit_type == 21 && !DepthFlag && VspRefExist && !mb_skip_flag) { | |
mb_vsskip_flag = DESC('ae(v)') /* C = 2 */ | |
moreDataFlag = !mb_vsskip_flag | |
} | |
} | |
if (alc_sps_enable_flag && nal_unit_type == 21 && slice_type == P && !DepthFlag && !mb_vsskip_flag && mb_skip_flag == 1) | |
mb_alc_skip_flag = DESC('ae(v)') /* C = 2 */ | |
} | |
if (moreDataFlag) { | |
if (MbaffFrameFlag && (CurrMbAddr % 2 == 0 || (CurrMbAddr % 2 == 1 && prevMbSkipped))) | |
mb_field_decoding_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
macroblock_layer_in_3davc_extension() /* C = 2 | 3 | 4 */ | |
} | |
if (!entropy_coding_mode_flag) | |
moreDataFlag = more_rbsp_data() | |
else { | |
if (slice_type != I && slice_type != SI) | |
prevMbSkipped = mb_skip_flag || mb_vsskip_flag | |
if (MbaffFrameFlag && CurrMbAddr % 2 == 0) | |
moreDataFlag = 1 | |
else { | |
end_of_slice_flag = DESC('ae(v)') /* C = 2 */ | |
moreDataFlag = !end_of_slice_flag | |
} | |
} | |
CurrMbAddr = NextMbAddress(CurrMbAddr) | |
} while (moreDataFlag) | |
} | |
function macroblock_layer_in_3davc_extension() { | |
mb_type = DESC('ue(v) | ae(v)') /* C = 2 */ | |
if (nal_unit_type == 21 && !DepthFlag | |
&& slice_type == B | |
&& direct_spatial_mv_pred_flag && VspRefExist | |
&& mb_type == B_Direct_16x16) | |
mb_direct_type_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (alc_sps_enable_flag && nal_unit_type == 21 && | |
slice_type == P && !DepthFlag && | |
(mb_type == P_L0_16x16 || | |
mb_type == P_L0_L0_16x8 || | |
mb_type == P_L0_L0_8x16)) | |
mb_alc_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (mb_type == I_PCM) { | |
while (!byte_aligned()) | |
pcm_alignment_zero_bit = DESC('f(1)') /* C = 3 */ | |
for (i = 0; i < 256; i++) | |
pcm_sample_luma[i] = DESC('u(v)') /* C = 3 */ | |
for (i = 0; i < 2 * MbWidthC * MbHeightC; i++) | |
pcm_sample_chroma[i] = DESC('u(v)') /* C = 3 */ | |
} else { | |
noSubMbPartSizeLessThan8x8Flag = 1 | |
if (mb_type != I_NxN && | |
MbPartPredMode(mb_type, 0) != Intra_16x16 && | |
NumMbPart(mb_type) == 4) { | |
sub_mb_pred_in_3davc_extension(mb_type) /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (sub_mb_type[mbPartIdx] != B_Direct_8x8) { | |
if (NumSubMbPart(sub_mb_type[mbPartIdx]) > 1) | |
noSubMbPartSizeLessThan8x8Flag = 0 | |
} else if (!direct_8x8_inference_flag) | |
noSubMbPartSizeLessThan8x8Flag = 0 | |
} else { | |
if (transform_8x8_mode_flag && mb_type == I_NxN) | |
transform_size_8x8_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
mb_pred_in_3davc_extension(mb_type) /* C = 2 */ | |
} | |
if (MbPartPredMode(mb_type, 0) != Intra_16x16) { | |
coded_block_pattern = DESC('me(v) | ae(v)') /* C = 2 */ | |
if ((CodedBlockPatternLuma > 0 || mb_alc_flag == 1) && | |
transform_8x8_mode_flag && mb_type != I_NxN && | |
noSubMbPartSizeLessThan8x8Flag && | |
(mb_type != B_Direct_16x16 || | |
direct_8x8_inference_flag)) | |
transform_size_8x8_flag = DESC('u(1) | ae(v)') /* C = 2 */ | |
} | |
if (CodedBlockPatternLuma > 0 || | |
CodedBlockPatternChroma > 0 || | |
MbPartPredMode(mb_type, 0) == Intra_16x16) { | |
mb_qp_delta = DESC('se(v) | ae(v)') /* C = 2 */ | |
residual(0, 15) /* C = 3 | 4 */ | |
} | |
} | |
} | |
function mb_pred_in_3davc_extension(mb_type) { | |
if (MbPartPredMode(mb_type, 0) == Intra_4x4 || MbPartPredMode(mb_type, 0) == Intra_8x8 || MbPartPredMode(mb_type, 0) == Intra_16x16) { | |
if (MbPartPredMode(mb_type, 0) == Intra_4x4) | |
for (luma4x4BlkIdx = 0; luma4x4BlkIdx < 16; luma4x4BlkIdx++) { | |
prev_intra4x4_pred_mode_flag[luma4x4BlkIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (!prev_intra4x4_pred_mode_flag[luma4x4BlkIdx]) | |
rem_intra4x4_pred_mode[luma4x4BlkIdx] = DESC('u(3) | ae(v)') /* C = 2 */ | |
} | |
if (MbPartPredMode(mb_type, 0) == Intra_8x8) | |
for (luma8x8BlkIdx = 0; luma8x8BlkIdx < 4; luma8x8BlkIdx++) { | |
prev_intra8x8_pred_mode_flag[luma8x8BlkIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
if (!prev_intra8x8_pred_mode_flag[luma8x8BlkIdx]) | |
rem_intra8x8_pred_mode[luma8x8BlkIdx] = DESC('u(3) | ae(v)') /* C = 2 */ | |
} | |
if (ChromaArrayType == 1 || ChromaArrayType == 2) | |
intra_chroma_pred_mode = DESC('ue(v) | ae(v)') /* C = 2 */ | |
} else if (MbPartPredMode(mb_type, 0) != Direct) { | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if ((num_ref_idx_l0_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && MbPartPredMode(mb_type, mbPartIdx) != Pred_L1 && mb_alc_flag == 0) { | |
ref_idx_l0[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
if (VspRefL0Flag[mbPartIdx] && slice_vsp_flag) | |
bvsp_flag_l0[mbPartIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
} | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if ((num_ref_idx_l1_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && MbPartPredMode(mb_type, mbPartIdx) != Pred_L0) { | |
ref_idx_l1[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
if (VspRefL1Flag[mbPartIdx] && slice_vsp_flag) | |
bvsp_flag_l1[mbPartIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
} | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if (MbPartPredMode(mb_type, mbPartIdx) != Pred_L1 && (!VspRefL0Flag[mbPartIdx] || !bvsp_flag_l0[mbPartIdx])) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l0[mbPartIdx][0][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < NumMbPart(mb_type); mbPartIdx++) | |
if (MbPartPredMode(mb_type, mbPartIdx) != Pred_L0 && (!VspRefL1Flag[mbPartIdx] || !bvsp_flag_l1[mbPartIdx])) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l1[mbPartIdx][0][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
} | |
} | |
function sub_mb_pred_in_3davc_extension(mb_type) { | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
sub_mb_type[mbPartIdx] = DESC('ue(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if ((num_ref_idx_l0_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && mb_type != P_8x8ref0 && sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L1 && mb_alc_flag == 0) { | |
ref_idx_l0[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
if (VspRefL0Flag[mbPartIdx] && slice_vsp_flag) | |
bvsp_flag_l0[mbPartIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
} | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if ((num_ref_idx_l1_active_minus1 > 0 || mb_field_decoding_flag != field_pic_flag) && sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L0) { | |
ref_idx_l1[mbPartIdx] = DESC('te(v) | ae(v)') /* C = 2 */ | |
if (VspRefL1Flag[mbPartIdx] && slice_vsp_flag) | |
bvsp_flag_l1[mbPartIdx] = DESC('u(1) | ae(v)') /* C = 2 */ | |
} | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L1 && (!VspRefL0Flag[mbPartIdx] || !bvsp_flag_l0[mbPartIdx])) | |
for (subMbPartIdx = 0; subMbPartIdx < NumSubMbPart(sub_mb_type[mbPartIdx]); subMbPartIdx++) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l0[mbPartIdx][subMbPartIdx][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
for (mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++) | |
if (sub_mb_type[mbPartIdx] != B_Direct_8x8 && SubMbPredMode(sub_mb_type[mbPartIdx]) != Pred_L0 && (!VspRefL1Flag[mbPartIdx] || !bvsp_flag_l1[mbPartIdx])) | |
for (subMbPartIdx = 0; subMbPartIdx < NumSubMbPart(sub_mb_type[mbPartIdx]); subMbPartIdx++) | |
for (compIdx = 0; compIdx < 2; compIdx++) | |
mvd_l1[mbPartIdx][subMbPartIdx][compIdx] = DESC('se(v) | ae(v)') /* C = 2 */ | |
} | |
function constrained_depth_parameter_set_identifier(payloadSize) { | |
max_dps_id = DESC('ue(v)') /* C = 5 */ | |
max_dps_id_diff = DESC('ue(v)') /* C = 5 */ | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment