Grok 20.3.2
grk::WaveletReverse Class Reference

#include <WaveletReverse.h>

Classes

struct  PartialTaskInfo

Public Member Functions

 WaveletReverse (CodecScheduler *scheduler, TileComponent *tilec, uint16_t compno, Rect32 window, uint8_t numres, uint8_t qmfbid, uint32_t maxDim, bool wholeTileDecompress, WaveletPoolData *poolData, DcShiftParam dcShift={}, bool cascadeSynthesis=false)
 ~WaveletReverse (void)
bool decompress (void)
template<typename T, uint32_t FILTER_WIDTH, uint32_t VERT_PASS_WIDTH, typename D>
bool partial_tile (ISparseCanvas< int32_t > *sa, std::vector< PartialTaskInfo< T, dwt_scratch< T > > * > &tasks)

Static Public Member Functions

static void step_97 (dwt_scratch< vec4f > *GRK_RESTRICT dwt)
static bool allocCascadeScratch97 (dwt_scratch< vec4f > &scratch, size_t dataLength)
 Allocate DWT scratch buffer with platform-appropriate size for 9/7.

Private Member Functions

void load_h_p0_53 (int32_t *scratch, const uint32_t width, const int32_t *bandL, const int32_t *bandH, int32_t *dest)
void load_h_p1_53 (int32_t *scratch, const uint32_t width, const int32_t *bandL, const int32_t *bandH, int32_t *dest)
void h_53 (uint8_t res, TileComponentWindow< int32_t > *scratch, uint32_t resHeight)
void h_strip_53 (const dwt_scratch< int32_t > *scratch, uint32_t hMin, uint32_t hMax, Buffer2dSimple< int32_t > winL, Buffer2dSimple< int32_t > winH, Buffer2dSimple< int32_t > winDest)
void load_h_53 (const dwt_scratch< int32_t > *scratch, int32_t *bandL, int32_t *bandH, int32_t *dest)
void v_p0_53 (int32_t *scratch, const uint32_t height, int32_t *bandL, const uint32_t strideL, int32_t *bandH, const uint32_t strideH, int32_t *dest, const uint32_t strideDest)
void v_p1_53 (int32_t *scratch, const uint32_t height, int32_t *bandL, const uint32_t strideL, int32_t *bandH, const uint32_t strideH, int32_t *dest, const uint32_t strideDest)
void v_53 (const dwt_scratch< int32_t > *scratch, Buffer2dSimple< int32_t > winL, Buffer2dSimple< int32_t > winH, Buffer2dSimple< int32_t > winDest, uint32_t nb_cols, DcShiftParam dcShift)
void v_strip_53 (const dwt_scratch< int32_t > *scratch, uint32_t wMin, uint32_t wMax, Buffer2dSimple< int32_t > winL, Buffer2dSimple< int32_t > winH, Buffer2dSimple< int32_t > winDest, DcShiftParam dcShift)
void v_53 (uint8_t res, TileComponentWindow< int32_t > *buf, uint32_t resWidth)
bool tile_53 (void)
void load_h_p0_16_53 (int16_t *scratch, const uint32_t width, const int16_t *bandL, const int16_t *bandH, int16_t *dest)
void load_h_p1_16_53 (int16_t *scratch, const uint32_t width, const int16_t *bandL, const int16_t *bandH, int16_t *dest)
void load_h_16_53 (const dwt_scratch< int16_t > *scratch, int16_t *bandL, int16_t *bandH, int16_t *dest)
void h_strip_16_53 (const dwt_scratch< int16_t > *scratch, uint32_t hMin, uint32_t hMax, Buffer2dSimple< int16_t > winL, Buffer2dSimple< int16_t > winH, Buffer2dSimple< int16_t > winDest)
void h_16_53 (uint8_t res, TileComponentWindow< int16_t > *scratch, uint32_t resHeight)
void v_p0_16_53 (int16_t *scratch, const uint32_t height, int16_t *bandL, const uint32_t strideL, int16_t *bandH, const uint32_t strideH, int16_t *dest, const uint32_t strideDest)
void v_p1_16_53 (int16_t *scratch, const uint32_t height, int16_t *bandL, const uint32_t strideL, int16_t *bandH, const uint32_t strideH, int16_t *dest, const uint32_t strideDest)
void v_16_53 (const dwt_scratch< int16_t > *scratch, Buffer2dSimple< int16_t > winL, Buffer2dSimple< int16_t > winH, Buffer2dSimple< int16_t > winDest, uint32_t nb_cols, DcShiftParam dcShift)
void v_strip_16_53 (const dwt_scratch< int16_t > *scratch, uint32_t wMin, uint32_t wMax, Buffer2dSimple< int16_t > winL, Buffer2dSimple< int16_t > winH, Buffer2dSimple< int16_t > winDest, DcShiftParam dcShift)
void v_16_53 (uint8_t res, TileComponentWindow< int16_t > *buf, uint32_t resWidth)
bool tile_16_53 (void)
void h_strip_16_97 (const dwt_scratch< int16_t > *scratch, uint32_t hMin, uint32_t hMax, Buffer2dSimple< int16_t > winL, Buffer2dSimple< int16_t > winH, Buffer2dSimple< int16_t > winDest)
void h_16_97 (uint8_t res, TileComponentWindow< int16_t > *scratch, uint32_t resHeight)
void v_16_97 (const dwt_scratch< int16_t > *scratch, Buffer2dSimple< int16_t > winL, Buffer2dSimple< int16_t > winH, Buffer2dSimple< int16_t > winDest, uint32_t nb_cols, DcShiftParam dcShift)
void v_strip_16_97 (const dwt_scratch< int16_t > *scratch, uint32_t wMin, uint32_t wMax, Buffer2dSimple< int16_t > winL, Buffer2dSimple< int16_t > winH, Buffer2dSimple< int16_t > winDest, DcShiftParam dcShift)
void v_16_97 (uint8_t res, TileComponentWindow< int16_t > *buf, uint32_t resWidth)
bool tile_16_97 (void)
void h_strip_97 (dwt_scratch< vec4f > *GRK_RESTRICT horiz, const uint32_t resHeight, Buffer2dSimple< float > winL, Buffer2dSimple< float > winH, Buffer2dSimple< float > winDest)
bool h_97 (uint8_t res, uint32_t num_threads, size_t dataLength, dwt_scratch< vec4f > &GRK_RESTRICT horiz, const uint32_t resHeight, Buffer2dSimple< float > winL, Buffer2dSimple< float > winH, Buffer2dSimple< float > winDest)
void v_strip_97 (dwt_scratch< vec4f > *GRK_RESTRICT vert, const uint32_t resWidth, const uint32_t resHeight, Buffer2dSimple< float > winL, Buffer2dSimple< float > winH, Buffer2dSimple< float > winDest, DcShiftParam dcShift)
bool v_97 (uint8_t res, uint32_t num_threads, size_t dataLength, dwt_scratch< vec4f > &GRK_RESTRICT vert, const uint32_t resWidth, const uint32_t resHeight, Buffer2dSimple< float > winL, Buffer2dSimple< float > winH, Buffer2dSimple< float > winDest)
void cascade_strip_97 (dwt_scratch< vec4f > *GRK_RESTRICT hScratch, dwt_scratch< vec4f > *GRK_RESTRICT vScratch, const uint32_t resWidth, Buffer2dSimple< float > winLL, Buffer2dSimple< float > winHL, Buffer2dSimple< float > winLH, Buffer2dSimple< float > winHH, Buffer2dSimple< float > winDest, DcShiftParam dcShift)
bool cascade_97 (uint8_t res, uint32_t num_threads, size_t dataLength, dwt_scratch< vec4f > &GRK_RESTRICT hScratch, dwt_scratch< vec4f > &GRK_RESTRICT vScratch, const uint32_t resWidth, const uint32_t resHeight, Buffer2dSimple< float > winLL, Buffer2dSimple< float > winHL, Buffer2dSimple< float > winLH, Buffer2dSimple< float > winHH, Buffer2dSimple< float > tempDest, Buffer2dSimple< float > realDest, std::shared_ptr< std::vector< float > > tempBufMem)
bool tile_97_cascade (void)
bool tile_97 (void)
bool decompressPartial ()
template<typename ST, uint32_t FILTER_WIDTH, uint32_t VERT_PASS_WIDTH, typename D>
bool partial_tile (ISparseCanvas< int32_t > *sa, std::vector< PartialTaskInfo< ST, dwt_scratch< ST > > * > &tasks)

