MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / parse_sequence_header

Function parse_sequence_header

libavformat/av1.c:207–334  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

205}
206
207static int parse_sequence_header(AV1SequenceParameters *seq_params, const uint8_t *buf, int size)
208{
209 GetBitContext gb;
210 int reduced_still_picture_header;
211 int frame_width_bits_minus_1, frame_height_bits_minus_1;
212 int size_bits, ret;
213
214 size_bits = get_obu_bit_length(buf, size, AV1_OBU_SEQUENCE_HEADER);
215 if (size_bits < 0)
216 return size_bits;
217
218 ret = init_get_bits(&gb, buf, size_bits);
219 if (ret < 0)
220 return ret;
221
222 memset(seq_params, 0, sizeof(*seq_params));
223
224 seq_params->profile = get_bits(&gb, 3);
225
226 skip_bits1(&gb); // still_picture
227 reduced_still_picture_header = get_bits1(&gb);
228
229 if (reduced_still_picture_header) {
230 seq_params->level = get_bits(&gb, 5);
231 seq_params->tier = 0;
232 } else {
233 int initial_display_delay_present_flag, operating_points_cnt_minus_1;
234 int decoder_model_info_present_flag, buffer_delay_length_minus_1;
235
236 if (get_bits1(&gb)) { // timing_info_present_flag
237 skip_bits_long(&gb, 32); // num_units_in_display_tick
238 skip_bits_long(&gb, 32); // time_scale
239
240 if (get_bits1(&gb)) // equal_picture_interval
241 uvlc(&gb); // num_ticks_per_picture_minus_1
242
243 decoder_model_info_present_flag = get_bits1(&gb);
244 if (decoder_model_info_present_flag) {
245 buffer_delay_length_minus_1 = get_bits(&gb, 5);
246 skip_bits_long(&gb, 32); // num_units_in_decoding_tick
247 skip_bits(&gb, 10); // buffer_removal_time_length_minus_1 (5)
248 // frame_presentation_time_length_minus_1 (5)
249 }
250 } else
251 decoder_model_info_present_flag = 0;
252
253 initial_display_delay_present_flag = get_bits1(&gb);
254
255 operating_points_cnt_minus_1 = get_bits(&gb, 5);
256 for (int i = 0; i <= operating_points_cnt_minus_1; i++) {
257 int seq_level_idx, seq_tier;
258
259 skip_bits(&gb, 12); // operating_point_idc
260 seq_level_idx = get_bits(&gb, 5);
261
262 if (seq_level_idx > 7)
263 seq_tier = get_bits1(&gb);
264 else

Callers 2

ff_av1_parse_seq_headerFunction · 0.85
ff_isom_write_av1cFunction · 0.85

Calls 10

get_obu_bit_lengthFunction · 0.85
init_get_bitsFunction · 0.85
skip_bits1Function · 0.85
get_bits1Function · 0.85
skip_bits_longFunction · 0.85
uvlcFunction · 0.85
skip_bitsFunction · 0.85
parse_color_configFunction · 0.85
get_bits_leftFunction · 0.85
get_bitsFunction · 0.50

Tested by

no test coverage detected