Grok 12.0.1
PostT1DecompressFilters.h
Go to the documentation of this file.
1#pragma once
2
3#include "grk_includes.h"
4
5namespace grk
6{
7template<typename T>
9{
10 public:
12 inline void copy(T* dest, const T* src, uint32_t len)
13 {
14 T thresh = 1 << roiShift;
15 for(uint32_t i = 0; i < len; ++i)
16 {
17 T val = src[i];
18 T mag = abs(val);
19 if(mag >= thresh)
20 {
21 mag >>= roiShift;
22 val = val < 0 ? -mag : mag;
23 }
24 dest[i] = val / 2;
25 }
26 }
27
28 private:
30};
31template<typename T>
33{
34 public:
36 inline void copy(T* dest, const T* src, uint32_t len)
37 {
38 for(uint32_t i = 0; i < len; ++i)
39 dest[i] = src[i] / 2;
40 }
41};
42
43template<typename T>
45{
46 public:
48 : roiShift(block->roishift), scale(block->stepsize / 2)
49 {}
50 inline void copy(T* dest, const T* src, uint32_t len)
51 {
52 T thresh = 1 << roiShift;
53 for(uint32_t i = 0; i < len; ++i)
54 {
55 T val = src[i];
56 T mag = abs(val);
57 if(mag >= thresh)
58 {
59 mag >>= roiShift;
60 val = val < 0 ? -mag : mag;
61 }
62 ((float*)dest)[i] = (float)val * scale;
63 }
64 }
65
66 private:
68 float scale;
69};
70
71template<typename T>
73{
74 public:
76 inline void copy(T* dest, const T* src, uint32_t len)
77 {
78 for(uint32_t i = 0; i < len; ++i)
79 ((float*)dest)[i] = (float)src[i] * scale;
80 }
81
82 private:
83 float scale;
84};
85
86} // namespace grk
Definition PostT1DecompressFilters.h:45
float scale
Definition PostT1DecompressFilters.h:68
uint32_t roiShift
Definition PostT1DecompressFilters.h:67
RoiScaleFilter(DecompressBlockExec *block)
Definition PostT1DecompressFilters.h:47
void copy(T *dest, const T *src, uint32_t len)
Definition PostT1DecompressFilters.h:50
Definition PostT1DecompressFilters.h:9
void copy(T *dest, const T *src, uint32_t len)
Definition PostT1DecompressFilters.h:12
uint32_t roiShift
Definition PostT1DecompressFilters.h:29
RoiShiftFilter(DecompressBlockExec *block)
Definition PostT1DecompressFilters.h:11
Definition PostT1DecompressFilters.h:73
void copy(T *dest, const T *src, uint32_t len)
Definition PostT1DecompressFilters.h:76
float scale
Definition PostT1DecompressFilters.h:83
ScaleFilter(DecompressBlockExec *block)
Definition PostT1DecompressFilters.h:75
Definition PostT1DecompressFilters.h:33
void copy(T *dest, const T *src, uint32_t len)
Definition PostT1DecompressFilters.h:36
ShiftFilter(DecompressBlockExec *block)
Definition PostT1DecompressFilters.h:35
Copyright (C) 2016-2024 Grok Image Compression Inc.
Definition ICacheable.h:20
void grk_read(const uint8_t *buffer, TYPE *value, uint32_t numBytes)
Definition BufferedStream.h:239
Definition BlockExec.h:45