1 /* ***** BEGIN LICENSE BLOCK *****
5 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
7 * The contents of this file are subject to the Mozilla Public License
8 * Version 1.1 (the "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 * http://www.mozilla.org/MPL/
12 * Software distributed under the License is distributed on an "AS IS" basis,
13 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
14 * the specific language governing rights and limitations under the License.
16 * The Original Code is BBC Research and Development code.
18 * The Initial Developer of the Original Code is the British Broadcasting
20 * Portions created by the Initial Developer are Copyright (C) 2004.
21 * All Rights Reserved.
23 * Contributor(s): Thomas Davies (Original Author), Scott R Ladd
26 * Alternatively, the contents of this file may be used under the terms of
27 * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser
28 * Public License Version 2.1 (the "LGPL"), in which case the provisions of
29 * the GPL or the LGPL are applicable instead of those above. If you wish to
30 * allow use of your version of this file only under the terms of the either
31 * the GPL or LGPL and not to allow others to use your version of this file
32 * under the MPL, indicate your decision by deleting the provisions above
33 * and replace them with the notice and other provisions required by the GPL
34 * or LGPL. If you do not delete the provisions above, a recipient may use
35 * your version of this file under the terms of any one of the MPL, the GPL
37 * ***** END LICENSE BLOCK ***** */
41 #ifndef _COMP_DECOMPRESS_H_
42 #define _COMP_DECOMPRESS_H_
44 #include <libdirac_common/arrays.h>
45 #include <libdirac_common/wavelet_utils.h>
46 #include <libdirac_common/common.h>
47 #include <libdirac_byteio/component_byteio.h>
51 //! Decompress a picture component
53 This class decompresses one of the three components (Y, U, or V) of a
54 picture according to a given set or parameters. CompDecompressor is used
55 by PictureCompressor..
57 class CompDecompressor
62 Create and initialize a component decompressor with the given
64 \param decp decoding parameters
65 \param fp picture parameters
67 CompDecompressor( DecoderParams
& decp
, const PictureParams
& fp
);
69 //! Decompress a picture component
71 Decompress a PicArray containing a picture component (Y, U, or V).
73 \param p_component_byteio Bytestream of component data
74 \param coeff_data contains the component data to be decompressed
75 \param bands the subband metadata
77 void Decompress(ComponentByteIO
*p_component_byteio
,
78 CoeffArray
& coeff_data
,
82 //! Copy constructor is private and body-less
84 Copy constructor is private and body-less. This class should not
88 CompDecompressor(const CompDecompressor
& cpy
);
90 //! Assignment = is private and body-less
92 Assignment = is private and body-less. This class should not be
96 CompDecompressor
& operator=(const CompDecompressor
& rhs
);
98 //! Sets the data of a specific subband node to a given value
100 Sets the data of a specific subband node to a given value
102 \param pic_data contains the component data
103 \param node subband node
104 \param val the value to set
106 void SetToVal(CoeffArray
& pic_data
,const Subband
& node
,CoeffType val
);
108 //! Set up the code block structures for each subband
110 Set up the code block structures for each subband
111 \param bands the set of all the subbands
113 void SetupCodeBlocks( SubbandList
& bands
);
115 //! Copy of the decompression parameters provided to the constructor
116 DecoderParams
& m_decparams
;
118 //! Reference to the picture parameters provided to the constructor
119 const PictureParams
& m_pparams
;
121 //! Reference to the picture sort
122 const PictureSort
& m_psort
;