216 lines
6 KiB
C
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_
|