Grok 20.3.2
CodeblockCompress.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 "Codeblock.h"
22
23namespace grk::t1
24{
25
31{
38 explicit CodeblockCompress(uint16_t numLayers) : Codeblock(numLayers), impl_(nullptr) {}
43 {
44 delete impl_;
45 }
46
50 uint8_t getNumPassesInLayer(uint16_t layno)
51 {
52 return getImpl()->getNumPassesInLayer(layno);
53 }
54
59 void setNumPassesInLayer(uint16_t layno, uint8_t passes)
60 {
61 getImpl()->setNumPassesInLayer(layno, passes);
62 }
63
68 void incNumPassesInLayer(uint16_t layno, uint8_t delta)
69 {
70 getImpl()->incNumPassesInLayer(layno, delta);
71 }
72
77 {
78 return getImpl()->getCompressedStream();
79 }
80
84 uint8_t numbps(void)
85 {
86 return getImpl()->numbps();
87 }
88
92 void setNumBps(uint8_t bps)
93 {
94 getImpl()->setNumBps(bps);
95 }
96
100 uint8_t numlenbits()
101 {
102 return getImpl()->numlenbits();
103 }
104
108 void setNumLenBits(uint8_t bits)
109 {
110 getImpl()->setNumLenBits(bits);
111 }
112
116 void init()
117 {
118 getImpl()->init();
119 }
120
128 bool allocData(size_t nominalBlockSize)
129 {
130 return getImpl()->allocData(nominalBlockSize);
131 }
132 CodePass* getPass(uint8_t passno)
133 {
134 return getImpl()->getPass(passno);
135 }
136 uint8_t getNumPasses(void)
137 {
138 return getImpl()->getNumPasses();
139 }
140 void setNumPasses(uint8_t numPasses)
141 {
142 getImpl()->setNumPasses(numPasses);
143 }
145 {
146 return getImpl()->getLastPass();
147 }
148 Layer* getLayer(uint16_t layno)
149 {
150 return getImpl()->getLayer(layno);
151 }
153 {
155 }
156 void setPaddedCompressedStream(uint8_t* stream)
157 {
159 }
161 {
163 }
164 void setNumPassesInPreviousLayers(uint8_t numPasses)
165 {
167 }
169 {
170 if(!impl_)
172 return impl_;
173 }
174
175private:
177 explicit CodeblockCompress(const CodeblockCompress& rhs) = delete;
179};
180
181} // namespace grk::t1
Definition SchedulerFreebyrd.h:36
Buffer< uint8_t, AllocatorVanilla > Buffer8
Definition buffer.h:257
Information about compression/decompression coding pass.
Definition CodeblockCompressImpl.h:32
uint8_t numlenbits()
Gets number of length bits, used to calculate length of code block in bytes.
Definition CodeblockCompress.h:100
CodePass * getLastPass(void)
Definition CodeblockCompress.h:144
CodeblockCompressImpl * impl_
Definition CodeblockCompress.h:176
CodeblockCompress(uint16_t numLayers)
Constructs a CodeblockCompress This struct is a wrapper for CodeblockCompressImpl,...
Definition CodeblockCompress.h:38
Buffer8 * getCompressedStream(void)
Gets compressed stream.
Definition CodeblockCompress.h:76
void setNumPassesInLayer(uint16_t layno, uint8_t passes)
Sets number of passes in layer.
Definition CodeblockCompress.h:59
void init()
Initializes the code block - allocates resources.
Definition CodeblockCompress.h:116
void setNumLenBits(uint8_t bits)
Sets number of length bits, used to calculate length of code block in bytes.
Definition CodeblockCompress.h:108
CodeblockCompress(const CodeblockCompress &rhs)=delete
uint8_t * getPaddedCompressedStream(void)
Definition CodeblockCompress.h:152
void setNumPassesInPreviousLayers(uint8_t numPasses)
Definition CodeblockCompress.h:164
void setNumBps(uint8_t bps)
Sets number of bit planes in code blocks.
Definition CodeblockCompress.h:92
void incNumPassesInLayer(uint16_t layno, uint8_t delta)
Increments the number of passes in layer.
Definition CodeblockCompress.h:68
uint8_t numbps(void)
Gets number of bit planes in code block.
Definition CodeblockCompress.h:84
uint8_t getNumPasses(void)
Definition CodeblockCompress.h:136
uint8_t getNumPassesInPreviousLayers(void)
Definition CodeblockCompress.h:160
bool allocData(size_t nominalBlockSize)
Allocates data memory for a compression code block.
Definition CodeblockCompress.h:128
void setNumPasses(uint8_t numPasses)
Definition CodeblockCompress.h:140
Layer * getLayer(uint16_t layno)
Definition CodeblockCompress.h:148
CodeblockCompressImpl * getImpl(void)
Definition CodeblockCompress.h:168
uint8_t getNumPassesInLayer(uint16_t layno)
Gets number of passes in layer.
Definition CodeblockCompress.h:50
CodePass * getPass(uint8_t passno)
Definition CodeblockCompress.h:132
CodeblockCompress & operator=(const CodeblockCompress &rhs)=delete
~CodeblockCompress()
Destorys a CodeblockCompress.
Definition CodeblockCompress.h:42
void setPaddedCompressedStream(uint8_t *stream)
Definition CodeblockCompress.h:156
Definition CodeblockCompressImpl.h:98
bool allocData(size_t nominalBlockSize)
Allocates data memory for a compression code block.
Definition CodeblockCompressImpl.h:126
uint8_t * getPaddedCompressedStream(void)
Definition CodeblockCompressImpl.h:166
void setNumPassesInPreviousLayers(uint8_t numPasses)
Definition CodeblockCompressImpl.h:178
uint8_t getNumPassesInPreviousLayers(void)
Definition CodeblockCompressImpl.h:174
uint8_t getNumPasses(void) const
Definition CodeblockCompressImpl.h:150
CodePass * getPass(uint8_t passno)
Definition CodeblockCompressImpl.h:146
CodePass * getLastPass(void)
Definition CodeblockCompressImpl.h:158
void setNumPasses(uint8_t numPasses)
Definition CodeblockCompressImpl.h:154
void init()
Definition CodeblockCompressImpl.h:112
void setPaddedCompressedStream(uint8_t *stream)
Definition CodeblockCompressImpl.h:170
Layer * getLayer(uint16_t layno)
Definition CodeblockCompressImpl.h:162
uint16_t numLayers_
Number of layers in code block.
Definition Codeblock.h:62
Codeblock(uint16_t numLayers)
Creates a Codeblock.
Definition Codeblock.h:53
uint8_t numbps(void)
Definition CodeblockImpl.h:52
void incNumPassesInLayer(uint16_t layno, uint8_t delta)
Definition CodeblockImpl.h:43
void setNumBps(uint8_t bps)
Definition CodeblockImpl.h:56
uint8_t getNumPassesInLayer(uint16_t layno)
Definition CodeblockImpl.h:33
void setNumPassesInLayer(uint16_t layno, uint8_t passes)
Definition CodeblockImpl.h:38
void setNumLenBits(uint8_t bits)
Definition CodeblockImpl.h:64
Buffer8 * getCompressedStream(void)
Definition CodeblockImpl.h:48
uint8_t numlenbits()
Definition CodeblockImpl.h:60
Store information on quality layer.
Definition CodeblockCompressImpl.h:70