📄 card.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 + -