windows-nt/Source/XPSP1/NT/drivers/wdm/dvd/mini/dxr2/zivawdm.h
2020-09-26 16:20:57 +08:00

216 lines
6 KiB
C

/******************************************************************************\
* *
* ZIVAWDM.H - ZiVA hardware control API. *
* *
* Copyright (c) C-Cube Microsystems 1996 *
* All Rights Reserved. *
* *
* Use of C-Cube Microsystems code is governed by terms and conditions *
* stated in the accompanying licensing statement. *
* *
\******************************************************************************/
#ifndef _ZIVAWDM_H_
#define _ZIVAWDM_H_
#ifdef GATEWAY
#define LRCK_DELAY
#endif
#define AUTHENTICATION_TIMEOUT_COUNT 200
#define ZIVA_STREAM_TYPE_MPEG_PROGRAM 0 // DVD MPEG-2 program stream
#define ZIVA_STREAM_TYPE_MPEG_SYSTEM 1 // MPEG-1 system stream
#define ZIVA_STREAM_TYPE_CDROM_MPEG 2 // VideoCD CD-ROM sector stream
#define ZIVA_STREAM_TYPE_CDDA 3 // CD-DA PCM sector stream
#define ZIVA_STREAM_TYPE_AUDIO_ELEMENTARY 0x10 // Audio elementary stream
#define ZIVA_STREAM_TYPE_VIDEO_ELEMENTARY 0x11 // Video elementary stream
#define NTSC 1
#define PAL 2
typedef enum _ZIVA_STREAM
{
ZivaVideo = 0,
ZivaAudio,
ZivaSubpicture,
#if defined (ENCORE)
ZivaAnalog,
#elif defined(DECODER_DVDPC)|| defined(EZDVD)
ZivaYUV,
#endif
ZivaCCOut,
ZivaNumberOfStreams
} ZIVA_STREAM, *PZIVA_STREAM;
#define DISC_KEY_SIZE 2048
typedef enum _ZIVA_STATE
{
ZIVA_STATE_PLAY = 0,
ZIVA_STATE_PAUSE,
ZIVA_STATE_STOP,
ZIVA_STATE_SCAN,
ZIVA_STATE_STEP,
ZIVA_STATE_SLOWMOTION
} ZIVA_STATE;
typedef struct _INT_STATUS_INFO
{
DWORD dwStatus; // Interrupt status
DWORD dwButton;
DWORD dwError;
DWORD dwBuffer;
DWORD dwUnderflow;
DWORD dwAOR;
DWORD dwAEE;
} INT_STATUS_INFO, * PINT_STATUS_INFO;
typedef struct _HW_DEVICE_EXTENSION
{
ULONG dwDVDHostBaseAddress; // Board base address
ULONG dwHostAccessRangeLength; // and its length
ULONG dwDVDCFifoBaseAddress;
ULONG dwDVDAMCCBaseAddress;
ULONG dwDVDFPGABaseAddress;
ULONG dwDVD6807BaseAddress;
BOOLEAN bVideoStreamOpened;
BOOLEAN bAudioStreamOpened;
BOOLEAN bSubPictureStreamOpened;
BOOLEAN bOverlayInitialized;
int nAnalogStreamOpened;
int iTotalOpenedStreams;
BOOLEAN bVideoCanAuthenticate;
BOOLEAN bAudioCanAuthenticate;
BOOLEAN bSubPictureCanAuthenticate;
int iStreamToAuthenticateOn;
BOOLEAN bValidSPU;
KSPROPERTY_SPHLI hli;
PHW_STREAM_REQUEST_BLOCK pCurrentVideoSrb; // Currently DMAing Video Srb
DWORD dwCurrentVideoSample; // Currently DMAing Video Sample (page)
PHW_STREAM_REQUEST_BLOCK pCurrentAudioSrb; // Currently DMAing Audio Srb
DWORD dwCurrentAudioSample; // Currently DMAing Audio Sample (page)
PHW_STREAM_REQUEST_BLOCK pCurrentSubPictureSrb; // Currently DMAing SubPicture Srb
DWORD dwCurrentSubPictureSample; // Currently DMAing SubPicture Sample (page)
ZIVA_STREAM CurrentlySentStream; // Currently DMAing Stream
WORD wNextSrbOrderNumber;
BOOLEAN bInterruptPending;
BOOLEAN bPlayCommandPending;
BOOLEAN bScanCommandPending;
BOOLEAN bSlowCommandPending;
BOOLEAN bEndFlush;
BOOL bTimerScheduled;
int nTimeoutCount;
int nStopCount, nPauseCount, nPlayCount;
#ifdef ENCORE
BOOL bIsVxp524;
int nVGAMode; // TRUE - current, FALSE - new, (-1) - new VGA!
DWORD dwColorKey;
#endif
ULONG VideoPort;
PHW_STREAM_OBJECT pstroYUV;
KS_AMVPDATAINFO VPFmt;
ULONG ddrawHandle;
ULONG VidPortID;
ULONG SurfaceHandle;
//#endif
PUCHAR pDiscKeyBufferLinear;
STREAM_PHYSICAL_ADDRESS pDiscKeyBufferPhysical;
PDEVICE_OBJECT pPhysicalDeviceObj;
ULONG NewRate;
BOOLEAN bToBeDiscontinued;
BOOLEAN bDiscontinued;
BOOLEAN bAbortAtPause;
BOOLEAN bRateChangeFromSlowMotion;
DWORD dwCurrentVideoPage;
DWORD dwCurrentAudioPage;
DWORD dwCurrentSubPicturePage;
LONG dwVideoDataUsed;
LONG dwAudioDataUsed;
LONG dwSubPictureDataUsed;
BOOLEAN bMove;
/* DWORD VidBufferSize[50];
DWORD VideoPageTable[50];
DWORD AudBufferSize[50];
DWORD AudioPageTable[50];
DWORD SubPictureBufferSize[50];
DWORD SubPicturePageTable[50];*/
BOOLEAN bStreamNumberCouldBeChanged;
WORD wCurrentStreamNumber;
BOOLEAN bSwitchDecryptionOn;
ZIVA_STATE zInitialState;
PHW_STREAM_OBJECT pstroCC;
DWORD gdwCount;
BYTE *gbpCurData;
BOOLEAN bHliPending;
DWORD dwFirstVideoOrdNum;
DWORD dwFirstAudioOrdNum;
DWORD dwFirstSbpOrdNum;
PHW_STREAM_OBJECT pstroAud;
DWORD dwVSyncCount;
LONG nApsMode;
WORD VidSystem;
ULONG ulLevel;
BOOL fAtleastOne;
DWORD dwPrevSTC;
BOOL bTrickModeToPlay;
STREAM_SYSTEM_TIME VideoSTC;
ULONGLONG prevStrm;
BOOL fFirstSTC;
ULONG cCCRec, cCCDeq, cCCCB ,cCCQ;
struct _HW_DEVICE_EXTENSION *pCCDevEx;
PHW_STREAM_REQUEST_BLOCK pSrbQ;
DWORD dwUserDataBuffer[ 160 ];
DWORD dwUserDataSize;
BOOL fReSync;
BOOL bInitialized;
} HW_DEVICE_EXTENSION, *PHW_DEVICE_EXTENSION;
typedef struct _HW_STREAM_EXTENSION
{
KSSTATE ksState;
BOOL bCanBeRun;
BOOL bVideoEnabled;
} HW_STREAM_EXTENSION, *PHW_STREAM_EXTENSION;
BOOL _stdcall ZivaHw_Initialize( PHW_DEVICE_EXTENSION pHwDevExt );
BOOL _stdcall ZivaHW_LoadUCode();
BOOL _stdcall ZivaHw_Play();
BOOL _stdcall ZivaHw_Scan();
BOOL _stdcall ZivaHw_SlowMotion( WORD wRatio );
BOOL _stdcall ZivaHw_Pause();
BOOL ZivaHw_Reset();
BOOL ZivaHw_Abort();
ZIVA_STATE ZivaHw_GetState();
BOOL ZivaHW_GetNotificationDirect( PINT_STATUS_INFO pInfo );
BOOL ZivaHw_FlushBuffers( );
void ZivaHW_ForceCodedAspectRatio(WORD wRatio);
void ZivaHw_SetDisplayMode( WORD wDisplay, WORD wMode );
void ZivaHw_SetVideoMode(PHW_DEVICE_EXTENSION pHwDevExt);
BOOL ZivaHw_GetUserData(PHW_DEVICE_EXTENSION pHwDevExt);
#endif // _ZIVAWDM_H_