Private Attributes

WaveletPoolDatapoolData_ = nullptr
CodecSchedulerscheduler_ = nullptr
TileComponenttilec_ = nullptr
uint16_t compno_ = 0
Rect32 unreducedWindow_
uint8_t numres_ = 0
uint8_t qmfbid_ = 0
uint32_t maxDim_ = 0
bool wholeTileDecompress_ = true
DcShiftParam dcShift_
dwt_scratch< int32_t > horiz_
dwt_scratch< int32_t > vert_
std::unique_ptr< dwt_scratch< int32_t >[]> horizPool_
std::unique_ptr< dwt_scratch< int32_t >[]> vertPool_
dwt_scratch< int16_t > horiz16_
dwt_scratch< int16_t > vert16_
std::unique_ptr< dwt_scratch< int16_t >[]> horizPool16_
std::unique_ptr< dwt_scratch< int16_t >[]> vertPool16_
dwt_scratch< vec4fhoriz97
dwt_scratch< vec4fvert97
dwt_scratch< vec4fcascade97_h
dwt_scratch< vec4fcascade97_v
bool cascadeSynthesis_ = false
std::vector< PartialTaskInfo< int32_t, dwt_scratch< int32_t > > * > partialTasks53_
std::vector< PartialTaskInfo< vec4f, dwt_scratch< vec4f > > * > partialTasks97_

