|
|
/******************************************************************************\
* * * 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_
|