mirror of https://github.com/tongzx/nt5src
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
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
|
|
//***************************************************************************
|