MgzEncoder.H

Go to the documentation of this file.
00001 /*!@file Media/MgzEncoder.H Low-level class to decode mgz files */
00002 
00003 // //////////////////////////////////////////////////////////////////// //
00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2005   //
00005 // by the University of Southern California (USC) and the iLab at USC.  //
00006 // See http://iLab.usc.edu for information about this project.          //
00007 // //////////////////////////////////////////////////////////////////// //
00008 // Major portions of the iLab Neuromorphic Vision Toolkit are protected //
00009 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency //
00010 // in Visual Environments, and Applications'' by Christof Koch and      //
00011 // Laurent Itti, California Institute of Technology, 2001 (patent       //
00012 // pending; application number 09/912,225 filed July 23, 2001; see      //
00013 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status).     //
00014 // //////////////////////////////////////////////////////////////////// //
00015 // This file is part of the iLab Neuromorphic Vision C++ Toolkit.       //
00016 //                                                                      //
00017 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can   //
00018 // redistribute it and/or modify it under the terms of the GNU General  //
00019 // Public License as published by the Free Software Foundation; either  //
00020 // version 2 of the License, or (at your option) any later version.     //
00021 //                                                                      //
00022 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope  //
00023 // that it will be useful, but WITHOUT ANY WARRANTY; without even the   //
00024 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
00025 // PURPOSE.  See the GNU General Public License for more details.       //
00026 //                                                                      //
00027 // You should have received a copy of the GNU General Public License    //
00028 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write   //
00029 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,   //
00030 // Boston, MA 02111-1307 USA.                                           //
00031 // //////////////////////////////////////////////////////////////////// //
00032 //
00033 // Primary maintainer for this file:Rob Peters <rjpeters at usc dot edu>
00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Media/MgzEncoder.H $
00035 // $Id: MgzEncoder.H 8906 2007-10-25 23:30:51Z rjpeters $
00036 //
00037 
00038 #ifndef MEDIA_MGZENCODER_H_DEFINED
00039 #define MEDIA_MGZENCODER_H_DEFINED
00040 
00041 #include "Image/Range.H"
00042 #include "Raster/GenericFrame.H"
00043 #include "Transport/LowLevelEncoder.H"
00044 #include "Util/Types.H" // for byte
00045 #include <zlib.h>
00046 
00047 /// Low-level class to write mgz files
00048 /** You probably want to use MgzOutputStream instead, which relies on
00049     MgzEncoder internally for its implementation but offers a richer,
00050     higher-level interface. MGZ is a custom format which basically
00051     consists of just dumping raw frames into a gzip-compressed file,
00052     using zlib as the back-end compression engine. As far as
00053     MgzEncoder is concerned, frames could be of any size and any
00054     type. Applications using the encoder, however, may want to enforce
00055     that a given MGZ file only contains frames of a given size and
00056     type. */
00057 class MgzEncoder : public LowLevelEncoder
00058 {
00059 public:
00060   //! Constructor
00061   /*! @param fname the file name
00062     @param complev the zlib compression level (1..9) */
00063   MgzEncoder(const std::string& fname, const int complev);
00064 
00065   //! Destructor
00066   virtual ~MgzEncoder();
00067 
00068   //! Close the file cleanly
00069   virtual int close();
00070 
00071   //! Write a frame into the file
00072   virtual void writeFrame(const GenericFrame& frame);
00073 
00074 private:
00075   gzFile itsFile;
00076 };
00077 
00078 // ######################################################################
00079 /* So things look consistent in everyone's emacs... */
00080 /* Local Variables: */
00081 /* mode: c++ */
00082 /* indent-tabs-mode: nil */
00083 /* End: */
00084 
00085 #endif // MEDIA_MGZENCODER_H_DEFINED
Generated on Sun May 8 08:41:01 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3