FrameOfilt.H

Go to the documentation of this file.
00001 /*!@file Transport/FrameOfilt.H Generic base class for output frame filters */
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/Transport/FrameOfilt.H $
00035 // $Id: FrameOfilt.H 9547 2008-03-28 23:32:43Z rjpeters $
00036 //
00037 
00038 #ifndef TRANSPORT_FRAMEOFILT_H_DEFINED
00039 #define TRANSPORT_FRAMEOFILT_H_DEFINED
00040 
00041 #include "Transport/FrameOstream.H"
00042 
00043 /// Generic base class for output frame filters
00044 /** This class is the base class for output filter classes that can be
00045     chained together to perform one or more operations on output
00046     frames before they reach their final destination (display, disk,
00047     network, etc.) */
00048 class FrameOfilt : public FrameOstream
00049 {
00050 public:
00051   /// Constructor
00052   FrameOfilt(OptionManager& mgr,
00053              const std::string& descrName,
00054              const std::string& tagName);
00055 
00056   /// Destructor
00057   virtual ~FrameOfilt();
00058 
00059   /// Build our frame destination from the given string
00060   /** Subclasses should NOT override setConfigInfo() from
00061       FrameOfilt. If they need additional configuration information,
00062       they should get it from a command-line option through an
00063       OModelParam, or if more flexibility is needed, then just inherit
00064       from FrameOstream itself rather than from FrameOfilt. */
00065   virtual void setConfigInfo(const std::string& cfg);
00066 
00067   /// Just pass the frame number onto our frame destination
00068   /** Subclasses should NOT override setFrameNumber() from
00069       FrameOfilt. If more flexibility is needed, then just inherit
00070       from FrameOstream itself rather than from FrameOfilt. */
00071   virtual bool setFrameNumber(int n);
00072 
00073   /// Sends the frame through filterFrame()
00074   /** Subclasses should NOT override writeFrame() from FrameOfilt;
00075       instead, they should implement filterFrame(). If more
00076       flexibility is needed, then just inherit from FrameOstream
00077       itself rather than from FrameOfilt.  */
00078   virtual void writeFrame(const GenericFrame& frame,
00079                           const std::string& shortname,
00080                           const FrameInfo& auxinfo);
00081 
00082   /// Default version just returns the result of isVoid() from our destination
00083   virtual bool isVoid() const;
00084 
00085   /// Just pass the closeStream() request on to our frame destination
00086   virtual void closeStream(const std::string& shortname);
00087 
00088 protected:
00089   /// Subclasses implement their filtering here
00090   /** A trivial pass-through implementation would be
00091       dest.writeFrame(frame, shortname, auxinfo) */
00092   virtual void filterFrame(FrameOstream& dest,
00093                            const GenericFrame& frame,
00094                            const std::string& shortname,
00095                            const FrameInfo& auxinfo) = 0;
00096 
00097 private:
00098   nub::soft_ref<FrameOstream> itsDest;
00099 };
00100 
00101 // ######################################################################
00102 /* So things look consistent in everyone's emacs... */
00103 /* Local Variables: */
00104 /* mode: c++ */
00105 /* indent-tabs-mode: nil */
00106 /* End: */
00107 
00108 #endif // TRANSPORT_FRAMEOFILT_H_DEFINED
Generated on Sun May 8 08:06:56 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3