Grok 10.0.5
DecompressScheduler.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
18#pragma once
19
20#include "grk_includes.h"
21
22namespace grk
23{
24struct ResDecompressBlocks
25{
26 ResDecompressBlocks(void) = default;
27 void clear(void);
28 bool empty(void) const;
29 void release(void);
30
31 std::vector<DecompressBlockExec*> blocks_;
32};
33
34typedef std::vector<ResDecompressBlocks> ComponentDecompressBlocks;
35typedef std::vector<ComponentDecompressBlocks> TileDecompressBlocks;
36
37class DecompressScheduler : public Scheduler
38{
39 public:
40 DecompressScheduler(TileProcessor* tileProcessor, Tile* tile, TileCodingParams* tcp,
41 uint8_t prec);
42 ~DecompressScheduler();
43
44 bool schedule(uint16_t compno) override;
45
46 private:
47 bool scheduleBlocks(uint16_t compno);
48 bool scheduleWavelet(uint16_t compno);
49 bool decompressBlock(T1Interface* impl, DecompressBlockExec* block);
50 void releaseBlocks(uint16_t compno);
51 TileProcessor* tileProcessor_;
52 TileCodingParams* tcp_;
53 uint8_t prec_;
54 uint16_t numcomps_;
55 TileDecompressBlocks tileBlocks_;
56 WaveletReverse** waveletReverse_;
57};
58
59} // namespace grk
WaveletReverse ** waveletReverse_
Definition DecompressScheduler.h:56
uint8_t prec_
Definition DecompressScheduler.h:53
TileProcessor * tileProcessor_
Definition DecompressScheduler.h:51
TileDecompressBlocks tileBlocks_
Definition DecompressScheduler.h:55
uint16_t numcomps_
Definition DecompressScheduler.h:54
std::vector< DecompressBlockExec * > blocks_
Definition DecompressScheduler.h:31
TileProcessor * tileProcessor
Definition PacketManager.h:100
PrecinctImpl * impl
Definition Precinct.h:86
TileCodingParams * tcp_
Definition mct.h:131
Copyright (C) 2016-2023 Grok Image Compression Inc.
Definition ICacheable.h:20
std::vector< ComponentDecompressBlocks > TileDecompressBlocks
Definition DecompressScheduler.h:35
std::vector< ResDecompressBlocks > ComponentDecompressBlocks
Definition DecompressScheduler.h:34
grk_plugin_tile * tile
Definition plugin_interface.h:64
uint16_t compno
Definition plugin_interface.h:43