51 (void)tileCompUnreduced;
63 std::vector< grk_buffer_2d<T>* > unpaddedBandWindows;
70 unpaddedBandWindows.push_back(
new grk_buffer_2d<T>(bandWindow.pan(-(int64_t)band.x0, -(int64_t)band.y0)));
75 m_resWindow->x0 = min<uint32_t>(2 * win_low->x0, 2 * win_high->x0 + 1);
79 m_resWindow->y0 = min<uint32_t>(2 * win_low->y0, 2 * win_high->y0 + 1);
96 for (
auto &b : unpaddedBandWindows)
102 assert(tileCompAtRes->
numBandWindows == 3 || !tileCompAtLowerRes);
103 if (tileCompAtLowerRes) {
105 auto b = tileCompAtRes->
band + i;
109 auto b = &tileCompWindow;
178 if (!b->alloc(clear))
218 bool wholeTileDecompress,
223 uint8_t numresolutions,
230 auto unreducedImageCompWindow = unreducedTileOrImageCompWindow;
238 assert(reducedNumResolutions > 0);
239 for (uint32_t resno = 0; resno < reducedNumResolutions; ++resno)
242 auto tileCompAtRes = tileCompResolutions + reducedNumResolutions - 1;
243 auto tileCompAtLowerRes = reducedNumResolutions > 1 ? tileCompResolutions + reducedNumResolutions - 2 :
nullptr;
246 reducedNumResolutions - 1,
253 wholeTileDecompress ? 0 : getFilterPad<uint32_t>(lossless));
256 topLevel->m_resWindowTopLevel = topLevel->m_resWindow;
258 for (uint8_t resno = 0; resno < reducedNumResolutions - 1; ++resno) {
265 tileCompResolutions + resno,
266 resno > 0 ? tileCompResolutions + resno - 1 :
nullptr,
270 wholeTileDecompress ? 0 : getFilterPad<uint32_t>(lossless))
294 auto band = res->band +
getBandIndex(resno,orientation);
296 uint32_t x = offsetx;
297 uint32_t y = offsety;
307 x += resLower->width();
309 y += resLower->height();
338 if (
m_resWindows[resno]->m_paddedTileBandWindow.empty())
340 return m_resWindows[resno]->m_paddedTileBandWindow[orientation];
351 return m_resWindows[resno]->m_splitResWindow[orientation];
404 void transfer(T** buffer,
bool* owns, uint32_t *stride){
423 index = (uint8_t)orientation;
Copyright (C) 2016-2021 Grok Image Compression Inc.
Definition: BitIO.cpp:23
grk_rect_u32 getTileCompBandWindow(uint8_t num_res, uint8_t resno, uint8_t orientation, grk_rect_u32 unreducedTileCompWindow)
Get band window in tile component coordinates for specified resolution and band orientation.
Definition: util.cpp:32
eSplitOrientation
Definition: T1Structs.h:29
@ SPLIT_H
Definition: T1Structs.h:31
@ SPLIT_L
Definition: T1Structs.h:30
@ SPLIT_NUM_ORIENTATIONS
Definition: T1Structs.h:32
eBandOrientation
Definition: T1Structs.h:36
@ BAND_ORIENT_HH
Definition: T1Structs.h:40
@ BAND_ORIENT_HL
Definition: T1Structs.h:38
@ BAND_NUM_ORIENTATIONS
Definition: T1Structs.h:41
@ BAND_ORIENT_LH
Definition: T1Structs.h:39
@ BAND_ORIENT_LL
Definition: T1Structs.h:37
grk_rectangle< uint32_t > grk_rect_u32
Definition: util.h:56
Class to manage multiple buffers needed to perform DWT transform.
Definition: TileComponentWindowBuffer.h:30
grk_buffer_2d< T > * m_resWindowTopLevel
Definition: TileComponentWindowBuffer.h:198
Resolution * m_tileCompRes
Definition: TileComponentWindowBuffer.h:192
grk_buffer_2d< T > * m_splitResWindow[SPLIT_NUM_ORIENTATIONS]
Definition: TileComponentWindowBuffer.h:196
~ResWindow()
Definition: TileComponentWindowBuffer.h:117
bool m_allocated
Definition: TileComponentWindowBuffer.h:191
std::vector< grk_rect_u32 > m_paddedTileBandWindow
Definition: TileComponentWindowBuffer.h:195
ResWindow(uint8_t numresolutions, uint8_t resno, grk_buffer_2d< T > *resWindowTopLevel, Resolution *tileCompAtRes, Resolution *tileCompAtLowerRes, grk_rect_u32 tileCompWindow, grk_rect_u32 tileCompWindowUnreduced, grk_rect_u32 tileCompUnreduced, uint32_t FILTER_WIDTH)
Definition: TileComponentWindowBuffer.h:36
uint32_t m_filterWidth
Definition: TileComponentWindowBuffer.h:199
Resolution * m_tileCompResLower
Definition: TileComponentWindowBuffer.h:193
grk_buffer_2d< T > * m_resWindow
Definition: TileComponentWindowBuffer.h:197
std::vector< grk_buffer_2d< T > * > m_bandWindowBufferDim
Definition: TileComponentWindowBuffer.h:194
bool alloc(bool clear)
Definition: TileComponentWindowBuffer.h:125
Definition: T1Structs.h:228
uint32_t numBandWindows
Definition: T1Structs.h:239
Subband band[BAND_NUM_INDICES]
Definition: T1Structs.h:237
Definition: TileComponentWindowBuffer.h:215
bool useBandWindows() const
Definition: TileComponentWindowBuffer.h:411
std::vector< Resolution * > m_tileCompResolutions
Definition: TileComponentWindowBuffer.h:451
bool useResCoordsForCodeBlock() const
Definition: TileComponentWindowBuffer.h:416
uint8_t m_numResolutions
Definition: TileComponentWindowBuffer.h:457
const grk_buffer_2d< T > * getWindow(void) const
Get tile window.
Definition: TileComponentWindowBuffer.h:369
~TileComponentWindowBuffer()
Definition: TileComponentWindowBuffer.h:276
const grk_buffer_2d< T > * getWindow(uint32_t resno) const
Get resolution window.
Definition: TileComponentWindowBuffer.h:360
grk_rect_u32 m_bounds
Definition: TileComponentWindowBuffer.h:447
grk_rect_u32 unreduced_bounds() const
Definition: TileComponentWindowBuffer.h:391
bool m_wholeTileDecompress
Definition: TileComponentWindowBuffer.h:460
const grk_buffer_2d< T > * getCodeBlockDestWindow(uint8_t resno, eBandOrientation orientation) const
Get code block destination window.
Definition: TileComponentWindowBuffer.h:322
uint8_t getBandIndex(uint8_t resno, eBandOrientation orientation) const
Definition: TileComponentWindowBuffer.h:420
uint64_t strided_area(void) const
Definition: TileComponentWindowBuffer.h:395
TileComponentWindowBuffer(bool isCompressor, bool lossless, bool wholeTileDecompress, grk_rect_u32 tileCompUnreduced, grk_rect_u32 tileCompReduced, grk_rect_u32 unreducedTileOrImageCompWindow, Resolution *tileCompResolutions, uint8_t numresolutions, uint8_t reducedNumResolutions)
Definition: TileComponentWindowBuffer.h:216
const grk_buffer_2d< T > * getWindow(uint8_t resno, eBandOrientation orientation) const
Get non-LL band window.
Definition: TileComponentWindowBuffer.h:333
grk_rect_u32 m_unreducedBounds
Definition: TileComponentWindowBuffer.h:446
bool m_compress
Definition: TileComponentWindowBuffer.h:459
const grk_rect_u32 getPaddedTileBandWindow(uint8_t resno, eBandOrientation orientation) const
Definition: TileComponentWindowBuffer.h:337
void transfer(T **buffer, bool *owns, uint32_t *stride)
Definition: TileComponentWindowBuffer.h:404
std::vector< ResWindow< T > * > m_resWindows
Definition: TileComponentWindowBuffer.h:454
void transform(uint8_t resno, eBandOrientation orientation, uint32_t &offsetx, uint32_t &offsety) const
Tranform code block offsets to either band coordinates or resolution coordinates.
Definition: TileComponentWindowBuffer.h:290
grk_rect_u32 bounds() const
Get bounds of tile component decompress: reduced tile component coordinates of window compress: unred...
Definition: TileComponentWindowBuffer.h:387
grk_buffer_2d< T > * getBandWindow(uint8_t resno, eBandOrientation orientation) const
If resno is > 0, return LL,HL,LH or HH band window, otherwise return LL resolution window.
Definition: TileComponentWindowBuffer.h:432
const grk_buffer_2d< T > * getSplitWindow(uint8_t resno, eSplitOrientation orientation) const
Definition: TileComponentWindowBuffer.h:348
bool alloc()
Definition: TileComponentWindowBuffer.h:373
void attach(T *buffer, uint32_t stride)
Definition: TileComponentWindowBuffer.h:400
grk_buffer_2d< T > * getTileBuf() const
Definition: TileComponentWindowBuffer.h:439
T y0
Definition: util.h:84
bool is_valid(void) const
Definition: util.h:99
grk_rectangle< T > rectceildivpow2(uint32_t power) const
Definition: util.h:133
grk_rectangle< T > intersection(const grk_rectangle< T > rhs) const
Definition: util.h:151
T height() const
Definition: util.h:186
T width() const
Definition: util.h:183
grk_rectangle< T > & grow(T boundary)
Definition: util.h:206