downconvert.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:4k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2. *
  3. * $Id: downconvert.h,v 1.2 2005/01/30 05:11:42 gabest Exp $ $Name:  $
  4. *
  5. * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  6. *
  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/
  11. *
  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.
  15. *
  16. * The Original Code is BBC Research and Development code.
  17. *
  18. * The Initial Developer of the Original Code is the British Broadcasting
  19. * Corporation.
  20. * Portions created by the Initial Developer are Copyright (C) 2004.
  21. * All Rights Reserved.
  22. *
  23. * Contributor(s): Richard Felton (Original Author),
  24. *                 Thomas Davies
  25. *
  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
  36. * or the LGPL.
  37. * ***** END LICENSE BLOCK ***** */
  38. #ifndef _DOWNCONVERT_H_
  39. #define _DOWNCONVERT_H_
  40. #include <libdirac_common/common.h>
  41. namespace dirac
  42. {
  43.     //! A class for fast downconversion of picture data
  44.     /*!
  45.         A class for fast down-conversion of picture data. The picture data is
  46.         downconverted by a factor of two in each dimension, using fast
  47.         filtering techniques. The filter is a half-band filter designed to
  48.         trade off frequency response, ringiness,  and aliasing
  49.      */
  50.     class DownConverter{
  51.     public:
  52.         //! Constructor
  53.         DownConverter();
  54.         //! Destructor
  55.         ~DownConverter(){};
  56.         //! A function to do the actual down-conversion 
  57.         /*!
  58.             A function to do the actual downconversion. 
  59.             param    old_data    the picture data to be downconverted
  60.             param    new_data    the resulting down-converted data. The array must be of the correct size.
  61.          */
  62.         void DoDownConvert(const PicArray& old_data, PicArray& new_data);
  63.     private:
  64.         //Copy constructor
  65.         DownConverter(const DownConverter& cpy);//private, body-less: class should not be copied
  66.         //Assignment=
  67.         DownConverter& operator=(const DownConverter& rhs);//private, body-less: class should not be assigned
  68.         //Applies the filter to a single column
  69.         void RowLoop(const int colpos , const PicArray& old_data , PicArray& new_data );
  70.         ValueType* m_row_buffer;
  71.         //Define filter parameters
  72.         static const int Stage_I_Size = 6;
  73.         static const int StageI_I = 86;
  74.         static const int StageI_II = 46;
  75.         static const int StageI_III = 4;
  76.         static const int StageI_IV = -8; 
  77.         static const int StageI_V = -4;
  78.         static const int StageI_VI = 4;
  79.         static const int StageI_Shift = 8;
  80.     };
  81. } // namespace dirac
  82. #endif