FFmpeg
Loading...
Searching...
No Matches
evc_ps.h
Go to the documentation of this file.
1/*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19/**
20 * @file
21 * EVC decoder/parser shared code
22 */
23
24#ifndef AVCODEC_EVC_PS_H
25#define AVCODEC_EVC_PS_H
26
27#include <stdint.h>
28
29#include "evc.h"
30#include "get_bits.h"
31
32#define EVC_MAX_QP_TABLE_SIZE 58
33#define NUM_CPB 32
34
35// rpl structure
40
41// chromaQP table structure to be signalled in SPS
50
51// Hypothetical Reference Decoder (HRD) parameters, part of VUI
52typedef struct HRDParameters {
53 uint8_t cpb_cnt_minus1; // ue(v)
54 uint8_t bit_rate_scale; // u(4)
55 uint8_t cpb_size_scale; // u(4)
56 uint32_t bit_rate_value_minus1[NUM_CPB]; // ue(v)
57 uint32_t cpb_size_value_minus1[NUM_CPB]; // ue(v)
58 uint8_t cbr_flag[NUM_CPB]; // u(1)
62 uint8_t time_offset_length; // u(5)
64
65// video usability information (VUI) part of SPS
66typedef struct VUIParameters {
68 uint8_t aspect_ratio_idc; // u(8)
69 uint16_t sar_width; // u(16)
70 uint16_t sar_height; // u(16)
74 uint8_t video_format; // u(3)
75 uint8_t video_full_range_flag; // u(1)
77 uint8_t colour_primaries; // u(8)
78 uint8_t transfer_characteristics; // u(8)
79 uint8_t matrix_coefficients; // u(8)
84 uint8_t field_seq_flag; // u(1)
85 uint8_t timing_info_present_flag; // u(1)
86 uint32_t num_units_in_tick; // u(32)
87 uint32_t time_scale; // u(32)
88 uint8_t fixed_pic_rate_flag; // u(1)
91 uint8_t low_delay_hrd_flag; // u(1)
92 uint8_t pic_struct_present_flag; // u(1)
95 uint8_t max_bytes_per_pic_denom; // ue(v)
96 uint8_t max_bits_per_mb_denom; // ue(v)
99 uint32_t num_reorder_pics; // ue(v)
100 uint32_t max_dec_pic_buffering; // ue(v)
101
104
105// The structure reflects SPS RBSP(raw byte sequence payload) layout
106// @see ISO_IEC_23094-1 section 7.3.2.1
107//
108// The following descriptors specify the parsing process of each element
109// u(n) - unsigned integer using n bits
110// ue(v) - unsigned integer 0-th order Exp_Golomb-coded syntax element with the left bit first
111typedef struct EVCParserSPS {
112 uint8_t sps_seq_parameter_set_id; // ue(v)
113 uint8_t profile_idc; // u(8)
114 uint8_t level_idc; // u(8)
115 uint32_t toolset_idc_h; // u(32)
116 uint32_t toolset_idc_l; // u(32)
117 uint8_t chroma_format_idc; // ue(v)
118 uint32_t pic_width_in_luma_samples; // ue(v)
119 uint32_t pic_height_in_luma_samples; // ue(v)
120 uint8_t bit_depth_luma_minus8; // ue(v)
121 uint8_t bit_depth_chroma_minus8; // ue(v)
122
123 uint8_t sps_btt_flag; // u(1)
124 uint32_t log2_ctu_size_minus2; // ue(v)
125 uint32_t log2_min_cb_size_minus2; // ue(v)
129
130 uint8_t sps_suco_flag; // u(1)
133
134 uint8_t sps_admvp_flag; // u(1)
135 uint8_t sps_affine_flag; // u(1)
136 uint8_t sps_amvr_flag; // u(1)
137 uint8_t sps_dmvr_flag; // u(1)
138 uint8_t sps_mmvd_flag; // u(1)
139 uint8_t sps_hmvp_flag; // u(1)
140
141 uint8_t sps_eipd_flag; // u(1)
142 uint8_t sps_ibc_flag; // u(1)
144
145 uint8_t sps_cm_init_flag; // u(1)
146 uint8_t sps_adcc_flag; // u(1)
147
148 uint8_t sps_iqt_flag; // u(1)
149 uint8_t sps_ats_flag; // u(1)
150
151 uint8_t sps_addb_flag; // u(1)
152 uint8_t sps_alf_flag; // u(1)
153 uint8_t sps_htdf_flag; // u(1)
154 uint8_t sps_rpl_flag; // u(1)
155 uint8_t sps_pocs_flag; // u(1)
156 uint8_t sps_dquant_flag; // u(1)
157 uint8_t sps_dra_flag; // u(1)
158
160 uint32_t log2_sub_gop_length; // ue(v)
161 uint32_t log2_ref_pic_gap_length; // ue(v)
162
163 uint8_t max_num_tid0_ref_pics; // ue(v)
164
166 uint8_t long_term_ref_pic_flag; // u(1)
167 uint8_t rpl1_same_as_rpl0_flag; // u(1)
168 uint8_t num_ref_pic_list_in_sps[2]; // ue(v)
170
171 uint8_t picture_cropping_flag; // u(1)
172 uint32_t picture_crop_left_offset; // ue(v)
173 uint32_t picture_crop_right_offset; // ue(v)
174 uint32_t picture_crop_top_offset; // ue(v)
175 uint32_t picture_crop_bottom_offset; // ue(v)
176
178
180
182
184
210
215
216// @see ISO_IEC_23094-1 (7.3.2.1 SPS RBSP syntax)
218
219// @see ISO_IEC_23094-1 (7.3.2.2 SPS RBSP syntax)
221
223
224#endif /* AVCODEC_EVC_PS_H */
#define NUM_CPB
Definition evc_ps.h:33
#define EVC_MAX_QP_TABLE_SIZE
Definition evc_ps.h:32
int ff_evc_parse_pps(GetBitContext *gb, EVCParamSets *ps)
Definition evc_ps.c:352
void ff_evc_ps_free(EVCParamSets *ps)
Definition evc_ps.c:437
int ff_evc_parse_sps(GetBitContext *gb, EVCParamSets *ps)
Definition evc_ps.c:152
bitstream reader API header.
@ EVC_MAX_NUM_REF_PICS
Definition evc.h:127
@ EVC_MAX_TILE_ROWS
Definition evc.h:138
@ EVC_MAX_TILE_COLUMNS
Definition evc.h:140
@ EVC_MAX_PPS_COUNT
Definition evc.h:113
@ EVC_MAX_SPS_COUNT
Definition evc.h:110
@ EVC_MAX_NUM_RPLS
Definition evc.h:129
uint8_t num_points_in_qp_table_minus1[2]
Definition evc_ps.h:46
uint8_t chroma_qp_table_present_flag
Definition evc_ps.h:43
int delta_qp_out_val[2][EVC_MAX_QP_TABLE_SIZE]
Definition evc_ps.h:48
uint8_t delta_qp_in_val_minus1[2][EVC_MAX_QP_TABLE_SIZE]
Definition evc_ps.h:47
uint8_t global_offset_flag
Definition evc_ps.h:45
uint8_t same_qp_table_for_chroma
Definition evc_ps.h:44
EVCParserPPS * pps[EVC_MAX_PPS_COUNT]
Definition evc_ps.h:213
EVCParserSPS * sps[EVC_MAX_SPS_COUNT]
Definition evc_ps.h:212
uint8_t rpl1_idx_present_flag
Definition evc_ps.h:190
uint8_t single_tile_in_pic_flag
Definition evc_ps.h:191
uint32_t tile_column_width_minus1[EVC_MAX_TILE_COLUMNS]
Definition evc_ps.h:195
uint8_t arbitrary_slice_present_flag
Definition evc_ps.h:204
uint8_t pic_dra_aps_id
Definition evc_ps.h:203
uint8_t cu_qp_delta_enabled_flag
Definition evc_ps.h:206
uint8_t explicit_tile_id_flag
Definition evc_ps.h:200
uint32_t num_tile_columns_minus1
Definition evc_ps.h:192
uint32_t log2_cu_qp_delta_area_minus6
Definition evc_ps.h:207
uint8_t constrained_intra_pred_flag
Definition evc_ps.h:205
uint8_t loop_filter_across_tiles_enabled_flag
Definition evc_ps.h:197
uint32_t tile_row_height_minus1[EVC_MAX_TILE_ROWS]
Definition evc_ps.h:196
uint8_t additional_lt_poc_lsb_len
Definition evc_ps.h:189
uint8_t pps_seq_parameter_set_id
Definition evc_ps.h:187
uint32_t tile_offset_len_minus1
Definition evc_ps.h:198
uint8_t pps_pic_parameter_set_id
Definition evc_ps.h:186
uint8_t pic_dra_enabled_flag
Definition evc_ps.h:202
uint32_t num_tile_rows_minus1
Definition evc_ps.h:193
uint8_t uniform_tile_spacing_flag
Definition evc_ps.h:194
uint32_t tile_id_val[EVC_MAX_TILE_ROWS][EVC_MAX_TILE_COLUMNS]
Definition evc_ps.h:201
uint8_t num_ref_idx_default_active_minus1[2]
Definition evc_ps.h:188
uint8_t tile_id_len_minus1
Definition evc_ps.h:199
uint32_t log2_diff_max_suco_min_suco_cb_size
Definition evc_ps.h:132
uint8_t picture_cropping_flag
Definition evc_ps.h:171
uint8_t max_num_tid0_ref_pics
Definition evc_ps.h:163
uint8_t level_idc
Definition evc_ps.h:114
uint8_t bit_depth_luma_minus8
Definition evc_ps.h:120
uint8_t profile_idc
Definition evc_ps.h:113
uint8_t sps_rpl_flag
Definition evc_ps.h:154
uint32_t pic_width_in_luma_samples
Definition evc_ps.h:118
uint32_t log2_max_ibc_cand_size_minus2
Definition evc_ps.h:143
uint8_t sps_admvp_flag
Definition evc_ps.h:134
uint8_t sps_eipd_flag
Definition evc_ps.h:141
uint32_t log2_ref_pic_gap_length
Definition evc_ps.h:161
uint8_t sps_iqt_flag
Definition evc_ps.h:148
uint32_t log2_max_pic_order_cnt_lsb_minus4
Definition evc_ps.h:159
uint8_t bit_depth_chroma_minus8
Definition evc_ps.h:121
struct ChromaQpTable chroma_qp_table_struct
Definition evc_ps.h:177
uint8_t sps_dquant_flag
Definition evc_ps.h:156
struct VUIParameters vui_parameters
Definition evc_ps.h:181
uint8_t sps_seq_parameter_set_id
Definition evc_ps.h:112
uint8_t num_ref_pic_list_in_sps[2]
Definition evc_ps.h:168
uint8_t sps_mmvd_flag
Definition evc_ps.h:138
uint8_t chroma_format_idc
Definition evc_ps.h:117
uint8_t sps_affine_flag
Definition evc_ps.h:135
uint32_t sps_max_dec_pic_buffering_minus1
Definition evc_ps.h:165
uint8_t sps_addb_flag
Definition evc_ps.h:151
uint32_t picture_crop_top_offset
Definition evc_ps.h:174
uint8_t sps_ats_flag
Definition evc_ps.h:149
struct RefPicListStruct rpls[2][EVC_MAX_NUM_RPLS]
Definition evc_ps.h:169
uint8_t sps_dra_flag
Definition evc_ps.h:157
uint8_t sps_btt_flag
Definition evc_ps.h:123
uint32_t toolset_idc_l
Definition evc_ps.h:116
uint8_t sps_hmvp_flag
Definition evc_ps.h:139
uint32_t log2_sub_gop_length
Definition evc_ps.h:160
uint32_t pic_height_in_luma_samples
Definition evc_ps.h:119
uint8_t sps_ibc_flag
Definition evc_ps.h:142
uint8_t sps_pocs_flag
Definition evc_ps.h:155
uint8_t long_term_ref_pic_flag
Definition evc_ps.h:166
uint32_t picture_crop_bottom_offset
Definition evc_ps.h:175
uint8_t sps_cm_init_flag
Definition evc_ps.h:145
uint32_t toolset_idc_h
Definition evc_ps.h:115
uint8_t sps_adcc_flag
Definition evc_ps.h:146
uint32_t picture_crop_left_offset
Definition evc_ps.h:172
uint32_t log2_diff_ctu_max_14_cb_size
Definition evc_ps.h:126
uint32_t log2_diff_min_cb_min_tt_cb_size_minus2
Definition evc_ps.h:128
uint8_t sps_alf_flag
Definition evc_ps.h:152
uint8_t sps_amvr_flag
Definition evc_ps.h:136
uint8_t sps_htdf_flag
Definition evc_ps.h:153
uint8_t sps_dmvr_flag
Definition evc_ps.h:137
uint8_t vui_parameters_present_flag
Definition evc_ps.h:179
uint32_t log2_min_cb_size_minus2
Definition evc_ps.h:125
uint32_t log2_diff_ctu_max_tt_cb_size
Definition evc_ps.h:127
uint32_t log2_ctu_size_minus2
Definition evc_ps.h:124
uint32_t picture_crop_right_offset
Definition evc_ps.h:173
uint8_t sps_suco_flag
Definition evc_ps.h:130
uint32_t log2_diff_ctu_size_max_suco_cb_size
Definition evc_ps.h:131
uint8_t rpl1_same_as_rpl0_flag
Definition evc_ps.h:167
uint8_t cbr_flag[NUM_CPB]
Definition evc_ps.h:58
uint32_t bit_rate_value_minus1[NUM_CPB]
Definition evc_ps.h:56
uint8_t cpb_cnt_minus1
Definition evc_ps.h:53
uint8_t initial_cpb_removal_delay_length_minus1
Definition evc_ps.h:59
uint8_t dpb_output_delay_length_minus1
Definition evc_ps.h:61
uint32_t cpb_size_value_minus1[NUM_CPB]
Definition evc_ps.h:57
uint8_t time_offset_length
Definition evc_ps.h:62
uint8_t cpb_removal_delay_length_minus1
Definition evc_ps.h:60
uint8_t bit_rate_scale
Definition evc_ps.h:54
uint8_t cpb_size_scale
Definition evc_ps.h:55
uint32_t ref_pics[EVC_MAX_NUM_REF_PICS]
Definition evc_ps.h:38
uint32_t ref_pic_num
Definition evc_ps.h:37
uint8_t low_delay_hrd_flag
Definition evc_ps.h:91
uint8_t video_signal_type_present_flag
Definition evc_ps.h:73
uint8_t pic_struct_present_flag
Definition evc_ps.h:92
uint8_t motion_vectors_over_pic_boundaries_flag
Definition evc_ps.h:94
uint8_t bitstream_restriction_flag
Definition evc_ps.h:93
uint8_t chroma_sample_loc_type_top_field
Definition evc_ps.h:81
uint8_t fixed_pic_rate_flag
Definition evc_ps.h:88
uint8_t chroma_loc_info_present_flag
Definition evc_ps.h:80
uint8_t video_full_range_flag
Definition evc_ps.h:75
uint8_t max_bits_per_mb_denom
Definition evc_ps.h:96
uint8_t nal_hrd_parameters_present_flag
Definition evc_ps.h:89
uint8_t field_seq_flag
Definition evc_ps.h:84
uint32_t num_reorder_pics
Definition evc_ps.h:99
uint8_t aspect_ratio_info_present_flag
Definition evc_ps.h:67
uint8_t overscan_info_present_flag
Definition evc_ps.h:71
uint32_t num_units_in_tick
Definition evc_ps.h:86
uint8_t timing_info_present_flag
Definition evc_ps.h:85
uint8_t chroma_sample_loc_type_bottom_field
Definition evc_ps.h:82
uint8_t max_bytes_per_pic_denom
Definition evc_ps.h:95
uint8_t matrix_coefficients
Definition evc_ps.h:79
uint8_t log2_max_mv_length_vertical
Definition evc_ps.h:98
uint8_t overscan_appropriate_flag
Definition evc_ps.h:72
uint8_t colour_primaries
Definition evc_ps.h:77
HRDParameters hrd_parameters
Definition evc_ps.h:102
uint8_t neutral_chroma_indication_flag
Definition evc_ps.h:83
uint8_t video_format
Definition evc_ps.h:74
uint16_t sar_height
Definition evc_ps.h:70
uint8_t log2_max_mv_length_horizontal
Definition evc_ps.h:97
uint16_t sar_width
Definition evc_ps.h:69
uint8_t aspect_ratio_idc
Definition evc_ps.h:68
uint8_t vcl_hrd_parameters_present_flag
Definition evc_ps.h:90
uint8_t transfer_characteristics
Definition evc_ps.h:78
uint32_t time_scale
Definition evc_ps.h:87
uint8_t colour_description_present_flag
Definition evc_ps.h:76
uint32_t max_dec_pic_buffering
Definition evc_ps.h:100