Grok 10.0.5
PacketParser.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016-2023 Grok Image Compression Inc.
3 *
4 * This source code is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License, version 3,
6 * as published by the Free Software Foundation.
7 *
8 * This source code is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Affero General Public License for more details.
12 *
13 * You should have received a copy of the GNU Affero General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include <cstdint>
20#include <map>
21
22namespace grk
23{
24
25struct TileProcessor;
26
27class PacketParser
28{
29 public:
30 PacketParser(TileProcessor* tileProcessor, uint16_t packetSequenceNumber, uint16_t compno,
31 uint8_t resno, uint64_t precinctIndex, uint16_t layno, uint8_t* data,
32 uint32_t lengthFromMarker, size_t tileBytes, size_t remainingTilePartBytes);
33 virtual ~PacketParser(void) = default;
34 void readHeader(void);
35 void readData(void);
36 uint32_t numHeaderBytes(void);
37 uint32_t numSignalledDataBytes(void);
38 uint32_t numSignalledBytes(void);
39 uint32_t numReadDataBytes(void);
40 void print(void);
41
42 private:
43 void readDataFinalize(void);
44 void initSegment(DecompressCodeblock* cblk, uint32_t index, uint8_t cblk_sty, bool first);
45 TileProcessor* tileProcessor_;
47 uint16_t compno_;
48 uint8_t resno_;
50 uint16_t layno_;
51 uint8_t* data_;
52 size_t tileBytes_;
55 // header bytes in packet - doesn't include packed header bytes
62};
63
64struct PrecinctPacketParsers
65{
66 PrecinctPacketParsers(TileProcessor* tileProcessor);
67 ~PrecinctPacketParsers(void);
68 void pushParser(PacketParser* parser);
69 TileProcessor* tileProcessor_;
70 PacketParser** parsers_;
71 uint16_t numParsers_;
73};
74
75struct TileProcessor;
76
77struct ParserMap
78{
79 ParserMap(TileProcessor* tileProcessor);
80 ~ParserMap();
81 void pushParser(uint64_t precinctIndex, PacketParser* parser);
82
83 TileProcessor* tileProcessor_;
84 std::map<uint64_t, PrecinctPacketParsers*> precinctParsers_;
85};
86
87} // namespace grk
uint64_t precinctIndex
Definition BlockExec.h:78
uint8_t resno
Definition BlockExec.h:53
DecompressCodeblock * cblk
Definition BlockExec.h:52
bool headerError_
Definition CodeStreamDecompress.h:324
uint8_t * data
Definition Codeblock.h:61
uint8_t * data_
Definition CodingParams.h:100
uint8_t cblk_sty
code-block mode
Definition CodingParams.h:64
TileProcessor * tileProcessor_
Definition DecompressScheduler.h:51
uint8_t resno_
Definition PacketIter.h:161
uint16_t layno
Definition PacketIter.h:259
TileProcessor * tileProcessor
Definition PacketManager.h:100
uint16_t compno_
Definition PacketParser.h:47
uint16_t packetSequenceNumber_
Definition PacketParser.h:46
size_t remainingTilePartBytes_
Definition PacketParser.h:53
uint32_t readDataBytes_
Definition PacketParser.h:58
uint16_t layno_
Definition PacketParser.h:50
uint32_t packetHeaderBytes_
Definition PacketParser.h:56
PacketParser ** parsers_
Definition PacketParser.h:70
bool tagBitsPresent_
Definition PacketParser.h:54
std::map< uint64_t, PrecinctPacketParsers * > precinctParsers_
Definition PacketParser.h:84
bool parsedHeader_
Definition PacketParser.h:60
uint64_t precinctIndex_
Definition PacketParser.h:49
uint32_t lengthFromMarker_
Definition PacketParser.h:59
size_t tileBytes_
Definition PacketParser.h:52
uint16_t allocatedParsers_
Definition PacketParser.h:72
uint32_t signalledDataBytes_
Definition PacketParser.h:57
uint16_t numParsers_
Definition PacketParser.h:71
Copyright (C) 2016-2023 Grok Image Compression Inc.
Definition ICacheable.h:20
uint16_t compno
Definition plugin_interface.h:43