Friends

class SchedulerFreebyrd
class StripDecompressor

Constructor & Destructor Documentation

◆ WaveletReverse()

grk::WaveletReverse::WaveletReverse ( CodecScheduler * scheduler,
TileComponent * tilec,
uint16_t compno,
Rect32 window,
uint8_t numres,
uint8_t qmfbid,
uint32_t maxDim,
bool wholeTileDecompress,
WaveletPoolData * poolData,
DcShiftParam dcShift = {},
bool cascadeSynthesis = false )

◆ ~WaveletReverse()

grk::WaveletReverse::~WaveletReverse ( void )

Member Function Documentation

◆ allocCascadeScratch97()

bool grk::WaveletReverse::allocCascadeScratch97 ( dwt_scratch< vec4f > & scratch,
size_t dataLength )
static

Allocate DWT scratch buffer with platform-appropriate size for 9/7.

Uses Highway SIMD width to determine the correct PLL_ROWS scaling.

◆ cascade_97()

bool grk::WaveletReverse::cascade_97 ( uint8_t res,
uint32_t num_threads,
size_t dataLength,
dwt_scratch< vec4f > &GRK_RESTRICT hScratch,
dwt_scratch< vec4f > &GRK_RESTRICT vScratch,
const uint32_t resWidth,
const uint32_t resHeight,
Buffer2dSimple< float > winLL,
Buffer2dSimple< float > winHL,
Buffer2dSimple< float > winLH,
Buffer2dSimple< float > winHH,
Buffer2dSimple< float > tempDest,
Buffer2dSimple< float > realDest,
std::shared_ptr< std::vector< float > > tempBufMem )
private

References GRK_RESTRICT.

◆ cascade_strip_97()

void grk::WaveletReverse::cascade_strip_97 ( dwt_scratch< vec4f > *GRK_RESTRICT hScratch,
dwt_scratch< vec4f > *GRK_RESTRICT vScratch,
const uint32_t resWidth,
Buffer2dSimple< float > winLL,
Buffer2dSimple< float > winHL,
Buffer2dSimple< float > winLH,
Buffer2dSimple< float > winHH,
Buffer2dSimple< float > winDest,
DcShiftParam dcShift )
private

References GRK_RESTRICT.

◆ decompress()

bool grk::WaveletReverse::decompress ( void )

◆ decompressPartial()

bool grk::WaveletReverse::decompressPartial ( void )
private

◆ h_16_53()

void grk::WaveletReverse::h_16_53 ( uint8_t res,
TileComponentWindow< int16_t > * scratch,
uint32_t resHeight )
private

◆ h_16_97()

void grk::WaveletReverse::h_16_97 ( uint8_t res,
TileComponentWindow< int16_t > * scratch,
uint32_t resHeight )
private

