Created by the British Broadcasting Corporation.
00001 /* ***** BEGIN LICENSE BLOCK ***** 00002 * 00003 * $Id: comp_compress.h,v 1.8 2005/02/02 14:47:18 tjdwave Exp $ $Name: Dirac_0_5_2 $ 00004 * 00005 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 00006 * 00007 * The contents of this file are subject to the Mozilla Public License 00008 * Version 1.1 (the "License"); you may not use this file except in compliance 00009 * with the License. You may obtain a copy of the License at 00010 * http://www.mozilla.org/MPL/ 00011 * 00012 * Software distributed under the License is distributed on an "AS IS" basis, 00013 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for 00014 * the specific language governing rights and limitations under the License. 00015 * 00016 * The Original Code is BBC Research and Development code. 00017 * 00018 * The Initial Developer of the Original Code is the British Broadcasting 00019 * Corporation. 00020 * Portions created by the Initial Developer are Copyright (C) 2004. 00021 * All Rights Reserved. 00022 * 00023 * Contributor(s): Thomas Davies (Original Author), Scott R Ladd 00024 * 00025 * Alternatively, the contents of this file may be used under the terms of 00026 * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser 00027 * Public License Version 2.1 (the "LGPL"), in which case the provisions of 00028 * the GPL or the LGPL are applicable instead of those above. If you wish to 00029 * allow use of your version of this file only under the terms of the either 00030 * the GPL or LGPL and not to allow others to use your version of this file 00031 * under the MPL, indicate your decision by deleting the provisions above 00032 * and replace them with the notice and other provisions required by the GPL 00033 * or LGPL. If you do not delete the provisions above, a recipient may use 00034 * your version of this file under the terms of any one of the MPL, the GPL 00035 * or the LGPL. 00036 * ***** END LICENSE BLOCK ***** */ 00037 00038 00039 #ifndef _COMP_COMPRESS_H_ 00040 #define _COMP_COMPRESS_H_ 00041 00042 #include <libdirac_common/arrays.h> 00043 #include <libdirac_common/wavelet_utils.h> 00044 #include <libdirac_common/common.h> 00045 00046 namespace dirac 00047 { 00049 00054 class CompCompressor 00055 { 00056 public: 00058 00064 CompCompressor( EncoderParams & encp, const FrameParams& fp); 00065 00067 00071 void Compress(PicArray & pic_data); 00072 00073 private: 00075 CompCompressor(const CompCompressor& cpy); 00076 00078 CompCompressor& operator=(const CompCompressor& rhs); 00079 00080 void SelectQuantisers( PicArray& pic_data , 00081 SubbandList& bands , 00082 OneDArray<unsigned int>& est_counts, 00083 const bool using_multi_quants ); 00084 00085 int SelectMultiQuants( PicArray& pic_data , 00086 SubbandList& bands , 00087 const int band_num ); 00088 00090 /* 00091 Write the header data of the subband to the output. This includes 00092 whether the subband is skipped (if yes, there's no more data), 00093 the subband quantiser index, whether multiple quantisers are used. 00094 \param output_mgr the output buffer 00095 \param node the subband metadata 00096 \param num_band_bytes the length of the subband data in bytes 00097 00098 */ 00099 void WriteBandHeader( BasicOutputManager& output_mgr , const Subband& node , 00100 const int num_band_bytes ); 00101 00102 void SetupCodeBlocks( SubbandList& bands ); 00103 00104 void SetToVal(PicArray& pic_data,const Subband& node,ValueType val); 00105 00106 void AddSubAverage(PicArray& pic_data,int xl,int yl,AddOrSub dirn); 00107 00108 // member variables 00109 EncoderParams& m_encparams; 00110 const FrameParams& m_fparams; 00111 const FrameSort& m_fsort; 00112 const ChromaFormat& m_cformat; 00113 CompSort m_csort; 00114 00115 float m_lambda; 00116 }; 00117 00118 } // namespace dirac 00119 00120 00121 00122 #endif
© 2004 British Broadcasting Corporation.
Dirac code licensed under the Mozilla Public License (MPL) Version 1.1.
HTML documentation generated by Dimitri van Heesch's
excellent Doxygen tool.