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

Method parse

YUViewLib/src/parser/AV1/uncompressed_header.cpp:46–394  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44using namespace reader;
45
46void uncompressed_header::parse(SubByteReaderLogging & reader,
47 std::shared_ptr<sequence_header_obu> seqHeader,
48 GlobalDecodingValues & decValues,
49 unsigned temporal_id,
50 unsigned spatial_id)
51{
52 SubByteReaderLoggingSubLevel subLevel(reader, "uncompressed_header()");
53
54 int idLen = -1;
55 if (seqHeader->frame_id_numbers_present_flag)
56 {
57 idLen = seqHeader->additional_frame_id_length_minus_1 +
58 seqHeader->delta_frame_id_length_minus_2 + 3;
59 }
60 const auto allFrames = (1 << NUM_REF_FRAMES) - 1;
61
62 if (seqHeader->reduced_still_picture_header)
63 {
64 this->show_existing_frame = false;
65 this->frame_type = FrameType::KEY_FRAME;
66 this->FrameIsIntra = true;
67 this->show_frame = true;
68 this->showable_frame = false;
69 }
70 else
71 {
72 auto test = reader.readFlag("show_existing_frame");
73
74 this->show_existing_frame = test;
75
76 if (this->show_existing_frame)
77 {
78 this->frame_to_show_map_idx = reader.readBits("frame_to_show_map_idx", 3);
79 if (seqHeader->decoder_model_info_present_flag &&
80 !seqHeader->timing_info.equal_picture_interval)
81 {
82 reader.logArbitrary("temporal_point_info()");
83 }
84 this->refresh_frame_flags = 0;
85 if (seqHeader->frame_id_numbers_present_flag)
86 {
87 this->display_frame_id = reader.readBits("display_frame_id", idLen);
88 }
89 this->frame_type = decValues.RefFrameType[frame_to_show_map_idx];
90 if (this->frame_type == FrameType::KEY_FRAME)
91 this->refresh_frame_flags = allFrames;
92 if (seqHeader->film_grain_params_present)
93 {
94 // load_grain_params(frame_to_show_map_idx);
95 throw std::logic_error("Not implemented yet.");
96 }
97 return;
98 }
99
100 {
101 auto frame_type_idx =
102 reader.readBits("frame_type",
103 2,

Callers

nothing calls this directly

Calls 10

mark_ref_framesMethod · 0.95
get_qindexMethod · 0.95
OptionsClass · 0.85
formatArrayFunction · 0.85
readFlagMethod · 0.80
logArbitraryMethod · 0.80
set_frame_refsMethod · 0.80
parse_with_refsMethod · 0.80
readBitsMethod · 0.45

Tested by

no test coverage detected