Grok 10.0.5
PostT1DecompressFiltersOpenHTJ2K.h
Go to the documentation of this file.
1#pragma once
2
3#include "grk_includes.h"
4
5namespace openhtj2k
6{
7template<typename T>
9{
10 public:
12 : roiShift(block->roishift), shift(31U - (block->k_msbs + 1U))
13 {}
14 inline void copy(T* dest, T* src, uint32_t len)
15 {
16 T thresh = 1 << roiShift;
17 for(uint32_t i = 0; i < len; ++i)
18 {
19 T val = src[i];
20 T mag = (val & 0x7FFFFFFF);
21 if(mag >= thresh)
22 val = (T)(((uint32_t)mag >> roiShift) & ((uint32_t)val & 0x80000000));
23 int32_t val_shifted = (val & 0x7FFFFFFF) >> shift;
24 dest[i] = (int32_t)(((uint32_t)val & 0x80000000) ? -val_shifted : val_shifted);
25 }
26 }
27
28 private:
29 uint32_t roiShift;
30 uint32_t shift;
31};
32template<typename T>
34{
35 public:
37 inline void copy(T* dest, T* src, uint32_t len)
38 {
39 for(uint32_t i = 0; i < len; ++i)
40 {
41 dest[i] = src[i];
42 }
43 }
44};
45
46template<typename T>
48{
49 public:
51 inline void copy(T* dest, T* src, uint32_t len)
52 {
53 for(uint32_t i = 0; i < len; ++i)
54 {
55 ((float*)dest)[i] = src[i];
56 }
57 }
58};
59
60template<typename T>
62{
63 public:
65 : scale(block->stepsize / (float)(1u << (31 - (block->k_msbs + 1))))
66 {
67 assert(block->bandNumbps <= 31);
68 }
69 inline void copy(T* dest, T* src, uint32_t len)
70 {
71 for(uint32_t i = 0; i < len; ++i)
72 {
73 ((float*)dest)[i] = src[i] * scale;
74 }
75 }
76
77 private:
78 float scale;
79};
80
81} // namespace openhtj2k
Definition PostT1DecompressFiltersOpenHTJ2K.h:48
void copy(T *dest, T *src, uint32_t len)
Definition PostT1DecompressFiltersOpenHTJ2K.h:51
RoiScaleOpenHTJ2KFilter(grk::DecompressBlockExec *block)
Definition PostT1DecompressFiltersOpenHTJ2K.h:50
Definition PostT1DecompressFiltersOpenHTJ2K.h:9
uint32_t shift
Definition PostT1DecompressFiltersOpenHTJ2K.h:30
RoiShiftOpenHTJ2KFilter(grk::DecompressBlockExec *block)
Definition PostT1DecompressFiltersOpenHTJ2K.h:11
uint32_t roiShift
Definition PostT1DecompressFiltersOpenHTJ2K.h:29
void copy(T *dest, T *src, uint32_t len)
Definition PostT1DecompressFiltersOpenHTJ2K.h:14
Definition PostT1DecompressFiltersOpenHTJ2K.h:62
ScaleOpenHTJ2KFilter(grk::DecompressBlockExec *block)
Definition PostT1DecompressFiltersOpenHTJ2K.h:64
float scale
Definition PostT1DecompressFiltersOpenHTJ2K.h:78
void copy(T *dest, T *src, uint32_t len)
Definition PostT1DecompressFiltersOpenHTJ2K.h:69
Definition PostT1DecompressFiltersOpenHTJ2K.h:34
ShiftOpenHTJ2KFilter(grk::DecompressBlockExec *block)
Definition PostT1DecompressFiltersOpenHTJ2K.h:36
void copy(T *dest, T *src, uint32_t len)
Definition PostT1DecompressFiltersOpenHTJ2K.h:37
Definition PostT1DecompressFiltersOpenHTJ2K.h:6
uint8_t bandNumbps
Definition BlockExec.h:32
Definition BlockExec.h:45