49 return lossless ? 1 : 2;
57 grk_rect32 unreducedImageCompWindow, uint8_t numresolutions,
58 uint8_t reducedNumResolutions)
62 assert(reducedNumResolutions > 0);
63 auto currentRes = unreducedTileComp;
64 for(uint8_t i = 0; i < numresolutions; ++i)
66 bool finalResolution = i == numresolutions - 1;
78 (uint32_t)(numresolutions - reducedNumResolutions));
83 auto tileCompAtRes =
resolution_[reducedNumResolutions - 1];
84 auto tileCompAtLowerRes =
88 numresolutions, (uint8_t)(reducedNumResolutions - 1U),
nullptr, tileCompAtRes,
93 highestResWindow->disableBandWindowAllocation();
96 for(uint8_t resno = 0; resno < reducedNumResolutions - 1; ++resno)
103 useBandWindows() ?
nullptr : highestResWindow->getResWindowBufferREL(),
164 grk_rect32 unreducedImageCompWindow, uint8_t numresolutions,
165 uint8_t reducedNumResolutions)
167 reducedTileComp, unreducedImageCompWindow, numresolutions,
168 reducedNumResolutions)
188 uint32_t& offsety)
const
193 auto band = res.tileBand +
getBandIndex(resno, orientation);
204 offsetx += resLower.width();
206 offsety += resLower.height();
234 return this->
resWindows[0]->getResWindowBufferREL();
236 return this->
resWindows[resno]->getBandWindowBufferPaddedREL(orientation);
254 return this->
resWindows[0]->getResWindowBufferSimple();
256 return this->
resWindows[resno]->getBandWindowBufferPaddedSimple(orientation);
274 return this->
resWindows[0]->getResWindowBufferSimpleF();
276 return this->
resWindows[resno]->getBandWindowBufferPaddedSimpleF(orientation);
288 return this->
resWindows[resno]->getBandWindowPadded(orientation);
297 assert(resno > 0 && resno < this->
resolution_.size());
299 return this->
resWindows[resno]->getResWindowBufferSplitREL(orientation);
331 return this->
resWindows[resno]->getResWindowBufferREL();
385 return (uint64_t)win->stride * win->height();
419 return this->
resWindows.back()->getResWindowBufferREL();
429 index = (uint8_t)orientation - 1;
Copyright (C) 2016-2025 Grok Image Compression Inc.
Definition ICacheable.h:20
grk_rect< uint32_t > grk_rect32
Definition geometry.h:61
eSplitOrientation
Definition ResWindow.h:45
constexpr T getFilterPad(bool lossless)
Definition TileComponentWindow.h:47
eBandOrientation
Definition ResSimple.h:23
@ BAND_ORIENT_LL
Definition ResSimple.h:24
Definition BlockExec.h:45
Definition ResSimple.h:43
static grk_rect32 getBandWindow(uint8_t numDecomps, uint8_t orientation, grk_rect32 tileCompWindowUnreduced)
Get band window (in tile component coordinates) for specified number of decompositions.
Definition ResSimple.h:77
ResWindow.
Definition ResWindow.h:70
grk_rect32 bounds() const
Get bounds of tile component (canvas coordinates) decompress: reduced canvas coordinates of window co...
Definition TileComponentWindow.h:120
bool wholeTileDecompress_
Definition TileComponentWindow.h:155
grk_rect32 unreducedBounds_
Definition TileComponentWindow.h:149
grk_rect32 unreducedBounds() const
Definition TileComponentWindow.h:124
bool compress_
Definition TileComponentWindow.h:154
TileComponentWindowBase(bool isCompressor, bool lossless, bool wholeTileDecompress, grk_rect32 unreducedTileComp, grk_rect32 reducedTileComp, grk_rect32 unreducedImageCompWindow, uint8_t numresolutions, uint8_t reducedNumResolutions)
Definition TileComponentWindow.h:55
grk_rect32 bounds_
Definition TileComponentWindow.h:150
virtual ~TileComponentWindowBase()
Definition TileComponentWindow.h:110
bool alloc()
Definition TileComponentWindow.h:128
std::vector< ResWindow< T > * > resWindows
Definition TileComponentWindow.h:145
std::vector< ResSimple > resolution_
Definition TileComponentWindow.h:153
bool useBandWindows() const
Definition TileComponentWindow.h:140
const Buf2dAligned * getBandWindowBufferPaddedREL(uint8_t resno, eBandOrientation orientation) const
Get padded band window buffer.
Definition TileComponentWindow.h:227
const grk_buf2d_simple< float > getResWindowBufferSplitSimpleF(uint8_t resno, eSplitOrientation orientation) const
Definition TileComponentWindow.h:317
const Buf2dAligned * getResWindowBufferREL(uint32_t resno) const
Get resolution window.
Definition TileComponentWindow.h:329
Buf2dAligned * getResWindowBufferHighestREL(void) const
Get highest resolution window.
Definition TileComponentWindow.h:417
grk_buf2d_simple< float > getResWindowBufferHighestSimpleF(void) const
Get highest resolution window.
Definition TileComponentWindow.h:378
grk_buf2d_simple< int32_t > getResWindowBufferHighestSimple(void) const
Get highest resolution window.
Definition TileComponentWindow.h:369
const grk_buf2d_simple< int32_t > getResWindowBufferSimple(uint32_t resno) const
Get resolution window.
Definition TileComponentWindow.h:339
const Buf2dAligned * getCodeBlockDestWindowREL(uint8_t resno, eBandOrientation orientation) const
Get code block destination window.
Definition TileComponentWindow.h:407
const grk_buf2d_simple< float > getResWindowBufferSimpleF(uint32_t resno) const
Get resolution window.
Definition TileComponentWindow.h:349
~TileComponentWindow()=default
const Buf2dAligned * getResWindowBufferSplitREL(uint8_t resno, eSplitOrientation orientation) const
Definition TileComponentWindow.h:295
const grk_rect32 * getBandWindowPadded(uint8_t resno, eBandOrientation orientation) const
Get padded band window.
Definition TileComponentWindow.h:286
uint8_t getBandIndex(uint8_t resno, eBandOrientation orientation) const
Definition TileComponentWindow.h:425
void transfer(T **buffer, uint32_t *stride)
Definition TileComponentWindow.h:394
void toRelativeCoordinates(uint8_t resno, eBandOrientation orientation, uint32_t &offsetx, uint32_t &offsety) const
Transform code block offsets from canvas coordinates to either band coordinates (relative to sub band...
Definition TileComponentWindow.h:187
const grk_buf2d_simple< int32_t > getBandWindowBufferPaddedSimple(uint8_t resno, eBandOrientation orientation) const
Get padded band window buffer.
Definition TileComponentWindow.h:248
void postProcess(Buf2dAligned &src, uint8_t resno, eBandOrientation bandOrientation, DecompressBlockExec *block)
Definition TileComponentWindow.h:210
uint32_t getResWindowBufferHighestStride(void) const
Get highest resolution window.
Definition TileComponentWindow.h:359
const grk_buf2d_simple< int32_t > getResWindowBufferSplitSimple(uint8_t resno, eSplitOrientation orientation) const
Definition TileComponentWindow.h:306
TileComponentWindow(bool isCompressor, bool lossless, bool wholeTileDecompress, grk_rect32 unreducedTileComp, grk_rect32 reducedTileComp, grk_rect32 unreducedImageCompWindow, uint8_t numresolutions, uint8_t reducedNumResolutions)
Definition TileComponentWindow.h:162
const grk_buf2d_simple< float > getBandWindowBufferPaddedSimpleF(uint8_t resno, eBandOrientation orientation) const
Get padded band window buffer.
Definition TileComponentWindow.h:267
bool useBufferCoordinatesForCodeblock() const
Definition TileComponentWindow.h:421
uint64_t stridedArea(void) const
Definition TileComponentWindow.h:382
void attach(T *buffer, uint32_t stride)
Definition TileComponentWindow.h:389
grk_buf2d< T, AllocatorAligned > Buf2dAligned
Definition TileComponentWindow.h:161
void transfer(T **buffer, uint32_t *strd)
Definition buffer.h:326
void copyFrom(const grk_buf2d &src, F filter)
Definition buffer.h:347
void attach(T *buffer, uint32_t strd)
Definition buffer.h:292
grk_buf2d_simple< float > simpleF(void) const
Definition buffer.h:251
grk_buf2d_simple< T > simple(void) const
Definition buffer.h:247
uint32_t stride
Definition buffer.h:391
grk_rect< T > intersection(const grk_rect< T > rhs) const
Definition geometry.h:281
grk_rect< T > scaleDownCeilPow2(uint32_t power) const
Definition geometry.h:268