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.

761 lines
25 KiB

  1. //***************************************************************************
  2. //
  3. // FileName:
  4. // $Workfile: HALIF.H $
  5. //
  6. // Author:
  7. // TOSHIBA [PCS](PSY) Seiichi Nakamura
  8. // Copyright (c) 1997 TOSHIBA CORPORATION
  9. //
  10. // Description:
  11. //
  12. //***************************************************************************
  13. // $Header: /DVD Drivers/ZiVA.WDM/HALIF.H 30 99/04/21 2:46p Yagi $
  14. // $Modtime: 99/04/21 2:23p $
  15. // $Nokeywords:$
  16. //***************************************************************************
  17. // Date | Author | Description
  18. // -----------+--------------+--------------------------------------------
  19. // 1997.12.04 | Hideki Yagi | Add VideoProperty_FilmCamera.
  20. // | | This Property is necessary to support WSS.
  21. // 1998.02.19 | Hideki Yagi | Add AudioProperty_AC3OutputMode.
  22. // | | This Property is necessary to support KARAOKE.
  23. // 1998.03.27 | Hideki Yagi | Add GetCapability method.
  24. // | | Add VideoProperty_SquarePixel.
  25. // 1998.05.01 | Hideki Yagi | Add SubpicProperty_FlushBuff.
  26. // 1998.05.12 | Hideki Yagi | Add WrapperEvent_VSync.
  27. // 1998.09.25 | Hideki Yagi | Add WrapperType.
  28. // | |
  29. //
  30. #ifndef _HALIF_H_
  31. #define _HALIF_H_
  32. //***************************************************************************
  33. // common definition
  34. //***************************************************************************
  35. //---------------------------------------------------------------------------
  36. // HAL Interface return value
  37. //---------------------------------------------------------------------------
  38. typedef enum
  39. {
  40. HAL_SUCCESS = 0,
  41. HAL_ERROR,
  42. HAL_INVALID_PARAM,
  43. HAL_NOT_IMPLEMENT,
  44. HAL_IRQ_MINE,
  45. HAL_IRQ_OTHER,
  46. HAL_POWEROFF
  47. } HALRESULT;
  48. //---------------------------------------------------------------------------
  49. // HAL Type add by H.Yagi 1999.04.21
  50. //---------------------------------------------------------------------------
  51. typedef enum
  52. {
  53. HalType_ZIVA = 0,
  54. HalType_ZIVAPC
  55. } HALTYPE;
  56. //---------------------------------------------------------------------------
  57. // Wrapper Type
  58. //---------------------------------------------------------------------------
  59. typedef enum
  60. {
  61. WrapperType_VxD = 0,
  62. WrapperType_WDM
  63. } WRAPPERTYPE;
  64. //---------------------------------------------------------------------------
  65. // Event Type
  66. //---------------------------------------------------------------------------
  67. typedef enum
  68. {
  69. ClassLibEvent_SendData = 0,
  70. WrapperEvent_StartVOBU,
  71. WrapperEvent_EndVOB,
  72. WrapperEvent_VUnderFlow,
  73. WrapperEvent_AUnderFlow,
  74. WrapperEvent_SPUnderFlow,
  75. WrapperEvent_VOverFlow,
  76. WrapperEvent_AOverFlow,
  77. // by oka
  78. WrapperEvent_SPOverFlow,
  79. WrapperEvent_TimerEvent,
  80. WrapperEvent_ButtonActivate,
  81. WrapperEvent_NextPicture,
  82. WrapperEvent_UserData,
  83. WrapperEvent_ERROREvent,
  84. // by H.Yagi
  85. WrapperEvent_VSync
  86. } HALEVENTTYPE;
  87. //---------------------------------------------------------------------------
  88. // Video Property
  89. //---------------------------------------------------------------------------
  90. typedef enum
  91. {
  92. VideoProperty_TVSystem = 0,
  93. VideoProperty_AspectRatio,
  94. VideoProperty_DisplayMode,
  95. VideoProperty_Resolution,
  96. VideoProperty_DigitalOut,
  97. VideoProperty_DigitalPalette,
  98. VideoProperty_APS,
  99. VideoProperty_ClosedCaption,
  100. VideoProperty_OutputSource,
  101. VideoProperty_CompositeOut,
  102. VideoProperty_SVideoOut,
  103. VideoProperty_SkipFieldControl,
  104. VideoProperty_FilmCamera, // 97.12.04 H.Yagi
  105. VideoProperty_SquarePixel, // 98.03.27 H.Yagi
  106. // by oka
  107. VideoProperty_Magnify,
  108. VideoProperty_Digest,
  109. VideoProperty_OSDSwitch,
  110. VideoProperty_OSDData,
  111. VideoProperty_ImageCapture,
  112. VideoProperty_ClosedCaptionData
  113. } VIDEOPROPTYPE;
  114. //---------------------------------------------------------------------------
  115. // Audio Property
  116. //---------------------------------------------------------------------------
  117. typedef enum
  118. {
  119. AudioProperty_Type = 0,
  120. AudioProperty_Number,
  121. AudioProperty_Volume,
  122. AudioProperty_Sampling,
  123. AudioProperty_Channel,
  124. AudioProperty_Quant,
  125. AudioProperty_AudioOut,
  126. AudioProperty_Cgms,
  127. AudioProperty_AnalogOut,
  128. AudioProperty_DigitalOut,
  129. AudioProperty_AC3DRangeLowBoost,
  130. AudioProperty_AC3DRangeHighCut,
  131. AudioProperty_AC3OperateMode,
  132. AudioProperty_AC3OutputMode
  133. } AUDIOPROPTYPE;
  134. //---------------------------------------------------------------------------
  135. // SubPic Property
  136. //---------------------------------------------------------------------------
  137. typedef enum
  138. {
  139. SubpicProperty_Number = 0,
  140. SubpicProperty_Palette,
  141. SubpicProperty_Hilight,
  142. // by oka 97.10.1
  143. SubpicProperty_State,
  144. SubpicProperty_HilightButton,
  145. SubpicProperty_FlushBuff // 98.05.01 H.Yagi
  146. } SUBPICPROPTYPE;
  147. //--------------------------------------------------------------------------
  148. // Capability type 1998.03.27 H.Yagi
  149. //--------------------------------------------------------------------------
  150. typedef enum
  151. {
  152. VideoProperty = 0,
  153. AudioProperty,
  154. SubpicProperty,
  155. DigitalVideoOut
  156. } CAPSTYPE;
  157. //--------------------------------------------------------------------------
  158. // Data Direction type 1998.03.27 H.Yagi
  159. //--------------------------------------------------------------------------
  160. typedef enum
  161. {
  162. DataType_NormalAll = 0,
  163. DataType_OpositeAll,
  164. DataType_IpicOnly
  165. } DirectionType;
  166. //--------------------------------------------------------------------------
  167. // VideoProperty Bit Assign 1998.03.27 H.Yagi
  168. //--------------------------------------------------------------------------
  169. #define VideoProperty_TVSystem_BIT 0x00000001
  170. #define VideoProperty_AspectRatio_BIT 0x00000002
  171. #define VideoProperty_DisplayMode_BIT 0x00000004
  172. #define VideoProperty_Resolution_BIT 0x00000008
  173. #define VideoProperty_DigitalOut_BIT 0x00000010
  174. #define VideoProperty_DigitalPalette_BIT 0x00000020
  175. #define VideoProperty_APS_BIT 0x00000040
  176. #define VideoProperty_ClosedCaption_BIT 0x00000080
  177. #define VideoProperty_OutputSource_BIT 0x00000100
  178. #define VideoProperty_CompositeOut_BIT 0x00000200
  179. #define VideoProperty_SVideoOut_BIT 0x00000400
  180. #define VideoProperty_SkipFieldControl_BIT 0x00000800
  181. #define VideoProperty_FilmCamera_BIT 0x00001000
  182. #define VideoProperty_SquarePixel_BIT 0x00002000
  183. //--------------------------------------------------------------------------
  184. // AudioProperty Bit Assign 1998.03.27 H.Yagi
  185. //--------------------------------------------------------------------------
  186. #define AudioProperty_Type_BIT 0x00000001
  187. #define AudioProperty_Number_BIT 0x00000002
  188. #define AudioProperty_Volume_BIT 0x00000004
  189. #define AudioProperty_Sampling_BIT 0x00000008
  190. #define AudioProperty_Channel_BIT 0x00000010
  191. #define AudioProperty_Quant_BIT 0x00000020
  192. #define AudioProperty_AudioOut_BIT 0x00000040
  193. #define AudioProperty_Cgms_BIT 0x00000080
  194. #define AudioProperty_AnalogOut_BIT 0x00000100
  195. #define AudioProperty_DigitalOut_BIT 0x00000200
  196. #define AudioProperty_AC3DRangeLowBoost_BIT 0x00000400
  197. #define AudioProperty_AC3DRangeHighCut_BIT 0x00000800
  198. #define AudioProperty_AC3OperateMode_BIT 0x00001000
  199. #define AudioProperty_AC3OutputMode_BIT 0x00002000
  200. //--------------------------------------------------------------------------
  201. // SubpicProperty Bit Assign 1998.03.27 H.Yagi
  202. //--------------------------------------------------------------------------
  203. #define SubpicProperty_Number_BIT 0x00000001
  204. #define SubpicProperty_Palette_BIT 0x00000002
  205. #define SubpicProperty_Hilight_BIT 0x00000004
  206. #define SubpicProperty_State_BIT 0x00000008
  207. //--------------------------------------------------------------------------
  208. // Digital Video Out Assign 1998.03.27 H.Yagi
  209. //--------------------------------------------------------------------------
  210. #define DigitalVideoOut_ZV_BIT 0x00000001
  211. #define DigitalVideoOut_LPB08_BIT 0x00000002
  212. #define DigitalVideoOut_LPB16_BIT 0x00000004
  213. #define DigitalVideoOut_VMI_BIT 0x00000008
  214. #define DigitalVideoOut_AMCbt_BIT 0x00000010
  215. #define DigitalVideoOut_AMC656_BIT 0x00000020
  216. #define DigitalVideoOut_DAV2_BIT 0x00000040
  217. #define DigitalVideoOut_CIRRUS_BIT 0x00000080
  218. //---------------------------------------------------------------------------
  219. // Power State
  220. //---------------------------------------------------------------------------
  221. typedef enum
  222. {
  223. POWERSTATE_ON = 0,
  224. POWERSTATE_OFF
  225. } POWERSTATE;
  226. //---------------------------------------------------------------------------
  227. // Stream mode
  228. //---------------------------------------------------------------------------
  229. typedef enum
  230. {
  231. HALSTREAM_DVD_MODE = 0,
  232. HALSTREAM_MPEG_PS_MODE,
  233. HALSTREAM_MPEG_PES_MODE,
  234. HALSTREAM_ELEMENT_MODE,
  235. HALSTREAM_VIDEO_CD_MODE
  236. } HALSTREAMMODE;
  237. //---------------------------------------------------------------------------
  238. // Scan parameter type
  239. //---------------------------------------------------------------------------
  240. typedef enum
  241. {
  242. ScanOnlyI = 0,
  243. ScanIandP
  244. } ScanMode;
  245. //---------------------------------------------------------------------------
  246. // VideoProperty_TVSystem
  247. //---------------------------------------------------------------------------
  248. typedef enum
  249. {
  250. TV_NTSC = 0,
  251. TV_PALB,
  252. TV_PALD,
  253. TV_PALG,
  254. TV_PALH,
  255. TV_PALI,
  256. TV_PALM,
  257. TV_PALN
  258. } VideoProperty_TVSystem_Value;
  259. //---------------------------------------------------------------------------
  260. // VideoProperty_AspectRatio
  261. //---------------------------------------------------------------------------
  262. typedef enum
  263. {
  264. Aspect_04_03 = 0,
  265. Aspect_16_09
  266. } VideoProperty_AspectRatio_Value;
  267. //---------------------------------------------------------------------------
  268. // VideoProperty_DisplayMode
  269. //---------------------------------------------------------------------------
  270. typedef enum
  271. {
  272. Display_Original = 0,
  273. Display_PanScan,
  274. Display_LetterBox
  275. } VideoProperty_DisplayMode_Value;
  276. //---------------------------------------------------------------------------
  277. // VideoProperty_Resolution
  278. //---------------------------------------------------------------------------
  279. typedef struct tag_VideoSizeStruc
  280. {
  281. DWORD ResHorizontal;
  282. DWORD ResVertical;
  283. } VideoSizeStruc;
  284. //---------------------------------------------------------------------------
  285. // VideoProperty_DigitalOut
  286. //---------------------------------------------------------------------------
  287. typedef enum
  288. {
  289. DigitalOut_Off = 0,
  290. DigitalOut_ZV,
  291. DigitalOut_LPB08,
  292. DigitalOut_LPB16,
  293. DigitalOut_VMI,
  294. DigitalOut_AMCbt,
  295. DigitalOut_AMC656,
  296. DigitalOut_DAV2,
  297. DigitalOut_CIRRUS
  298. } VideoProperty_DigitalOut_Value;
  299. //---------------------------------------------------------------------------
  300. // VideoProperty_DigitalPalette
  301. //---------------------------------------------------------------------------
  302. typedef enum
  303. {
  304. Video_Palette_Y = 0,
  305. Video_Palette_Cb,
  306. Video_Palette_Cr
  307. } VIDEOPALETTETYPE;
  308. typedef struct tag_Digial_Palette
  309. {
  310. VIDEOPALETTETYPE Select;
  311. UCHAR *pPalette;
  312. } Digital_Palette;
  313. //---------------------------------------------------------------------------
  314. // VideoProperty_APS( Analog Protection System )
  315. //---------------------------------------------------------------------------
  316. typedef enum
  317. {
  318. CgmsType_Off = 0,
  319. CgmsType_1,
  320. CgmsType_On
  321. }CGMSTYPE;
  322. typedef enum
  323. {
  324. ApsType_Off = 0,
  325. ApsType_1,
  326. ApsType_2,
  327. ApsType_3
  328. } APSTYPE;
  329. typedef struct tag_VideoAPSStruc
  330. {
  331. CGMSTYPE CgmsType;
  332. APSTYPE APSType;
  333. } VideoAPSStruc;
  334. //---------------------------------------------------------------------------
  335. // VideoProperty_ClosedCaption
  336. //---------------------------------------------------------------------------
  337. typedef enum
  338. {
  339. ClosedCaption_On = 0,
  340. ClosedCaption_Off
  341. } VideoProperty_ClosedCaption_Value;
  342. //---------------------------------------------------------------------------
  343. // VideoProperty_OutputSource
  344. //---------------------------------------------------------------------------
  345. typedef enum
  346. {
  347. OutputSource_VGA = 0,
  348. OutputSource_DVD
  349. } VideoProperty_OutputSource_Value;
  350. //---------------------------------------------------------------------------
  351. // VideoProperty_CompositeOut
  352. //---------------------------------------------------------------------------
  353. typedef enum
  354. {
  355. CompositeOut_On = 0,
  356. CompositeOut_Off
  357. } VideoProperty_CompositeOut_Value;
  358. //---------------------------------------------------------------------------
  359. // VideoProperty_SVideoOut
  360. //---------------------------------------------------------------------------
  361. typedef enum
  362. {
  363. SVideoOut_On = 0,
  364. SVideoOut_Off
  365. } VideoProperty_SVideoOut_Value;
  366. //---------------------------------------------------------------------------
  367. // VideoProperty_SkipFieldControl
  368. //---------------------------------------------------------------------------
  369. typedef enum
  370. {
  371. SkipFieldControl_On = 0,
  372. SkipFieldControl_Off
  373. } VideoProperty_SkipFieldControl_Value;
  374. //---------------------------------------------------------------------------
  375. // VideoProperty_FilmCamera // 97.12.04 H.Yagi
  376. //---------------------------------------------------------------------------
  377. typedef enum
  378. {
  379. Source_Camera = 0,
  380. Source_Film
  381. } VideoProperty_FilmCamera_Value;
  382. //---------------------------------------------------------------------------
  383. // VideoProperty_SquarePixel // 98.03.27 H.Yagi
  384. //---------------------------------------------------------------------------
  385. typedef enum
  386. {
  387. SquarePixel_On = 0,
  388. SquarePixel_Off
  389. } VideoProperty_SquarePixel_Value;
  390. //---------------------------------------------------------------------------
  391. // VideoProperty_Digest
  392. // by oka
  393. //---------------------------------------------------------------------------
  394. typedef struct tag_VideoDigestStruc
  395. {
  396. DWORD dmX;
  397. DWORD dmY;
  398. DWORD dmSkip;
  399. DWORD dmDecimation;
  400. DWORD dmThreshold;
  401. DWORD dmStart;
  402. } VideoDigestStruc;
  403. //---------------------------------------------------------------------------
  404. // VideoProperty_OSD_Data
  405. // by oka
  406. //---------------------------------------------------------------------------
  407. typedef enum {
  408. OSD_TYPE_BITMAP = 0,
  409. OSD_TYPE_ZIVA
  410. } OSD_TYPE;
  411. typedef struct tag_OsdDataStruc
  412. {
  413. OSD_TYPE OsdType;
  414. tag_OsdDataStruc * pNextData;
  415. VOID *pData;
  416. DWORD dwOsdSize;
  417. } OsdDataStruc;
  418. //---------------------------------------------------------------------------
  419. // VideoProperty_OSD_Swtich
  420. // by oka
  421. //---------------------------------------------------------------------------
  422. typedef enum
  423. {
  424. Video_OSD_On = 0,
  425. Video_OSD_Off
  426. } VideoProperty_OSD_Switch_Value;
  427. //---------------------------------------------------------------------------
  428. // VideoProperty_Magnify
  429. // by oka
  430. //---------------------------------------------------------------------------
  431. typedef struct tag_VideoMagnifyStruc
  432. {
  433. DWORD dwX;
  434. DWORD dwY;
  435. DWORD dwFactor;
  436. } VideoMagnifyStruc, * PVideoMagnifyStruc;
  437. //---------------------------------------------------------------------------
  438. // AudioProperty_Type
  439. //---------------------------------------------------------------------------
  440. typedef enum
  441. {
  442. AudioType_AC3 = 0,
  443. AudioType_PCM,
  444. AudioType_MPEG1,
  445. AudioType_MPEG2
  446. } AudioProperty_Type_Value;
  447. //---------------------------------------------------------------------------
  448. // AudioProperty_Number
  449. //---------------------------------------------------------------------------
  450. //---------------------------------------------------------------------------
  451. // AudioProperty_Volume
  452. //---------------------------------------------------------------------------
  453. //---------------------------------------------------------------------------
  454. // AudioProperty_Sampling
  455. //---------------------------------------------------------------------------
  456. //---------------------------------------------------------------------------
  457. // AudioProperty_Channel
  458. //---------------------------------------------------------------------------
  459. //---------------------------------------------------------------------------
  460. // AudioProperty_Quant
  461. //---------------------------------------------------------------------------
  462. //---------------------------------------------------------------------------
  463. // AudioProperty_AudioOut
  464. //---------------------------------------------------------------------------
  465. typedef enum
  466. {
  467. AudioOut_Encoded = 0,
  468. AudioOut_Decoded
  469. } AudioProperty_AudioOut_Value;
  470. //---------------------------------------------------------------------------
  471. // AudioProperty_Cgms
  472. //---------------------------------------------------------------------------
  473. typedef enum
  474. {
  475. AudioCgms_Off = 0,
  476. AudioCgms_1,
  477. AudioCgms_On
  478. } AudioProperty_Cgms_Value;
  479. //---------------------------------------------------------------------------
  480. // AudioProperty_AnalogOut
  481. //---------------------------------------------------------------------------
  482. typedef enum
  483. {
  484. AudioAnalogOut_On = 0,
  485. AudioAnalogOut_Off
  486. } AudioProperty_AnalogOut_Value;
  487. //---------------------------------------------------------------------------
  488. // AudioProperty_DigitalOut
  489. //---------------------------------------------------------------------------
  490. typedef enum
  491. {
  492. AudioDigitalOut_On = 0,
  493. AudioDigitalOut_Off
  494. } AudioProperty_DigitalOut_Value;
  495. //---------------------------------------------------------------------------
  496. // AudioProperty_AC3OperateMode
  497. //---------------------------------------------------------------------------
  498. typedef enum
  499. {
  500. AC3OperateLine = 0,
  501. AC3OperateRF,
  502. AC3OperateCustom0,
  503. AC3OperateCustom1
  504. } AudioProperty_AC3OperateMode_Value;
  505. //---------------------------------------------------------------------------
  506. // AudioProperty_AC3OutputMode
  507. //---------------------------------------------------------------------------
  508. typedef enum
  509. {
  510. AC3Output_Default = 0,
  511. AC3Output_Karaoke,
  512. AC3Output_Surround,
  513. } AudioProperty_AC3OutputMode_Value;
  514. //---------------------------------------------------------------------------
  515. // SubpicProperty_Number
  516. //---------------------------------------------------------------------------
  517. //---------------------------------------------------------------------------
  518. // SubpicProperty_Palette
  519. //---------------------------------------------------------------------------
  520. typedef enum
  521. {
  522. Palette_Y = 0,
  523. Palette_Cr,
  524. Palette_Cb
  525. } SubpicProperty_Palette_Value;
  526. //---------------------------------------------------------------------------
  527. // SubpicProperty_Hilight
  528. //---------------------------------------------------------------------------
  529. typedef enum
  530. {
  531. Hlight_On = 0,
  532. Hlight_Off
  533. } HLIGHT_SWITCH;
  534. typedef struct tag_SubpHlightStruc
  535. {
  536. HLIGHT_SWITCH Hlight_Switch;
  537. DWORD Hlight_StartX;
  538. DWORD Hlight_EndX;
  539. DWORD Hlight_StartY;
  540. DWORD Hlight_EndY;
  541. DWORD Hlight_Color;
  542. DWORD Hlight_Contrast;
  543. } SubpHlightStruc;
  544. //---------------------------------------------------------------------------
  545. // SubpicProperty_HilightButton
  546. // by oka 97.10.1
  547. //---------------------------------------------------------------------------
  548. typedef enum
  549. {
  550. Button_Select = 1,
  551. Button_Unhighlight,
  552. Button_Activate,
  553. Button_Activate_Selected_Button,
  554. Button_Select_Without_Auto_Activate
  555. } HLIGHT_ACTION;
  556. typedef struct tag_SubpHlightButtonStruc
  557. {
  558. DWORD Hlight_Button;
  559. HLIGHT_ACTION Hlight_Action;
  560. } SubpHlightButtonStruc;
  561. // Hlight_Button 1 -- 36,64(Up),65(Down),66(Left),67(Right)
  562. //---------------------------------------------------------------------------
  563. // SubpicProperty_State
  564. //---------------------------------------------------------------------------
  565. typedef enum
  566. {
  567. Subpic_On = 0,
  568. Subpic_Off
  569. } SubpicProperty_State_Value;
  570. //***************************************************************************
  571. // HAL Layer Interface
  572. //***************************************************************************
  573. class IMPEGBoardEvent;
  574. class IClassLibHAL;
  575. class IWrapperHAL;
  576. class IHALStreamControl;
  577. class IKernelService;
  578. //---------------------------------------------------------------------------
  579. // MPEGBoard Event Interface
  580. //---------------------------------------------------------------------------
  581. class IHALBuffer
  582. {
  583. public:
  584. virtual DWORD GetSize( void ) PURE;
  585. virtual DWORD Flags( void ) PURE;
  586. virtual BYTE *GetBuffPointer( void ) PURE;
  587. virtual BYTE *GetLinBuffPointer( void ) PURE;
  588. };
  589. //---------------------------------------------------------------------------
  590. // MPEGBoard Event Interface
  591. //---------------------------------------------------------------------------
  592. class IMPEGBoardEvent: public IMBoardListItem {
  593. public:
  594. virtual void Advice( void *pData ) PURE;
  595. virtual HALEVENTTYPE GetEventType( void ) PURE;
  596. };
  597. //---------------------------------------------------------------------------
  598. // HAL interface for Class Library
  599. //---------------------------------------------------------------------------
  600. class IClassLibHAL{
  601. public:
  602. virtual HALRESULT GetMixHALStream( IHALStreamControl **ppHALStreamControl ) PURE;
  603. virtual HALRESULT GetVideoHALStream( IHALStreamControl **ppHALStreamControl ) PURE;
  604. virtual HALRESULT GetAudioHALStream( IHALStreamControl **ppHALStreamControl ) PURE;
  605. virtual HALRESULT GetSubpicHALStream( IHALStreamControl **ppHALStreamControl ) PURE;
  606. virtual HALRESULT SetVideoProperty( VIDEOPROPTYPE PropertyType, VOID *pData ) PURE;
  607. virtual HALRESULT GetVideoProperty( VIDEOPROPTYPE PropertyType, VOID *pData ) PURE;
  608. virtual HALRESULT SetAudioProperty( AUDIOPROPTYPE PropertyType, VOID *pData ) PURE;
  609. virtual HALRESULT GetAudioProperty( AUDIOPROPTYPE PropertyType, VOID *pData ) PURE;
  610. virtual HALRESULT SetSubpicProperty( SUBPICPROPTYPE PropertyType, VOID *pData ) PURE;
  611. virtual HALRESULT GetSubpicProperty( SUBPICPROPTYPE PropertyType, VOID *pData ) PURE;
  612. virtual HALRESULT SetSinkClassLib( IMPEGBoardEvent *pMPEGBoardEvent ) PURE;
  613. virtual HALRESULT UnsetSinkClassLib( IMPEGBoardEvent *pMPEGBoardEvent ) PURE;
  614. virtual HALRESULT SetPowerState( POWERSTATE Switch ) PURE;
  615. virtual HALRESULT GetPowerState( POWERSTATE *pSwitch ) PURE;
  616. virtual HALRESULT SetSTC( DWORD STCValue ) PURE;
  617. virtual HALRESULT GetSTC( DWORD *pSTCValue ) PURE;
  618. virtual HALRESULT GetCapability( CAPSTYPE PropType, DWORD *pPropType ) PURE;
  619. };
  620. //---------------------------------------------------------------------------
  621. // HAL interface for Wrapper
  622. //---------------------------------------------------------------------------
  623. class IWrapperHAL{
  624. public:
  625. virtual HALRESULT Init( WRAPPERTYPE wraptype ) PURE;
  626. virtual HALRESULT SetKernelService( IKernelService *pKernelService ) PURE;
  627. virtual HALRESULT SetSinkWrapper( IMPEGBoardEvent *pMPEGBoardEvent ) PURE;
  628. virtual HALRESULT UnsetSinkWrapper( IMPEGBoardEvent *pMPEGBoardEvent ) PURE;
  629. virtual HALRESULT HALHwInterrupt( void ) PURE;
  630. virtual HALRESULT QueryDMABufferSize( DWORD *Size, DWORD *BFlag ) PURE;
  631. virtual HALRESULT SetDMABuffer( DWORD LinearAddr, DWORD physicalAddr ) PURE;
  632. };
  633. //---------------------------------------------------------------------------
  634. // HAL Stream Control Interface
  635. //---------------------------------------------------------------------------
  636. class IHALStreamControl{
  637. public:
  638. virtual HALRESULT SendData( IHALBuffer *pData ) PURE;
  639. virtual HALRESULT SetTransferMode( HALSTREAMMODE StreamMode ) PURE;
  640. virtual HALRESULT GetAvailableQueue( DWORD *pQueueNum ) PURE;
  641. virtual HALRESULT SetPlayNormal( void ) PURE;
  642. virtual HALRESULT SetPlaySlow( DWORD SlowFlag ) PURE;
  643. virtual HALRESULT SetPlayPause( void ) PURE;
  644. virtual HALRESULT SetPlayScan( DWORD ScanFlag ) PURE;
  645. virtual HALRESULT SetPlaySingleStep( void ) PURE;
  646. virtual HALRESULT SetPlayStop( void ) PURE;
  647. virtual HALRESULT CPPInit( void ) PURE;
  648. virtual HALRESULT GetDriveChallenge( UCHAR *pDriveChallenge ) PURE;
  649. virtual HALRESULT SetDriveResponse( UCHAR *pDriveResponse ) PURE;
  650. virtual HALRESULT SetDecoderChallenge( UCHAR *pDecoderChallenge ) PURE;
  651. virtual HALRESULT GetDecoderResponse( UCHAR *pDecoderResponse ) PURE;
  652. virtual HALRESULT SetDiskKey( UCHAR *pDiskKey ) PURE;
  653. virtual HALRESULT SetTitleKey( UCHAR *pTitleKey ) PURE;
  654. virtual HALRESULT SetDataDirection( DirectionType DataType) PURE;
  655. virtual HALRESULT GetDataDirection( DirectionType *pDataType) PURE;
  656. };
  657. //---------------------------------------------------------------------------
  658. // Kernel Service Interface for HAL
  659. //---------------------------------------------------------------------------
  660. class IKernelService{
  661. public:
  662. virtual BOOL SetPCIConfigData( DWORD address, DWORD data ) PURE;
  663. virtual BOOL SetPCIConfigData( DWORD address, WORD data ) PURE;
  664. virtual BOOL SetPCIConfigData( DWORD address, BYTE data ) PURE;
  665. virtual BOOL GetPCIConfigData( DWORD address, DWORD *data ) PURE;
  666. virtual BOOL GetPCIConfigData( DWORD address, WORD *data ) PURE;
  667. virtual BOOL GetPCIConfigData( DWORD address, BYTE *data ) PURE;
  668. virtual BOOL SetPortData( DWORD address, DWORD data ) PURE;
  669. virtual BOOL SetPortData( DWORD address, WORD data ) PURE;
  670. virtual BOOL SetPortData( DWORD address, BYTE data ) PURE;
  671. virtual BOOL GetPortData( DWORD address, DWORD *data ) PURE;
  672. virtual BOOL GetPortData( DWORD address, WORD *data ) PURE;
  673. virtual BOOL GetPortData( DWORD address, BYTE *data ) PURE;
  674. virtual BOOL GetTickCount( DWORD *pTickCount ) PURE;
  675. virtual BOOL Sleep( DWORD SleepCount ) PURE;
  676. virtual void EnableHwInt( void ) PURE;
  677. virtual void DisableHwInt( void ) PURE;
  678. };
  679. #endif // _HALIF_H_
  680. //***************************************************************************
  681. // End of COMMON INTERFACE Header
  682. //***************************************************************************