MCPcopy Create free account
hub / github.com/IENT/YUView / parse

Method parse

YUViewLib/src/parser/HEVC/video_parameter_set_rbsp.cpp:42–122  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40using namespace reader;
41
42void video_parameter_set_rbsp::parse(SubByteReaderLogging &reader)
43{
44 SubByteReaderLoggingSubLevel subLevel(reader, "video_parameter_set_rbsp()");
45
46 this->vps_video_parameter_set_id = reader.readBits("vps_video_parameter_set_id", 4);
47 this->vps_base_layer_internal_flag = reader.readFlag("vps_base_layer_internal_flag");
48 this->vps_base_layer_available_flag = reader.readFlag("vps_base_layer_available_flag");
49 this->vps_max_layers_minus1 = reader.readBits("vps_max_layers_minus1", 6);
50 this->vps_max_sub_layers_minus1 = reader.readBits("vps_max_sub_layers_minus1", 3);
51 this->vps_temporal_id_nesting_flag = reader.readFlag("vps_temporal_id_nesting_flag");
52 this->vps_reserved_0xffff_16bits = reader.readBits("vps_reserved_0xffff_16bits", 16);
53
54 this->profileTierLevel.parse(reader, true, vps_max_sub_layers_minus1);
55
56 this->vps_sub_layer_ordering_info_present_flag =
57 reader.readFlag("vps_sub_layer_ordering_info_present_flag");
58 for (unsigned int i =
59 (this->vps_sub_layer_ordering_info_present_flag ? 0 : this->vps_max_sub_layers_minus1);
60 i <= this->vps_max_sub_layers_minus1;
61 i++)
62 {
63 this->vps_max_dec_pic_buffering_minus1[i] =
64 reader.readUEV(formatArray("vps_max_dec_pic_buffering_minus1", i));
65 this->vps_max_num_reorder_pics[i] = reader.readUEV(formatArray("vps_max_num_reorder_pics", i));
66 this->vps_max_latency_increase_plus1[i] =
67 reader.readUEV(formatArray("vps_max_latency_increase_plus1", i));
68 }
69
70 this->vps_max_layer_id = reader.readBits("vps_max_layer_id", 6);
71 this->vps_num_layer_sets_minus1 =
72 reader.readUEV("vps_num_layer_sets_minus1", Options().withCheckRange({0, 1023}));
73
74 for (unsigned int i = 1; i <= this->vps_num_layer_sets_minus1; i++)
75 for (unsigned int j = 0; j <= this->vps_max_layer_id; j++)
76 this->layer_id_included_flag->push_back(
77 reader.readFlag(formatArray("layer_id_included_flag", i)));
78
79 this->vps_timing_info_present_flag = reader.readFlag("vps_timing_info_present_flag");
80 if (this->vps_timing_info_present_flag)
81 {
82 // The VPS can provide timing info (the time between two POCs. So the refresh rate)
83 this->vps_num_units_in_tick = reader.readBits("vps_num_units_in_tick", 32);
84 this->vps_time_scale = reader.readBits("vps_time_scale", 32);
85 this->vps_poc_proportional_to_timing_flag =
86 reader.readFlag("vps_poc_proportional_to_timing_flag");
87 if (this->vps_poc_proportional_to_timing_flag)
88 this->vps_num_ticks_poc_diff_one_minus1 = reader.readUEV("vps_num_ticks_poc_diff_one_minus1");
89
90 // HRD parameters ...
91 this->vps_num_hrd_parameters = reader.readUEV("vps_num_hrd_parameters");
92 for (unsigned int i = 0; i < vps_num_hrd_parameters; i++)
93 {
94 this->hrd_layer_set_idx.push_back(reader.readUEV(formatArray("hrd_layer_set_idx", i)));
95
96 if (i == 0)
97 this->cprms_present_flag.push_back(1);
98 else
99 this->cprms_present_flag.push_back(reader.readFlag(formatArray("cprms_present_flag", i)));

Callers

nothing calls this directly

Calls 7

formatArrayFunction · 0.85
OptionsClass · 0.85
readFlagMethod · 0.80
readUEVMethod · 0.80
logArbitraryMethod · 0.80
to_stringFunction · 0.70
readBitsMethod · 0.45

Tested by

no test coverage detected