⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 videoio.h

📁 pwlib源码库
💻 H
📖 第 1 页 / 共 3 页
字号:
/* * videoio.h * * Classes to support streaming video input (grabbing) and output. * * Portable Windows Library * * Copyright (c) 1993-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): Mark Cooke (mpc@star.sr.bham.ac.uk) * * $Log: videoio.h,v $ * Revision 1.42  2005/08/09 09:08:09  rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.41.4.1  2005/07/17 09:27:04  rjongbloed * Major revisions of the PWLib video subsystem including: *   removal of F suffix on colour formats for vertical flipping, all done with existing bool *   working through use of RGB and BGR formats so now consistent *   cleaning up the plug in system to use virtuals instead of pointers to functions. *   rewrite of SDL to be a plug in compatible video output device. *   extensive enhancement of video test program * * Revision 1.41  2005/01/04 07:44:03  csoutheren * More changes to implement the new configuration methodology, and also to * attack the global static problem * * Revision 1.40  2004/04/18 12:49:22  csoutheren * Patches to video code thanks to Guilhem Tardy (hope I get it right this time :) * * Revision 1.39  2004/01/18 14:23:30  dereksmithies * Add new function to make opening of video input devices easier. * * Revision 1.38  2004/01/02 23:30:18  rjongbloed * Removed extraneous static function for getting input device names that has been deprecated during the plug ins addition. * * Revision 1.37  2003/12/14 10:01:02  rjongbloed * Resolved issue with name space conflict os static and virtual forms of GetDeviceNames() function. * * Revision 1.36  2003/12/03 03:47:56  dereksmithies * Add fix so video output devices compile and run correctly. * Thanks to Craig Southeren. * * Revision 1.35  2003/11/19 04:29:02  csoutheren * Changed to support video output plugins * * Revision 1.34  2003/11/18 10:39:06  csoutheren * Fixed warnings regarding calling virtual Close in destructors * * Revision 1.33  2003/11/18 06:46:15  csoutheren * Changed to support video input plugins * * Revision 1.32  2003/09/17 05:41:59  csoutheren * Removed recursive includes * * Revision 1.31  2003/09/17 01:18:02  csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.30  2003/03/17 08:10:00  robertj * Fixed GNU warning * * Revision 1.29  2003/03/17 07:51:07  robertj * Added OpenFull() function to open with all video parameters in one go. * Made sure vflip variable is set in converter even if converter has not *   been set yet, should not depend on the order of functions! * Removed canCaptureVideo variable as this is really a virtual function to *   distinguish PVideoOutputDevice from PVideoInputDevice, it is not dynamic. * Made significant enhancements to PVideoOutputDevice class. * Added PVideoOutputDevice descendants for NULL and PPM files. * * Revision 1.28  2002/09/16 01:08:59  robertj * Added #define so can select if #pragma interface/implementation is used on *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.27  2002/04/12 08:25:12  robertj * Added text string output for tracing video format. * * Revision 1.26  2002/04/05 06:41:54  rogerh * Apply video changes from Damien Sandras <dsandras@seconix.com>. * The Video Channel and Format are no longer set in Open(). Instead * call the new SetVideoChannelFormat() method. This makes video capture * and GnomeMeeting more stable with certain Linux video capture devices. * * Revision 1.25  2002/02/20 02:37:26  dereks * Initial release of Firewire camera support for linux. * Many thanks to Ryutaroh Matsumoto <ryutaroh@rmatsumoto.org>. * * Revision 1.24  2002/01/16 07:51:06  robertj * MSVC compatibilty changes * * Revision 1.23  2002/01/16 03:51:20  dereks * Move flip methods in PVideoInputDevice  to  PVideoDevice * * Revision 1.22  2002/01/14 02:59:54  robertj * Added preferred colour format selection, thanks Walter Whitlock * * Revision 1.21  2002/01/04 04:11:45  dereks * Add video flip code from Walter Whitlock, which flips code at the grabber. * * Revision 1.20  2001/11/28 00:07:32  dereks * Locking added to PVideoChannel, allowing reader/writer to be changed mid call * Enabled adjustment of the video frame rate * New fictitous image, a blank grey area * * Revision 1.19  2001/08/06 06:12:45  rogerh * Fix comments * * Revision 1.18  2001/08/03 04:21:51  dereks * Add colour/size conversion for YUV422->YUV411P * Add Get/Set Brightness,Contrast,Hue,Colour for PVideoDevice,  and * Linux PVideoInputDevice. * Add lots of PTRACE statement for debugging colour conversion. * Add support for Sony Vaio laptop under linux. Requires 2.4.7 kernel. * * Revision 1.17  2001/05/22 23:38:45  robertj * Fixed bug in PVideoOutputDevice, removed redundent SetFrameSize. * * Revision 1.16  2001/05/22 12:49:32  robertj * Did some seriously wierd rewrite of platform headers to eliminate the *   stupid GNU compiler warning about braces not matching. * * Revision 1.15  2001/03/20 02:21:57  robertj * More enhancements from Mark Cooke * * Revision 1.14  2001/03/08 23:04:19  robertj * Fixed up some documentation. * * Revision 1.13  2001/03/08 08:31:34  robertj * Numerous enhancements to the video grabbing code including resizing *   infrastructure to converters. Thanks a LOT, Mark Cooke. * * Revision 1.12  2001/03/07 01:42:59  dereks * miscellaneous video fixes. Works on linux now. Add debug statements * (at PTRACE level of 1) * * Revision 1.11  2001/03/06 23:34:20  robertj * Added static function to get input device names. * Moved some inline virtuals to non-inline. * * Revision 1.10  2001/03/03 05:06:31  robertj * Major upgrade of video conversion and grabbing classes. * * Revision 1.9  2001/02/28 01:47:14  robertj * Removed function from ancestor and is not very useful, thanks Thorsten Westheider. * * Revision 1.8  2000/12/19 22:20:26  dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * Revision 1.7  2000/11/09 00:20:38  robertj * Added qcif size constants * * Revision 1.6  2000/07/30 03:41:31  robertj * Added more colour formats to video device enum. * * Revision 1.5  2000/07/26 03:50:49  robertj * Added last error variable to video device. * * Revision 1.4  2000/07/26 02:13:46  robertj * Added some more "common" bounds checking to video device. * * Revision 1.3  2000/07/25 13:38:25  robertj * Added frame rate parameter to video frame grabber. * * Revision 1.2  2000/07/25 13:14:05  robertj * Got the video capture stuff going! * * Revision 1.1  2000/07/15 09:47:34  robertj * Added video I/O device classes. * */#ifndef _PVIDEOIO#define _PVIDEOIO#ifdef P_USE_PRAGMA#pragma interface#endifclass PColourConverter;/**This class defines a video device.   This class is used to abstract the few parameters that are common to both\   input and output devices.   Example colour formats are:     "Grey"     Simple 8 bit linear grey scale     "Gray"     Synonym for Grey     "RGB32"    32 bit RGB     "RGB24"    24 bit RGB     "RGB565"   16 bit RGB (6 bit green)     "RGB555"   15 bit RGB     "YUV422"   YUV 4:2:2 packed     "YUV422P"  YUV 4:2:2 planar     "YUV411"   YUV 4:1:1 packed     "YUV411P"  YUV 4:1:1 planar     "YUV420"   YUV 4:2:0 packed     "YUV420P"  YUV 4:2:0 planar     "YUV410"   YUV 4:1:0 packed     "YUV410P"  YUV 4:1:0 planar     "MJPEG"    Motion JPEG     "UYVY422"  YUV 4:2:2 packed as U Y V Y U Y V Y ...     "UYV444    YUV 4:4:4 packed as U Y V   U Y V   ...                They are used in IEEE 1394 digital cameras. The specification                is found athttp://www.1394ta.org/Download/Technology/Specifications/2000/IIDC_Spec_v1_30.pdf */class PVideoDevice : public PObject{  PCLASSINFO(PVideoDevice, PObject);  protected:    /** Create a new video device (input or output).     */    PVideoDevice();  public:    /** Delete structures created by PVideoDevice();      */    virtual ~PVideoDevice();    enum VideoFormat {      PAL,      NTSC,      SECAM,      Auto,      NumVideoFormats    };    enum StandardSizes {      CIF16Width = 1408,      CIF16Height = 1152,      CIF4Width = 704,      CIF4Height = 576,      CIFWidth = 352,      CIFHeight = 288,      QCIFWidth = 176,      QCIFHeight = 144,      SQCIFWidth = 144,      SQCIFHeight = 96,    };    /**Get the device name of the open device.      */    const PString & GetDeviceName() const      { return deviceName; }    /**Get a list of all of the drivers available.      */    virtual PStringList GetDeviceNames() const = 0;    struct OpenArgs {      OpenArgs()        : deviceName("#1"),          videoFormat(Auto),          channelNumber(0),          colourFormat("YUV420P"),          convertFormat(TRUE),          rate(0),          width(CIFWidth),          height(CIFHeight),          convertSize(TRUE),          scaleSize(FALSE),          flip(FALSE),          brightness(-1),          whiteness(-1),          contrast(-1),          colour(-1),          hue(-1)        { }      PString     deviceName;      VideoFormat videoFormat;      int         channelNumber;      PString     colourFormat;      bool        convertFormat;      unsigned    rate;      unsigned    width;      unsigned    height;      bool        convertSize;      bool        scaleSize;      bool        flip;      int         brightness;      int         whiteness;      int         contrast;      int         colour;      int         hue;    };    /**Open the device given the device name.      */    virtual BOOL OpenFull(      const OpenArgs & args,      /// Parameters to set on opened device      BOOL startImmediate = TRUE  /// Immediately start device    );    /**Open the device given the device name.      */    virtual BOOL Open(      const PString & deviceName,   /// Device name to open      BOOL startImmediate = TRUE    /// Immediately start device    ) = 0;    /**Determine if the device is currently open.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -