1/*
2 * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
3 * Copyright (c) 2002-2007, Professor Benoit Macq
4 * Copyright (c) 2001-2003, David Janssens
5 * Copyright (c) 2002-2003, Yannick Verschueren
6 * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
7 * Copyright (c) 2005, Herve Drolon, FreeImage Team
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 *    notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 *    notice, this list of conditions and the following disclaimer in the
17 *    documentation and/or other materials provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31
32#ifndef __MCT_H
33#define __MCT_H
34/**
35@file mct.h
36@brief Implementation of a multi-component transforms (MCT)
37
38The functions in MCT.C have for goal to realize reversible and irreversible multicomponent
39transform. The functions in MCT.C are used by some function in TCD.C.
40*/
41
42/** @defgroup MCT MCT - Implementation of a multi-component transform */
43/*@{*/
44
45/** @name Exported functions */
46/*@{*/
47/* ----------------------------------------------------------------------- */
48/**
49Apply a reversible multi-component transform to an image
50@param c0 Samples for red component
51@param c1 Samples for green component
52@param c2 Samples blue component
53@param n Number of samples for each component
54*/
55void mct_encode(int *c0, int *c1, int *c2, int n);
56/**
57Apply a reversible multi-component inverse transform to an image
58@param c0 Samples for luminance component
59@param c1 Samples for red chrominance component
60@param c2 Samples for blue chrominance component
61@param n Number of samples for each component
62*/
63void mct_decode(int *c0, int *c1, int *c2, int n);
64/**
65Get norm of the basis function used for the reversible multi-component transform
66@param compno Number of the component (0->Y, 1->U, 2->V)
67@return
68*/
69double mct_getnorm(int compno);
70
71/**
72Apply an irreversible multi-component transform to an image
73@param c0 Samples for red component
74@param c1 Samples for green component
75@param c2 Samples blue component
76@param n Number of samples for each component
77*/
78void mct_encode_real(int *c0, int *c1, int *c2, int n);
79/**
80Apply an irreversible multi-component inverse transform to an image
81@param c0 Samples for luminance component
82@param c1 Samples for red chrominance component
83@param c2 Samples for blue chrominance component
84@param n Number of samples for each component
85*/
86void mct_decode_real(float* c0, float* c1, float* c2, int n);
87/**
88Get norm of the basis function used for the irreversible multi-component transform
89@param compno Number of the component (0->Y, 1->U, 2->V)
90@return
91*/
92double mct_getnorm_real(int compno);
93/* ----------------------------------------------------------------------- */
94/*@}*/
95
96/*@}*/
97
98#endif /* __MCT_H */
99