summaryrefslogtreecommitdiff
path: root/libavcodec/hevc_ps.h
diff options
context:
space:
mode:
authorLinjie Fu <linjie.fu@intel.com>2023-02-16 13:46:29 +0800
committerHaihao Xiang <haihao.xiang@intel.com>2023-02-27 13:42:06 +0800
commit56e3cd23d486d6aa2e3dcddc57c8048547df4f42 (patch)
tree0eca792a35c4c991c1883528b2759cc18c1ab42e /libavcodec/hevc_ps.h
parentf45937754368fd6e34d4a4c61b8736f2d22136ab (diff)
downloadffmpeg-56e3cd23d486d6aa2e3dcddc57c8048547df4f42.tar.gz
lavc/hevc_ps: Add SPS/PPS parse support for HEVC extension syntax
1. Add extension syntax according to 7.3.2.2.3/7.3.2.3.3 in T-REC-H.265-201911. 2. Keep using parsed PPS when bitstream overread for compatibility. For example, the clip PS_A_VIDYO_3.bit in FATE test has incomplete extension syntax which will be overread and un-decodable if without this change. 3. Format brace in pps_range_extensions(). Signed-off-by: Linjie Fu <linjie.justin.fu@gmail.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
Diffstat (limited to 'libavcodec/hevc_ps.h')
-rw-r--r--libavcodec/hevc_ps.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h
index 18894cfed1..1f704108e3 100644
--- a/libavcodec/hevc_ps.h
+++ b/libavcodec/hevc_ps.h
@@ -210,6 +210,20 @@ typedef struct HEVCSPS {
int persistent_rice_adaptation_enabled_flag;
int cabac_bypass_alignment_enabled_flag;
+ int sps_multilayer_extension_flag;
+ int sps_3d_extension_flag;
+
+ int sps_scc_extension_flag;
+ int sps_curr_pic_ref_enabled_flag;
+ int palette_mode_enabled_flag;
+ int palette_max_size;
+ int delta_palette_max_predictor_size;
+ int sps_palette_predictor_initializers_present_flag;
+ int sps_num_palette_predictor_initializers_minus1;
+ int sps_palette_predictor_initializer[3][HEVC_MAX_PALETTE_PREDICTOR_SIZE];
+ int motion_vector_resolution_control_idc;
+ int intra_boundary_filtering_disabled_flag;
+
///< coded frame dimension in various units
int width;
int height;
@@ -284,6 +298,9 @@ typedef struct HEVCPPS {
uint8_t slice_header_extension_present_flag;
uint8_t log2_max_transform_skip_block_size;
uint8_t pps_range_extensions_flag;
+ uint8_t pps_multilayer_extension_flag;
+ uint8_t pps_3d_extension_flag;
+ uint8_t pps_scc_extension_flag;
uint8_t cross_component_prediction_enabled_flag;
uint8_t chroma_qp_offset_list_enabled_flag;
uint8_t diff_cu_chroma_qp_offset_depth;
@@ -293,6 +310,58 @@ typedef struct HEVCPPS {
uint8_t log2_sao_offset_scale_luma;
uint8_t log2_sao_offset_scale_chroma;
+ // Multilayer extension parameters
+ uint8_t poc_reset_info_present_flag;
+ uint8_t pps_infer_scaling_list_flag;
+ uint8_t pps_scaling_list_ref_layer_id;
+ uint16_t num_ref_loc_offsets;
+ uint8_t ref_loc_offset_layer_id[64];
+ uint8_t scaled_ref_layer_offset_present_flag[64];
+ int8_t scaled_ref_layer_left_offset[64];
+ int8_t scaled_ref_layer_top_offset[64];
+ int8_t scaled_ref_layer_right_offset[64];
+ int8_t scaled_ref_layer_bottom_offset[64];
+ uint8_t ref_region_offset_present_flag[64];
+ int8_t ref_region_left_offset[64];
+ int8_t ref_region_top_offset[64];
+ int8_t ref_region_right_offset[64];
+ int8_t ref_region_bottom_offset[64];
+ uint8_t resample_phase_set_present_flag[64];
+ uint16_t phase_hor_luma[64];
+ uint16_t phase_ver_luma[64];
+ uint16_t phase_hor_chroma_plus8[64];
+ uint16_t phase_ver_chroma_plus8[64];
+ uint8_t colour_mapping_enabled_flag;
+ uint16_t num_cm_ref_layers_minus1;
+ uint8_t cm_ref_layer_id[63];
+ uint8_t cm_octant_depth;
+ uint8_t cm_y_part_num_log2;
+ uint16_t luma_bit_depth_cm_input_minus8;
+ uint16_t chroma_bit_depth_cm_input_minus8;
+ uint16_t luma_bit_depth_cm_output_minus8;
+ uint16_t chroma_bit_depth_cm_output_minus8;
+ uint8_t cm_res_quant_bits;
+ uint8_t cm_delta_flc_bits_minus1;
+ int8_t cm_adapt_threshold_u_delta;
+ int8_t cm_adapt_threshold_v_delta;
+
+ // 3D extension parameters
+ uint8_t pps_bit_depth_for_depth_layers_minus8;
+
+ // SCC extension parameters
+ uint8_t pps_curr_pic_ref_enabled_flag;
+ uint8_t residual_adaptive_colour_transform_enabled_flag;
+ uint8_t pps_slice_act_qp_offsets_present_flag;
+ int8_t pps_act_y_qp_offset; // _plus5
+ int8_t pps_act_cb_qp_offset; // _plus5
+ int8_t pps_act_cr_qp_offset; // _plus3
+ uint8_t pps_palette_predictor_initializers_present_flag;
+ uint8_t pps_num_palette_predictor_initializers;
+ uint8_t monochrome_palette_flag;
+ uint8_t luma_bit_depth_entry_minus8;
+ uint8_t chroma_bit_depth_entry_minus8;
+ uint8_t pps_palette_predictor_initializer[3][HEVC_MAX_PALETTE_PREDICTOR_SIZE];
+
// Inferred parameters
unsigned int *column_width; ///< ColumnWidth
unsigned int *row_height; ///< RowHeight