◆ h_53()

void grk::WaveletReverse::h_53 ( uint8_t res,
TileComponentWindow< int32_t > * scratch,
uint32_t resHeight )
private

◆ h_97()

bool grk::WaveletReverse::h_97 ( uint8_t res,
uint32_t num_threads,
size_t dataLength,
dwt_scratch< vec4f > &GRK_RESTRICT horiz,
const uint32_t resHeight,
Buffer2dSimple< float > winL,
Buffer2dSimple< float > winH,
Buffer2dSimple< float > winDest )
private

References GRK_RESTRICT.

◆ h_strip_16_53()

void grk::WaveletReverse::h_strip_16_53 ( const dwt_scratch< int16_t > * scratch,
uint32_t hMin,
uint32_t hMax,
Buffer2dSimple< int16_t > winL,
Buffer2dSimple< int16_t > winH,
Buffer2dSimple< int16_t > winDest )
private

◆ h_strip_16_97()

void grk::WaveletReverse::h_strip_16_97 ( const dwt_scratch< int16_t > * scratch,
uint32_t hMin,
uint32_t hMax,
Buffer2dSimple< int16_t > winL,
Buffer2dSimple< int16_t > winH,
Buffer2dSimple< int16_t > winDest )
private

◆ h_strip_53()

void grk::WaveletReverse::h_strip_53 ( const dwt_scratch< int32_t > * scratch,
uint32_t hMin,
uint32_t hMax,
Buffer2dSimple< int32_t > winL,
Buffer2dSimple< int32_t > winH,
Buffer2dSimple< int32_t > winDest )
private

◆ h_strip_97()

void grk::WaveletReverse::h_strip_97 ( dwt_scratch< vec4f > *GRK_RESTRICT horiz,
const uint32_t resHeight,
Buffer2dSimple< float > winL,
Buffer2dSimple< float > winH,
Buffer2dSimple< float > winDest )
private

References GRK_RESTRICT.

◆ load_h_16_53()

void grk::WaveletReverse::load_h_16_53 ( const dwt_scratch< int16_t > * scratch,
int16_t * bandL,
int16_t * bandH,
int16_t * dest )
private

◆ load_h_53()

void grk::WaveletReverse::load_h_53 ( const dwt_scratch< int32_t > * scratch,
int32_t * bandL,
int32_t * bandH,
int32_t * dest )
private

◆ load_h_p0_16_53()

void grk::WaveletReverse::load_h_p0_16_53 ( int16_t * scratch,
const uint32_t width,
const int16_t * bandL,
const int16_t * bandH,
int16_t * dest )
private

◆ load_h_p0_53()

void grk::WaveletReverse::load_h_p0_53 ( int32_t * scratch,
const uint32_t width,
const int32_t * bandL,
const int32_t * bandH,
int32_t * dest )
private

◆ load_h_p1_16_53()

void grk::WaveletReverse::load_h_p1_16_53 ( int16_t * scratch,
const uint32_t width,
const int16_t * bandL,
const int16_t * bandH,
int16_t * dest )
private

◆ load_h_p1_53()

void grk::WaveletReverse::load_h_p1_53 ( int32_t * scratch,
const uint32_t width,
const int32_t * bandL,
const int32_t * bandH,
int32_t * dest )
private

◆ partial_tile() [1/2]

template<typename ST, uint32_t FILTER_WIDTH, uint32_t VERT_PASS_WIDTH, typename D>
bool grk::WaveletReverse::partial_tile ( ISparseCanvas< int32_t > * sa,
std::vector< PartialTaskInfo< ST, dwt_scratch< ST > > * > & tasks )
private

Referenced by decompressPartial().

◆ partial_tile() [2/2]

template<typename T, uint32_t FILTER_WIDTH, uint32_t VERT_PASS_WIDTH, typename D>
bool grk::WaveletReverse::partial_tile ( ISparseCanvas< int32_t > * sa,
std::vector< PartialTaskInfo< T, dwt_scratch< T > > * > & tasks )

◆ step_97()

◆ tile_16_53()

bool grk::WaveletReverse::tile_16_53 ( void )
private

◆ tile_16_97()

