//*************************************************************************** // // FileName: // $Workfile: HALIF.H $ // // Author: // TOSHIBA [PCS](PSY) Seiichi Nakamura // Copyright (c) 1997 TOSHIBA CORPORATION // // Description: // //*************************************************************************** // $Header: /DVD Drivers/ZiVA.WDM/HALIF.H 30 99/04/21 2:46p Yagi $ // $Modtime: 99/04/21 2:23p $ // $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_SquarePixel. // 1998.05.01 | Hideki Yagi | Add SubpicProperty_FlushBuff. // 1998.05.12 | Hideki Yagi | Add WrapperEvent_VSync. // 1998.09.25 | Hideki Yagi | Add WrapperType. // | | // #ifndef _HALIF_H_ #define _HALIF_H_ //*************************************************************************** // common definition //*************************************************************************** //--------------------------------------------------------------------------- // HAL Interface return value //--------------------------------------------------------------------------- typedef enum { HAL_SUCCESS = 0, HAL_ERROR, HAL_INVALID_PARAM, HAL_NOT_IMPLEMENT, HAL_IRQ_MINE, HAL_IRQ_OTHER, HAL_POWEROFF } HALRESULT; //--------------------------------------------------------------------------- // HAL Type add by H.Yagi 1999.04.21 //--------------------------------------------------------------------------- typedef enum { HalType_ZIVA = 0, HalType_ZIVAPC } HALTYPE; //--------------------------------------------------------------------------- // Wrapper Type //--------------------------------------------------------------------------- typedef enum { WrapperType_VxD = 0, WrapperType_WDM } WRAPPERTYPE; //--------------------------------------------------------------------------- // Event Type //--------------------------------------------------------------------------- typedef enum { ClassLibEvent_SendData = 0, WrapperEvent_StartVOBU, WrapperEvent_EndVOB, WrapperEvent_VUnderFlow, WrapperEvent_AUnderFlow, WrapperEvent_SPUnderFlow, WrapperEvent_VOverFlow, WrapperEvent_AOverFlow, // by oka WrapperEvent_SPOverFlow, WrapperEvent_TimerEvent, WrapperEvent_ButtonActivate, WrapperEvent_NextPicture, WrapperEvent_UserData, WrapperEvent_ERROREvent, // by H.Yagi WrapperEvent_VSync } HALEVENTTYPE; //--------------------------------------------------------------------------- // Video Property //--------------------------------------------------------------------------- typedef enum { VideoProperty_TVSystem = 0, VideoProperty_AspectRatio, VideoProperty_DisplayMode, VideoProperty_Resolution, VideoProperty_DigitalOut, VideoProperty_DigitalPalette, VideoProperty_APS, VideoProperty_ClosedCaption, VideoProperty_OutputSource, VideoProperty_CompositeOut, VideoProperty_SVideoOut, VideoProperty_SkipFieldControl, VideoProperty_FilmCamera, // 97.12.04 H.Yagi VideoProperty_SquarePixel, // 98.03.27 H.Yagi // by oka VideoProperty_Magnify, VideoProperty_Digest, VideoProperty_OSDSwitch, VideoProperty_OSDData, VideoProperty_ImageCapture, VideoProperty_ClosedCaptionData } VIDEOPROPTYPE; //--------------------------------------------------------------------------- // Audio Property //--------------------------------------------------------------------------- typedef enum { AudioProperty_Type = 0, AudioProperty_Number, AudioProperty_Volume, AudioProperty_Sampling, AudioProperty_Channel, AudioProperty_Quant, AudioProperty_AudioOut, AudioProperty_Cgms, AudioProperty_AnalogOut, AudioProperty_DigitalOut, AudioProperty_AC3DRangeLowBoost, AudioProperty_AC3DRangeHighCut, AudioProperty_AC3OperateMode, AudioProperty_AC3OutputMode } AUDIOPROPTYPE; //--------------------------------------------------------------------------- // SubPic Property //--------------------------------------------------------------------------- typedef enum { SubpicProperty_Number = 0, SubpicProperty_Palette, SubpicProperty_Hilight, // by oka 97.10.1 SubpicProperty_State, SubpicProperty_HilightButton, SubpicProperty_FlushBuff // 98.05.01 H.Yagi } SUBPICPROPTYPE; //-------------------------------------------------------------------------- // Capability type 1998.03.27 H.Yagi //-------------------------------------------------------------------------- typedef enum { VideoProperty = 0, AudioProperty, SubpicProperty, DigitalVideoOut } CAPSTYPE; //-------------------------------------------------------------------------- // Data Direction type 1998.03.27 H.Yagi //-------------------------------------------------------------------------- typedef enum { DataType_NormalAll = 0, DataType_OpositeAll, DataType_IpicOnly } DirectionType; //-------------------------------------------------------------------------- // VideoProperty Bit Assign 1998.03.27 H.Yagi //-------------------------------------------------------------------------- #define VideoProperty_TVSystem_BIT 0x00000001 #define VideoProperty_AspectRatio_BIT 0x00000002 #define VideoProperty_DisplayMode_BIT 0x00000004 #define VideoProperty_Resolution_BIT 0x00000008 #define VideoProperty_DigitalOut_BIT 0x00000010 #define VideoProperty_DigitalPalette_BIT 0x00000020 #define VideoProperty_APS_BIT 0x00000040 #define VideoProperty_ClosedCaption_BIT 0x00000080 #define VideoProperty_OutputSource_BIT 0x00000100 #define VideoProperty_CompositeOut_BIT 0x00000200 #define VideoProperty_SVideoOut_BIT 0x00000400 #define VideoProperty_SkipFieldControl_BIT 0x00000800 #define VideoProperty_FilmCamera_BIT 0x00001000 #define VideoProperty_SquarePixel_BIT 0x00002000 //-------------------------------------------------------------------------- // AudioProperty Bit Assign 1998.03.27 H.Yagi //-------------------------------------------------------------------------- #define AudioProperty_Type_BIT 0x00000001 #define AudioProperty_Number_BIT 0x00000002 #define AudioProperty_Volume_BIT 0x00000004 #define AudioProperty_Sampling_BIT 0x00000008 #define AudioProperty_Channel_BIT 0x00000010 #define AudioProperty_Quant_BIT 0x00000020 #define AudioProperty_AudioOut_BIT 0x00000040 #define AudioProperty_Cgms_BIT 0x00000080 #define AudioProperty_AnalogOut_BIT 0x00000100 #define AudioProperty_DigitalOut_BIT 0x00000200 #define AudioProperty_AC3DRangeLowBoost_BIT 0x00000400 #define AudioProperty_AC3DRangeHighCut_BIT 0x00000800 #define AudioProperty_AC3OperateMode_BIT 0x00001000 #define AudioProperty_AC3OutputMode_BIT 0x00002000 //-------------------------------------------------------------------------- // SubpicProperty Bit Assign 1998.03.27 H.Yagi //-------------------------------------------------------------------------- #define SubpicProperty_Number_BIT 0x00000001 #define SubpicProperty_Palette_BIT 0x00000002 #define SubpicProperty_Hilight_BIT 0x00000004 #define SubpicProperty_State_BIT 0x00000008 //-------------------------------------------------------------------------- // Digital Video Out Assign 1998.03.27 H.Yagi //-------------------------------------------------------------------------- #define DigitalVideoOut_ZV_BIT 0x00000001 #define DigitalVideoOut_LPB08_BIT 0x00000002 #define DigitalVideoOut_LPB16_BIT 0x00000004 #define DigitalVideoOut_VMI_BIT 0x00000008 #define DigitalVideoOut_AMCbt_BIT 0x00000010 #define DigitalVideoOut_AMC656_BIT 0x00000020 #define DigitalVideoOut_DAV2_BIT 0x00000040 #define DigitalVideoOut_CIRRUS_BIT 0x00000080 //--------------------------------------------------------------------------- // Power State //--------------------------------------------------------------------------- typedef enum { POWERSTATE_ON = 0, POWERSTATE_OFF } POWERSTATE; //--------------------------------------------------------------------------- // Stream mode //--------------------------------------------------------------------------- typedef enum { HALSTREAM_DVD_MODE = 0, HALSTREAM_MPEG_PS_MODE, HALSTREAM_MPEG_PES_MODE, HALSTREAM_ELEMENT_MODE, HALSTREAM_VIDEO_CD_MODE } HALSTREAMMODE; //--------------------------------------------------------------------------- // Scan parameter type //--------------------------------------------------------------------------- typedef enum { ScanOnlyI = 0, ScanIandP } ScanMode; //--------------------------------------------------------------------------- // VideoProperty_TVSystem //--------------------------------------------------------------------------- typedef enum { TV_NTSC = 0, TV_PALB, TV_PALD, TV_PALG, TV_PALH, TV_PALI, TV_PALM, TV_PALN } VideoProperty_TVSystem_Value; //--------------------------------------------------------------------------- // VideoProperty_AspectRatio //--------------------------------------------------------------------------- typedef enum { Aspect_04_03 = 0, Aspect_16_09 } VideoProperty_AspectRatio_Value; //--------------------------------------------------------------------------- // VideoProperty_DisplayMode //--------------------------------------------------------------------------- typedef enum { Display_Original = 0, Display_PanScan, Display_LetterBox } VideoProperty_DisplayMode_Value; //--------------------------------------------------------------------------- // VideoProperty_Resolution //--------------------------------------------------------------------------- typedef struct tag_VideoSizeStruc { DWORD ResHorizontal; DWORD ResVertical; } VideoSizeStruc; //--------------------------------------------------------------------------- // VideoProperty_DigitalOut //--------------------------------------------------------------------------- typedef enum { DigitalOut_Off = 0, DigitalOut_ZV, DigitalOut_LPB08, DigitalOut_LPB16, DigitalOut_VMI, DigitalOut_AMCbt, DigitalOut_AMC656, DigitalOut_DAV2, DigitalOut_CIRRUS } VideoProperty_DigitalOut_Value; //--------------------------------------------------------------------------- // VideoProperty_DigitalPalette //--------------------------------------------------------------------------- typedef enum { Video_Palette_Y = 0, Video_Palette_Cb, Video_Palette_Cr } VIDEOPALETTETYPE; typedef struct tag_Digial_Palette { VIDEOPALETTETYPE Select; UCHAR *pPalette; } Digital_Palette; //--------------------------------------------------------------------------- // VideoProperty_APS( Analog Protection System ) //--------------------------------------------------------------------------- typedef enum { CgmsType_Off = 0, CgmsType_1, CgmsType_On }CGMSTYPE; typedef enum { ApsType_Off = 0, ApsType_1, ApsType_2, ApsType_3 } APSTYPE; typedef struct tag_VideoAPSStruc { CGMSTYPE CgmsType; APSTYPE APSType; } VideoAPSStruc; //--------------------------------------------------------------------------- // VideoProperty_ClosedCaption //--------------------------------------------------------------------------- typedef enum { ClosedCaption_On = 0, ClosedCaption_Off } VideoProperty_ClosedCaption_Value; //--------------------------------------------------------------------------- // VideoProperty_OutputSource //--------------------------------------------------------------------------- typedef enum { OutputSource_VGA = 0, OutputSource_DVD } VideoProperty_OutputSource_Value; //--------------------------------------------------------------------------- // VideoProperty_CompositeOut //--------------------------------------------------------------------------- typedef enum { CompositeOut_On = 0, CompositeOut_Off } VideoProperty_CompositeOut_Value; //--------------------------------------------------------------------------- // VideoProperty_SVideoOut //--------------------------------------------------------------------------- typedef enum { SVideoOut_On = 0, SVideoOut_Off } VideoProperty_SVideoOut_Value; //--------------------------------------------------------------------------- // VideoProperty_SkipFieldControl //--------------------------------------------------------------------------- typedef enum { SkipFieldControl_On = 0, SkipFieldControl_Off } VideoProperty_SkipFieldControl_Value; //--------------------------------------------------------------------------- // VideoProperty_FilmCamera // 97.12.04 H.Yagi //--------------------------------------------------------------------------- typedef enum { Source_Camera = 0, Source_Film } VideoProperty_FilmCamera_Value; //--------------------------------------------------------------------------- // VideoProperty_SquarePixel // 98.03.27 H.Yagi //--------------------------------------------------------------------------- typedef enum { SquarePixel_On = 0, SquarePixel_Off } VideoProperty_SquarePixel_Value; //--------------------------------------------------------------------------- // VideoProperty_Digest // by oka //--------------------------------------------------------------------------- typedef struct tag_VideoDigestStruc { DWORD dmX; DWORD dmY; DWORD dmSkip; DWORD dmDecimation; DWORD dmThreshold; DWORD dmStart; } VideoDigestStruc; //--------------------------------------------------------------------------- // VideoProperty_OSD_Data // by oka //--------------------------------------------------------------------------- typedef enum { OSD_TYPE_BITMAP = 0, OSD_TYPE_ZIVA } OSD_TYPE; typedef struct tag_OsdDataStruc { OSD_TYPE OsdType; tag_OsdDataStruc * pNextData; VOID *pData; DWORD dwOsdSize; } OsdDataStruc; //--------------------------------------------------------------------------- // VideoProperty_OSD_Swtich // by oka //--------------------------------------------------------------------------- typedef enum { Video_OSD_On = 0, Video_OSD_Off } VideoProperty_OSD_Switch_Value; //--------------------------------------------------------------------------- // VideoProperty_Magnify // by oka //--------------------------------------------------------------------------- typedef struct tag_VideoMagnifyStruc { DWORD dwX; DWORD dwY; DWORD dwFactor; } VideoMagnifyStruc, * PVideoMagnifyStruc; //--------------------------------------------------------------------------- // AudioProperty_Type //--------------------------------------------------------------------------- typedef enum { AudioType_AC3 = 0, AudioType_PCM, AudioType_MPEG1, AudioType_MPEG2 } AudioProperty_Type_Value; //--------------------------------------------------------------------------- // AudioProperty_Number //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // AudioProperty_Volume //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // AudioProperty_Sampling //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // AudioProperty_Channel //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // AudioProperty_Quant //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // AudioProperty_AudioOut //--------------------------------------------------------------------------- typedef enum { AudioOut_Encoded = 0, AudioOut_Decoded } AudioProperty_AudioOut_Value; //--------------------------------------------------------------------------- // AudioProperty_Cgms //--------------------------------------------------------------------------- typedef enum { AudioCgms_Off = 0, AudioCgms_1, AudioCgms_On } AudioProperty_Cgms_Value; //--------------------------------------------------------------------------- // AudioProperty_AnalogOut //--------------------------------------------------------------------------- typedef enum { AudioAnalogOut_On = 0, AudioAnalogOut_Off } AudioProperty_AnalogOut_Value; //--------------------------------------------------------------------------- // AudioProperty_DigitalOut //--------------------------------------------------------------------------- typedef enum { AudioDigitalOut_On = 0, AudioDigitalOut_Off } AudioProperty_DigitalOut_Value; //--------------------------------------------------------------------------- // AudioProperty_AC3OperateMode //--------------------------------------------------------------------------- typedef enum { AC3OperateLine = 0, AC3OperateRF, AC3OperateCustom0, AC3OperateCustom1 } AudioProperty_AC3OperateMode_Value; //--------------------------------------------------------------------------- // AudioProperty_AC3OutputMode //--------------------------------------------------------------------------- typedef enum { AC3Output_Default = 0, AC3Output_Karaoke, AC3Output_Surround, } AudioProperty_AC3OutputMode_Value; //--------------------------------------------------------------------------- // SubpicProperty_Number //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // SubpicProperty_Palette //--------------------------------------------------------------------------- typedef enum { Palette_Y = 0, Palette_Cr, Palette_Cb } SubpicProperty_Palette_Value; //--------------------------------------------------------------------------- // SubpicProperty_Hilight //--------------------------------------------------------------------------- typedef enum { Hlight_On = 0, Hlight_Off } HLIGHT_SWITCH; typedef struct tag_SubpHlightStruc { HLIGHT_SWITCH Hlight_Switch; DWORD Hlight_StartX; DWORD Hlight_EndX; DWORD Hlight_StartY; DWORD Hlight_EndY; DWORD Hlight_Color; DWORD Hlight_Contrast; } SubpHlightStruc; //--------------------------------------------------------------------------- // SubpicProperty_HilightButton // by oka 97.10.1 //--------------------------------------------------------------------------- typedef enum { Button_Select = 1, Button_Unhighlight, Button_Activate, Button_Activate_Selected_Button, Button_Select_Without_Auto_Activate } HLIGHT_ACTION; typedef struct tag_SubpHlightButtonStruc { DWORD Hlight_Button; HLIGHT_ACTION Hlight_Action; } SubpHlightButtonStruc; // Hlight_Button 1 -- 36,64(Up),65(Down),66(Left),67(Right) //--------------------------------------------------------------------------- // SubpicProperty_State //--------------------------------------------------------------------------- typedef enum { Subpic_On = 0, Subpic_Off } SubpicProperty_State_Value; //*************************************************************************** // HAL Layer Interface //*************************************************************************** class IMPEGBoardEvent; class IClassLibHAL; class IWrapperHAL; class IHALStreamControl; class IKernelService; //--------------------------------------------------------------------------- // MPEGBoard Event Interface //--------------------------------------------------------------------------- class IHALBuffer { public: virtual DWORD GetSize( void ) PURE; virtual DWORD Flags( void ) PURE; virtual BYTE *GetBuffPointer( void ) PURE; virtual BYTE *GetLinBuffPointer( void ) PURE; }; //--------------------------------------------------------------------------- // MPEGBoard Event Interface //--------------------------------------------------------------------------- class IMPEGBoardEvent: public IMBoardListItem { public: virtual void Advice( void *pData ) PURE; virtual HALEVENTTYPE GetEventType( void ) PURE; }; //--------------------------------------------------------------------------- // HAL interface for Class Library //--------------------------------------------------------------------------- class IClassLibHAL{ public: virtual HALRESULT GetMixHALStream( IHALStreamControl **ppHALStreamControl ) PURE; virtual HALRESULT GetVideoHALStream( IHALStreamControl **ppHALStreamControl ) PURE; virtual HALRESULT GetAudioHALStream( IHALStreamControl **ppHALStreamControl ) PURE; virtual HALRESULT GetSubpicHALStream( IHALStreamControl **ppHALStreamControl ) PURE; virtual HALRESULT SetVideoProperty( VIDEOPROPTYPE PropertyType, VOID *pData ) PURE; virtual HALRESULT GetVideoProperty( VIDEOPROPTYPE PropertyType, VOID *pData ) PURE; virtual HALRESULT SetAudioProperty( AUDIOPROPTYPE PropertyType, VOID *pData ) PURE; virtual HALRESULT GetAudioProperty( AUDIOPROPTYPE PropertyType, VOID *pData ) PURE; virtual HALRESULT SetSubpicProperty( SUBPICPROPTYPE PropertyType, VOID *pData ) PURE; virtual HALRESULT GetSubpicProperty( SUBPICPROPTYPE PropertyType, VOID *pData ) PURE; virtual HALRESULT SetSinkClassLib( IMPEGBoardEvent *pMPEGBoardEvent ) PURE; virtual HALRESULT UnsetSinkClassLib( IMPEGBoardEvent *pMPEGBoardEvent ) PURE; virtual HALRESULT SetPowerState( POWERSTATE Switch ) PURE; virtual HALRESULT GetPowerState( POWERSTATE *pSwitch ) PURE; virtual HALRESULT SetSTC( DWORD STCValue ) PURE; virtual HALRESULT GetSTC( DWORD *pSTCValue ) PURE; virtual HALRESULT GetCapability( CAPSTYPE PropType, DWORD *pPropType ) PURE; }; //--------------------------------------------------------------------------- // HAL interface for Wrapper //--------------------------------------------------------------------------- class IWrapperHAL{ public: virtual HALRESULT Init( WRAPPERTYPE wraptype ) PURE; virtual HALRESULT SetKernelService( IKernelService *pKernelService ) PURE; virtual HALRESULT SetSinkWrapper( IMPEGBoardEvent *pMPEGBoardEvent ) PURE; virtual HALRESULT UnsetSinkWrapper( IMPEGBoardEvent *pMPEGBoardEvent ) PURE; virtual HALRESULT HALHwInterrupt( void ) PURE; virtual HALRESULT QueryDMABufferSize( DWORD *Size, DWORD *BFlag ) PURE; virtual HALRESULT SetDMABuffer( DWORD LinearAddr, DWORD physicalAddr ) PURE; }; //--------------------------------------------------------------------------- // HAL Stream Control Interface //--------------------------------------------------------------------------- class IHALStreamControl{ public: virtual HALRESULT SendData( IHALBuffer *pData ) PURE; virtual HALRESULT SetTransferMode( HALSTREAMMODE StreamMode ) PURE; virtual HALRESULT GetAvailableQueue( DWORD *pQueueNum ) PURE; virtual HALRESULT SetPlayNormal( void ) PURE; virtual HALRESULT SetPlaySlow( DWORD SlowFlag ) PURE; virtual HALRESULT SetPlayPause( void ) PURE; virtual HALRESULT SetPlayScan( DWORD ScanFlag ) PURE; virtual HALRESULT SetPlaySingleStep( void ) PURE; virtual HALRESULT SetPlayStop( void ) PURE; virtual HALRESULT CPPInit( void ) PURE; virtual HALRESULT GetDriveChallenge( UCHAR *pDriveChallenge ) PURE; virtual HALRESULT SetDriveResponse( UCHAR *pDriveResponse ) PURE; virtual HALRESULT SetDecoderChallenge( UCHAR *pDecoderChallenge ) PURE; virtual HALRESULT GetDecoderResponse( UCHAR *pDecoderResponse ) PURE; virtual HALRESULT SetDiskKey( UCHAR *pDiskKey ) PURE; virtual HALRESULT SetTitleKey( UCHAR *pTitleKey ) PURE; virtual HALRESULT SetDataDirection( DirectionType DataType) PURE; virtual HALRESULT GetDataDirection( DirectionType *pDataType) PURE; }; //--------------------------------------------------------------------------- // Kernel Service Interface for HAL //--------------------------------------------------------------------------- class IKernelService{ public: virtual BOOL SetPCIConfigData( DWORD address, DWORD data ) PURE; virtual BOOL SetPCIConfigData( DWORD address, WORD data ) PURE; virtual BOOL SetPCIConfigData( DWORD address, BYTE data ) PURE; virtual BOOL GetPCIConfigData( DWORD address, DWORD *data ) PURE; virtual BOOL GetPCIConfigData( DWORD address, WORD *data ) PURE; virtual BOOL GetPCIConfigData( DWORD address, BYTE *data ) PURE; virtual BOOL SetPortData( DWORD address, DWORD data ) PURE; virtual BOOL SetPortData( DWORD address, WORD data ) PURE; virtual BOOL SetPortData( DWORD address, BYTE data ) PURE; virtual BOOL GetPortData( DWORD address, DWORD *data ) PURE; virtual BOOL GetPortData( DWORD address, WORD *data ) PURE; virtual BOOL GetPortData( DWORD address, BYTE *data ) PURE; virtual BOOL GetTickCount( DWORD *pTickCount ) PURE; virtual BOOL Sleep( DWORD SleepCount ) PURE; virtual void EnableHwInt( void ) PURE; virtual void DisableHwInt( void ) PURE; }; #endif // _HALIF_H_ //*************************************************************************** // End of COMMON INTERFACE Header //***************************************************************************