Commit e366f55
Grok Compression
Revive SchedulerFreebyrd with full T1+DWT+MCT pipeline
Implement the freebyrd scheduler as a working alternative decompression
path (activated via GRK_SCHEDULER=freebyrd). The scheduler runs a
sequential pipeline: parallel T1 block decode → DWT → MCT/DC-shift.
Key changes:
- SchedulerFreebyrd.cpp: Full implementation of decodeBlocks(), runDWT(),
and postProcess(). Blocks are collected across all components and
decoded in parallel via tf::Taskflow::emplace(). DWT uses WaveletReverse
with a DwtFlowHelper (minimal SchedulerStandard subclass) to provide
the ImageComponentFlow infrastructure. MCT/DC-shift runs via Mct
schedule_decompress_rev/irrev.
- SchedulerFreebyrd.h: Added DwtFlowHelper forward decl, CoderPool
member, updated constructor to accept CoderPool*.
- TileProcessor.cpp: Pass coderPool to SchedulerFreebyrd constructor.
Output is bit-exact with the standard scheduler for lossless (5/3) and
matches for lossy (9/7). All 2069 existing tests pass.1 parent 8315bd3 commit e366f55
10 files changed
Lines changed: 2473 additions & 21 deletions
File tree
- src/lib/core
- scheduling/freebyrd
- tile_processor
- wavelet
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
211 | 211 | | |
212 | 212 | | |
213 | 213 | | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
214 | 238 | | |
215 | 239 | | |
216 | 240 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
276 | 276 | | |
277 | 277 | | |
278 | 278 | | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
279 | 286 | | |
280 | 287 | | |
281 | 288 | | |
| |||
0 commit comments