Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

483 lines
17 KiB

//***************************************************************************
//
// FileName:
// $Workfile: zivabrd.h $
//
// Author:
// TOSHIBA [PCS](PSY) Seiichi Nakamura
// Copyright (c) 1997 TOSHIBA CORPORATION
//
// Description:
//
//***************************************************************************
// $Header: /DVD Drivers/ZiVA.WDM/zivabrd.h 38 99/04/21 2:46p Yagi $
// $Modtime: 99/04/21 2:21p $
// $Nokeywords:$
//***************************************************************************
// Date | Author | Description
// -----------+--------------+--------------------------------------------
// 1997.12.04 | Hideki Yagi | Add VideoProperty_FilmCamera.
// | | This Property is necessary to support WSS.
// 1998.02.19 | Hideki Yagi | Add AudioProperty_AC3OutputMode.
// | | This Property is necessary to support KARAOKE.
// 1998.03.27 | Hideki Yagi | Add GetCapability method.
// | | Add VideoProperty_SuquarePixel.
// 1998.05.01 | Hideki Yagi | Add SubpicProperty_FlushBuff.
// 1998.05.12 | Hideki Yagi | Add m_VSyncEventList.
// 1998.09.25 | Hideki Yagi | Add m_WrapperType.
// | |
//
#ifndef _ZIVA_BOARD_H_
#define _ZIVA_BOARD_H_
class CZiVA;
class CIOIF;
//***************************************************************************
// KernelService HWInt Help Class
//***************************************************************************
class CAutoHwInt
{
private:
IKernelService *m_pKernelObj;
public:
CAutoHwInt( IKernelService *pKernelObj )
{
m_pKernelObj = NULL;
ASSERT( pKernelObj != NULL );
m_pKernelObj = pKernelObj;
m_pKernelObj->DisableHwInt();
};
~CAutoHwInt( void )
{
m_pKernelObj->EnableHwInt();
};
};
//***************************************************************************
// IMBoardListItem Help Class
//***************************************************************************
class CList
{
private:
IMBoardListItem *pTopItem;
IMBoardListItem *pCurrentItem;
public:
CList( void );
void Init( void );
BOOL SearchItem( IMBoardListItem *pItem );
BOOL AddItem( IMBoardListItem *pItem );
BOOL DeleteItem( IMBoardListItem *pItem );
BOOL SetCurrentToTop( void );
IMBoardListItem *GetNext( void );
IMBoardListItem *SearchBottomItem( void );
};
//***************************************************************************
// VideoPropatySet Class
//***************************************************************************
class CVideoPropSet
{
public:
VideoProperty_TVSystem_Value m_TVSystem;
VideoProperty_AspectRatio_Value m_AspectRatio;
VideoProperty_DisplayMode_Value m_DisplayMode;
VideoSizeStruc m_Size;
VideoProperty_DigitalOut_Value m_DigitalOut;
UCHAR m_DigitalPalette[3][256];
VideoAPSStruc m_APS;
VideoProperty_ClosedCaption_Value m_ClosedCaption;
VideoProperty_OutputSource_Value m_OutputSource;
VideoProperty_CompositeOut_Value m_CompositeOut;
VideoProperty_SVideoOut_Value m_SVideoOut;
VideoProperty_SkipFieldControl_Value m_SkipFieldControl;
VideoProperty_FilmCamera_Value m_FilmCamera;
VideoProperty_SquarePixel_Value m_SquarePixel;
//by oka
VideoProperty_OSD_Switch_Value m_OSDSwitch;
public:
CVideoPropSet(){ Init(); };
void Init( void )
{
// setup default value
m_TVSystem = TV_NTSC;
m_AspectRatio = Aspect_04_03;
m_DisplayMode = Display_Original;
m_Size.ResHorizontal = 720;
m_Size.ResVertical = 480;
m_DigitalOut = DigitalOut_Off;
for( int i = 0 ; i < 3 ; i ++ )
for( int j = 0 ; j < 256; j ++ )
m_DigitalPalette[i][j] = (UCHAR)j;
m_APS.CgmsType = CgmsType_Off;
m_APS.APSType = ApsType_Off;
m_ClosedCaption = ClosedCaption_Off;
m_OutputSource = OutputSource_DVD;
m_CompositeOut = CompositeOut_Off;
m_SVideoOut = SVideoOut_Off;
m_SkipFieldControl = SkipFieldControl_Off;
m_FilmCamera = Source_Camera;
m_SquarePixel = SquarePixel_Off;
// by oka
m_OSDSwitch = Video_OSD_Off;
};
};
//***************************************************************************
// AudioPropatySet Class
//***************************************************************************
class CAudioPropSet
{
public:
AudioProperty_Type_Value m_Type;
DWORD m_StreamNo;
DWORD m_Volume;
DWORD m_Sampling;
DWORD m_ChannelNo;
DWORD m_Quant;
AudioProperty_AudioOut_Value m_OutType;
AudioProperty_Cgms_Value m_Cgms;
AudioProperty_AnalogOut_Value m_AnalogOut;
AudioProperty_DigitalOut_Value m_DigitalOut;
DWORD m_AC3DRangeLowBoost;
DWORD m_AC3DRangeHighCut;
AudioProperty_AC3OperateMode_Value m_AC3OperateMode;
AudioProperty_AC3OutputMode_Value m_AC3OutputMode;
public:
CAudioPropSet(){ Init(); };
void Init( void )
{
// setup default value
m_Type = AudioType_AC3;
m_StreamNo = 0;
m_Volume = 100;
m_Sampling = 48000;
m_ChannelNo = 2;
m_Quant = 16;
m_OutType = AudioOut_Encoded;
m_Cgms = AudioCgms_Off;
m_AnalogOut = AudioAnalogOut_On;
m_DigitalOut = AudioDigitalOut_Off;
m_AC3DRangeLowBoost = 128;
m_AC3DRangeHighCut = 128;
m_AC3OperateMode = AC3OperateLine;
};
};
//***************************************************************************
// SubpicPropatySet Class
//***************************************************************************
class CSubpicPropSet
{
public:
DWORD m_StreamNo;
UCHAR m_Palette[48];
SubpHlightStruc m_Hlight;
SubpicProperty_State_Value m_OutType;
// by oka
SubpHlightButtonStruc m_HlightButton;
public:
// setup default value
CSubpicPropSet(){ Init(); };
void Init( void )
{
m_StreamNo = 0;
for( int i = 0 ; i < 48 ; i ++ )
m_Palette[ i ] = 0;
m_Hlight.Hlight_Switch = Hlight_Off;
m_Hlight.Hlight_StartX = 0;
m_Hlight.Hlight_EndX = 0;
m_Hlight.Hlight_StartY = 0;
m_Hlight.Hlight_EndY = 0;
m_Hlight.Hlight_Color = 0;
m_Hlight.Hlight_Contrast= 0;
m_OutType = Subpic_On;
// by oka
m_HlightButton.Hlight_Button = 0;
m_HlightButton.Hlight_Action = Button_Unhighlight;
};
};
//***************************************************************************
// ZiVA Board Class
//***************************************************************************
class CMPEGBoardHAL: public IClassLibHAL, public IWrapperHAL
{
//
private:
IKernelService *m_pKernelObj; // Kernel Service Object
CIOIF ioif; // IO interface object
CZiVA ziva; // ZiVA chip control object
CADV7175A adv7175a; // ADV7175A control object
CADV7170 adv7170; // ADV7170 ccontrol object
CADV *adv; // pointer to ADV object
CMixHALStream m_Stream; // Mix Hal Stream object
#ifdef POWERCHECK_BY_FLAG
POWERSTATE m_PowerState; // Hardware power state
#endif
CList m_SendDataEventList;
CList m_StartVOBUEventList;
CList m_EndVOBEventList;
CList m_VUnderFlowEventList;
CList m_AUnderFlowEventList;
CList m_SPUnderFlowEventList;
CList m_VOverFlowEventList;
CList m_AOverFlowEventList;
CList m_SPOverFlowEventList;
// by oka
CList m_ButtonActivteEventList;
CList m_NextPictureEventList;
CList m_UserDataEventList;
// end
CList m_VSyncEventList; // 98.05.12 H.Yagi
CVideoPropSet m_VideoProp; // Video Property Set
CAudioPropSet m_AudioProp; // Audio Property Set
CSubpicPropSet m_SubpicProp; // Subpic Property Set
DWORD m_DMABufferLinearAddr; // DMA buffer addr
DWORD m_DMABufferPhysicalAddr; // DMA buffer addr
BOOL fMasterAbortFlag;
BOOL fRDYDFlag;
BOOL fENDPFlag;
BOOL fENDCFlag;
DWORD m_NaviCount;
DWORD m_EventIntMask;
// by oka
DWORD m_ZivaPbtIntMask; // stock mask for PBT_INT
DWORD m_MaskReference[24]; // interrupt bit reference counter
BOOL m_NeedPowerOnDelay; // power on delay for audio
DWORD m_PowerOnTime; // power on time.
// 1998.8.18 seichan
//DisplayModeをZiVAのPICV割り込みで設定するためのフラグ
BOOL m_SetVideoProperty_DisplayMode_Event;
WRAPPERTYPE m_WrapperType; // WrappertType Flag
private:
void NotifyEvent( CList *pList , VOID *Ret );
void CheckZiVAInterrupt( DWORD dwIntFlag );
DWORD GetDMABufferLinearAddr( void ) { return m_DMABufferLinearAddr; };
DWORD GetDMABufferPhysicalAddr( void ) { return m_DMABufferPhysicalAddr; };
void ClearMasterAbortEvent( void );
void SetMasterAbortEvent( void );
BOOL IsMasterAbortOccurred( void );
BOOL WaitMasterAbort( void );
void ClearRDYDEvent( void );
void SetRDYDEvent( void );
BOOL IsRDYDOccurred( void );
BOOL WaitRDYD( void );
void ClearENDPEvent( void );
void SetENDPEvent( void );
BOOL IsENDPOccurred( void );
BOOL WaitENDP( void );
void ClearENDCEvent( void );
void SetENDCEvent( void );
BOOL IsENDCOccurred( void );
BOOL WaitENDC( void );
DWORD GetEventIntMask( void ){ return m_EventIntMask; };
// by oka
BOOL SetEventIntMask( DWORD mask );
BOOL UnsetEventIntMask( DWORD mask );
// by oka for Closed Caption
inline void SetUSRData( void );
inline void SendCCData( void );
DWORD m_CCData[CC_DATA_SIZE];
DWORD m_CCDataPoint;
DWORD m_CCDataNumber;
DWORD m_CCRingBufferStart;
DWORD m_CCRingBufferNumber;
DWORD m_CCstart; // User Data Area start point
DWORD m_CCend; // User Data Area end point
DWORD m_CCsend_point; //リングバッファでのポインター
DWORD m_CCpending; //おいつかなかった数
DWORD m_CCnumber; //送ったデータの数
// by oka for OnScreenDisplay
DWORD m_OSDStartAddr;
DWORD m_OSDEndAddr;
// end
//-------------------------------------------------------------------
// Video property private functions( Set series )
//-------------------------------------------------------------------
BOOL SetVideoProperty_TVSystem( PVOID pData );
BOOL SetVideoProperty_AspectRatio( PVOID pData );
BOOL SetVideoProperty_DisplayMode( PVOID pData );
BOOL SetVideoProperty_Resolution( PVOID pData );
BOOL SetVideoProperty_DigitalOut( PVOID pData );
BOOL SetVideoProperty_DigitalPalette( PVOID pData );
BOOL SetVideoProperty_APS( PVOID pData );
BOOL SetVideoProperty_ClosedCaption( PVOID pData );
BOOL SetVideoProperty_OutputSource( PVOID pData );
BOOL SetVideoProperty_CompositeOut( PVOID pData );
BOOL SetVideoProperty_SVideoOut( PVOID pData );
BOOL SetVideoProperty_SkipFieldControl( PVOID pData );
BOOL SetVideoProperty_FilmCamera( PVOID pData );
BOOL SetVideoProperty_SquarePixel( PVOID pData );
// by oka
BOOL SetVideoProperty_Digest( PVOID pData );
BOOL SetVideoProperty_OSDData( PVOID pData );
BOOL SetVideoProperty_OSDSwitch( PVOID pData );
BOOL SetVideoProperty_Magnify( PVOID pData );
BOOL SetVideoProperty_ClosedCaptionData( PVOID pData );
//-------------------------------------------------------------------
// Video property private functions( Get series )
//-------------------------------------------------------------------
BOOL GetVideoProperty_TVSystem( PVOID pData );
BOOL GetVideoProperty_AspectRatio( PVOID pData );
BOOL GetVideoProperty_DisplayMode( PVOID pData );
BOOL GetVideoProperty_Resolution( PVOID pData );
BOOL GetVideoProperty_DigitalOut( PVOID pData );
BOOL GetVideoProperty_DigitalPalette( PVOID pData );
BOOL GetVideoProperty_APS( PVOID pData );
BOOL GetVideoProperty_ClosedCaption( PVOID pData );
BOOL GetVideoProperty_OutputSource( PVOID pData );
BOOL GetVideoProperty_CompositeOut( PVOID pData );
BOOL GetVideoProperty_SVideoOut( PVOID pData );
BOOL GetVideoProperty_SkipFieldControl( PVOID pData );
BOOL GetVideoProperty_FilmCamera( PVOID pData );
BOOL GetVideoProperty_SquarePixel( PVOID pData );
// by oka
BOOL GetVideoProperty_Digest( PVOID pData );
BOOL GetVideoProperty_OSDData( PVOID pData );
BOOL GetVideoProperty_OSDSwitch( PVOID pData );
BOOL GetVideoProperty_Magnify( PVOID pData );
BOOL GetVideoProperty_ClosedCaptionData( PVOID pData );
//-------------------------------------------------------------------
// Audio property private functions( Set series )
//-------------------------------------------------------------------
BOOL SetAudioProperty_Type( PVOID pData );
BOOL SetAudioProperty_Number( PVOID pData );
BOOL SetAudioProperty_Volume( PVOID pData );
BOOL SetAudioProperty_Sampling( PVOID pData );
BOOL SetAudioProperty_Channel( PVOID pData );
BOOL SetAudioProperty_Quant( PVOID pData );
BOOL SetAudioProperty_AudioOut( PVOID pData );
BOOL SetAudioProperty_Cgms( PVOID pData );
BOOL SetAudioProperty_AnalogOut( PVOID pData );
BOOL SetAudioProperty_DigitalOut( PVOID pData );
BOOL SetAudioProperty_AC3DRangeLowBoost( PVOID pData );
BOOL SetAudioProperty_AC3DRangeHighCut( PVOID pData );
BOOL SetAudioProperty_AC3OperateMode( PVOID pData );
BOOL SetAudioProperty_AC3OutputMode( PVOID pData );
//-------------------------------------------------------------------
// Audio property private functions( Get series )
//-------------------------------------------------------------------
BOOL GetAudioProperty_Type( PVOID pData );
BOOL GetAudioProperty_Number( PVOID pData );
BOOL GetAudioProperty_Volume( PVOID pData );
BOOL GetAudioProperty_Sampling( PVOID pData );
BOOL GetAudioProperty_Channel( PVOID pData );
BOOL GetAudioProperty_Quant( PVOID pData );
BOOL GetAudioProperty_AudioOut( PVOID pData );
BOOL GetAudioProperty_Cgms( PVOID pData );
BOOL GetAudioProperty_AnalogOut( PVOID pData );
BOOL GetAudioProperty_DigitalOut( PVOID pData );
BOOL GetAudioProperty_AC3DRangeLowBoost( PVOID pData );
BOOL GetAudioProperty_AC3DRangeHighCut( PVOID pData );
BOOL GetAudioProperty_AC3OperateMode( PVOID pData );
BOOL GetAudioProperty_AC3OutputMode( PVOID pData );
//-------------------------------------------------------------------
// Subpic property private functions( Set series )
//-------------------------------------------------------------------
BOOL SetSubpicProperty_Number( PVOID pData );
BOOL SetSubpicProperty_Palette( PVOID pData );
BOOL SetSubpicProperty_Hilight( PVOID pData );
BOOL SetSubpicProperty_State( PVOID pData );
// by oka
BOOL SetSubpicProperty_HilightButton( PVOID pData );
BOOL SetSubpicProperty_FlushBuff( PVOID pData );
//-------------------------------------------------------------------
// Subpic property private functions( Get series )
//-------------------------------------------------------------------
BOOL GetSubpicProperty_Number( PVOID pData );
BOOL GetSubpicProperty_Palette( PVOID pData );
BOOL GetSubpicProperty_Hilight( PVOID pData );
BOOL GetSubpicProperty_State( PVOID pData );
// by oka
BOOL GetSubpicProperty_HilightButton( PVOID pData );
BOOL GetSubpicProperty_FlushBuff( PVOID pData );
public:
CMPEGBoardHAL();
~CMPEGBoardHAL();
//---------------------------------------------------------------------------
// HAL interface for Wrapper
//---------------------------------------------------------------------------
HALRESULT Init( WRAPPERTYPE wraptype );
HALRESULT SetKernelService( IKernelService *pKernelService );
HALRESULT SetSinkWrapper( IMPEGBoardEvent *pMPEGBoardEvent );
HALRESULT UnsetSinkWrapper( IMPEGBoardEvent *pMPEGBoardEvent );
HALRESULT HALHwInterrupt( void );
HALRESULT QueryDMABufferSize( DWORD *Size, DWORD *BFlag );
HALRESULT SetDMABuffer( DWORD LinearAddr, DWORD physicalAddr );
// add by H.Yagi 1999.04.21
HALRESULT GetHALType( HALTYPE *HALType ){ *HALType = HalType_ZIVA; return(HAL_SUCCESS); };
//---------------------------------------------------------------------------
// HAL interface for Class Library
//---------------------------------------------------------------------------
HALRESULT GetMixHALStream( IHALStreamControl **ppHALStreamControl );
HALRESULT GetVideoHALStream( IHALStreamControl **ppHALStreamControl );
HALRESULT GetAudioHALStream( IHALStreamControl **ppHALStreamControl );
HALRESULT GetSubpicHALStream( IHALStreamControl **ppHALStreamControl );
HALRESULT SetVideoProperty( VIDEOPROPTYPE PropertyType, VOID *pData );
HALRESULT GetVideoProperty( VIDEOPROPTYPE PropertyType, VOID *pData );
HALRESULT SetAudioProperty( AUDIOPROPTYPE PropertyType, VOID *pData );
HALRESULT GetAudioProperty( AUDIOPROPTYPE PropertyType, VOID *pData );
HALRESULT SetSubpicProperty( SUBPICPROPTYPE PropertyType, VOID *pData );
HALRESULT GetSubpicProperty( SUBPICPROPTYPE PropertyType, VOID *pData );
HALRESULT SetSinkClassLib( IMPEGBoardEvent *pMPEGBoardEvent );
HALRESULT UnsetSinkClassLib( IMPEGBoardEvent *pMPEGBoardEvent );
HALRESULT SetPowerState( POWERSTATE Switch );
HALRESULT GetPowerState( POWERSTATE *pSwitch );
HALRESULT SetSTC( DWORD STCValue );
HALRESULT GetSTC( DWORD *pSTCValue );
HALRESULT GetCapability( CAPSTYPE PropType, DWORD *pPropType );
// by oka
CUserData m_UserData;
friend CMixHALStream;
};
//---------------------------------------------------------------------------
//
//---------------------------------------------------------------------------
#endif // _ZIVA_BOARD_H_
//***************************************************************************
// End of ZiVABoard class header
//***************************************************************************