Skip to content

Commit 404e1b1

Browse files
author
Grok Compression
committed
excalibur: prepare for exc block to wrap grk BlockExec
1 parent 76dd6e0 commit 404e1b1

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

src/lib/core/scheduling/excalibur/DecompressSchedulerExcalibur.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ bool DecompressSchedulerExcalibur::scheduleT1(ITileProcessor* tileProcessor)
175175
block->R_b = prec_ + gain_b[band->orientation_];
176176
block->finalLayer_ = finalLayer;
177177

178-
tf::Task t = placeholder();
179-
auto blockFunc = [this, activePool, tileProcessor, block, tccp, cbw, cbh, cacheAll] {
178+
std::function<void()> op = [this, activePool, tileProcessor, block, tccp, cbw, cbh,
179+
cacheAll] {
180180
if(success_)
181181
{
182182
t1::ICoder* coder = nullptr;
@@ -203,7 +203,9 @@ bool DecompressSchedulerExcalibur::scheduleT1(ITileProcessor* tileProcessor)
203203
}
204204
}
205205
};
206-
t.work(blockFunc);
206+
block->setOpen(op);
207+
tf::Task t = placeholder();
208+
t.work([block] { block->open(); });
207209
}
208210
}
209211
}

src/lib/core/t1/BlockExec.h

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,15 @@
2727
namespace grk::t1
2828
{
2929

30-
struct BlockExec
30+
struct IOpenable
3131
{
32+
virtual void open() = 0;
33+
};
34+
35+
struct BlockExec : public IOpenable
36+
{
37+
using IOpenable::open;
38+
3239
BlockExec() = default;
3340
virtual ~BlockExec() = default;
3441
virtual bool open(ICoder* coder) = 0;
@@ -64,6 +71,15 @@ struct DecompressBlockExec : public BlockExec
6471
{
6572
delete cachedCoder_;
6673
}
74+
void setOpen(std::function<void()>& open)
75+
{
76+
open_ = open;
77+
}
78+
void open(void) override
79+
{
80+
if(open_)
81+
open_();
82+
}
6783
bool open(ICoder* coder) override
6884
{
6985
auto activeCoder = cachedCoder_ ? cachedCoder_ : coder;
@@ -99,14 +115,22 @@ struct DecompressBlockExec : public BlockExec
99115
bool shouldCacheCoder_ = false;
100116
bool finalLayer_ = false;
101117

118+
private:
119+
std::function<void()> open_;
120+
102121
// Delete copy constructor and assignment operator
103122
DecompressBlockExec(const DecompressBlockExec&) = delete;
104123
DecompressBlockExec& operator=(const DecompressBlockExec&) = delete;
105124
};
106125
struct CompressBlockExec : public BlockExec
107126
{
127+
using IOpenable::open;
128+
108129
CompressBlockExec() = default;
109130
~CompressBlockExec() = default;
131+
132+
void open(void) override {}
133+
110134
bool open(ICoder* coder)
111135
{
112136
return coder->compress(this);

0 commit comments

Comments
 (0)