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

Function parseRegionCompositionSegment

YUViewLib/src/parser/Subtitles/SubtitleDVB.cpp:65–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63}
64
65void parseRegionCompositionSegment(SubByteReaderLogging &reader, unsigned segment_length)
66{
67 SubByteReaderLoggingSubLevel s(reader, "region_composition_segment()");
68
69 reader.readBits("region_id", 8);
70 reader.readBits("region_version_number", 4);
71 reader.readFlag("region_fill_flag");
72 reader.readBits("reserved", 3);
73 reader.readBits("region_width", 16);
74 reader.readBits("region_height", 16);
75 reader.readBits("region_level_of_compatibility", 3);
76 reader.readBits("region_depth", 3);
77 reader.readBits("reserved", 2);
78 reader.readBits("CLUT_id", 8);
79 reader.readBits("region_8_bit_pixel_code", 8);
80 reader.readBits("region_4_bit_pixel_code", 4);
81 reader.readBits("region_2_bit_pixel_code", 2);
82 reader.readBits("reserved", 2);
83
84 unsigned processed_length = 10;
85 while (processed_length < segment_length)
86 {
87 reader.readBits("object_id", 16);
88 auto object_type = reader.readBits("object_type", 2);
89 reader.readBits("object_provider_flag", 2);
90 reader.readBits("object_horizontal_position", 12);
91 reader.readBits("reserved", 4);
92 reader.readBits("object_vertical_position", 12);
93 processed_length += 6;
94
95 if (object_type == 0x01 || object_type == 0x02)
96 {
97 reader.readBits("foreground_pixel_code", 8);
98 reader.readBits("background_pixel_code", 8);
99 processed_length += 2;
100 }
101 }
102}
103
104void parseCLUTDefinitionSegment(SubByteReaderLogging &reader, unsigned segment_length)
105{

Callers 1

Calls 2

readFlagMethod · 0.80
readBitsMethod · 0.45

Tested by

no test coverage detected