Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

164 lines
4.4 KiB

//==========================================================================;
//
// 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