Grok  10.0.3
PacketParser.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2022 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 
22 namespace grk
23 {
24 
25 struct TileProcessor;
26 
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);
47  uint16_t compno_;
48  uint8_t resno_;
49  uint64_t precinctIndex_;
50  uint16_t layno_;
51  uint8_t* data_;
52  size_t tileBytes_;
55  // header bytes in packet - doesn't include packed header bytes
58  uint32_t readDataBytes_;
62 };
63 
65 {
66  PrecinctPacketParsers(TileProcessor* tileProcessor);
68  void pushParser(PacketParser* parser);
71  uint16_t numParsers_;
73 };
74 
75 struct TileProcessor;
76 
77 struct ParserMap
78 {
79  ParserMap(TileProcessor* tileProcessor);
80  ~ParserMap();
81  void pushParser(uint64_t precinctIndex, PacketParser* parser);
82 
84  std::map<uint64_t, PrecinctPacketParsers*> precinctParsers_;
85 };
86 
87 } // namespace grk
Definition: PacketParser.h:28
void readDataFinalize(void)
Definition: PacketParser.cpp:448
bool tagBitsPresent_
Definition: PacketParser.h:54
uint8_t * data_
Definition: PacketParser.h:51
PacketParser(TileProcessor *tileProcessor, uint16_t packetSequenceNumber, uint16_t compno, uint8_t resno, uint64_t precinctIndex, uint16_t layno, uint8_t *data, uint32_t lengthFromMarker, size_t tileBytes, size_t remainingTilePartBytes)
Definition: PacketParser.cpp:22
uint64_t precinctIndex_
Definition: PacketParser.h:49
uint32_t numSignalledDataBytes(void)
Definition: PacketParser.cpp:52
uint32_t lengthFromMarker_
Definition: PacketParser.h:59
size_t remainingTilePartBytes_
Definition: PacketParser.h:53
uint32_t numSignalledBytes(void)
Definition: PacketParser.cpp:60
uint32_t readDataBytes_
Definition: PacketParser.h:58
uint16_t packetSequenceNumber_
Definition: PacketParser.h:46
void readData(void)
Definition: PacketParser.cpp:359
uint16_t layno_
Definition: PacketParser.h:50
TileProcessor * tileProcessor_
Definition: PacketParser.h:45
bool parsedHeader_
Definition: PacketParser.h:60
uint32_t numReadDataBytes(void)
Definition: PacketParser.cpp:56
bool headerError_
Definition: PacketParser.h:61
uint32_t signalledDataBytes_
Definition: PacketParser.h:57
uint32_t packetHeaderBytes_
Definition: PacketParser.h:56
uint16_t compno_
Definition: PacketParser.h:47
void initSegment(DecompressCodeblock *cblk, uint32_t index, uint8_t cblk_sty, bool first)
Definition: PacketParser.cpp:332
virtual ~PacketParser(void)=default
uint32_t numHeaderBytes(void)
Definition: PacketParser.cpp:48
void readHeader(void)
Definition: PacketParser.cpp:65
size_t tileBytes_
Definition: PacketParser.h:52
uint8_t resno_
Definition: PacketParser.h:48
void print(void)
Definition: PacketParser.cpp:32
Copyright (C) 2016-2022 Grok Image Compression Inc.
Definition: ICacheable.h:20
Definition: Codeblock.h:201
Definition: PacketParser.h:78
void pushParser(uint64_t precinctIndex, PacketParser *parser)
Definition: PacketParser.cpp:495
~ParserMap()
Definition: PacketParser.cpp:489
std::map< uint64_t, PrecinctPacketParsers * > precinctParsers_
Definition: PacketParser.h:84
TileProcessor * tileProcessor_
Definition: PacketParser.h:83
ParserMap(TileProcessor *tileProcessor)
Definition: PacketParser.cpp:487
Definition: PacketParser.h:65
uint16_t allocatedParsers_
Definition: PacketParser.h:72
void pushParser(PacketParser *parser)
Definition: PacketParser.cpp:475
TileProcessor * tileProcessor_
Definition: PacketParser.h:69
PrecinctPacketParsers(TileProcessor *tileProcessor)
Definition: PacketParser.cpp:455
PacketParser ** parsers_
Definition: PacketParser.h:70
uint16_t numParsers_
Definition: PacketParser.h:71
~PrecinctPacketParsers(void)
Definition: PacketParser.cpp:468
Definition: TileProcessor.h:78