bool grk::WaveletReverse::tile_16_97 ( void )
private

◆ tile_53()

bool grk::WaveletReverse::tile_53 ( void )
private

◆ tile_97()

bool grk::WaveletReverse::tile_97 ( void )
private

◆ tile_97_cascade()

bool grk::WaveletReverse::tile_97_cascade ( void )
private

◆ v_16_53() [1/2]

void grk::WaveletReverse::v_16_53 ( const dwt_scratch< int16_t > * scratch,
Buffer2dSimple< int16_t > winL,
Buffer2dSimple< int16_t > winH,
Buffer2dSimple< int16_t > winDest,
uint32_t nb_cols,
DcShiftParam dcShift )
private

◆ v_16_53() [2/2]

void grk::WaveletReverse::v_16_53 ( uint8_t res,
TileComponentWindow< int16_t > * buf,
uint32_t resWidth )
private

◆ v_16_97() [1/2]

void grk::WaveletReverse::v_16_97 ( const dwt_scratch< int16_t > * scratch,
Buffer2dSimple< int16_t > winL,
Buffer2dSimple< int16_t > winH,
Buffer2dSimple< int16_t > winDest,
uint32_t nb_cols,
DcShiftParam dcShift )
private

◆ v_16_97() [2/2]

void grk::WaveletReverse::v_16_97 ( uint8_t res,
TileComponentWindow< int16_t > * buf,
uint32_t resWidth )
private

◆ v_53() [1/2]

void grk::WaveletReverse::v_53 ( const dwt_scratch< int32_t > * scratch,
Buffer2dSimple< int32_t > winL,
Buffer2dSimple< int32_t > winH,
Buffer2dSimple< int32_t > winDest,
uint32_t nb_cols,
DcShiftParam dcShift )
private

◆ v_53() [2/2]

void grk::WaveletReverse::v_53 ( uint8_t res,
TileComponentWindow< int32_t > * buf,
uint32_t resWidth )
private

◆ v_97()

bool grk::WaveletReverse::v_97 ( uint8_t res,
uint32_t num_threads,
size_t dataLength,
dwt_scratch< vec4f > &GRK_RESTRICT vert,
const uint32_t resWidth,
const uint32_t resHeight,
Buffer2dSimple< float > winL,
Buffer2dSimple< float > winH,
Buffer2dSimple< float > winDest )
private

References GRK_RESTRICT.

◆ v_p0_16_53()

void grk::WaveletReverse::v_p0_16_53 ( int16_t * scratch,
const uint32_t height,
int16_t * bandL,
const uint32_t strideL,
int16_t * bandH,
const uint32_t strideH,
int16_t * dest,
const uint32_t strideDest )
private

◆ v_p0_53()

void grk::WaveletReverse::v_p0_53 ( int32_t * scratch,
const uint32_t height,
int32_t * bandL,
const uint32_t strideL,
int32_t * bandH,
const uint32_t strideH,
int32_t * dest,
const uint32_t strideDest )
private

◆ v_p1_16_53()

void grk::WaveletReverse::v_p1_16_53 ( int16_t * scratch,
const uint32_t height,
int16_t * bandL,
const uint32_t strideL,
int16_t * bandH,
const uint32_t strideH,
int16_t * dest,
const uint32_t strideDest )
private

◆ v_p1_53()

void grk::WaveletReverse::v_p1_53 ( int32_t * scratch,
const uint32_t height,
int32_t * bandL,
const uint32_t strideL,
int32_t * bandH,
const uint32_t strideH,
int32_t * dest,
const uint32_t strideDest )
private

◆ v_strip_16_53()

void grk::WaveletReverse::v_strip_16_53 ( const dwt_scratch< int16_t > * scratch,
uint32_t wMin,
uint32_t wMax,
Buffer2dSimple< int16_t > winL,
Buffer2dSimple< int16_t > winH,
Buffer2dSimple< int16_t > winDest,
DcShiftParam dcShift )
private

◆ v_strip_16_97()

void grk::WaveletReverse::v_strip_16_97 ( const dwt_scratch< int16_t > * scratch,
uint32_t wMin,
uint32_t wMax,
Buffer2dSimple< int16_t > winL,
Buffer2dSimple< int16_t > winH,
Buffer2dSimple< int16_t > winDest,
DcShiftParam dcShift )
private

