This disclosure relates generally to video encoding/decoding, and generally describes next-generation video coding technologies beyond HEVC (High Efficiency Video Coding), e.g., Versatile Video Coding (VVC). More specifically, this disclosure relates generally to methods and apparatuses related to picture header handling.
Proposed VVC Draft 7 includes a HLS (High Level Syntax) called picture header that contains syntax elements applying to all slices of a coded picture, e.g., to avoid signalling syntax elements in slice header(s) that are constrained to have the same values for all slices of a picture.
HLS specifies syntax elements that may be applied to lower level coding tools. For example, CTU (Coding Tree Unit) size may be specified at the sequence level, or SPS (Sequence Parameter Set), and is not generally changed from picture to picture. Typical HLS includes SPS, PPS (Picture Parameter Set), PH (Picture Header), SH (Slice Header), and APS (Adaptive Parameter Set).
Different HLS includes levels of applications, such that commonly used syntax elements do not need to be coded repeatedly. For instance, SPS specifies general syntax elements applicable to sequence levels. PH specifies general syntax elements applicable to a coded picture, which may consist of one or more slices.
Syntax elements included in PPS in VVC Draft 7 are described as follows:
pps_pic_parameter_set_id
pps_seq_parameter_set_id
pic_width_in_luma_samples
pic_height_in_luma_samples
conformance_window_flag
if( conformance_window_flag ) {
conf_win_left_offset
conf_win_right_offset
conf_win_top_offset
conf_win_bottom_offset
}
scaling_window_flag
if( scaling_window_flag ) {
scaling_win_left_offset
scaling_win_right_offset
scaling_win_top_offset
scaling_win_bottom_offset
}
output_flag_present_flag
mixed_nalu_types_in_pic_flag
pps_subpic_id_signalling_present_flag
if( pps_subpics_id_signalling_present_flag ) {
pps_num_subpics_minus1
pps_subpic_id_len_minus1
for( i = 0; i <= pps_num_subpic_minus1; i++ )
pps_subpic_id[ i ]
}
no_pic_partition_flag
if( !no_pic_partition_flag ) {
pps_log2_ctu_size_minus5
num_exp_tile_columns_minus1
num_exp_tile_rows_minus1
for( i = 0; i <= num_exp_tile_columns_minus1; i++ )
tile_column_width_minus1[ i ]
for( i = 0; i <= num_exp_tile_rows_minus1; i++ )
tile_row_height_minus1[ i ]
rect_slice_flag
if( rect_slice_flag )
single_slice_per_subpic_flag
if( rect_slice_flag && !single_slice_per_subpic_flag ) {
num_slices_in_pic_minus1
tile_idx_delta_present_flag
for( i = 0; i < num_slices_in_pic_minus1; i++ ) {
slice_width_in_tiles_minus1[ i ]
slice_height_in_tiles_minus1[ i ]
if( slice_width_in_tiles_minus1[ i ] = = 0
slice_height_in_tiles_minus1[ i ] = = 0 ) {
num_slices_in_tile_minus1[ i ]
numSlicesInTileMinus1 =
for( j = 0; j <
slice_height_in_ctu_minus1[ i++ ]
}
if( tile_idx_delta_present_flag && i <
tile_idx_delta[ i ]
}
}
loop_filter_across_tiles_enabled_flag
loop_filter_across_slices_enabled_flag
}
entropy_coding_sync_enabled_flag
if( !no_pic_partition_flag | |
entry_point_offsets_present_flag
cabac_init_present_flag
for( i = 0; i < 2; i++ )
num_ref_idx_default_active_minus1[ i ]
rpl1_idx_present_flag
init_qp_minus26
log2_transform_skip_max_size_minus2
cu_qp_delta_enabled_flag
pps_cb_qp_offset
pps_cr_qp_offset
pps_joint_cbcr_qp_offset_present_flag
if( pps_joint_cbcr_qp_offset_present_flag )
pps_joint_cbcr_qp_offset_value
pps_slice_chroma_qp_offsets_present_flag
pps_cu_chroma_qp_offset_list_enabled_flag
if( pps_cu_chroma_qp_offset_list_enabled_flag ) {
chroma_qp_offset_list_len_minus1
for( i = 0; i <= chroma_qp_offset_list_len_minus1; i++ ) {
cb_qp_offset_list[ i ]
cr_qp_offset_list[ i ]
if( pps_joint_cbcr_qp_offset_present_flag )
joint_cbcr_qp_offset_list[ i ]
}
}
pps_weighted_pred_flag
pps_weighted_bipred_flag
deblocking_filter_control_present_flag
if( deblocking_filter_control_present_flag ) {
deblocking_filter_override_enabled_flag
pps_deblocking_filter_disabled_flag
if( !pps_deblocking_filter_disabled_flag ) {
pps_beta_offset_div2
pps_tc_offset_div2
}
}
constant_slice_header_params_enabled_flag
if( constant_slice_header_params_enabled_flag ) {
pps_dep_quant_enabled_idc
for( i = 0; i < 2; i++ )
pps_ref_pic_list_sps_idc[ i ]
pps_mvd_l1_zero_idc
pps_collocated_from_l0_idc
pps_six_minus_max_num_merge_cand_plus1
pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1
}
picture_header_extension_present_flag
slice_header_extension_present_flag
pps_extension_flag
if( pps_extension_flag )
while( more_rbsp_data( ) )
pps_extension_data_flag
rbsp_trailing_bits( )
As illustrated in Table 1, above, num_slices_in_pic_minus 1 plus 1 specifies the number of rectangular slices in each picture referring to the PPS. The value of num_slices_in_pic_minus1 is in the range of 0 to MaxSlicesPerPicture−1, inclusive. When the no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minus1 may be inferred to be equal to 0.
As illustrated in Table 1, above, pps_mvd_11_zero_idc equal to 0 specifies that the syntax element mvd_11_zero_flag is present in PHs referring to the PPS. Also, pps_mvd_11_zero_idc equal to 1 or 2 specifies that mvd_11_zero_flag is not present in PHs referring to the PPS. Further, pps_mvd_11_zero_idc equal to 3 is reserved for future use by ITU-T|ISO/IEC.
As illustrated in Table 1, above, pps_collocated_from_10_idc equal to 0 specifies that the syntax element collocated_from_10_flag is present in a slice header of slices referring to the PPS. Also, pps_collocated_from_10_idc equal to 1 or 2 specifies that the syntax element collocated_from_10_flag is not present in a slice header of slices referring to the PPS. Further, pps_collocated_from_10_idc equal to 3 is reserved for future use by ITU-T|ISO/IEC.
As illustrated in Table 1, above, pps_six_minus_max_num_merge_cand_plus1 equal to 0 specifies that pic_six_minus_max_num_merge_cand is present in PHs referring to the PPS. Also, pps_six_minus_max_num_merge_cand_plus1 greater than 0 specifies that pic_six_minus_max_num_merge_cand is not present in PHs referring to the PPS. The value of pps_six_minus_max_num_merge_cand_plus1 is in the range of 0 to 6, inclusive.
As illustrated in Table 1, above,
A slice layer RBSP may consist of a slice header and slice data.
Syntax elements coded in PPS, where a current picture refers to, might be overridden in PH and SH such, that a pic_deblocking_filter_override_flag in the PH, referring to the PPS, or the slice_deblocking_filter_override_flag in the SH, referring to the PPS, is set. Those syntax elements not present in PH may be present in SH instead. For instance, when the value of the pic_sao_enabled_present_flag, in PH, specifying the presence of SAO related syntax elements, is 0, slice_sao_luma_flag and slice_sao_chroma_flag may be coded in SH to indicate SAO usage on luma and chroma.
With the use of PH, syntax elements that are already constrained to be the same in all slices of a picture may be transmitted in PH once per picture to avoid signaling overhead, especially when there are a handful of slices in a picture. Still, syntax elements that often vary from slice to slice may be transmitted in SH to provide flexibility.
Syntax elements included in PH and SH in VVC Draft 7 are described in Tables 3 and 5, below.
non_reference_picture_flag
gdr_pic_flag
no_output_of_prior_pics_flag
if( gdr_pic_flag )
recovery_poc_cnt
ph_pic_parameter_set_id
if( sps_poc_msb_flag ) {
ph_poc_msb_present_flag
if( ph_poc_msb_present_flag )
poc_msb_val
}
if( sps_subpic_id_present_flag && !sps_subpic_id_signalling_flag ) {
ph_subpic_id_signalling_present_flag
if( ph_subpics_id_signalling_present_flag ) {
ph_subpic_id_len_minus1
for( i = 0; i <= sps_num_subpics_minus1; i++ )
ph_subpic_id[ i ]
}
}
if( !sps_loop_filter_across_virtual_boundaries_disabled_present_flag ) {
ph_loop_filter_across_virtual_boundaries_disabled_present_flag
if( ph_loop_filter_across_virtual_boundaries_disabled_present_flag ) {
ph_num_ver_virtual_boundaries
for( i = 0; i < ph_num_ver_virtual_boundaries; i++ )
ph_virtual_boundaries_pos_x[ i ]
ph_num_hor_virtual_boundaries
for( i = 0; i < ph_num_hor virtual_boundaries; i++ )
ph_virtual_boundaries_pos_y[ i ]
}
}
if( separate_colour_plane_flag = = 1 )
colour_plane_id
if( output_flag_present_flag )
pic_output_flag
pic_rpl_present_flag
if( pic_rpl_present_flag ) {
for(i = 0; i < 2; i++ ) {
if( num_ref_pic_lists_in_sps[ i ] > 0
(i = = 0 | | (i = = 1 &&
pic_rpl_sps_flag[ i ]
if( pic_rpl_sps_flag[ i ] ) {
if( num_ref_pic_lists_in_sps[ i ] > 1 &&
(i = = 0 | | (i = = 1
pic_rpl_idx[ i ]
} else
ref_pic_list_struct( i,
for( j = 0 ; j < NumLtrpEntries[ i ][ RplsIdx[ i ] ]; j++ ) {
if( ltrp_in_slice_header_flag[ i ][ RplsIdx[ i ] ] )
pic_poc_lsb_lt[ i ][ j ]
pic_delta poc_msb_present_flag[ i ][ j ]
if( pic_delta poc_msb present_flag[ i ][ j ] )
pic_delta_poc_msb_cycle_lt[ i ][ j ]
}
}
}
if( partition_constraints_override_enabled_flag ) {
partition_constraints_override_flag
if( partition_constraints_override_flag ) {
pic_log2_diff_min_qt_min_cb_intra_slice_luma
pic_log2_diff_min_qt_min_cb_inter_slice
pic_max_mtt_hierarchy_depth_inter_slice
pic_max_mtt_hierarchy_depth_intra_slice_luma
if( pic_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) {
pic_log2_diff_max_bt_min_qt_intra_slice_luma
pic_log2_diff_max_tt_min_qt_intra_slice_luma
}
if( pic_max_mtt_hierarchy_depth_inter_slice != 0 ) {
pic_log2_diff_max_bt_min_qt_inter_slice
pic_log2_diff_max_tt_min_qt_inter_slice
}
if( qtbtt_dual_tree_intra_flag ) {
pic_log2_diff_min_qt_min_cb_intra_slice_chroma
pic_max_mtt_hierarchy_depth_intra_slice_chroma
if( pic_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) {
pic_log2_diff_max_bt_min_qt_intra_slice_chroma
pic_log2_diff_max_tt_min_qt_intra_slice_chroma
}
}
}
}
if( cu_qp_delta_enabled_flag ) {
pic_cu_qp_delta_subdiv_intra_slice
pic_cu_qp_delta_subdiv_inter_slice
}
if( pps_cu_chroma_qp_offset_list_enabled_flag ) {
pic_cu_chroma_qp_offset_subdiv_intra_slice
pic_cu_chroma_qp_offset_subdiv_inter_slice
}
if( sps_temporal_mvp_enabled_flag )
pic_temporal_mvp_enabled_flag
if(!pps_mvd_l1_zero_idc )
mvd_l1_zero_flag
pic_six_minus_max_num_merge_cand
if( sps_affine_enabled_flag )
pic_five_minus_max_num_subblock_merge_cand
if( sps_fpel_mmvd_enabled_flag )
pic_fpel_mmvd_enabled_flag
if( sps_bdof_pic_present_flag )
pic_disable_bdof_flag
if( sps_dmvr_pic_present_flag )
pic_disable_dmvr_flag
if( sps_prof_pic_present_flag )
pic_disable_prof_flag
if( sps_triangle_enabled_flag && MaxNumMergeCand >= 2 &&
!pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 )
if ( sps_ibc_enabled_flag )
pic_six_minus_max_num_ibc_merge_cand
if( sps_joint_cbcr_enabled_flag )
pic_joint_cbcr_sign_flag
if( sps_sao_enabled_flag ) {
pic_sao_enabled_present_flag
if( pic_sao_enabled_present_flag ) {
pic_sao_luma_enabled_flag
if( ChromaArrayType != 0 )
pic_sao_chroma_enabled_flag
}
}
if( sps_alf_enabled_flag ) {
pic_alf_enabled_present_flag
if( pic_alf_enabled_present_flag ) {
pic_alf_enabled_flag
if( pic_alf_enabled_flag ) {
pic_num_alf_aps_ids_luma
for( i = 0; i < pic_num_alf_aps_ids_luma; i++ )
pic_alf_aps_id_luma[ i ]
if( ChromaArrayType != 0 )
pic_alf_chroma_idc
if( pic_alf_chroma_idc )
pic_alf_aps_id_chroma
}
}
}
if ( ! pps_dep_quant_enabled_idc )
pic_dep_quant_enabled_flag
if( !pic_dep_quant_enabled_flag )
sign_data_hiding_enabled_flag
if( deblocking_filter_override_enabled_flag ) {
pic_deblocking_filter_override_present_flag
if( pic_deblocking_filter_override_present_flag ) {
pic_deblocking_filter_override_flag
if( pic_deblocking_filter_override_flag ) {
pic_deblocking_filter_disabled_flag
if( !pic_deblocking_filter_disabled_flag ) {
pic_beta_offset_div2
pic_tc_offset_div2
}
}
}
}
if( sps_lmcs_enabled_flag ) {
pic_lmcs_enabled_flag
if( pic_lmcs_enabled_flag ) {
pic_lmcs_aps_id
if( ChromaArrayType != 0 )
pic_chroma_residual_scale_flag
}
}
if( sps_scaling_list_enabled_flag ) {
pic_scaling_list_present_flag
if( pic_scaling_list_present_flag )
pic_scaling_list_aps_id
}
if( picture_header_extension_present_flag ) {
ph_extension_length
for( i = 0; i < ph_extension_length; i++ )
ph_extension_data_byte[ i ]
}
rbsp_trailing_bits( )
slice_pic_order_cnt_lsb
if( subpics_present_flag )
slice_subpic_id
if( rect_slice_flag | | NumTilesInPic > 1 )
slice_address
if( !rect_slice_flag && NumTilesInPic > 1 )
num_tiles_in_slice_minus1
slice_type
if( !pic_rpl_present_flag &&( ( nal_unit_type != IDR_W_RADL &&
for(i = 0; i < 2; i++ ) {
if( num_ref_pic_lists_in_sps[ i ] > 0
slice_rpl_sps_flag[ i ]
if( slice_rpl_sps_flag[ i ] ) {
if( num_ref_pic_lists_in_sps[ i ] > 1 &&
slice_rpl_idx[ i ]
} else
ref_pic_list_struct( i,
for(j = 0; j < NumLtrpEntries[ i ][ RplsIdx[ i ] ]; j++ ) {
if( ltrp_in_slice_header_flag[ i ][ RplsIdx[ i ] ] )
slice_poc_lsb_lt[ i ][ j ]
slice_delta_poc_msb_present_flag[ i ][ j ]
if( slice_delta_poc_msb_present_flag[ i ][ j ] )
slice_delta_poc_msb_cycle_lt[ i ][ j ]
}
}
}
if( pic_rpl_present_flag | | ( ( nal_unit_type != IDR_W_RADL &&
IDR N LP ) | | sps_idr_rpl_present_flag ) ) {
if( ( slice_type != I && num_ref_entries[ 0 ][ RplsIdx[ 0 ] ] >
( slice_type = = B &&
if( num_ref_idx active_override_flag )
for( i = 0; i < (slice_type = = B ? 2: 1 ); i++ )
if( num_ref_entries[ i ][ RplsIdx[ i ] ] >
num_ref_idx_active_minus1[ i ]
}
}
if( slice_type != I ) {
if( cabac_init_present_flag )
cabac_init_flag
if( pic_temporal_mvp_enabled_flag ) {
if( slice_type = = B && !pps_collocated_from_l0_idc )
collocated_from_l0_flag
if( ( collocated_from_l0_flag &&
( !collocated_from_l0_flag &&
collocated_ref_idx
}
if( ( pps_weighted_pred_flag && slice_type = = P ) | |
pred_weight_table( )
}
slice_qp_delta
if( pps_slice_chroma_qp_offsets_present_flag ) {
slice_cb_qp_offset
slice_cr_qp_offset
if( sps_joint_cbcr_enabled_flag )
slice_joint_cbcr_qp_offset
}
if( pps_cu_chroma_qp_offset_list_enabled_flag )
cu_chroma_qp_offset_enabled_flag
if( sps_sao_enabled_flag && !pic_sao_enabled_present_flag ) {
slice_sao_luma_flag
if( ChromaArrayType != 0 )
slice_sao_chroma_flag
}
if( sps_alf_enabled_flag && !pic_alf_enabled_present_flag ) {
slice_alf_enabled_flag
if( slice_alf_enabled_flag ) {
slice_num_alf_aps_ids_luma
for( i = 0; i < slice_num_alf_aps_ids_luma; i++ )
slice_alf_aps_id_luma[ i ]
if( ChromaArrayType != 0 )
slice_alf_chroma_idc
if( slice_alf_chroma_idc )
slice_alf_aps_id_chroma
}
}
if( deblocking_filter_override_enabled_flag &&
!pic_deblocking_filter_override_present_flag )
slice_deblocking_filter_override_flag
if( slice_deblocking_filter_override_flag ) {
slice_deblocking_filter_disabled_flag
if( !slice_deblocking_filter_disabled_flag ) {
slice_beta_offset_div2
slice_tc_offset_div2
}
}
if( entry point_offsets_present_flag && NumEntryPoints > 0 ) {
offset_len_minus1
for( i = 0; i < NumEntryPoints; i++ )
entry_point_offset_minus1[ i ]
}
if( slice_header_extension_present_flag ) {
slice_header_extension_length
for( i = 0; i < slice_header_extension_length; i++ )
slice_header_extension_data_byte[ i ]
}
byte_alignment( )
As indicated above and below, slice_type may specify the coding type of the slice according to Table 4, below:
An AU (Access Unit) delimiter is used to indicate the start of an AU and the type of slices present in coded pictures in the AU containing the AU delimiter NAL (Network Abstraction Layer) unit. Presently, there is no normative decoding process associated with the AU delimiter.
Also, pic_type indicates that the slice_type values for all slices of coded pictures in the AU containing the AU delimiter NAL unit are members of the set listed in Table 4 for the given value of pic_type. The value of pic_type may be equal to 0, 1 or 2 in bitstreams. Other values of pic_type are reserved for future use by ITU-T|ISO/IEC. Decoders conforming to this version of this may ignore reserved values of pic_type.
Non-patent literature [1] (“NPL 1”) proposes a high-level control flag to indicate that a set of parameters are needed for covered low-level coding layers.
NPL 1 describes a method wherein all inter-prediction related syntax elements or parameters only need to be signaled when there is at least one inter coded slice, or when a sub-partition exists inside a picture. Otherwise, those syntax elements or parameter are not signaled.
In one embodiment described in NPL 1, a control flag in a picture header, referred to as pic_intra_only_flag, is signaled to indicate if all slices (or any kind of sub-partitions of this picture) inside the picture will have intra prediction (or non-inter related prediction) only. When this flag is true, only intra coding related syntax elements or parameters are signaled later in the picture header. Otherwise, when this flag is false, inter prediction related syntax elements or parameters are signaled. A syntax table reflecting this embodiment is provided below:
pic_intra_only_flag
In another method of NPL 1, all related syntax elements or parameters that are used only for intra slice or intra sub-partition need to be signaled when there is no inter coded slice or when a sub-partition exists inside the picture. Otherwise, those syntax elements or parameter are not signaled.
In another embodiment of NPL 1, a control flag in picture header, referred as pic_inter_only_flag, is signaled to indicate if all the slices (or any kind of sub-partition of this picture) inside the picture will have inter prediction (or non-intra related prediction). When this flag is true, intra slice related syntax elements or parameters are not signaled later in the picture header. Otherwise, when this flag is false, intra slice may be used in at least one of the slice(s) or sub-partition(s) in the picture. The related syntax elements or parameters for intra slice or sub-partitions will be signaled. A syntax table reflecting this embodiment is provided below:
pic_inter_only_flag
pic_log2_diff_max_bt_min_qt_chroma
pic_log2_diff_max_tt_min_qt_chroma
In the above methods described in NPL 1, if a picture has its own type, such as being an intra picture or inter picture, the above control flags pic_intra_only_flag and pic_inter_only_flag need not be signaled, and their values can be derived from the picture type.
Also, if current picture has a picture type as intra-only picture (all slices in the picture are I slices), then a pic_intra_only_flag may be inferred as true. In another example, if the current picture has a picture type as inter-only picture (all slices in the picture are P or B slices), the pic_inter_only_flag may be inferred as true. In yet another example in NPL 1, if a current picture has a picture type indicating both intra-slices and inter-slices are possible in the picture, both the pic_intra_only_flag and the pic_inter_only_flag can be inferred as false.
Although PH may be signalled once per picture to avoid signalling syntax elements that are common to slices within a picture, this signalling may introduce overhead instead, without considering syntax elements only used for intra slices (I slices) or inter slices (B, P slices).
Embodiments relate to a method, system, and computer readable medium for video encoding/decoding, may be provided.
According to an embodiment, a method for coding or decoding video data may be provided. It may include indicating, with a syntax element, types of slices for all slices of a coded picture, the syntax element being coded using an unsigned integer; and encoding or decoding the video data based on the types of slices indicated via the syntax element.
According to an embodiment, a non-transitory computer-readable storage medium storing instructions that cause at least one processor to perform may be provided. The instructions may cause the at least one processor to indicate, with a syntax element, types of slices for all slices of a coded picture, the syntax element being coded using an unsigned integer, and decode the video data based on the types of slices indicated via the syntax element.
According to an embodiment, an apparatus for coding or decoding video data may be provided. The apparatus may include at least one memory configured to store computer program code; and at least one processor configured to access the at least one memory and operate according to the computer program code. The computer program code may include indicating code configured to cause the at least one processor to indicate, via a syntax element, types of slices for all slices of a coded picture, the syntax element being coded using an unsigned integer; and encoding or decoding code configured to encode or decode the video data based on the types of slices indicated via the syntax element.
These and other objects, features and advantages will become apparent from the following detailed description of illustrative embodiments, which are to be read in connection with the accompanying drawings. The various features of the drawings are not to scale as the illustrations are for clarity in facilitating the understanding of one skilled in the art in conjunction with the detailed description. In the drawings:
In
A streaming system may include a capture subsystem (213), that can include a video source (201), for example a digital camera, creating a for example uncompressed video sample stream (202). That sample stream (202), depicted as a bold line to emphasize a high data volume when compared to encoded video bitstreams, can be processed by an encoder (203) coupled to the camera (201). The encoder (203) can include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter as described in more detail below. The encoded video bitstream (204), depicted as a thin line to emphasize the lower data volume when compared to the sample stream, can be stored on a streaming server (205) for future use. One or more streaming clients (206, 208) can access the streaming server (205) to retrieve copies (207, 209) of the encoded video bitstream (204). A client (206) can include a video decoder (210) which decodes the incoming copy of the encoded video bitstream (207) and creates an outgoing video sample stream (211) that can be rendered on a display (212) or other rendering device (not depicted). In some streaming systems, the video bitstreams (204, 207, 209) can be encoded according to certain video coding/compression standards. Examples of those standards include ITU-T Recommendation H.265. Under development is a video coding standard informally known as Versatile Video Coding or VVC. The disclosed subject matter may be used in the context of VVC.
In embodiments, the syntax element pic_type_idc may be used to indicate the slice types for all slices of a coded picture.
In one embodiment, pic_type_idc may be coded using an unsigned integer 0-th order Exp-Golomb-coded syntax element with the left bit first. Here, pic_type_idc may have three value 0, 1 and 2, and three statuses such as I slice only, B, P, I slices, and B, P slices. The value may be mapped to statuses in any order. Table 8, below shows examples of possible pic_type_idc semantics.
In an embodiment, pic_type_idc may be coded using an unsigned integer using 2 bits. Here, pic_type_idc may have, but is not necessarily limited to three values 0, 1 and 2, and three statuses, such as: I slice only, B, P, I slices, and B, P slices. Other values of pic_type_idc may be reserved for further definition.
In an embodiment, the reserved pic_type_idc value 3 may indicate only P, I slices present in a coded picture.
In an example, pic_type_idc may be coded using an unsigned integer using 2 bits. Also, pic_type_idc may have four value 0, 1, 2 and 3, and four statuses such as I slice only, B, P, I slices and B slices, and P slices.
It is proposed to signal pic_type_idc in HLS, such that only related syntax elements are coded or present to reduce signaling overhead. For example, when pic_type_idc indicating the picture is intra only, no inter related syntax elements are signaled.
In one example, pic_type_idc may be signaled in PPS such that it specifies the slice types for all slices of each coded picture referring to the PPS. Detailed syntax and semantic s are given as follow. In the below Table, as well as other Tables in this disclosure, changes compared to VVC Draft 7 are italicized.
pps_pic_parameter_set_id
pps_seq_parameter_set_id
pic_width_in_luma_samples
pic_height_in_luma_samples
pic
_type_idc
conformance_window_flag
if( conformance_window_flag ) {
conf_win_left_offset
conf_win_right_offset
conf_win_top_offset
conf_win_bottom_offset
}
scaling_window_flag
if( scaling_window_flag ) {
scaling_win_left_offset
scaling_win_right_offset
scaling_win_top_offset
scaling_win_bottom_offset
}
output_flag_present_flag
mixed_nalu_types_in_pic_flag
pps_subpic_id_signalling_present_flag
if( pps_subpics_id_signalling_present_flag ) {
pps_num_subpics_minus1
pps_subpic_id_len_minus1
for( i = 0; i <= pps_num_subpic_minus1; i++ )
pps_subpic_id[ i ]
}
no_pic_partition_flag
if( !no_pic_partition_flag ) {
pps_log2_ctu_size_minus5
num_exp_tile_columns_minus1
num_exp_tile_rows_minus1
for( i = 0; i <= num_exp_tile_columns_minus1; i++ )
tile_column width_minus1[ i ]
for( i = 0; i <= num_exp_tile_rows_minus1; i++ )
tile_row_height_minus1[ i ]
rect_slice_flag
if( rect_slice_flag )
single_slice_per_subpic_flag
if( rect_slice_flag && !single_slice_per_subpic_flag ) {
num_slices_in_pic_minus1
tile_idx delta_present_flag
for( i = 0; i < num_slices_in_pic_minus1; i++ ) {
slice_width_in_tiles_minus1[i]
slice_height_in_tiles_minus1[i]
if( slice_width_in_tiles_minus1[ i ] = = 0
slice_height_in_tiles_minus1[ i ] = = 0 ) {
num_slices_in_tile_minus1[ i ]
num_SlicesInTileMinus1 =
for(j = 0; j < numSlicesInTileMinus1;
slice_height_in_ctu_minus1[ i++]
}
if( tile_idx_delta_present_flag && i <
tile_idx delta[ i ]
}
}
loop_filter_across_tiles_enabled_flag
loop_filter_across_slices_enabled_flag
}
entropy_coding_sync_enabled_flag
if( !no_pic_partition_flag | | entropy_coding_sync_enabled_flag )
entry_point_offsets_present_flag
cabac_init_present_flag
for( i = 0; i < 2; i++ )
num_ref_idx_default_active_minus1[ i ]
rpl1_idx_present_flag
init_qp_minus26
log2_transform_skip_max_size_minus2
cu_qp_delta_enabled_flag
pps_cb_qp_offset
pps_cr_qp_offset
pps_joint_cbcr_qp_offset_present_flag
if( pps_joint_cbcr_qp_offset_present_flag )
pps_joint_cbcr_qp_offset_value
pps_slice_chroma_qp_offsets_present_flag
pps_cu_chroma_qp_offset_list_enabled_flag
if( pps_cu_chroma_qp_offset_list_enabled_flag ) {
chroma_qp_offset_list_len_minus1
for( i = 0; i <= chroma_qp_offset_list_len_minus1; i++ ) {
cb_qp_offset_list[i]
cr_qp_offset_list[i]
if( pps_joint_cbcr_qp_offset_present_flag )
joint_cbcr_qp_offset_list[ i ]
}
}
pps_weighted_pred_flag
pps_weighted_bipred_flag
deblocking_filter_control_present_flag
if( deblocking_filter_control_present_flag ) {
deblocking_filter_override_enabled_flag
pps_deblocking_filter_disabled_flag
if( !pps_deblocking_filter_disabled_flag ) {
pps_beta_offset_div2
pps_tc_offset_div2
}
}
constant_slice_header_params_enabled_flag
if( constant_slice_header_params_enabled_flag ) {
pps_dep_quant_enabled_idc
for(i = 0; i < 2; i++ )
pps_ref_pic_list_sps_idc[ i ]
if
(pic_type_idc != 1){
pps_mvd_l1_zero_idc
pps_collocated_from_l0_idc
pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1
}
}
slice_header_extension_present_flag
pps_extension_flag
if( pps_extension_flag )
while( more_rbsp_data( ) )
pps_extension_data_flag
rbsp_trailing_bits( )
Here, pic_type_idc specifies the slice types for all slices of each coded picture referring to the PPS.
In one embodiment, pic_type_idc set equal to 1 indicates each coded picture referring to the PPS has only one or more I slices. In such cases, inter slices (B, P slice) related to syntax elements pps_mvd_11_zero_idc, pps_collocated_from_10_idc, pps_six_minus_max_num_merge_cand_plus1 and pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 are inferred to be equal to 0.
Here, pps_mvd_11_zero_idc equal to 0 specifies that the syntax element mvd_11_zero_flag is present in PHs referring to the PPS. Also, pps_mvd_11_zero_idc equal to 1 or 2 specifies that mvd_11_zero_flag is not present in PHs referring to the PPS. Further, pps_mvd_11_zero_idc equal to 3 is reserved for future use by ITU-T|ISO/IEC. When not present, pps_mvd_11_zero_idc may be inferred to be 0.
Additionally, pps_collocated_from_10_idc equal to 0 specifies that the syntax element collocated_from_10_flag is present in a slice header of slices referring to the PPS. Also, pps_collocated_from_10_idc equal to 1 or 2 specifies that the syntax element collocated_from_10_flag is not present in a slice header of slices referring to the PPS. Further, pps_collocated_from_10_idc equal to 3 is reserved for future use by ITU-T|ISO/IEC. When not present, pps_collocated_from_10_idc may be inferred to be equal to 0.
Also, pps_six_minus_max_num_merge_cand_plus1 equal to 0 specifies that pic_six_minus_max_num_merge_cand is present in PHs referring to the PPS. Additionally, pps_six_minus_max_num_merge_cand_plus1 greater than 0 specifies that pic_six_minus_max_num_merge_cand is not present in PHs referring to the PPS. The value of pps_six_minus_max_num_merge_cand_plus1 is be in the range of 0 to 6, inclusive. When not present, pps_six_minus_max_num_merge_cand_plus1 can be inferred to be equal to 0
As illustrated,
non_reference_picture_flag
gdr_pic_flag
no_output_of_prior_pics_flag
if( gdr_pic_flag )
recovery_poc_cnt
ph_pic_parameter_set_id
if( sps_poc_msb_flag ) {
ph_poc_msb_present_flag
if( ph_poc_msb_present_flag )
poc_msb_val
}
if( sps_subpic_id_present_flag
ph_subpic_id_signalling present_flag
if( ph_subpics_id_signalling_present_flag ) {
ph_subpic_id_len_minus1
for( i = 0; i <= sps_num_subpics_minus1; i++ )
ph_subpic_id[ i ]
}
}
if( !sps_loop_filter_across_virtual_boundaries_disabled_present_flag ) {
ph_loop_filter_across_virtual_boundaries_disabled_present_flag
if( ph_loop_filter_across_virtual_boundaries_disabled_present_flag ) {
ph_num_ver_virtual_boundaries
for( i = 0; i < ph_num_ver_virtual_boundaries;
ph_virtual_boundaries_pos_x[ i ]
ph_num_hor_virtual_boundaries
for( i = 0; i < ph_num_hor_virtual_boundaries;
ph_virtual_boundaries_pos_y[ i ]
}
}
if( separate_colour_plane_flag = = 1 )
colour_plane_id
if( output_flag_present_flag )
pic_output_flag
pic_rpl_present_flag
if( pic_rpl_present_flag ) {
for(i = 0; i < 2; i++ ) {
if( num_ref_pic_lists_in_sps[ i ] > 0
( i = = 0 | | (i = = 1 &&
pic_rpl_sps_flag[ i ]
if( pic_rpl_sps_flag[ i ] ) {
if( num_ref_pic_lists_in_sps[ i ] > 1 &&
(i = = 0 | | (i = =
pic_rpl_idx[ i ]
} else
ref_pic_list_struct(i,
for( j = 0; j < NumLtrpEntries[ i ][ RplsIdx[ i ] ];
if( ltrp_in_slice_header_flag[ i ][ RplsIdx[ i ] ] )
pic_poc_lsb_lt[ i ][ j ]
pic_delta_poc_msb_present_flag[ i ][ j ]
if( pic_delta_poc_msb_present_flag[ i ][ j ] )
pic_delta_poc_msb_cycle_lt[ i ][ j ]
}
}
}
if( partition_constraints_override_enabled_flag ) {
partition_constraints_override_flag
if( partition_constraints_override_flag ) {
if(pic_type_idc !=2){
pic_log2_diff_min_qt_min_cb_intra_slice_luma
pic
_log2_diff_min_qt_min_cb_inter_slice
pic
_max_mtt_hierarchy_depth_inter_slice
pic_max_mtt_hierarchy_depth_intra_slice_luma
if( pic_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) {
pic_log2_diff_max_bt_min_qt_intra_slice_luma
pic_log2_diff_max_tt_min_qt_intra_slice_luma
}
if(
pic_max_mtt_hierarchy_depth_inter_slice != 0 ) {
pic
_log2_diff_min_bt_min_qt_inter_slice
pic
_log2_diff_max_tt_min_qt_inter_slice
}
if( qtbtt_dual_tree_intra_flag ) {
pic_log2_diff_min_qt_min_cb_intra_slice_chroma
pic_max_mtt_hierarchy_depth_intra_slice_chroma
if( pic_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) {
pic_log2_diff_max_bt_min_qt_intra_slice_chroma
pic_log2_diff_max_tt_min_qt_intra_slice_chroma
}
}
}
if
(pic_type_idc !=1){
pic_log2_diff_min_qt_min_cb_inter_slice
pic_max_mtt_hierarchy_depth_inter_slice
if( pic_max_mtt_hierarchy_depth_inter_slice != 0 ) {
pic_log2_diff_max_bt_min_qt_inter_slice
pic_log2_diff_max_tt_min_qt_inter_slice
}
}
}
}
if( cu_qp_delta_enabled_flag ) {
if
(pic_type_idc !=2)
pic
_cu_qp_delta_subdiv_inter_slice
if
(pic_type_idc != 1)
pic_cu_qp_delta_subdiv_inter_slice
}
if
(pic_type_idc !=2)
pic
_cu_chroma_qp_offset_subdiv_inta_slice
pic_cu_chroma_qp_offset_subdiv_inter_slice
}
if
(pic_type_idc != 1){
if( sps_temporal__mvp_enabled_flag )
pic_temporal__mvp_enabled_flag
if(!pps_mvd_l1_zero_idc )
mvd_l1_zero_flag
if( !pps_six_minus_max_num_merge_cand_plus1 )
pic_six_minus_max_num_merge_cand
if( sps_affine_enabled_flag )
pic_five_minus_max_num_subblock_merge_cand
if( sps_fpel_mmvd_enabled_flag )
pic_fpel_mmvd_enabled_flag
if( sps_bdof_pic_present_flag )
pic_disable_bdof_flag
if( sps_dmvr_pic_present_flag )
pic_disable_dmvr_flag
if( sps_prof_pic_present_flag )
pic_disable_prof_flag
if( sps_triangle_enabled_flag && MaxNumMergeCand
!pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 )
pic_max_num_merge_cand_minus_max_num_triangle_cand
}
if ( sps_ibc_enabled_flag )
pic_six_minus_max_num_ibc_merge_cand
if( sps_joint_cbcr_enabled_flag )
pic_joint_cbcr_sign_flag
if( sps_sao_enabled_flag ) {
pic_sao_enabled_present_flag
if( pic_sao_enabled_present_flag ) {
pic_sao_luma_enabled_flag
if(ChromaArrayType != 0 )
pic_sao_chroma_enabled_flag
}
}
if( sps_alf_enabled_flag ) {
pic_alf_enabled_present_flag
if( pic_alf_enabled_present_flag ) {
pic_alf_enabled_flag
if( pic_alf_enabled_flag ) {
pic_num_alf_aps_ids_luma
for( i = 0; i < pic_num_alf_aps_ids_luma;
pic_alf_aps_id_luma[ i ]
if( ChromaArrayType != 0 )
pic_alf_chroma_idc
if( pic_alf_chroma_idc )
pic_alf_aps_id_chroma
}
}
}
if ( !pps_dep quant_enabled_idc )
pic_dep_quant_enabled_flag
if( !pic_dep_quant_enabled_flag )
sign_data_hiding_enabled_flag
if( deblocking_filter_override_enabled_flag ) {
pic_deblocking_filter_override present_flag
if( pic_deblocking_filter_override_present_flag ) {
pic_deblocking_filter_override_flag
if( pic_deblocking_filter_override_flag ) {
pic_deblocking_filter_disabled_flag
if( !pic_deblocking_filter_disabled_flag ) {
pic_beta_offset_div2
pic_tc_offset_div2
}
}
}
}
if( sps_lmcs_enabled_flag ) {
pic_lmcs_enabled_flag
if( pic_lmcs_enabled_flag ) {
pic_lmcs_aps_id
if( ChromaArrayType != 0 )
pic_chroma_residual_scale_flag
}
}
if( sps_scaling_list_enabled_flag ) {
pic_scaling_list_present_flag
if( pic_scaling_list_present_flag )
pic_scaling_list_aps_id
}
if( picture_header_extension_present_flag ) {
ph_extension_length
for( i = 0; i < ph_extension_length; i++)
ph_extension_data_byte[ i ]
}
rbsp_trailing_bits( )
For each coded picture referring, to the PPS, pic_type_idc is used to determine whether to parse syntax elements related to intra slices (I slices) and inter slices (B, P slices). For instance, intra slice related syntax elements pic_log2_diff min_qt_min_cb_intra_slice_luma,
In one example, pic_type_idc is signaled in PH such that it specifies the slice types for all slices of a coded picture associated to the PH. Detailed syntax and semantic are given as follow. Changes compared to VVC Draft 7 are italicized.
{
For each coded picture, pic_type_idc is used to determine whether to parse syntax elements related to intra slices (I slice) and inter slices (B, P slice). For instance, intra slice related syntax elements pic_log2_diff min_qt_min_cb_intra_slice_luma,
In one embodiment, pic_type_idc may be present in both PPS and PH referring to the PPS as pps_pic_type_idc and ph_pic_type_idc respectively.
slice_header_extension_present_flag
Here, pps_pic_type_idc specifies the slice types for all slices of each coded picture referring to the PPS.
Also, pps_mvd_11_zero_idc equal to 0 specifies that the syntax element mvd_11_zero_flag is present in PHs referring to the PPS. Further, pps_mvd_11_zero_idc equal to 1 or 2 specifies that mvd_11_zero_flag is not present in PHs referring to the PPS. Additionally, pps_mvd_11_zero_idc equal to 3 is reserved for future use by ITU-T|ISO/IEC. When not present, pps_mvd_11_zero_idc may be inferred to be equal to 0.
Also, pps_collocated_from_10_idc equal to 0 specifies that the syntax element collocated_from_10_flag is present in slice headers of slices referring to the PPS. Further, pps_collocated_from_10_idc equal to 1 or 2 specifies that the syntax element collocated_from_10_flag is not present in slice headers of slices referring to the PPS. Further, pps_collocated_from_10_idc equal to 3 is reserved for future use by ITU-T|ISO/IEC. When not present, pps_collocated_from_10_idc may be inferred to be equal to 0.
Also, pps_six_minus_max_num_merge_cand_plus1 equal to 0 specifies that pic_six_minus_max_num_merge_cand is present in PHs referring to the PPS. Further, pps_six_minus_max_num_merge_cand_plus1 greater than 0 specifies that pic_six_minus_max_num_merge_cand is not present in PHs referring to the PPS. The value of pps_six_minus_max_num_merge_cand_plus1 shall be in the range of 0 to 6, inclusive. When not present, pps_six_minus_max_num_merge_cand_plus1 may be inferred to be equal to 0.
Also, pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 equal to 0 specifies that pic_max_num_merge_cand_minus_max_num_triangle_cand is present in PHs of slices referring to the PPS. Further,
In one example, when the value of pps_pic_type_idc indicates presence of one type of slice (I or B or P slice as in Table 10 value 1, 2 and 3), the value of ph_pic_type_idc may be inferred from the value of pps_pic_type_idc.
non_reference_picture_flag
gdr_pic_flag
no_output_of_prior_pics_flag
if( gdr_pic_flag )
recovery_poc_cnt
ph_pic_parameter_set id
ph
_pic_type_idc
if( sps_poc_msb_flag ) {
ph_poc_msb_present_flag
if( ph_poc_msb_present_flag )
poc_msb_val
}
if( sps_subpic_id_present_flag && !sps_subpic_id_signalling_flag ) {
ph_subpic_id_signalling_present_flag
if( ph_subpics_id_signalling_present_flag ) {
ph_subpic_id_len_minus1
for( i = 0; i <= sps_num_subpics_minus1; i++ )
ph_subpic_id[ i ]
}
}
if( !sps_loop_filter_across_virtual_boundaries_disabled_present_flag ) {
if( ph_loop_filter_across_virtual_boundaries_disabled_present_flag )
ph_num_ver_virtual_boundaries
for( i = 0; i < ph_num_ver_virtual_boundaries; i++ )
ph_virtual_boundaries_pos_x[ i ]
ph_num_hor_virtual_boundaries
for( i = 0; i < ph_num_hor_virtual_boundaries; i++ )
ph_virtual_boundaries_pos_y[ i ]
}
}
if( separate_colour_plane_flag = = 1 )
colour_plane_id
if( output_flag_present_flag )
pic_output_flag
pic_rpl_present_flag
if( pic_rpl_present_flag ) {
for (i = 0; i < 2; i++ ) {
if( num_ref_pic_lists_in_sps[ i ] > 0
(i = 0 | | (i = = 1 && rpl1_idx_present_flag ) ) )
pic_rpl_sps_flag[ i ]
if( pic_rpl_sps_flag[ i ] ) {
if( num_ref_pic_lists_in_sps[ i ] > 1 &&
(i = = 0 | | (i = = 1 && rpl1_idx_present_flag ) ) )
pic_rpl_idx[ i ]
} else
ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ] )
for( j = 0; j < NumLtrpEntries[ i ][ RplsIdx[ i ] ]; j++ ) {
if( ltrp_in_slice_header_flag[ i ][ RplsIdx[ i ] ] )
pic_poc_lsb_lt[ i ][ j ]
pic_delta_poc_msb_present_flag[ i ][ j ]
if( pic_delta_poc_msb_present_flag[ i ][ j ] )
pic_delta_poc_msb_cycle_lt[ i ][ j ]
}
}
}
if( partition_constraints_override_enabled_flag ) {
partition_constraints_override_flag
if( partition_constraints_override_flag ) {
if
(ph_pic_type_idc !=2){
pic_log2_diff_min_qt_min_cb_intra_slice_luma
pic_max_mtt_hierarchy_depth_intra_slice_luma
if( pic_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) {
pic_log2_diff_max_bt_min_qt_intra_slice_luma
Here, ph_pic_type_idc specifies the slice types for all slices of each coded picture associated to the PH.
In one embodiment, ph_pic_type_idc equal to 1 indicates each coded picture associated to the PH has only one or more I slices.
If pps_pic_type_idc equal to 0 (B, P, I slices as in Table 10), the value of ph_pic_type_idc has a range from 0 to 2, inclusive. Otherwise, the value of ph_pic_type_idc can be inferred from pps_pic_type_idc (e.g., an identical one). In such a case, it is a requirement of bitstream conformance that the values of ph_pic_type_idc be equal to those of pps_pic_type_idc.
In one example, the signaling of syntax ph_pic_type_idc depends on (e.g., is constrained by) the value of pps_pic_type_idc. When the value of pps_pic_type_idc indicates the presence of both intra slices (I slice) and inter slices (B, P slice) in coded pictures, ph_pic_type_idc may need to be signaled/parsed to indicate slice types present in that picture associated with the picture header. In other cases, when pps_pic_type_idc indicates the presence of only one slice type, ph_pic_type_idc is not signaled/parsed, and it is inferred to be equal to (e.g., have the same) the slice type of pps_pic_type_idc. It is a bitstream conforming requirement that the range of ph_pic_type_idc is no larger than the range of pps_pic_type_idc.
non_reference_picture_flag
gdr_pic_flag
no_output_of_prior_pics_flag
if( gdr_pic_flag )
recovery_poc_cnt
ph_pic_parameter_set id
if
(pps_pic_type_idc ==0)
ph
_pic_type_idc
if( sps_poc_msb_flag ) {
ph_poc_msb_present_flag
if( ph_poc_msb_present_flag )
poc_msb_val
}
if( sps_subpic_id_present_flag && !sps_subpic_id_signalling_flag ) {
ph_subpic_id_signalling_present_flag
if( ph_subpics_id_signalling_present_flag ) {
ph_subpic_id_len_minus1
for( i = 0; i <= sps_num_subpics_minus1; i++ )
ph_subpic_id[ i ]
}
}
if( !sps_loop_filter_across_virtual_boundaries_disabled_present_flag ) {
ph_loop_filter_across_virtual_boundaries_disabled_present_flag
if( ph_loop_filter_across_virtual_boundaries_disabled_present_flag ) {
ph_num_ver_virtual_boundaries
for( i = 0; i < ph_num_ver_virtual_boundaries; i++ )
ph_virtual_boundaries_pos_x[ i ]
ph_num_hor_virtual_boundaries
for( i = 0; i < ph_num_hor_virtual_boundaries; i++ )
ph_virtual_boundaries_pos_y[ i ]
}
}
if( separate_colour_plane_flag = = 1 )
colour_plane_id
if( output_flag_present_flag )
pic_output_flag
pic_rpl_present_flag
if( pic_rpl_present_flag ) {
for( i = 0; i < 2; i++ ) {
if( num_ref_pic_lists_in_sps[ i ] >0 && !pps_ref_pic_list_sps_idc[ i ]
( i = = 0 | |( i = = 1 && rpl1_idx_present_flag ) ) )
pic_rpl_sps_flag[ i ]
if( num_ref_pic_lists_in_sps[ i ] > 1 &&
( i = = 0 | | (i = = 1 && rpl1_idx_present_flag ) ) )
pic_rpl_idx[ i ]
} else
ref_pic_list_struct( i, num_ref_pic_lists_in_sps[ i ] )
for( j = 0; j < NumLtrpEntries[ i ][ RplsIdx[ i ] ]; j++ ) {
if( 1trp_in_slice_header_flag[ i ][ RplsIdx[ i ] ] )
pic_poc_lsb_lt[ i ][ j ]
pic_delta_poc_msb_present_flag[ i ][ j ]
if( pic_delta_poc_msb_present_flag[ i ][ j ] )
pic_delta_poc_msb_cycle_lt[ i ][ j ]
}
}
}
if( partition_constraints_override_enabled_flag ) {
partition_constraints_override_flag
if( partition_constraints_override_flag ) {
if
(ph_pic_type_idc !=2){
pic_log2_diff_min_qt_min_cb_intra_slice_luma
pic
_log2_diff_min_qt_min_cb_inter_slice
pic
_max_mtt_hierarchy_depth_inter_slice
pic_max_mtt_hierarchy_depth_intra_slice_luma
if( pic_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) {
pic_log2_diff_max_bt_min_qt_intra_slice_luma
pic_log2_diff_max_tt_min_qt_intra_slice_luma
}
if(
pic_max_mtt_hierarchy_depth_inter_slice_!= 0){
}
if( qtbtt_dual_tree_intra_flag ) {
pic_log2_diff_min_qt_min_cb_intra_slice_chroma
pic_max_mtt_hierarchy_depth_intra_slice_chroma
if( pic_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) {
pic_log2_diff_max_bt_min_qt_intra_slice_chroma
pic_log2_diff_max_tt_min_qt_intra_slice_chroma
}
}
}
if
(ph_pic_type_idc !=1){
pic_log2_diff_min_qt_min_cb_inter_slice
pic_max_mtt_hierarchy_depth_inter_slice
if( pic_max_mtt_hierarchy_depth_inter_slice_!= 0 ) {
pic_log2_diff_max_bt_min_qt_inter_slice
pic_log2_diff_max_tt_min_qt_inter_slice
}
}
}
}
if( cu_qp_delta_enabled_flag ) {
if
(ph_pic_type_idc !=2)
if
(ph_pic_type_idc !=1)
pic_cu_qp_delta_subdiv_inter_slice
if( pps_cu_chroma_qp_offset_list_enabled_flag ) {
if
(ph_pic_type_idc !=2)
if
(ph_pic_type_idc !=1)
pic_cu_chroma_qp_offset_subdiv_inter_slice
}
if
(ph_pic_type_idc !=1){
if( sps_temporal_mvp_enabled_flag )
pic_temporal_mvp_enabled_flag
if(!pps_mvd_l1_zero_idc )
mvd_l1_zero_flag
if( !pps_six_minus_max_num_merge_cand_plus1 )
pic_six_minus_max_num_merge_cand
if( sps_affine_enabled_flag )
pic_five_minus_max_num_subblock_merge_cand
if( sps_fpel_mmvd_enabled_flag )
pic_fpel_mmvd_enabled_flag
if( sps_bdof_pic_present_flag )
pic_disable_bdof_flag
if( sps_dmvr_pic_present_flag )
pic_disable_dmvr_flag
if( sps_prof_pic_present_flag )
pic_disable_prof_flag
if( sps_triangle_enabled_flag && MaxNumMergeCand >= 2 &&
!pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 )
pic_max_num_merge_cand_minus_max_num_triangle_cand
}
if ( sps_ibc_enabled_flag )
pic_six_minus_max_num_ibc_merge_cand
if( sps_joint_cbcr_enabled_flag )
pic_joint_cbcr_sign_flag
if( sps_sao_enabled_flag ) {
pic_sao_enabled_present_flag
if( pic_sao_enabled_present_flag ) {
pic_sao_luma_enabled_flag
if( ChromaArrayType != 0 )
pic_sao_chroma_enabled_flag
}
}
if( sps_alf_enabled_flag ) {
pic_alf_enabled_present_flag
if( pic_alf_enabled_present_flag ) {
pic_alf_enabled_flag
if( pic_alf_enabled_flag ) {
pic_num_alf_aps_ids_luma
for( i = 0; i < pic_num_alf_aps_ids_luma; i++ )
pic_alf_aps_id_luma[ i ]
if( ChromaArrayType != 0 )
if( pic_alf_chroma_idc )
pic_alf_aps_id_chroma
}
}
}
if ( ! pps_dep_quant_enabled_idc)
pic_dep_quant_enabled_flag
if( !pic_dep_quant_enabled_flag )
sign_data_hiding_enabled_flag
if( deblocking_filter_override_enabled_flag ) {
pic_deblocking_filter_override_present_flag
if( pic_deblocking_filter_override_present_flag ) {
pic_deblocking_filter_override_flag
if( pic_deblocking_filter_override_flag ) {
pic_deblocking_filter_disabled_flag
if( !pic_deblocking_filter_disabled_flag ) {
pic_beta_offset_div2
pic_tc_offset_div2
}
}
}
}
if( sps_lmcs_enabled_flag ) {
pic_lmcs_enabled_flag
if( pic_lmcs_enabled_flag ) {
pic_lmcs_aps_id
if( ChromaArrayType != 0 )
pic_chroma_residual_scale_flag
}
}
if( sps_scaling_list_enabled_flag ) {
pic_scaling_list_present_flag
if( pic_scaling_list_present_flag )
pic_scaling_list_aps_id
}
if( picture_header_extension_present_flag ) {
ph_extension_length
for( i = 0; i < ph_extension_length; i++)
ph_extension_data_byte[ i ]
}
rbsp_trailing_bits( )
Here, ph_pic_type_idc specifies the slice types for all slices of each coded picture associated to the PH. Also, ph_pic_type_idc may only be present in the bitstream when pps_pic_type_idc is equal to 0.
Further, ph_pic_type_idc equal to 1 indicates each coded picture associated to the PH has only one or more I slices. If pps_pic_type_idc equal to 0 (B, P, I slices as in Table 8), the value of ph_pic_type_idc has a range from 0 to 2, inclusive. Otherwise, when ph_pic_type_idc is not present, it is inferred to be equal to pps_ph_type_idc as in Table 8.
In one embodiment, PH related syntax elements are included in the slice layer RBSP NAL unit, and ph_present_flag is used to indicate the presence of PH related syntax in the slice layer RBSP NAL unit. Repetition of PH related syntax signaling may have an advantage of error resilience and error recovery. When the PH NAL unit is corrupted during transmission in any kind of network, slice layer RBSP NAL units are able to recover from the error with presence of PH in slice layer RBSP NAL units. Changes compared to VVC Draft 7 are italicizes.
Here, ph_present_flag may be used to specify the presence of PH related syntax in the slice layer RBSP. When ph_present_flag equal to 1, PH related syntax is present. When ph_present_flag equal to 0, PH related syntax is not present in slice layer RBSP.
In one embodiment, when pic_type decoded in the AU delimiter as described above presents, pic_type_idc, signalling in HLS may be inferred from or constrained by the pic_type value.
In one example, when the pic_type is equal to 0 as in Table 5, indicating I slice, it is a requirement of bitstream conformance that the values of pic_type_idc specify that there are only intra slices in each picture. For instance, when pic_type_idc is conformed to be 1, there are intra slices only.
In one example, when pic_type_idc is constrained by the pic_type value, the range of pic_type_idc value may depend on the value of pic_type. For instance, pic_type_idc has values as described in Table 10, and if pic_type is equal to 1, the value of pic_type_idc may have 1 or 3. In other cases, when the pic_type is equal to 2, the value of pic_type_idc ranges from 0 to 3.
In one embodiment, when pic_type_idc, signaled in HLS, as per the abovementioned method(s), slice_type may be inferred.
In one example, when pic_type_idc has value indicating that there are only intra slices, slice_type may be inferred to be 2.
In one example, when pic_type_idc has a value indicating that there are only inter slices, the value of slice_type has a range from 0 to 1, inclusive. For instance, when pic_type_idc has a value of 2 (B, P slice), then possible values for slice_type are 0 and 1.
In one embodiment, the value of slice_type may be inferred from the value pic_type_idc and num_slices_in_pic_minus1.
It is a requirement of bitstream conformance that the values of num_slices_in_pic_minus1 is greater than or equal to 1, when the value of pic_type_idc indicates that there are both intra slices and inter slices.
There may be cases when the value of pic_type_idc indicates there are both intra slices and inter slices exist in a coded picture, and the value of num_slices_in_pic_minus1 is greater than or equal to 1.
When all the previously coded slices are inter slices, then the last slice may be an intra slice with slice_type equal to 2 (I slice).
When all the previously coded slices are intra slices, then the last slice may be an inter slice with slice_type value ranging from 0 to 1, inclusive.
The above proposed methods may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program that is stored in a non-transitory computer-readable medium to perform one or more of the proposed methods.
The techniques described above can be implemented as computer software using computer-readable instructions and physically stored in one or more computer-readable media. For example,
The computer software can be coded using any suitable machine code or computer language, that may be subject to assembly, compilation, linking, or like mechanisms to create code comprising instructions that can be executed directly, or through interpretation, micro-code execution, and the like, by computer central processing units (CPUs), Graphics
Processing Units (GPUs), and the like.
The instructions can be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, internet of things devices, and the like.
The components shown in
Computer system 300 may include certain human interface input devices. Such a human interface input device may be responsive to input by one or more human users through, for example, tactile input (such as: keystrokes, swipes, data glove movements), audio input (such as: voice, clapping), visual input (such as: gestures), olfactory input (not depicted). The human interface devices can also be used to capture certain media not necessarily directly related to conscious input by a human, such as audio (such as: speech, music, ambient sound), images (such as: scanned images, photographic images obtain from a still image camera), video (such as two-dimensional video, three-dimensional video including stereoscopic video).
Input human interface devices may include one or more of (only one of each depicted): keyboard 301, mouse 302, trackpad 303, touch screen 310 and associated graphics adapter 350, data-glove, joystick 305, microphone 306, scanner 307, camera 308.
Computer system 300 may also include certain human interface output devices. Such human interface output devices may be stimulating the senses of one or more human users through, for example, tactile output, sound, light, and smell/taste. Such human interface output devices may include tactile output devices (for example tactile feedback by the touch-screen 310, data-glove, or joystick 305, but there can also be tactile feedback devices that do not serve as input devices), audio output devices (such as: speakers 309, headphones (not depicted)), visual output devices (such as screens 310 to include cathode ray tube (CRT) screens, liquid-crystal display (LCD) screens, plasma screens, organic light-emitting diode (OLED) screens, each with or without touch-screen input capability, each with or without tactile feedback capability—some of which may be capable to output two dimensional visual output or more than three dimensional output through means such as stereographic output; virtual-reality glasses (not depicted), holographic displays and smoke tanks (not depicted)), and printers (not depicted).
Computer system 300 can also include human accessible storage devices and their associated media such as optical media including CD/DVD ROM/RW 920 with CD/DVD or the like media 321, thumb-drive 322, removable hard drive or solid state drive 323, legacy magnetic media such as tape and floppy disc (not depicted), specialized ROM/ASIC/PLD based devices such as security dongles (not depicted), and the like.
Those skilled in the art should also understand that term “computer readable media” as used in connection with the presently disclosed subject matter does not encompass transmission media, carrier waves, or other transitory signals.
Computer system 300 can also include interface(s) to one or more communication networks (355). Networks can for example be wireless, wireline, optical. Networks can further be local, wide-area, metropolitan, vehicular and industrial, real-time, delay-tolerant, and so on. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks to include global systems for mobile communications (GSM), third generation (3G), fourth generation (4G), fifth generation (5G), Long-Term Evolution (LTE), and the like, TV wireline or wireless wide area digital networks to include cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial to include CANBus, and so forth. Certain networks commonly require external network interface adapters (354) that attached to certain general purpose data ports or peripheral buses (349) (such as, for example universal serial bus (USB) ports of the computer system 300; others are commonly integrated into the core of the computer system 300 by attachment to a system bus as described below (for example Ethernet interface into a PC computer system or cellular network interface into a smartphone computer system). As an example, network 355 may be connected to peripheral bus 349 using network interface 354. Using any of these networks, computer system 300 can communicate with other entities. Such communication can be uni-directional, receive only (for example, broadcast TV), uni-directional send-only (for example CANbus to certain CANbus devices), or bi-directional, for example to other computer systems using local or wide area digital networks. Certain protocols and protocol stacks can be used on each of those networks and network interfaces (354) as described above.
Aforementioned human interface devices, human-accessible storage devices, and network interfaces can be attached to a core 340 of the computer system 300.
The core 340 can include one or more Central Processing Units (CPU)341, Graphics Processing Units (GPU) 342, specialized programmable processing units in the form of Field Programmable Gate Areas (FPGA) 343, hardware accelerators 344 for certain tasks, and so forth. These devices, along with Read-only memory (ROM) 345, Random-access memory (RAM) 346, internal mass storage such as internal non-user accessible hard drives, solid-state drives (SSDs), and the like 347, may be connected through a system bus 348. In some computer systems, the system bus 348 can be accessible in the form of one or more physical plugs to enable extensions by additional CPUs, GPU, and the like. The peripheral devices can be attached either directly to the core's system bus 348, or through a peripheral bus 349. Architectures for a peripheral bus include peripheral component interconnect (PCI), USB, and the like.
CPUs 341, GPUs 342, FPGAs 343, and accelerators 344 can execute certain instructions that, in combination, can make up the aforementioned computer code. That computer code can be stored in ROM 345 or RAM 346. Transitional data can be also be stored in RAM 346, whereas permanent data can be stored for example, in the internal mass storage 347. Fast storage and retrieve to any of the memory devices can be enabled through the use of cache memory, that can be closely associated with one or more CPU 341, GPU 342, mass storage 347, ROM 345, RAM 346, and the like.
The computer readable media can have computer code thereon for performing various computer-implemented operations. The media and computer code can be those specially designed and constructed for the purposes of the present disclosure, or they can be of the kind well known and available to those having skill in the computer software arts.
As an example and not by way of limitation, the computer system having architecture 300, and specifically the core 340 can provide functionality as a result of processor(s) (including CPUs, GPUs, FPGA, accelerators, and the like) executing software embodied in one or more tangible, computer-readable media. Such computer-readable media can be media associated with user-accessible mass storage as introduced above, as well as certain storage of the core 340 that are of non-transitory nature, such as core-internal mass storage 347 or ROM 345. The software implementing various embodiments of the present disclosure can be stored in such devices and executed by core 340. A computer-readable medium can include one or more memory devices or chips, according to particular needs. The software can cause the core 340 and specifically the processors therein (including CPU, GPU, FPGA, and the like) to execute particular processes or particular parts of particular processes described herein, including defining data structures stored in RAM 346 and modifying such data structures according to the processes defined by the software. In addition or as an alternative, the computer system can provide functionality as a result of logic hardwired or otherwise embodied in a circuit (for example: accelerator 344), which can operate in place of or together with software to execute particular processes or particular parts of particular processes described herein. Reference to software can encompass logic, and vice versa, where appropriate. Reference to a computer-readable media can encompass a circuit (such as an integrated circuit (IC)) storing software for execution, a circuit embodying logic for execution, or both, where appropriate. The present disclosure encompasses any suitable combination of hardware and software.
While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents, which fall within the scope of the disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods which, although not explicitly shown or described herein, embody the principles of the disclosure and are thus within the spirit and scope thereof.
This application is a Continuation Application of U.S. application Ser. No. 17/026,748 filed on Sep. 21, 2020, which claims priority based on U.S. Provisional Application No. 62/950,453, filed Dec. 19, 2019, the entireties of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62950453 | Dec 2019 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 17026748 | Sep 2020 | US |
Child | 18513096 | US |