Grok  7.6.2
mct.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2020 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 namespace grk {
24 
25 
26 class mct {
27 
28 public:
29 
37  static void compress_rev(int32_t *c0, int32_t *c1, int32_t *c2, uint64_t n);
44  static void decompress_rev(grk_tile *tile, grk_image *image,
46 
50  static const double* get_norms_rev(void);
51 
52 
60  static void compress_irrev(int *c0, int *c1, int *c2, uint64_t n);
67  static void decompress_irrev(grk_tile *tile, grk_image *image,
69 
73  static const double* get_norms_irrev(void);
74 
84  static bool compress_custom(uint8_t *p_coding_data, uint64_t n, uint8_t **p_data,
85  uint32_t nb_comp, uint32_t is_signed);
95  static bool decompress_custom(uint8_t *pDecodingData, uint64_t n, uint8_t **pData,
96  uint32_t pNbComp, uint32_t isSigned);
103  static void calculate_norms(double *pNorms, uint32_t nb_comps, float *pMatrix);
104 
111  static void decompress_dc_shift_rev(grk_tile *tile, grk_image *image,TileComponentCodingParams *tccps, uint32_t compno);
112 
119  static void decompress_dc_shift_irrev(grk_tile *tile, grk_image *image,TileComponentCodingParams *tccps, uint32_t compno);
120 
121 };
122 
123 /* ----------------------------------------------------------------------- */
127 
128 }
grk::mct::get_norms_irrev
static const double * get_norms_irrev(void)
Get wavelet norms for irreversible transform.
Definition: mct.cpp:40
CPUArch.h
ThreadPool::get
static ThreadPool * get()
Definition: ThreadPool.hpp:51
grk::mct::decompress_dc_shift_rev
static void decompress_dc_shift_rev(grk_tile *tile, grk_image *image, TileComponentCodingParams *tccps, uint32_t compno)
Apply a reversible inverse dc shift to an image.
Definition: mct.cpp:273
grk_lrintf
static long grk_lrintf(float f)
Definition: grk_includes.h:135
grk::shift
const double shift
Definition: RateControl.cpp:154
_grk_image::comps
grk_image_comp * comps
image components
Definition: grok.h:895
grk::TileComponentCodingParams
Tile-component coding parameters.
Definition: CodingParams.h:49
grk::CPUArch::SSE2
static bool SSE2()
Definition: CPUArch.cpp:363
grk::grk_free
void grk_free(void *ptr)
Deallocates or frees a memory block.
Definition: MemManager.cpp:141
grk::mct::compress_custom
static bool compress_custom(uint8_t *p_coding_data, uint64_t n, uint8_t **p_data, uint32_t nb_comp, uint32_t is_signed)
Custom MCT transform.
Definition: mct.cpp:523
grk::mct::decompress_rev
static void decompress_rev(grk_tile *tile, grk_image *image, TileComponentCodingParams *tccps)
Apply a reversible multi-component inverse transform to an image.
Definition: mct.cpp:337
grk::TileComponent::getBuffer
TileComponentWindowBuffer< int32_t > * getBuffer() const
Definition: TileComponent.cpp:321
grk::TileComponentWindowBuffer::strided_area
uint64_t strided_area(void) const
Definition: TileComponentWindowBuffer.h:450
grk::mct::decompress_custom
static bool decompress_custom(uint8_t *pDecodingData, uint64_t n, uint8_t **pData, uint32_t pNbComp, uint32_t isSigned)
Custom MCT decode.
Definition: mct.cpp:559
grk::CPUArch::AVX2
static bool AVX2()
Definition: CPUArch.cpp:351
grk::mct_norms_irrev
static const double mct_norms_irrev[3]
Definition: mct.cpp:35
grk::mct
Definition: mct.h:26
grk::grk_tile::comps
TileComponent * comps
Definition: TileProcessor.h:35
grk::mct::decompress_dc_shift_irrev
static void decompress_dc_shift_irrev(grk_tile *tile, grk_image *image, TileComponentCodingParams *tccps, uint32_t compno)
Apply an irreversible inverse dc shift to an image.
Definition: mct.cpp:109
ThreadPool::num_threads
size_t num_threads()
Definition: ThreadPool.hpp:49
grk::int_fix_mul
static int32_t int_fix_mul(int32_t a, int32_t b)
Multiply two fixed-point numbers.
Definition: grk_intmath.h:77
grk::TileComponentWindowBuffer::getWindow
const grk_buffer_2d< T > * getWindow(uint8_t resno, eBandOrientation orientation) const
Get non-LL band window.
Definition: TileComponentWindowBuffer.h:388
grk
Copyright (C) 2016-2020 Grok Image Compression Inc.
Definition: BitIO.cpp:23
grk::grk_malloc
void * grk_malloc(size_t size)
Allocate an uninitialized memory block.
Definition: MemManager.cpp:105
grk_includes.h
grk::grk_tile
Definition: TileProcessor.h:31
grk::mct::get_norms_rev
static const double * get_norms_rev(void)
Get wavelet norms for reversible transform.
Definition: mct.cpp:37
VREG_INT_COUNT
#define VREG_INT_COUNT
Number of int32 values in an SSE2 register.
Definition: simd.h:44
grk::mct::calculate_norms
static void calculate_norms(double *pNorms, uint32_t nb_comps, float *pMatrix)
Calculate norm of MCT transform.
Definition: mct.cpp:504
grk::mct::compress_irrev
static void compress_irrev(int *c0, int *c1, int *c2, uint64_t n)
Apply an irreversible multi-component transform to an image.
Definition: mct.cpp:424
GRK_RESTRICT
#define GRK_RESTRICT
Definition: grk_includes.h:101
GRK_UNUSED
#define GRK_UNUSED(x)
Definition: grk_includes.h:150
grk::mct::decompress_irrev
static void decompress_irrev(grk_tile *tile, grk_image *image, TileComponentCodingParams *tccps)
Apply an irreversible multi-component inverse transform to an image.
Definition: mct.cpp:177
grk::mct_norms_rev
static const double mct_norms_rev[3]
Definition: mct.cpp:30
_grk_image
Image.
Definition: grok.h:879
grk::mct::compress_rev
static void compress_rev(int32_t *c0, int32_t *c1, int32_t *c2, uint64_t n)
Apply a reversible multi-component transform to an image.
Definition: mct.cpp:48