|
Grok 20.3.2
|
#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 | |
| WaveletPoolData * | poolData_ = nullptr |
| CodecScheduler * | scheduler_ = nullptr |
| TileComponent * | tilec_ = 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< vec4f > | horiz97 |
| dwt_scratch< vec4f > | vert97 |
| dwt_scratch< vec4f > | cascade97_h |
| dwt_scratch< vec4f > | cascade97_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 |
| 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 ) |
| grk::WaveletReverse::~WaveletReverse | ( | void | ) |
|
static |
Allocate DWT scratch buffer with platform-appropriate size for 9/7.
Uses Highway SIMD width to determine the correct PLL_ROWS scaling.
|
private |
References GRK_RESTRICT.
|
private |
References GRK_RESTRICT.
| bool grk::WaveletReverse::decompress | ( | void | ) |
|
private |
References partial_tile(), partialTasks53_, partialTasks97_, qmfbid_, and tilec_.
|
private |
|
private |
|
private |
|
private |
References GRK_RESTRICT.
|
private |
|
private |
|
private |
|
private |
References GRK_RESTRICT.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by decompressPartial().
| bool grk::WaveletReverse::partial_tile | ( | ISparseCanvas< int32_t > * | sa, |
| std::vector< PartialTaskInfo< T, dwt_scratch< T > > * > & | tasks ) |
5/3 operates on elements of type int32_t while 9/7 operates on elements of type vec4f
Horizontal pass
Each thread processes a strip running the length of the window, of the following dimensions:
5/3 Height : 1
9/7 Height : 4
Vertical pass
5/3 Width : 4
9/7 Height : 1
FILTER_WIDTH value matches the maximum left/right extension given in tables F.2 and F.3 of the standard
References grk::PartialBandInfo< FILTER_WIDTH >::alloc(), grk::t1::BAND_ORIENT_HL, grk::t1::BAND_ORIENT_LH, grk::t1::BAND_ORIENT_LL, grk::PartialBandInfo< FILTER_WIDTH >::bandWindowREL_, compno_, D, grk::Rect< T >::dimX(), grk::Rect< T >::dimY(), grk::dwt_scratch< ST >::dn, grk::grklog, grk::Rect< T >::height(), TFSingleton::num_threads(), numres_, grk::dwt_scratch< ST >::parity, grk::ISparseCanvas< T >::read(), grk::dwt_scratch< ST >::resno, grk::PartialBandInfo< FILTER_WIDTH >::resWindowREL_, scheduler_, grk::dwt_scratch< ST >::sn, grk::PartialBandInfo< FILTER_WIDTH >::splitWindowREL_, tilec_, unreducedWindow_, grk::Rect< T >::width(), grk::dwt_scratch< ST >::win_h, grk::dwt_scratch< ST >::win_l, grk::Rect< T >::x0, grk::Rect< T >::x1, grk::Rect< T >::y0, and grk::Rect< T >::y1.
|
static |
References GRK_RESTRICT.
Referenced by grk::Partial97< T, FILTER_WIDTH, VERT_PASS_WIDTH >::h(), and grk::Partial97< T, FILTER_WIDTH, VERT_PASS_WIDTH >::v().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
References GRK_RESTRICT.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
References GRK_RESTRICT.
|
friend |
References SchedulerFreebyrd.
Referenced by SchedulerFreebyrd.
|
friend |
References StripDecompressor.
Referenced by StripDecompressor.
|
private |
|
private |
|
private |
|
private |
Referenced by partial_tile().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by partial_tile().
|
private |
Referenced by decompressPartial().
|
private |
Referenced by decompressPartial().
|
private |
|
private |
Referenced by decompressPartial().
|
private |
Referenced by partial_tile().
|
private |
Referenced by decompressPartial(), and partial_tile().
|
private |
Referenced by partial_tile().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |