corrade-vassal – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 vero 1 /*
2 * CVS identifier:
3 *
4 * $Id: CBlkWTDataSrcDec.java,v 1.19 2001/09/20 12:46:31 grosbois Exp $
5 *
6 * Class: CBlkWTDataSrcDec
7 *
8 * Description: Interface that define methods for trasnfer of WT
9 * data in a code-block basis (decoder side).
10 *
11 *
12 *
13 * COPYRIGHT:
14 *
15 * This software module was originally developed by Raphaël Grosbois and
16 * Diego Santa Cruz (Swiss Federal Institute of Technology-EPFL); Joel
17 * Askelöf (Ericsson Radio Systems AB); and Bertrand Berthelot, David
18 * Bouchard, Félix Henry, Gerard Mozelle and Patrice Onno (Canon Research
19 * Centre France S.A) in the course of development of the JPEG2000
20 * standard as specified by ISO/IEC 15444 (JPEG 2000 Standard). This
21 * software module is an implementation of a part of the JPEG 2000
22 * Standard. Swiss Federal Institute of Technology-EPFL, Ericsson Radio
23 * Systems AB and Canon Research Centre France S.A (collectively JJ2000
24 * Partners) agree not to assert against ISO/IEC and users of the JPEG
25 * 2000 Standard (Users) any of their rights under the copyright, not
26 * including other intellectual property rights, for this software module
27 * with respect to the usage by ISO/IEC and Users of this software module
28 * or modifications thereof for use in hardware or software products
29 * claiming conformance to the JPEG 2000 Standard. Those intending to use
30 * this software module in hardware or software products are advised that
31 * their use may infringe existing patents. The original developers of
32 * this software module, JJ2000 Partners and ISO/IEC assume no liability
33 * for use of this software module or modifications thereof. No license
34 * or right to this software module is granted for non JPEG 2000 Standard
35 * conforming products. JJ2000 Partners have full right to use this
36 * software module for his/her own purpose, assign or donate this
37 * software module to any third party and to inhibit third parties from
38 * using this software module for non JPEG 2000 Standard conforming
39 * products. This copyright notice must be included in all copies or
40 * derivative works of this software module.
41 *
42 * Copyright (c) 1999/2000 JJ2000 Partners.
43 * */
44 using System;
45 using CSJ2K.j2k.image;
46 using CSJ2K.j2k.wavelet;
47 namespace CSJ2K.j2k.wavelet.synthesis
48 {
49  
50 /// <summary> This abstract class defines methods to transfer wavelet data in a
51 /// code-block by code-block basis, for the decoder side. In each call to
52 /// 'getCodeBlock()' or 'getInternCodeBlock()' a new code-block is
53 /// returned. The code-blocks are returned in no specific order.
54 ///
55 /// <p>This class is the source of data, in general, for the inverse wavelet
56 /// transforms. See the 'InverseWT' class.</p>
57 ///
58 /// </summary>
59 /// <seealso cref="InvWTData">
60 /// </seealso>
61 /// <seealso cref="WaveletTransform">
62 /// </seealso>
63 /// <seealso cref="jj2000.j2k.quantization.dequantizer.CBlkQuantDataSrcDec">
64 /// </seealso>
65 /// <seealso cref="InverseWT">
66 ///
67 /// </seealso>
68 public interface CBlkWTDataSrcDec:InvWTData
69 {
70  
71 /// <summary> Returns the number of bits, referred to as the "range bits",
72 /// corresponding to the nominal range of the data in the specified
73 /// component.
74 ///
75 /// <p>The returned value corresponds to the nominal dynamic range of the
76 /// reconstructed image data, not of the wavelet coefficients
77 /// themselves. This is because different subbands have different gains and
78 /// thus different nominal ranges. To have an idea of the nominal range in
79 /// each subband the subband analysis gain value from the subband tree
80 /// structure, returned by the 'getSynSubbandTree()' method, can be
81 /// used. See the 'Subband' class for more details.</p>
82 ///
83 /// <p>If this number is <i>b</b> then for unsigned data the nominal range
84 /// is between 0 and 2^b-1, and for signed data it is between -2^(b-1) and
85 /// 2^(b-1)-1.</p>
86 ///
87 /// </summary>
88 /// <param name="c">The index of the component.
89 ///
90 /// </param>
91 /// <returns> The number of bits corresponding to the nominal range of the
92 /// data.
93 ///
94 /// </returns>
95 /// <seealso cref="Subband">
96 ///
97 /// </seealso>
98 int getNomRangeBits(int c);
99  
100 /// <summary> Returns the position of the fixed point in the specified component, or
101 /// equivalently the number of fractional bits. This is the position of the
102 /// least significant integral (i.e. non-fractional) bit, which is
103 /// equivalent to the number of fractional bits. For instance, for
104 /// fixed-point values with 2 fractional bits, 2 is returned. For
105 /// floating-point data this value does not apply and 0 should be
106 /// returned. Position 0 is the position of the least significant bit in
107 /// the data.
108 ///
109 /// </summary>
110 /// <param name="c">The index of the component.
111 ///
112 /// </param>
113 /// <returns> The position of the fixed-point, which is the same as the
114 /// number of fractional bits. For floating-point data 0 is returned.
115 ///
116 /// </returns>
117 int getFixedPoint(int c);
118  
119 /// <summary> Returns the specified code-block in the current tile for the specified
120 /// component, as a copy (see below).
121 ///
122 /// <p>The returned code-block may be progressive, which is indicated by
123 /// the 'progressive' variable of the returned 'DataBlk' object. If a
124 /// code-block is progressive it means that in a later request to this
125 /// method for the same code-block it is possible to retrieve data which is
126 /// a better approximation, since meanwhile more data to decode for the
127 /// code-block could have been received. If the code-block is not
128 /// progressive then later calls to this method for the same code-block
129 /// will return the exact same data values.</p>
130 ///
131 /// <p>The data returned by this method is always a copy of the internal
132 /// data of this object, if any, and it can be modified "in place" without
133 /// any problems after being returned. The 'offset' of the returned data is
134 /// 0, and the 'scanw' is the same as the code-block width. See the
135 /// 'DataBlk' class.</p>
136 ///
137 /// </summary>
138 /// <param name="c">The component for which to return the next code-block.
139 ///
140 /// </param>
141 /// <param name="m">The vertical index of the code-block to return,
142 /// in the specified subband.
143 ///
144 /// </param>
145 /// <param name="n">The horizontal index of the code-block to return,
146 /// in the specified subband.
147 ///
148 /// </param>
149 /// <param name="sb">The subband in which the code-block to return is.
150 ///
151 /// </param>
152 /// <param name="cblk">If non-null this object will be used to return the new
153 /// code-block. If null a new one will be allocated and returned. If the
154 /// "data" array of the object is non-null it will be reused, if possible,
155 /// to return the data.
156 ///
157 /// </param>
158 /// <returns> The next code-block in the current tile for component 'n', or
159 /// null if all code-blocks for the current tile have been returned.
160 ///
161 /// </returns>
162 /// <seealso cref="DataBlk">
163 ///
164 /// </seealso>
165 DataBlk getCodeBlock(int c, int m, int n, SubbandSyn sb, DataBlk cblk);
166  
167 /// <summary> Returns the specified code-block in the current tile for the specified
168 /// component (as a reference or copy).
169 ///
170 /// <p>The returned code-block may be progressive, which is indicated by
171 /// the 'progressive' variable of the returned 'DataBlk' object. If a
172 /// code-block is progressive it means that in a later request to this
173 /// method for the same code-block it is possible to retrieve data which is
174 /// a better approximation, since meanwhile more data to decode for the
175 /// code-block could have been received. If the code-block is not
176 /// progressive then later calls to this method for the same code-block
177 /// will return the exact same data values.</p>
178 ///
179 /// <p>The data returned by this method can be the data in the internal
180 /// buffer of this object, if any, and thus can not be modified by the
181 /// caller. The 'offset' and 'scanw' of the returned data can be
182 /// arbitrary. See the 'DataBlk' class.</p>
183 ///
184 /// </summary>
185 /// <param name="c">The component for which to return the next code-block.
186 ///
187 /// </param>
188 /// <param name="m">The vertical index of the code-block to return, in the
189 /// specified subband.
190 ///
191 /// </param>
192 /// <param name="n">The horizontal index of the code-block to return, in the
193 /// specified subband.
194 ///
195 /// </param>
196 /// <param name="sb">The subband in which the code-block to return is.
197 ///
198 /// </param>
199 /// <param name="cblk">If non-null this object will be used to return the new
200 /// code-block. If null a new one will be allocated and returned. If the
201 /// "data" array of the object is non-null it will be reused, if possible,
202 /// to return the data.
203 ///
204 /// </param>
205 /// <returns> The next code-block in the current tile for component 'n', or
206 /// null if all code-blocks for the current tile have been returned.
207 ///
208 /// </returns>
209 /// <seealso cref="DataBlk">
210 ///
211 /// </seealso>
212 DataBlk getInternCodeBlock(int c, int m, int n, SubbandSyn sb, DataBlk cblk);
213 }
214 }