videoio.h

来自「安装 H323需要的pwlib库」· C头文件 代码 · 共 200 行

H
200
字号
/* * 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): ______________________________________. * * $Log: videoio.h,v $ * Revision 1.20  2003/09/17 01:18:03  csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.19  2003/01/06 18:41:08  rogerh * Add NetBSD patches, taken from the NetBSD pkg patches. * Submitted by Andreas Wrede * * Revision 1.18  2002/04/10 08:40:36  rogerh * Simplify the SetVideoChannelFormat() code. Use the implementation in the * ancestor class. * * Revision 1.17  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.16  2002/01/16 03:36:51  dereks * Add variable to match each VIDIOCMCAPTURE with a VIDIOCSYNC * * Revision 1.15  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.14  2001/11/25 23:47:05  robertj * Changed sense of HAS_VIDEO_CAPTURE to NO_VIDEO_CAPTURE to reduce cmd line. * * Revision 1.13  2001/11/22 16:08:32  rogerh * Allow compiles on Linux without V4L installed (eg 2.0.36 / RedHat 5.2) * * Revision 1.12  2001/08/08 06:46:44  rogerh * Only implement the Whiteness and Colour methods on Linux. * * Revision 1.11  2001/08/06 19:35:27  rogerh * Include the relevent header file based on the version of OpenBSD. * Submitted by Marius Aamodt Eriksen <marius@umich.edu> * * Revision 1.10  2001/08/06 07:27:21  rogerh * Make a note of the new location of a header file, but do not use it yet. * * Revision 1.9  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.8  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.7  2001/03/20 02:21:57  robertj * More enhancements from Mark Cooke * * Revision 1.6  2001/03/03 06:13:01  robertj * Major upgrade of video conversion and grabbing classes. * * Revision 1.5  2001/01/05 10:50:04  rogerh * More BSD Unix support for PVideoInputDevice * * Revision 1.4  2001/01/03 10:34:18  rogerh * Put Linux specific parts in P_LINUX sections and start adding some FreeBSD * and OpenBSD code. * * Revision 1.3  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.2  2000/07/30 03:54:28  robertj * Added more colour formats to video device enum. * * Revision 1.1  2000/07/26 02:40:29  robertj * Added video I/O devices. * */#if defined(P_LINUX) && !defined(NO_VIDEO_CAPTURE)#include <linux/videodev.h>     /* change this to "videodev2.h" for v4l2 */#endif#if defined(P_FREEBSD)#include <machine/ioctl_meteor.h>#endif#if defined(P_OPENBSD) || defined(P_NETBSD)#if P_OPENBSD >= 200105#include <dev/ic/bt8xx.h> #elif P_NETBSD >= 105000000#include <dev/ic/bt8xx.h> #else #include <i386/ioctl_meteor.h>#endif#endif  public:    virtual BOOL SetVideoFormat(VideoFormat videoFormat);    virtual int  GetNumChannels();    virtual BOOL SetChannel(int channelNumber);    virtual BOOL SetColourFormat(const PString & colourFormat);    virtual BOOL SetFrameRate(unsigned rate);    virtual BOOL GetFrameSizeLimits(unsigned & minWidth, unsigned & minHeight, unsigned & maxWidth, unsigned & maxHeight) ;    virtual BOOL SetFrameSize(unsigned width, unsigned height);    virtual int GetBrightness();    virtual BOOL SetBrightness(unsigned newBrightness) ;    virtual int GetContrast();    virtual BOOL SetContrast(unsigned newContrast);     virtual int GetHue();    virtual BOOL SetHue(unsigned newHue); #if defined(P_LINUX) && !defined(NO_VIDEO_CAPTURE)    // only override these methods in Linux. Other platforms will use the    // default methods in PVideoDevice    virtual int GetWhiteness();    virtual BOOL SetWhiteness(unsigned newWhiteness);     virtual int GetColour();    virtual BOOL SetColour(unsigned newColour);     virtual BOOL SetVideoChannelFormat(int channelNumber,				       VideoFormat videoFormat);#endif    /** from one ioctl call, get whiteness, brightness, colour, contrast and hue.     */    virtual BOOL GetParameters (int *whiteness, int *brightness, 				int *colour, int *contrast, int *hue);  protected:    void ClearMapping();    /** Do not use memory mapping, access the data with a call to ::read();     */    BOOL NormalReadProcess(BYTE *resultBuffer, PINDEX *bytesReturned);#if defined(P_LINUX) && !defined(NO_VIDEO_CAPTURE)    int    videoFd;    struct video_capability videoCapability;    int    canMap;  // -1 = don't know, 0 = no, 1 = yes    int    colourFormatCode;    PINDEX hint_index;    BYTE * videoBuffer;    PINDEX frameBytes;   /** Ensure each ::ioctl(VIDIOMCAPTURE) is matched by a ::ioctl(VIDIOCSYNC).    */    BOOL   pendingSync[2];    int    currentFrame;    struct video_mbuf frame;    struct video_mmap frameBuffer[2];#endif#if defined(P_FREEBSD) || defined(P_OPENBSD) || defined(P_NETBSD)    struct video_capability    {        int channels;   /* Num channels */        int maxwidth;   /* Supported width */        int maxheight;  /* And height */        int minwidth;   /* Supported width */        int minheight;  /* And height */    };    int    videoFd;    struct video_capability videoCapability;    int    canMap;  // -1 = don't know, 0 = no, 1 = yes    BYTE * videoBuffer;    PINDEX frameBytes;    int    mmap_size;#endif// End Of File ////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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