zoukankan      html  css  js  c++  java
  • VFW 结构 综合

            #region 结构 VIDEOHDR|BITMAPINFOHEADER|BITMAPINFO|CAPTUREPARMS|CAPDRIVERCAPS|CAPSTATUS
            //========================================================VideoHdr 结构=====================================================================
            //VideoHdr 结构   定义了视频数据块的头信息,在编写回调函数时常用到其数据成员lpData(指向数据缓存的指针)和dwBufferLength(数据缓存的大小)。     
            //视频帧到缓存的捕获则需要应用回调函数和相应的数据块结构 VIDEOHDR 
            [StructLayout(LayoutKind.Sequential)]
            public struct VIDEOHDR
            {
                public IntPtr lpData;              /* 指向数据缓存的指针 */
                public int dwBufferLength;         /* 数据缓存的大小 */
                public int dwBytesUsed;            /* Bytes actually used */
                public int dwTimeCaptured;         /* Milliseconds from start of stream */
                public int dwUser;                 /* for client's use */
                public int dwFlags;                /* assorted flags (see defines) */
                public int dwReserved;             /* reserved for driver */
            }
            //=======================================================BitmapInfoHeader结构===================================================================
            //BitmapInfoHeader定义了位图的头部信息
            [StructLayout(LayoutKind.Sequential)]
            public struct BITMAPINFOHEADER
            {
                public int biSize;
                public int biWidth;
                public int biHeight;
                public short biPlanes;
                public short biBitCount;
                public int biCompression;
                public int biSizeImage;
                public int biXPelsPerMeter;
                public int biYPelsPerMeter;
                public int biClrUsed;
                public int biClrImportant;
            }
            //=========================================================================================================================================
    
            //======================================================BitmapInfo结构=====================================================================
            //BitmapInfo   位图信息
            [StructLayout(LayoutKind.Sequential)]
            public struct BITMAPINFO
            {
                public BITMAPINFOHEADER bmiHeader;
                public int bmiColors;
            }
    
            //=====================================================CAPTUREPARMS结构======================================================================
            //CAPTUREPARMS 包含控制视频流捕获过程的参数,如捕获帧频、指定键盘或鼠标键以终止捕获、捕获时间限制等; 
            [StructLayout(LayoutKind.Sequential)]
            public struct CAPTUREPARMS
            {
                public int dwRequestMicroSecPerFrame;             // 期望的桢播放率,以毫秒为单位,默认为66667,相当于15桢每秒。
                public bool fMakeUserHitOKToCapture;             // Show "Hit OK to cap" dlg?开始捕获标志位,如果值为真,则在开始捕获前要产生一个询问对话框,默认为假。
                public uint wPercentDropForError;               //所允许的最大丢桢百分比,可以从0变化到100,默认值为10。
                public bool fYield;                     /*另起线程标志位,如果为真,则程序重新启动一个线程用于视频流的捕获,默认值是假。
                                                         但是如果你是为了真,你必须要在程序中处理一些潜在的操作,因为当视频捕获时,其他操作并没有被屏蔽。*/
                public int dwIndexSize;                       // 在AVI文件中所允许的最大数目的索引项(32K)
                public uint wChunkGranularity;               // AVI文件的逻辑尺寸,以字节为单位。如果值是0,则说明该尺寸渐增 在 Win32程序中无用。(2K)
                public bool fUsingDOSMemory;                // Use DOS buffers?
                public uint wNumVideoRequested;            // 所被允许分配的最大视频缓存
                public bool fCaptureAudio;                // 音频标志位,如果音频流正在捕获,则该值为真。
                public uint wNumAudioRequested;          // 最大数量的音频缓存,默认值为10。
                public uint vKeyAbort;                  // 终止流捕获的虚拟键盘码,默认值为VK_ESCAPE
                [MarshalAs(UnmanagedType.Bool)]
                public bool fAbortLeftMouse;           // 终止鼠标左键标志位,如果该值为真,则在流捕获过程中如果点击鼠标左键则该捕获终止,默认值为真。
                public bool fAbortRightMouse;                 // Abort on right mouse?
                public bool fLimitEnabled;                   // 捕获操作时间限制,如果为真,则时间到了以后捕获操作终止,默认为假
                public uint wTimeLimit;                     // 具体终止时间,只有 fLimitEnabled是真时.该位才有效
                public bool fMCIControl;                   // Use MCI video source?
                public bool fStepMCIDevice;               // Step MCI device?MCI 设备标志。
                public int dwMCIStartTime;               // Time to start in MS
                public int dwMCIStopTime;               // Time to stop in MS
                public bool fStepCaptureAt2x;          // Perform spatial averaging 2x
                public int wStepCaptureAverageFrames; // 当基于平均采样来创建桢时,桢的采样时间,典型值是5
                public int dwAudioBufferSize;        // 音频缓存的尺寸,如果用默认值0,缓存尺寸是最大0.5秒,或10k字节。
                public int fDisableWriteCache;      // Attempt to disable write cache
                public int AVStreamMaster;         //音视频同步标志。
            }
            //=========================================================================================================================================
    
            //=================================================CAPDRIVERCAPS结构=======================================================================
            //CAPDRIVERCAPS定义了捕获驱动器的能力,如有无视频叠加能力、有无控制视频源、视频格式的对话框等; 
            [StructLayout(LayoutKind.Sequential)]
            public struct CAPDRIVERCAPS
            {
                [MarshalAs(UnmanagedType.U2)]
                public UInt16 wDeviceIndex;         //捕获驱动器的索引值,该值可以由0到9变化。
                [MarshalAs(UnmanagedType.Bool)]
                public bool fHasOverlay;            // 视频叠加标志,如果设备支持视频叠加这该位是真。
                [MarshalAs(UnmanagedType.Bool)]
                public bool fHasDlgVideoSource;     //视频资源对话框标志位,如果设备支持视频选择、控制对话框,该值为真。
                [MarshalAs(UnmanagedType.Bool)]
                public bool fHasDlgVideoFormat;     //视频格式对话框标志位,如果设备支持对视频格式对话框的选择,该位真。
                [MarshalAs(UnmanagedType.Bool)]
                public bool fHasDlgVideoDisplay;    //视频展示对话框标志位,如果设备支持对视频捕获缓存区的重新播放,该位是真。
                [MarshalAs(UnmanagedType.Bool)]
                public bool fCaptureInitialized;    //捕获安装标志位,如果捕获驱动器已经成功连接,该值为真。
                //[MarshalAs(UnmanagedType.Bool)]
                public bool fDriverSuppliesPalettes; //驱动器调色板标志位,如果驱动器能创建调色板,则该位是真。
                [MarshalAs(UnmanagedType.I4)]
                public int hVideoIn;
                [MarshalAs(UnmanagedType.I4)]
                public int hVideoOut;
                [MarshalAs(UnmanagedType.I4)]
                public int hVideoExtIn;
                [MarshalAs(UnmanagedType.I4)]
                public int hVideoExtOut;
            }
            //=========================================================================================================================================
    
    
            //=====================================================CAPSTATUS结构========================================================================
            //CAPSTATUS定义了捕获窗口的当前状态,如图像的宽、高等;
            [StructLayout(LayoutKind.Sequential)]
            public struct CAPSTATUS
            {
                public int uiImageWidth;                         //图像宽度
                public int uiImageHeight;                       //图像高度
                public bool fLiveWindow;                       //活动窗口标记,如果窗口正以预览的方式展示图像,那么该值为真
                public bool fOverlayWindow;                   //叠加窗口标志位,如果正在使用硬件叠加,则该位是真。
                public bool fScale;                          //输入所放标志位,如果窗口是正在缩放视频到客户区,那么该位是真。当使用硬件叠加时,改位无效。
                public Point ptScroll;                      //被展示在窗口客户区左上角的那个象素的x、y坐标偏移量。
                public bool fUsingDefaultPalette;          //默认调色板标志位,如果捕获窗口正在使用当前默认调色板,该值为真
                public bool fAudioHardware;               // 音频硬件标志位,如果系统已经安装了音频硬件,该值为真。
                public bool fCapFileExists;              //捕获文件标志位,如果一个捕获文件已经被创建,该值为真
                public int dwCurrentVideoFrame;         // 当前或最近流捕获过程中,所处理的桢的数目。包括丢弃的桢。
                public int dwCurrentVideoFramesDropped;//当前流捕获过程中丢弃的桢的数目。
                public int dwCurrentWaveSamples;      // # of wave samples cap'td
                public int dwCurrentTimeElapsedMS;   // 从当前流捕获开始计算,程序所用的时间,以毫秒为单位。
                public IntPtr hPalCurrent;          // 当前剪切板的句柄。
                public bool fCapturingNow;         // 捕获标志位,当捕获是正在进行时,改位是真
                public int dwReturn;              // 错误返回值,当你的应用程序不支持错误回调函数时可以应用改位
                public int wNumVideoAllocated;   // 被分配的视频缓存的数目。
                public int wNumAudioAllocated;  // 被分配的音频缓存的数目。
            }
            //=========================================================================================================================================
    
    
            #endregion 结构 VIDEOHDR|BITMAPINFOHEADER|BITMAPINFO|CAPTUREPARMS|CAPDRIVERCAPS|CAPSTATUS
    

  • 相关阅读:
    Hadoop集群(三) Hbase搭建
    Hadoop集群(二) HDFS搭建
    Hadoop集群(一) Zookeeper搭建
    Redis Cluster 添加/删除 完整折腾步骤
    Redis Cluster在线迁移
    Hadoop分布式HA的安装部署
    Describe the difference between repeater, bridge and router.
    what is the “handover” and "soft handover" in mobile communication system?
    The main roles of LTE eNodeB.
    The architecture of LTE network.
  • 原文地址:https://www.cnblogs.com/mahaisong/p/2155330.html
Copyright © 2011-2022 走看看