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

📄 card.h

📁 vc ad
💻 H
字号:
#ifndef _CARD_H
#define _CARD_H
#include <winioctl.h>

#pragma pack(push,1)

#define IOCTL_READ_REGISTER CTL_CODE( \
	                FILE_DEVICE_UNKNOWN, \
                    0X801,               \
					METHOD_BUFFERED,     \
					FILE_ANY_ACCESS)

#define IOCTL_WRITE_REGISTER CTL_CODE( \
	                FILE_DEVICE_UNKNOWN, \
                    0X802,               \
					METHOD_BUFFERED,     \
					FILE_ANY_ACCESS)

#define IOCTL_BOARD_INFO CTL_CODE(\
	                FILE_DEVICE_UNKNOWN, \
                    0X80e,               \
					METHOD_BUFFERED,     \
					FILE_ANY_ACCESS)

#define IOCTL_TRANSADDRESS CTL_CODE(\
	                FILE_DEVICE_UNKNOWN, \
                    0X81C,               \
					METHOD_BUFFERED,    \
					FILE_ANY_ACCESS)
typedef struct{
	ULONG Double;
	ULONG Reserved;
	ULONG VolumeAbility;
	ULONG VideoSourceSelect;
	ULONG SerialsNo;
}AVE2K_BOARD_INFO, *PAVE2K_BOARD_INFO;
#pragma pack(pop)

typedef enum{
	AVE2KLIB_SCREEN_NONE=0,
	AVE2KLIB_SCREEN_PRIMARY,
	AVE2KLIB_SCREEN_OVERLAY}AVE2KLIB_SCREEN_MODE;

typedef struct{
	ULONG Width;
	ULONG Height;
	ULONG Depth;
	ULONG Pitch;
	ULONG VirtualAddress;
	ULONG BitCount;
}AVE2KLIB_DISPLAY_PARAMETER, *PAVE2KLIB_DISPLAY_PARAMETER;

typedef struct{
	ULONG Channel;
	ULONG Brightness;
	ULONG Contrast;
	ULONG Saturation;
	ULONG Hue;
}AVE2K_VIDEO_PARAMETER, *PAVE2K_VIDEO_PARAMETER;

#include "boardreg.h"

#define REVA0 0
#define REVA1 1
#define REVA2 2
#define REVA3 3
#define REVB2 4
#define REVC2 5
#define REVD1 6
#define REVD2 7

struct CPciList{
	int nBus;
	int nDev;
	int nFun;
	ULONG uBasePort;
};
extern CPciList g_PciList[64];
extern BOOL g_bWin98;
extern int g_nTotal;

class CCard{
private:
	HANDLE m_hDevice;
	BOOL bCompress, bDouble, bVideoSrc;
public:
	//general functions
	CCard();
	BOOL OpenCard(int nCardNum);
	BOOL CloseCard();
	void SetCardType(int nType, BOOL bRevD2);
	BOOL CheckCompress();
	BOOL CheckDouble();
	BOOL CheckVideoSrc();
public:
	BOOL GetBusSlot(int *pnBus, int *pnSlot);
	//eeprom functions
	BOOL GetEepromHeader(PUCHAR pBuf);
	BOOL GetEepromContent(PUCHAR pBuf);
	BOOL SetEepromHeader(PUCHAR pBuf);
	int IICWriteEepromBlock(int nOffset, int nWrite, PUCHAR pBuf);
	//overlay functions
	int Overlay(RECT *pWindow, int nChannel, BOOL bOpen);
	void SetDisplayPara(PAVE2KLIB_DISPLAY_PARAMETER pPara, ULONG uPhyAdd);
	//basic function
	BOOL TransAddress(ULONG uVirAddress, PULONG puPhyAddress);
	//video decoder: SAA7113
	void SetVideoSource(ULONG VideoSource, ULONG nChannel);
	BOOL Init7113(int nChannel);
	int GetVideoType(int nChannel);
	void GetVideoParameter(PAVE2K_VIDEO_PARAMETER pVideoParameter, ULONG nChannel);
	void SetVideoParameter(PAVE2K_VIDEO_PARAMETER pVideoParameter, ULONG nChannel);
	BOOL InitMTV118(char *sText);
	//debi
	void InitDebi(int nChannel);
	int LoadDSPCode(int nChannel);
	int VerifyDSPCode(int nChannel);
	int StartDSP(int nChannel);
	void StopCompress(int nChannel);
	//audio
	void ConfigAudio(ULONG BufAdd);
	void StartAudio(int nChannel);
	void StopAudio();
	int IICWrite(unsigned char uAddr, unsigned char uSubAddr, unsigned char nByte);
	unsigned char IICRead(unsigned char uAddr, unsigned char uSubAddr);
	BOOL GetPortBase(ULONG *pnBase);
	int m_nBoardVersion;
	void OpenIIC(void);
	int IICWriteBytes(BYTE bySub, int nWrite, PUCHAR pBuf);
private:
	//i2c functions
	int WaitIICAck();
	BOOL bIICError;
	void CloseIIC(void);
	void UploadI2c();
	void IICAbort(void);
	
	//for overlay
	int m_NIP;
	int m_NIL;
	AVE2KLIB_DISPLAY_PARAMETER m_DisplayParameter;
	ULONG m_outformat;
	int m_nVideoType[2];
	ULONG m_PhysicalAddress;
	RECT m_OverlayWindow;
	void Setup_VScale(int nil, int nol, ULONG hyo);
	void Setup_HScale(int nip, int nop, ULONG hxo);
	void UploadVideo();
	void StopVideo();
	void StartVideo();
	void Shift(int nChannel);
	void DisableAllClip();
	//debi
	int Start(int nChannel);
	int Stop(int nChannel);
	void Release(int nChannel);
	int Reset(int nChannel);
	void WriteByte(int nAddress, unsigned char byData);
	unsigned char ReadByte(int nAddress);
	int GetDSPStatus(int nChannel);
	void ClearDSPStatus(int nChannel);
	int WaitDSPInt(int nChannel);
	void UploadDebi();
	void EnableDSPLogic();
	void DisableDSPLogic();
	void ResetDSP(int nChannel);
	void SelectDSP(void);
	void DisselectDSP(void);
	int ConfigMPEG(int nVideoMode, int nAudioRate,int nStereo, int nChannel);
	void ReadDSPRegisters(void);
	int GetDSPInt(int nChannel);
	int WaitDSPInt(int nChannel, int nWant);
	void ClearDSPInt(int nChannel);
	void InitDSPHpi();
	void InitDSPHpi2();
	void InformDSP(int nChannel);
	void WriteHPIC(unsigned int wData);
	void WriteHPIA(unsigned int wData);
	void WriteChipMemory(unsigned int nAddress, unsigned int wData);
	unsigned int ReadChipMemory2(unsigned int nAddress);
	void WriteChipMemory2(unsigned int nAddress, unsigned int wData);
	unsigned int ReadChipMemory(unsigned int nAddress);
	void WriteWord(int nAddress, unsigned int wData);
	unsigned int ReadWord(int nAddress);
	//basic function
	void MicroDelay(ULONG delay);
public:
	ULONG ReadReg(ULONG n);
	BOOL WriteReg(ULONG n, ULONG nValue);
};
#endif

⌨️ 快捷键说明

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