Grok  7.6.6
T1.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2021 Grok Image Compression Inc.
3  *
4  * This source code is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Affero General Public License, version 3,
6  * as published by the Free Software Foundation.
7  *
8  * This source code is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Affero General Public License for more details.
12  *
13  * You should have received a copy of the GNU Affero General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  *
17  * This source code incorporates work covered by the BSD 2-clause license.
18  * Please see the LICENSE file in the root directory for details.
19  *
20  */
21 
22 #pragma once
23 
24 
25 #include "grk_includes.h"
26 
27 
28 namespace grk {
29 
31 typedef uint32_t grk_flag;
32 
33 struct T1 {
34 
35  T1(bool isCompressor, uint32_t maxCblkW, uint32_t maxCblkH);
36  ~T1();
37 
38  bool decompress_cblk(cblk_dec *cblk,
39  uint8_t orientation,
40  uint32_t cblksty);
41  void code_block_enc_deallocate(cblk_enc *p_code_block);
42  bool allocate_buffers(uint32_t w, uint32_t h);
43  double compress_cblk(cblk_enc *cblk,
44  uint32_t max,
45  uint8_t orientation,
46  uint16_t compno,
47  uint8_t level,
48  uint8_t qmfbid,
49  double stepsize,
50  uint32_t cblksty,
51  const double *mct_norms,
52  uint16_t mct_numcomps,
53  bool doRateControl);
54 
57 
58  int32_t *data;
59  uint32_t w;
60  uint32_t h;
61  uint32_t data_stride;
62  /* Temporary buffer to concatenate all chunks of a codebock */
63  uint8_t *cblkdatabuffer;
64  /* Maximum size available in cblkdatabuffer */
66 
67  static double getnorm(uint32_t level, uint8_t orientation, bool reversible);
68 
69 private:
70 
77 
78  uint32_t datasize;
79  uint32_t flagssize;
80  bool compressor;
81 
82  template <uint32_t w, uint32_t h, bool vsc> void dec_clnpass(int32_t bpno);
83  void dec_clnpass_step(grk_flag *flagsp,
84  int32_t *datap,
85  int32_t oneplushalf,
86  uint32_t ciorig,
87  uint32_t ci,
88  uint32_t vsc);
89  void dec_clnpass(int32_t bpno, int32_t cblksty);
90  void dec_clnpass_check_segsym(int32_t cblksty);
91  void dec_sigpass_raw(int32_t bpno, int32_t cblksty);
92  void dec_refpass_raw(int32_t bpno);
93  void dec_sigpass_mqc(int32_t bpno, int32_t cblksty);
94  void dec_refpass_mqc(int32_t bpno);
95  inline void dec_refpass_step_raw(grk_flag *flagsp,
96  int32_t *datap,
97  int32_t poshalf,
98  uint32_t ci);
99  inline void dec_refpass_step_mqc(mqcoder *mqc,
100  grk_flag *flagsp,
101  int32_t *datap,
102  int32_t poshalf,
103  uint32_t ci);
104  inline void dec_sigpass_step_raw(grk_flag *flagsp,
105  int32_t *datap,
106  int32_t oneplushalf,
107  uint32_t vsc,
108  uint32_t ci);
109  inline void dec_sigpass_step_mqc( grk_flag *flagsp,
110  int32_t *datap,
111  int32_t oneplushalf,
112  uint32_t ci,
113  uint32_t flags_stride,
114  uint32_t vsc);
115  void enc_clnpass(int32_t bpno,
116  int32_t *nmsedec,
117  uint32_t cblksty);
118  void enc_sigpass(int32_t bpno,
119  int32_t *nmsedec,
120  uint8_t type,
121  uint32_t cblksty);
122  void enc_refpass(int32_t bpno,
123  int32_t *nmsedec,
124  uint8_t type);
125  int enc_is_term_pass(cblk_enc *cblk,
126  uint32_t cblksty,
127  int32_t bpno,
128  uint32_t passtype);
129  bool code_block_enc_allocate(cblk_enc *p_code_block);
130 
131 
138  double getnorm_53(uint32_t level, uint8_t orientation);
145  double getnorm_97(uint32_t level, uint8_t orientation);
146 
147  double getwmsedec(int32_t nmsedec, uint32_t compno, uint32_t level,
148  uint8_t orientation, int32_t bpno,
149  uint32_t qmfbid, double stepsize,
150  const double *mct_norms,
151  uint32_t mct_numcomps);
152 
153 };
154 
155 }
Copyright (C) 2016-2021 Grok Image Compression Inc.
Definition: BitIO.cpp:23
uint32_t grk_flag
Flags for 4 consecutive rows of a column.
Definition: T1.h:31
Definition: T1.h:33
void dec_clnpass_step(grk_flag *flagsp, int32_t *datap, int32_t oneplushalf, uint32_t ciorig, uint32_t ci, uint32_t vsc)
Definition: T1.cpp:942
void dec_clnpass(int32_t bpno)
Definition: T1.cpp:1059
bool allocate_buffers(uint32_t w, uint32_t h)
Definition: T1.cpp:304
void dec_sigpass_mqc(int32_t bpno, int32_t cblksty)
Definition: T1.cpp:1215
T1(bool isCompressor, uint32_t maxCblkW, uint32_t maxCblkH)
Definition: T1.cpp:382
uint32_t cblkdatabuffersize
Definition: T1.h:65
void enc_clnpass(int32_t bpno, int32_t *nmsedec, uint32_t cblksty)
Definition: T1.cpp:621
bool code_block_enc_allocate(cblk_enc *p_code_block)
Definition: T1.cpp:422
void dec_sigpass_step_mqc(grk_flag *flagsp, int32_t *datap, int32_t oneplushalf, uint32_t ci, uint32_t flags_stride, uint32_t vsc)
Definition: T1.cpp:1118
uint32_t datasize
Definition: T1.h:78
void dec_refpass_mqc(int32_t bpno)
Definition: T1.cpp:1334
~T1()
Definition: T1.cpp:401
void dec_refpass_step_mqc(mqcoder *mqc, grk_flag *flagsp, int32_t *datap, int32_t poshalf, uint32_t ci)
Definition: T1.cpp:1254
void enc_refpass(int32_t bpno, int32_t *nmsedec, uint8_t type)
Definition: T1.cpp:576
void dec_sigpass_step_raw(grk_flag *flagsp, int32_t *datap, int32_t oneplushalf, uint32_t vsc, uint32_t ci)
Definition: T1.cpp:1076
mqcoder coder
MQC component.
Definition: T1.h:56
int enc_is_term_pass(cblk_enc *cblk, uint32_t cblksty, int32_t bpno, uint32_t passtype)
Definition: T1.cpp:455
double compress_cblk(cblk_enc *cblk, uint32_t max, uint8_t orientation, uint16_t compno, uint8_t level, uint8_t qmfbid, double stepsize, uint32_t cblksty, const double *mct_norms, uint16_t mct_numcomps, bool doRateControl)
Definition: T1.cpp:764
uint32_t h
Definition: T1.h:60
double getnorm_53(uint32_t level, uint8_t orientation)
Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.
Definition: T1.cpp:292
int32_t * data
Definition: T1.h:58
void dec_clnpass_check_segsym(int32_t cblksty)
Definition: T1.cpp:1040
grk_flag * flags
Flags used by decompressor and compressor.
Definition: T1.h:76
void code_block_enc_deallocate(cblk_enc *p_code_block)
ENCODE ////////////////////////////////////////////////////.
Definition: T1.cpp:418
void enc_sigpass(int32_t bpno, int32_t *nmsedec, uint8_t type, uint32_t cblksty)
Definition: T1.cpp:510
uint8_t * cblkdatabuffer
Definition: T1.h:63
bool decompress_cblk(cblk_dec *cblk, uint8_t orientation, uint32_t cblksty)
Definition: T1.cpp:1342
uint32_t w
Definition: T1.h:59
double getwmsedec(int32_t nmsedec, uint32_t compno, uint32_t level, uint8_t orientation, int32_t bpno, uint32_t qmfbid, double stepsize, const double *mct_norms, uint32_t mct_numcomps)
Definition: T1.cpp:433
uint32_t flagssize
Definition: T1.h:79
void dec_sigpass_raw(int32_t bpno, int32_t cblksty)
Definition: T1.cpp:1129
uint32_t data_stride
Definition: T1.h:61
void dec_refpass_step_raw(grk_flag *flagsp, int32_t *datap, int32_t poshalf, uint32_t ci)
Definition: T1.cpp:1229
static double getnorm(uint32_t level, uint8_t orientation, bool reversible)
Definition: T1.cpp:256
void dec_refpass_raw(int32_t bpno)
Definition: T1.cpp:1261
double getnorm_97(uint32_t level, uint8_t orientation)
Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.
Definition: T1.cpp:299
bool compressor
Definition: T1.h:80
Definition: t1_common.h:97
Definition: t1_common.h:79
Definition: mqc.h:42