Grok 20.3.2
debug_context.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016-2026 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
18#pragma once
19
20#include <queue>
21#include <map>
22#include <cassert>
23#include <cstdint>
24
25namespace grk
26{
27
28using ResolutionLayerKey = std::pair<uint8_t, uint16_t>;
29using QueueMap = std::map<ResolutionLayerKey, std::queue<t1::mqcoder>>;
30
32{
33 BackupCache(const t1::mqcoder& coder, uint8_t passno, uint8_t position, uint16_t i, uint16_t k)
34 : coder_(coder), passno_(passno), position_(position), i_(i), k_(k)
35 {}
37 uint8_t passno_;
38 uint8_t position_;
39 uint16_t i_;
40 uint16_t k_;
41};
42
44{
45 uint8_t passno_ = 0xFF;
46 uint8_t position_ = 0xFF;
47 uint16_t i_ = 0xFFFF;
48 uint16_t k_ = 0xFFFF;
49
50 LocationProbe() = default;
51 LocationProbe(uint8_t passno, uint8_t position, uint16_t i, uint16_t k);
52
53 bool probe(uint8_t passno, uint8_t position, uint16_t i, uint16_t k) const;
54};
55
57{
58public:
59 static DebugContext& getInstance();
60
61 bool handle(const t1::mqcoder& mq, uint8_t passno, uint8_t position, uint16_t i, uint16_t k);
63 void restoreBackup(void);
64
65 uint16_t compno_;
66 uint8_t resno_;
68 uint16_t layno_;
69 uint32_t cblkno_;
73 uint16_t maxLayers_;
75
76private:
78 void checkEmpty() const;
79 std::queue<t1::mqcoder>& getQueue(uint16_t layer);
80 void logProbe(bool differential, uint16_t layer, size_t order, uint32_t c, uint8_t passno,
81 uint8_t position, uint16_t i, uint16_t k) const;
82
84 std::queue<BackupCache> backupQueue_;
85 size_t queueSize_[256] = {0}; // Initialize all elements to 0
86};
87
88} // namespace grk
std::queue< t1::mqcoder > & getQueue(uint16_t layer)
Definition debug_context.cpp:116
uint16_t maxLayers_
Definition debug_context.h:73
DebugContext()
Definition debug_context.cpp:34
bool debug_backup
Definition debug_context.h:72
uint16_t layno_
Definition debug_context.h:68
LocationProbe probe_
Definition debug_context.h:74
uint8_t numResolutions_
Definition debug_context.h:70
uint16_t compno_
Definition debug_context.h:65
uint16_t differentialLayers_
Definition debug_context.h:71
std::queue< BackupCache > backupQueue_
Definition debug_context.h:84
uint64_t precinctIndex_
Definition debug_context.h:67
uint32_t cblkno_
Definition debug_context.h:69
size_t queueSize_[256]
Definition debug_context.h:85
void incrementDifferentialLayer()
Definition debug_context.cpp:92
void restoreBackup(void)
Definition debug_context.cpp:80
uint8_t resno_
Definition debug_context.h:66
void logProbe(bool differential, uint16_t layer, size_t order, uint32_t c, uint8_t passno, uint8_t position, uint16_t i, uint16_t k) const
Definition debug_context.cpp:122
void checkEmpty() const
Definition debug_context.cpp:106
QueueMap referenceCoders_
Definition debug_context.h:83
bool handle(const t1::mqcoder &mq, uint8_t passno, uint8_t position, uint16_t i, uint16_t k)
Definition debug_context.cpp:47
static DebugContext & getInstance()
Definition debug_context.cpp:40
ResWindow.
Definition CompressedChunkCache.h:36
std::map< ResolutionLayerKey, std::queue< t1::mqcoder > > QueueMap
Definition debug_context.h:29
std::pair< uint8_t, uint16_t > ResolutionLayerKey
Definition debug_context.h:28
t1::mqcoder coder_
Definition debug_context.h:36
uint8_t passno_
Definition debug_context.h:37
uint16_t i_
Definition debug_context.h:39
BackupCache(const t1::mqcoder &coder, uint8_t passno, uint8_t position, uint16_t i, uint16_t k)
Definition debug_context.h:33
uint16_t k_
Definition debug_context.h:40
uint8_t position_
Definition debug_context.h:38
Definition debug_context.h:44
uint8_t position_
Definition debug_context.h:46
uint16_t i_
Definition debug_context.h:47
uint16_t k_
Definition debug_context.h:48
LocationProbe()=default
uint8_t passno_
Definition debug_context.h:45
bool probe(uint8_t passno, uint8_t position, uint16_t i, uint16_t k) const
Definition debug_context.cpp:29
MQ coder.
Definition mqc.h:39