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

📄 scaler.h

📁 传说中的 视频抓取驱动源码 啊啊啊啊啊啊啊啊啊啊啊啊啊
💻 H
字号:
//==========================================================================;
//
//  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
//  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
//  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
//  PURPOSE.
//
//  Copyright (c) 1992 - 1996  Microsoft Corporation.  All Rights Reserved.
//
//==========================================================================;

#ifndef __SCALER_H
#define __SCALER_H

#include "mytypes.h"

#define HDROP       HANDLE

#include "viddefs.h"

#include "capmain.h"
#include "register.h"

// structure contains video information
struct VideoInfoStruct
{
   WORD Clkx1_HACTIVE;
   WORD Clkx1_HDELAY;
   WORD Min_Pixels;
   WORD Active_lines_per_field;
   WORD Min_UncroppedPixels;
   WORD Max_Pixels;
   WORD Min_Lines;
   WORD Max_Lines;
   WORD Max_VFilter1_Pixels;
   WORD Max_VFilter2_Pixels;
   WORD Max_VFilter3_Pixels;
   WORD Max_VFilter1_Lines;
   WORD Max_VFilter2_Lines;
   WORD Max_VFilter3_Lines;
};


/////////////////////////////////////////////////////////////////////////////
// CLASS Scaler
//
// Description:
//    This class encapsulates the register fields in the scaler portion of
//    the Bt848.
//    A complete set of functions are developed to manipulate all the
//    register fields in the scaler registers for the Bt848.
//
// Methods:
//    See below
//
// Note:
//    For Bt848, instantiate as ...
//       Scaler evenScaler(VF_Even);
//       Scaler oddScaler(VF_Odd);
//
/////////////////////////////////////////////////////////////////////////////

class Scaler
{
    public:
        Scaler(PDEVICE_PARMS);
        ~Scaler();

	void * operator new(size_t size, void * pAllocation) { return(pAllocation);}
	void operator delete(void * pAllocation) {}

		void VideoFormatChanged(VideoFormat);
        void TurnVFilter(State st) { VFilterFlag_ = st; }
                     
        void      Scale(MRect &);
        ErrorCode SetAnalogWin(const MRect &);
        void      GetAnalogWin(MRect &) const;
        ErrorCode SetDigitalWin(const MRect &);
        void      GetDigitalWin(MRect &) const;

        // member functions for VBI support
        virtual void SetVBIEN(BOOL);
        virtual BOOL IsVBIEN();
        virtual void SetVBIFMT(BOOL);
        virtual BOOL IsVBIFMT();

        void      DumpSomeState();

   protected:

		//===========================================================================
		// Scaler registers
		//===========================================================================
		RegisterB regCROP;
		RegField  fieldVDELAY_MSB;
		RegField  fieldVACTIVE_MSB;
		RegField  fieldHDELAY_MSB;
		RegField  fieldHACTIVE_MSB;
		RegisterB regVDELAY_LO;
		RegisterB regVACTIVE_LO;
		RegisterB regHDELAY_LO;
		RegisterB regHACTIVE_LO;
		RegisterB regHSCALE_HI;
		RegField  fieldHSCALE_MSB;
		RegisterB regHSCALE_LO;
		RegisterB regSCLOOP;
		RegField  fieldHFILT;
		RegisterB regVSCALE_HI;
		RegField  fieldVSCALE_MSB;
		RegisterB regVSCALE_LO;
		RegisterB regVTC;
		RegField  fieldVBIEN;
		RegField  fieldVBIFMT;
		RegField  fieldVFILT;
		CompositeReg regVDelay;
		CompositeReg regVActive;
		CompositeReg regVScale;
		CompositeReg regHDelay;
		CompositeReg regHActive;
		CompositeReg regHScale;

		// Since VDelay register in hardware is reversed;
		// i.e. odd reg is really even field and vice versa, need an extra cropping reg
		// for the opposite field
		RegisterB regReverse_CROP;


        VideoInfoStruct * m_ptrVideoIn;
        MRect AnalogWin_;
        MRect DigitalWin_;

        // member functions to set scaling registers
        virtual void SetHActive(MRect &);
        virtual void SetHDelay();
        virtual void SetHScale();
        virtual void SetHFilter();
        virtual void SetVActive();
        virtual void SetVDelay();
        virtual void SetVScale(MRect &);
        virtual void SetVFilter();

    private:
        VideoFormat  m_videoFormat;   // video format

        // this is to battle junk lines at the top of the video
        State VFilterFlag_;

        WORD  m_HActive;  // calcuated intermediate value
        WORD  m_pixels;   // calcuated intermediate value
        WORD  m_lines;    // calcuated intermediate value
        WORD  m_VFilter;  // calcuated intermediate value

};


#endif __SCALER_H









⌨️ 快捷键说明

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