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

Method parse

YUViewLib/src/parser/VVC/video_parameter_set_rbsp.cpp:40–456  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38using namespace parser::reader;
39
40void video_parameter_set_rbsp::parse(SubByteReaderLogging &reader)
41{
42 SubByteReaderLoggingSubLevel subLevel(reader, "video_parameter_set_rbsp");
43
44 this->vps_video_parameter_set_id =
45 reader.readBits("vps_video_parameter_set_id", 4, Options().withCheckGreater(0));
46 this->vps_max_layers_minus1 = reader.readBits("vps_max_layers_minus1", 6);
47 this->vps_max_sublayers_minus1 =
48 reader.readBits("vps_max_sublayers_minus1", 3, Options().withCheckRange({0, 6}));
49 if (this->vps_max_layers_minus1 > 0 && vps_max_sublayers_minus1 > 0)
50 {
51 this->vps_default_ptl_dpb_hrd_max_tid_flag =
52 reader.readFlag("vps_default_ptl_dpb_hrd_max_tid_flag");
53 }
54 if (this->vps_max_layers_minus1 > 0)
55 {
56 this->vps_all_independent_layers_flag = reader.readFlag("vps_all_independent_layers_flag");
57 }
58 for (unsigned i = 0; i <= this->vps_max_layers_minus1; i++)
59 {
60 this->vps_layer_id.push_back(reader.readBits("vps_layer_id", 6));
61 if (i > 0 && !this->vps_all_independent_layers_flag)
62 {
63 this->vps_independent_layer_flag.push_back(reader.readFlag("vps_independent_layer_flag"));
64 if (!this->vps_independent_layer_flag[i])
65 {
66 this->vps_max_tid_ref_present_flag.push_back(
67 reader.readFlag("vps_max_tid_ref_present_flag"));
68 this->vps_direct_ref_layer_flag.push_back({});
69 this->vps_max_tid_il_ref_pics_plus1.push_back({});
70 for (unsigned j = 0; j < i; j++)
71 {
72 this->vps_direct_ref_layer_flag[i].push_back(
73 reader.readFlag("vps_direct_ref_layer_flag"));
74 if (this->vps_max_tid_ref_present_flag[i] && this->vps_direct_ref_layer_flag[i][j])
75 {
76 this->vps_max_tid_il_ref_pics_plus1[i].push_back(
77 reader.readBits("vps_max_tid_il_ref_pics_plus1", 3));
78 }
79 }
80 }
81 }
82 else
83 {
84 this->vps_independent_layer_flag.push_back(true);
85 }
86 }
87 if (this->vps_max_layers_minus1 > 0)
88 {
89 if (this->vps_all_independent_layers_flag)
90 {
91 this->vps_each_layer_is_an_ols_flag = reader.readFlag("vps_each_layer_is_an_ols_flag");
92 }
93 if (!this->vps_each_layer_is_an_ols_flag)
94 {
95 if (!this->vps_all_independent_layers_flag)
96 {
97 this->vps_ols_mode_idc =

Callers

nothing calls this directly

Calls 6

OptionsClass · 0.85
readFlagMethod · 0.80
byte_alignedMethod · 0.80
readUEVMethod · 0.80
more_rbsp_dataMethod · 0.80
readBitsMethod · 0.45

Tested by

no test coverage detected