00001 /*!@file Devices/FrameGrabberFactory.H Factory functions to build various FrameIstream subclasses */ 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: 00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Devices/FrameGrabberFactory.H $ 00035 // $Id: FrameGrabberFactory.H 14459 2011-02-01 18:56:07Z ehu $ 00036 // 00037 00038 #ifndef DEVICES_FRAMEGRABBERFACTORY_H_DEFINED 00039 #define DEVICES_FRAMEGRABBERFACTORY_H_DEFINED 00040 00041 #include "Transport/FrameIstream.H" 00042 00043 //! Factory function to build a V4Lgrabber 00044 /** NOTE: The reason for this function is so that we have only a 00045 single location where we need to concern ourselves with whether 00046 Video4Linux is actually supported on the build system. So, rather 00047 than having to do #ifdef HAVE_LINUX_VIDEODEV_H all over the place 00048 in client code, instead we just have the clients call 00049 makeV4Lgrabber(), and then within that function we'll just do an 00050 LFATAL() if Video4Linux isn't supported. */ 00051 nub::ref<FrameIstream> 00052 makeV4Lgrabber(OptionManager& mgr, 00053 const std::string& descrName = "V4L Frame Grabber Driver", 00054 const std::string& tagName = "V4LFrameGrabber", 00055 const ParamFlag flags = USE_MY_VAL); 00056 00057 //! Factory function to build a V4L2grabber 00058 /** NOTE: The reason for this function is so that we have only a 00059 single location where we need to concern ourselves with whether 00060 Video4Linux2 is actually supported on the build system. So, rather 00061 than having to do #ifdef HAVE_LINUX_VIDEODEV2_H all over the place 00062 in client code, instead we just have the clients call 00063 makeV4L2grabber(), and then within that function we'll just do an 00064 LFATAL() if Video4Linux2 isn't supported. */ 00065 nub::ref<FrameIstream> 00066 makeV4L2grabber(OptionManager& mgr, 00067 const std::string& descrName = "V4L2 Frame Grabber Driver", 00068 const std::string& tagName = "V4L2FrameGrabber", 00069 const ParamFlag flags = USE_MY_VAL); 00070 00071 //! Factory function to build an IEEE1394grabber 00072 nub::ref<FrameIstream> 00073 makeIEEE1394grabber(OptionManager& mgr, 00074 const std::string& descrName="IEEE1394 Frame Grabber Driver", 00075 const std::string& tagName = "IEEE1394FrameGrabber", 00076 const ParamFlag flags = USE_MY_VAL); 00077 00078 //! Factory function to build an XCgrabber(CameraLink framegrabber library from Epix Inc) 00079 nub::ref<FrameIstream> 00080 makeXCgrabber(OptionManager& mgr, 00081 const std::string& descrName="XC Frame Grabber Driver", 00082 const std::string& tagName = "XCFrameGrabber", 00083 const ParamFlag flags = USE_MY_VAL); 00084 00085 //! Factory function to build an XCgrabberFlex(CameraLink framegrabber library from Epix Inc with more functionality to change dims of acquired image) 00086 nub::ref<FrameIstream> 00087 makeXCgrabberFlex(OptionManager& mgr, 00088 const std::string& descrName="XC Frame Grabber Driver", 00089 const std::string& tagName = "XCFrameGrabberFlex", 00090 const ParamFlag flags = USE_MY_VAL); 00091 00092 //! Factory function to build a KinectGrabber 00093 nub::ref<FrameIstream> 00094 makeKinectgrabber(OptionManager& mgr, 00095 const std::string& descrName = "Kinect Frame Grabber Driver", 00096 const std::string& tagName = "KinectFrameGrabber", 00097 const ParamFlag flags = USE_MY_VAL); 00098 00099 //! Factory function to build a OpenNIGrabber 00100 nub::ref<FrameIstream> 00101 makeOpenNIgrabber(OptionManager& mgr, 00102 const std::string& descrName = "OpenNI Frame Grabber Driver", 00103 const std::string& tagName = "OpenNIFrameGrabber", 00104 const ParamFlag flags = USE_MY_VAL); 00105 00106 // ###################################################################### 00107 /* So things look consistent in everyone's emacs... */ 00108 /* Local Variables: */ 00109 /* mode: c++ */ 00110 /* indent-tabs-mode: nil */ 00111 /* End: */ 00112 00113 #endif // DEVICES_FRAMEGRABBERFACTORY_H_DEFINED