Dirac - A Video Codec

Created by the British Broadcasting Corporation.


comp_compress.h

Go to the documentation of this file.
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.