◆ v_strip_53()

void grk::WaveletReverse::v_strip_53 ( const dwt_scratch< int32_t > * scratch,
uint32_t wMin,
uint32_t wMax,
Buffer2dSimple< int32_t > winL,
Buffer2dSimple< int32_t > winH,
Buffer2dSimple< int32_t > winDest,
DcShiftParam dcShift )
private

◆ v_strip_97()

void grk::WaveletReverse::v_strip_97 ( dwt_scratch< vec4f > *GRK_RESTRICT vert,
const uint32_t resWidth,
const uint32_t resHeight,
Buffer2dSimple< float > winL,
Buffer2dSimple< float > winH,
Buffer2dSimple< float > winDest,
DcShiftParam dcShift )
private

References GRK_RESTRICT.

◆ SchedulerFreebyrd

friend class SchedulerFreebyrd
friend

References SchedulerFreebyrd.

Referenced by SchedulerFreebyrd.

◆ StripDecompressor

friend class StripDecompressor
friend

References StripDecompressor.

Referenced by StripDecompressor.

Member Data Documentation

◆ cascade97_h

dwt_scratch<vec4f> grk::WaveletReverse::cascade97_h
private

◆ cascade97_v

dwt_scratch<vec4f> grk::WaveletReverse::cascade97_v
private

◆ cascadeSynthesis_

bool grk::WaveletReverse::cascadeSynthesis_ = false
private

◆ compno_

uint16_t grk::WaveletReverse::compno_ = 0
private

Referenced by partial_tile().

◆ dcShift_

DcShiftParam grk::WaveletReverse::dcShift_
private

◆ horiz16_

dwt_scratch<int16_t> grk::WaveletReverse::horiz16_
private

◆ horiz97

dwt_scratch<vec4f> grk::WaveletReverse::horiz97
private

◆ horiz_

dwt_scratch<int32_t> grk::WaveletReverse::horiz_
private

◆ horizPool16_

std::unique_ptr<dwt_scratch<int16_t>[]> grk::WaveletReverse::horizPool16_
private

◆ horizPool_

std::unique_ptr<dwt_scratch<int32_t>[]> grk::WaveletReverse::horizPool_
private

◆ maxDim_

uint32_t grk::WaveletReverse::maxDim_ = 0
private

◆ numres_

uint8_t grk::WaveletReverse::numres_ = 0
private

Referenced by partial_tile().

◆ partialTasks53_

std::vector<PartialTaskInfo<int32_t, dwt_scratch<int32_t> >*> grk::WaveletReverse::partialTasks53_
private

Referenced by decompressPartial().

◆ partialTasks97_

std::vector<PartialTaskInfo<vec4f, dwt_scratch<vec4f> >*> grk::WaveletReverse::partialTasks97_
private

Referenced by decompressPartial().

◆ poolData_

WaveletPoolData* grk::WaveletReverse::poolData_ = nullptr
private

◆ qmfbid_

uint8_t grk::WaveletReverse::qmfbid_ = 0
private

Referenced by decompressPartial().

◆ scheduler_

CodecScheduler* grk::WaveletReverse::scheduler_ = nullptr
private

Referenced by partial_tile().

◆ tilec_

TileComponent* grk::WaveletReverse::tilec_ = nullptr
private

Referenced by decompressPartial(), and partial_tile().

◆ unreducedWindow_

Rect32 grk::WaveletReverse::unreducedWindow_
private

Referenced by partial_tile().

◆ vert16_

dwt_scratch<int16_t> grk::WaveletReverse::vert16_
private

◆ vert97

dwt_scratch<vec4f> grk::WaveletReverse::vert97
private

◆ vert_

dwt_scratch<int32_t> grk::WaveletReverse::vert_
private

◆ vertPool16_

std::unique_ptr<dwt_scratch<int16_t>[]> grk::WaveletReverse::vertPool16_
private

◆ vertPool_

std::unique_ptr<dwt_scratch<int32_t>[]> grk::WaveletReverse::vertPool_
private

◆ wholeTileDecompress_

bool grk::WaveletReverse::wholeTileDecompress_ = true
private

The documentation for this class was generated from the following files: