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.

1427 lines
36 KiB

  1. /******************************************************************************\
  2. * *
  3. * ZIVAGUID.H - . *
  4. * *
  5. * Copyright (c) C-Cube Microsystems 1996 *
  6. * All Rights Reserved. *
  7. * *
  8. * Use of C-Cube Microsystems code is governed by terms and conditions *
  9. * stated in the accompanying licensing statement. *
  10. * *
  11. \******************************************************************************/
  12. /*
  13. ZIVAGUID.H
  14. This module contains definitions for the stream types
  15. that this mini driver supports.
  16. This information is used by the Enumerate Stream types routine.
  17. */
  18. #ifndef _ZIVAGUID_H_
  19. #define _ZIVAGUID_H_
  20. #include <ksmedia.h>
  21. #include <wingdi.h>
  22. #define IsEqualGUID2(guid1, guid2) \
  23. (!memcmp((guid1), (guid2), sizeof(GUID)))
  24. #if defined(ENCORE)
  25. #include "AvInt.h"
  26. #include "AvKsProp.h"
  27. #else
  28. KSPIN_MEDIUM VPMedium = {
  29. STATIC_KSMEDIUMSETID_VPBus,
  30. 0,
  31. 0
  32. };
  33. #endif
  34. //-------------------------------------------------------------------
  35. // ZiVA STREAM TYPE FORMATS
  36. //-------------------------------------------------------------------
  37. KSDATAFORMAT ZivaFormatDVDVideo =
  38. {
  39. sizeof (KSDATAFORMAT),
  40. 0,
  41. 0,
  42. 0,
  43. STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK,
  44. STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO,
  45. STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO
  46. };
  47. KSDATAFORMAT ZivaFormatMpeg2PACKVideo =
  48. {
  49. sizeof (KSDATAFORMAT),
  50. 0,
  51. 0,
  52. 0,
  53. STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER,
  54. STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO,
  55. STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO
  56. };
  57. //
  58. // define our time event structure
  59. //
  60. typedef struct _MYTIME
  61. {
  62. KSEVENT_TIME_INTERVAL tim;
  63. LONGLONG LastTime;
  64. } MYTIME, *PMYTIME;
  65. //
  66. // define the events associated with the master clock
  67. //
  68. KSEVENT_ITEM ClockEventItm[] =
  69. {
  70. {
  71. KSEVENT_CLOCK_POSITION_MARK, // position mark event supported
  72. sizeof( KSEVENT_TIME_MARK ), // requires this data as input
  73. sizeof( KSEVENT_TIME_MARK ), // allocate space to copy the data
  74. NULL,
  75. NULL,
  76. NULL
  77. },
  78. {
  79. KSEVENT_CLOCK_INTERVAL_MARK, // interval mark event supported
  80. sizeof( KSEVENT_TIME_INTERVAL ), // requires interval data as input
  81. sizeof( MYTIME ), // we use an additional workspace of
  82. // size longlong for processing this event
  83. NULL,
  84. NULL,
  85. NULL
  86. }
  87. };
  88. KSEVENT_SET ClockEventSet[] =
  89. {
  90. {
  91. &KSEVENTSETID_Clock,
  92. SIZEOF_ARRAY(ClockEventItm),
  93. ClockEventItm,
  94. }
  95. };
  96. #ifndef ENCORE
  97. KSEVENT_ITEM VPEventItm[] =
  98. {
  99. {
  100. KSEVENT_VPNOTIFY_FORMATCHANGE,
  101. 0,
  102. 0,
  103. NULL,
  104. NULL,
  105. NULL
  106. }
  107. };
  108. GUID MY_KSEVENTSETID_VPNOTIFY = { STATIC_KSEVENTSETID_VPNotify };
  109. KSEVENT_SET VPEventSet[] =
  110. {
  111. {
  112. &MY_KSEVENTSETID_VPNOTIFY,
  113. SIZEOF_ARRAY( VPEventItm ),
  114. VPEventItm,
  115. }
  116. };
  117. #endif
  118. KSDATAFORMAT ZivaFormatAC3Audio =
  119. {
  120. sizeof( KSDATAFORMAT ),
  121. 0,
  122. 0,
  123. 0,
  124. STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK,
  125. STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO,
  126. STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX
  127. };
  128. KSDATAFORMAT ZivaFormatAC3Audio2 = {
  129. sizeof (KSDATAFORMAT),
  130. 0,
  131. 0,
  132. 0,
  133. STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER,
  134. STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO,
  135. STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX
  136. };
  137. KSDATAFORMAT ZivaFormatPCMAudio =
  138. {
  139. sizeof( KSDATAFORMAT ),
  140. 0,
  141. 0,
  142. 0,
  143. STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK,
  144. STATIC_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO,
  145. STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX
  146. };
  147. KSDATAFORMAT ZivaFormatSubPicture =
  148. {
  149. sizeof( KSDATAFORMAT ),
  150. 0,
  151. 0,
  152. 0,
  153. STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK,
  154. STATIC_KSDATAFORMAT_SUBTYPE_SUBPICTURE,
  155. STATIC_GUID_NULL
  156. };
  157. #ifdef ENCORE
  158. #define DefWidth 720
  159. #define DefHeight 480
  160. KS_DATARANGE_VIDEO2 ZivaFormatAnalogOverlayOutDataRange =
  161. {
  162. // KSDATARANGE
  163. {
  164. sizeof( KS_DATARANGE_VIDEO2 ), // FormatSize
  165. 0, // Flags
  166. 0, // SampleSize
  167. 0, // Reserved
  168. STATIC_KSDATAFORMAT_TYPE_VIDEO, // aka. MEDIATYPE_Video
  169. STATIC_KSDATAFORMAT_SUBTYPE_OVERLAY,
  170. STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2// aka. FORMAT_VideoInfo2
  171. },
  172. TRUE, // BOOL, bFixedSizeSamples (all samples same size?)
  173. TRUE, // BOOL, bTemporalCompression (all I frames?)
  174. 0, // Reserved (was StreamDescriptionFlags)
  175. 0, // Reserved (was MemoryAllocationFlags (KS_VIDEO_ALLOC_*))
  176. // _KS_VIDEO_STREAM_CONFIG_CAPS
  177. {
  178. STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2, // GUID
  179. KS_AnalogVideo_NTSC_M |
  180. KS_AnalogVideo_PAL_B, // AnalogVideoStandard
  181. 720,480, // InputSize, (the inherent size of the incoming signal
  182. // with every digitized pixel unique)
  183. 720,480, // MinCroppingSize, smallest rcSrc cropping rect allowed
  184. 720,480, // MaxCroppingSize, largest rcSrc cropping rect allowed
  185. 8, // CropGranularityX, granularity of cropping size
  186. 1, // CropGranularityY
  187. 8, // CropAlignX, alignment of cropping rect
  188. 1, // CropAlignY;
  189. 720, 480, // MinOutputSize, smallest bitmap stream can produce
  190. 720, 480, // MaxOutputSize, largest bitmap stream can produce
  191. 8, // OutputGranularityX, granularity of output bitmap size
  192. 1, // OutputGranularityY;
  193. 0, // StretchTapsX (0 no stretch, 1 pix dup, 2 interp...)
  194. 0, // StretchTapsY
  195. 0, // ShrinkTapsX
  196. 0, // ShrinkTapsY
  197. 333667, // MinFrameInterval, 100 nS units
  198. 640000000, // MaxFrameInterval, 100 nS units
  199. 8 * 3 * 30 * 160 * 120, // MinBitsPerSecond;
  200. 8 * 3 * 30 * 720 * 480 // MaxBitsPerSecond;
  201. },
  202. //------- KS_VIDEOINFOHEADER2
  203. {
  204. { 0,0,0,0 }, // RECT rcSource; // The bit we really want to use
  205. { 0,0,0,0 }, // RECT rcTarget; // Where the video should go
  206. DefWidth * DefHeight * 2 * 30L, // DWORD dwBitRate; // Approximate bit data rate
  207. 0L, // DWORD dwBitErrorRate; // Bit error rate for this stream
  208. 333667, // REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units)
  209. 0, // DWORD dwInterlaceFlags; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0
  210. 0, // DWORD dwCopyProtectFlags; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0
  211. 4, // DWORD dwPictAspectRatioX; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display
  212. 3, // DWORD dwPictAspectRatioY; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display
  213. 0, // DWORD dwReserved1; // must be 0; reject connection otherwise
  214. 0, // DWORD dwReserved2; // must be 0; reject connection otherwise
  215. //---------- KS_BITMAPINFOHEADER
  216. {
  217. sizeof( KS_BITMAPINFOHEADER ), // DWORD biSize;
  218. DefWidth, // LONG biWidth;
  219. DefHeight, // LONG biHeight;
  220. 1, // WORD biPlanes;
  221. 16, // WORD biBitCount;
  222. DDPF_FOURCC, // DWORD biCompression;
  223. 0/*DefWidth * DefHeight * 2*/, // DWORD biSizeImage;
  224. 0, // LONG biXPelsPerMeter;
  225. 0, // LONG biYPelsPerMeter;
  226. 0, // DWORD biClrUsed;
  227. 0 // DWORD biClrImportant;
  228. }
  229. }
  230. };
  231. KS_DATAFORMAT_VIDEOINFOHEADER2 ZivaFormatAnalogOverlayOut =
  232. {
  233. //------- KSDATAFORMAT
  234. {
  235. sizeof( KS_DATAFORMAT_VIDEOINFOHEADER2 ),
  236. 0,
  237. DefWidth * DefHeight * 2,
  238. 0,
  239. STATIC_KSDATAFORMAT_TYPE_VIDEO,
  240. STATIC_KSDATAFORMAT_SUBTYPE_OVERLAY,
  241. STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2
  242. },
  243. //------- KS_VIDEOINFOHEADER2
  244. {
  245. { 0,0,0,0 }, // RECT rcSource; // The bit we really want to use
  246. { 0,0,0,0 }, // RECT rcTarget; // Where the video should go
  247. DefWidth * DefHeight * 2 * 30L, // DWORD dwBitRate; // Approximate bit data rate
  248. 0L, // DWORD dwBitErrorRate; // Bit error rate for this stream
  249. 333667, // REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units)
  250. 0, // DWORD dwInterlaceFlags; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0
  251. 0, // DWORD dwCopyProtectFlags; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0
  252. 4, // DWORD dwPictAspectRatioX; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display
  253. 3, // DWORD dwPictAspectRatioY; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display
  254. 0, // DWORD dwReserved1; // must be 0; reject connection otherwise
  255. 0, // DWORD dwReserved2; // must be 0; reject connection otherwise
  256. //---------- KS_BITMAPINFOHEADER
  257. {
  258. sizeof( KS_BITMAPINFOHEADER ), // DWORD biSize;
  259. DefWidth, // LONG biWidth;
  260. DefHeight, // LONG biHeight;
  261. 1, // WORD biPlanes;
  262. 16, // WORD biBitCount;
  263. DDPF_FOURCC, // DWORD biCompression;
  264. 0/*DefWidth * DefHeight * 2*/, // DWORD biSizeImage;
  265. 0, // LONG biXPelsPerMeter;
  266. 0, // LONG biYPelsPerMeter;
  267. 0, // DWORD biClrUsed;
  268. 0 // DWORD biClrImportant;
  269. }
  270. }
  271. };
  272. #endif // #ifdef ENCORE
  273. KSDATAFORMAT ZivaFormatVPEOut =
  274. {
  275. sizeof( KSDATAFORMAT ),
  276. 0,
  277. 0,
  278. 0,
  279. STATIC_KSDATAFORMAT_TYPE_VIDEO,
  280. STATIC_KSDATAFORMAT_SUBTYPE_VPVideo,
  281. STATIC_KSDATAFORMAT_SPECIFIER_NONE
  282. };
  283. //#endif // #ifdef ENCORE
  284. KSDATAFORMAT hwfmtiCCOut
  285. = {
  286. sizeof(KSDATAFORMAT),
  287. 0,
  288. 200,
  289. 0,
  290. STATIC_KSDATAFORMAT_TYPE_AUXLine21Data,
  291. STATIC_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket,
  292. // STATIC_KSDATAFORMAT_SUBTYPE_Line21_BytePair,
  293. // STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO
  294. STATIC_KSDATAFORMAT_SPECIFIER_NONE
  295. };
  296. PKSDATAFORMAT CCInfo[] = { // CC output formats array
  297. &hwfmtiCCOut
  298. };
  299. #define NUM_CC_OUT_FORMATS (SIZEOF_ARRAY( CCInfo ))
  300. //-------------------------------------------------------------------
  301. // ZiVA STREAM FORMAT ARRAYS
  302. //-------------------------------------------------------------------
  303. //------- Video In
  304. PKSDATAFORMAT ZivaVideoInFormatArray[] =
  305. {
  306. &ZivaFormatDVDVideo,
  307. &ZivaFormatMpeg2PACKVideo
  308. };
  309. #define NUM_VIDEO_IN_FORMATS (SIZEOF_ARRAY( ZivaVideoInFormatArray ))
  310. //------- Audio In
  311. PKSDATAFORMAT ZivaAudioInFormatArray[] =
  312. {
  313. &ZivaFormatAC3Audio,
  314. &ZivaFormatAC3Audio2,
  315. &ZivaFormatPCMAudio
  316. //&ZivaFormatMpegAudio
  317. };
  318. #define NUM_AUDIO_IN_FORMATS (SIZEOF_ARRAY( ZivaAudioInFormatArray ))
  319. //------- Subpicture In
  320. PKSDATAFORMAT ZivaSubPictureInFormatArray[] =
  321. {
  322. &ZivaFormatSubPicture
  323. };
  324. #define NUM_SUBPICTURE_IN_FORMATS (SIZEOF_ARRAY( ZivaSubPictureInFormatArray ))
  325. //------- Video Out
  326. PKSDATAFORMAT ZivaVideoOutFormatArray[] =
  327. {
  328. #ifdef ENCORE
  329. (PKSDATAFORMAT)&ZivaFormatAnalogOverlayOutDataRange
  330. #else // #ifdef ENCORE
  331. (PKSDATAFORMAT)&ZivaFormatVPEOut
  332. #endif // #ifdef ENCORE
  333. };
  334. #define NUM_VIDEO_OUT_FORMATS (SIZEOF_ARRAY( ZivaVideoOutFormatArray ))
  335. //-------------------------------------------------------------------
  336. // ZiVA STREAM PROPERTY ITEMS
  337. //-------------------------------------------------------------------
  338. static const KSPROPERTY_ITEM mpegVidPropItm[] =
  339. {
  340. {
  341. KSPROPERTY_DVDSUBPIC_PALETTE, // subpicture palette property
  342. FALSE, // get palette not supported
  343. sizeof( KSPROPERTY ),
  344. sizeof( KSPROPERTY_SPPAL ), // minimum size of data requested
  345. (PFNKSHANDLER)FALSE, // set palette is not supported
  346. NULL,
  347. 0,
  348. NULL,
  349. NULL,
  350. 0
  351. }
  352. };
  353. //
  354. // define the subpicture property items supported
  355. //
  356. static const KSPROPERTY_ITEM spPropItm[] =
  357. {
  358. {
  359. KSPROPERTY_DVDSUBPIC_PALETTE, // subpicture palette property
  360. FALSE, // get palette not supported
  361. sizeof( KSPROPERTY ),
  362. sizeof( KSPROPERTY_SPPAL ), // minimum size of data requested
  363. (PFNKSHANDLER)TRUE, // set palette is supported
  364. NULL,
  365. 0,
  366. NULL,
  367. NULL,
  368. 0
  369. },
  370. {
  371. KSPROPERTY_DVDSUBPIC_HLI, // subpicture highlight property
  372. FALSE, // get highlight is not supported
  373. sizeof( KSPROPERTY ),
  374. sizeof( KSPROPERTY_SPHLI ), // minimum size of data requested
  375. (PFNKSHANDLER)TRUE, // set highlight is supported
  376. NULL,
  377. 0,
  378. NULL,
  379. NULL,
  380. 0
  381. },
  382. {
  383. KSPROPERTY_DVDSUBPIC_COMPOSIT_ON, // subpicture enable status property
  384. FALSE, // get enable status not supported
  385. sizeof( KSPROPERTY ),
  386. sizeof( KSPROPERTY_COMPOSIT_ON ), // minimum size of data requested
  387. (PFNKSHANDLER)TRUE, // set enable status is supported
  388. NULL,
  389. 0,
  390. NULL,
  391. NULL,
  392. 0
  393. }
  394. };
  395. static const KSPROPERTY_ITEM audPropItm[] =
  396. {
  397. {
  398. KSPROPERTY_AUDDECOUT_MODES, // available audio decoder output formats property
  399. (PFNKSHANDLER)TRUE, // get available modes is supported
  400. sizeof( KSPROPERTY ),
  401. sizeof( ULONG ), // minimum size of data requested
  402. (PFNKSHANDLER)FALSE, // set available modes is not supported
  403. NULL,
  404. 0,
  405. NULL,
  406. NULL,
  407. 0
  408. },
  409. {
  410. KSPROPERTY_AUDDECOUT_CUR_MODE, // current audio decoder output format property
  411. (PFNKSHANDLER) TRUE, // get current mode is supported
  412. sizeof( KSPROPERTY ),
  413. sizeof( ULONG ), // minimum size of data requested
  414. (PFNKSHANDLER)TRUE, // set current modes is supported
  415. NULL,
  416. 0,
  417. NULL,
  418. NULL,
  419. 0
  420. }
  421. };
  422. //
  423. // define the copy protection property support
  424. //
  425. static const KSPROPERTY_ITEM psMacrovision[] =
  426. {
  427. {
  428. KSPROPERTY_COPY_MACROVISION, // support for setting macrovision level
  429. (PFNKSHANDLER)FALSE, // get not supported
  430. sizeof( KSPROPERTY ),
  431. sizeof( KS_COPY_MACROVISION ),
  432. (PFNKSHANDLER)TRUE, // set MACROVISION level supported
  433. NULL,
  434. 0,
  435. NULL,
  436. NULL,
  437. 0
  438. }
  439. };
  440. static const KSPROPERTY_ITEM CopyProtPropItm[] =
  441. {
  442. {
  443. KSPROPERTY_DVDCOPY_CHLG_KEY, // DVD authentication challenge key
  444. (PFNKSHANDLER)TRUE, // get property on challenge key requests the
  445. // decoder to provide it's challenge key
  446. sizeof( KSPROPERTY ),
  447. sizeof( KS_DVDCOPY_CHLGKEY ), // minimum size of data requested
  448. (PFNKSHANDLER)TRUE, // set palette is supported
  449. NULL,
  450. 0,
  451. NULL,
  452. NULL,
  453. 0
  454. },
  455. {
  456. KSPROPERTY_DVDCOPY_DVD_KEY1, // DVD authentication DVD drive key property
  457. FALSE, // get Key not supported
  458. sizeof( KSPROPERTY ),
  459. sizeof( KS_DVDCOPY_BUSKEY ), // minimum size of data requested
  460. (PFNKSHANDLER)TRUE, // set key provides the key for the decoder
  461. NULL,
  462. 0,
  463. NULL,
  464. NULL,
  465. 0
  466. },
  467. {
  468. KSPROPERTY_DVDCOPY_DEC_KEY2, // DVD authentication DVD decoder key property
  469. (PFNKSHANDLER)TRUE, // get Key requests the decoder key, in
  470. // response to a previous set challenge key
  471. sizeof( KSPROPERTY ),
  472. sizeof( KS_DVDCOPY_BUSKEY ), // minimum size of data requested
  473. (PFNKSHANDLER)FALSE, // set key is not valid
  474. NULL,
  475. 0,
  476. NULL,
  477. NULL,
  478. 0
  479. },
  480. {
  481. KSPROPERTY_DVDCOPY_REGION, // DVD region request the minidriver shall
  482. // fit in exactly one region bit, corresponding
  483. // to the region that the decoder is currently in
  484. (PFNKSHANDLER)TRUE,
  485. sizeof( KSPROPERTY ),
  486. sizeof( KS_DVDCOPY_REGION ), // minimum size of data requested
  487. (PFNKSHANDLER)FALSE, // set key is not valid
  488. NULL,
  489. 0,
  490. NULL,
  491. NULL,
  492. 0
  493. },
  494. {
  495. KSPROPERTY_DVDCOPY_TITLE_KEY, // DVD authentication DVD title key property
  496. FALSE, // get Key not supported
  497. sizeof( KSPROPERTY ),
  498. sizeof( KS_DVDCOPY_TITLEKEY ), // minimum size of data requested
  499. (PFNKSHANDLER)TRUE, // set key provides the key for the decoder
  500. NULL,
  501. 0,
  502. NULL,
  503. NULL,
  504. 0
  505. },
  506. {
  507. KSPROPERTY_DVDCOPY_DISC_KEY, // DVD authentication DVD disc key property
  508. FALSE, // get Key not supported
  509. sizeof( KSPROPERTY ),
  510. sizeof( KS_DVDCOPY_DISCKEY ), // minimum size of data requested
  511. (PFNKSHANDLER)TRUE, // set key provides the key for the decoder
  512. NULL,
  513. 0,
  514. NULL,
  515. NULL,
  516. 0
  517. },
  518. {
  519. KSPROPERTY_DVDCOPY_SET_COPY_STATE, // DVD authentication DVD disc key property
  520. (PFNKSHANDLER)TRUE, // get Key not supported
  521. sizeof( KSPROPERTY ),
  522. sizeof( KS_DVDCOPY_SET_COPY_STATE ),// minimum size of data requested
  523. (PFNKSHANDLER)TRUE, // set key provides the key for the decoder
  524. NULL,
  525. 0,
  526. NULL,
  527. NULL,
  528. 0
  529. }
  530. #if 0
  531. #ifdef DECODER_DVDPC
  532. ,
  533. {
  534. KSPROPERTY_COPY_MACROVISION, // support for setting macrovision level
  535. (PFNKSHANDLER)FALSE, // get not supported
  536. sizeof( KSPROPERTY ),
  537. sizeof( KS_COPY_MACROVISION ),
  538. (PFNKSHANDLER)TRUE, // set MACROVISION level supported
  539. NULL,
  540. 0,
  541. NULL,
  542. NULL,
  543. 0
  544. }
  545. #endif
  546. #endif
  547. };
  548. // ------------------------------------------------------------------------
  549. // Array of all of the property sets supported by video streams
  550. // ------------------------------------------------------------------------
  551. #ifdef ENCORE
  552. DEFINE_KSPROPERTY_TABLE( psOverlayUpdate )
  553. {
  554. DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_INTERESTS( (PFNKSHANDLER)TRUE ),
  555. DEFINE_KSPROPERTY_ITEM
  556. (
  557. KSPROPERTY_OVERLAYUPDATE_COLORKEY,
  558. (PFNKSHANDLER)TRUE,
  559. sizeof( KSPROPERTY ),
  560. sizeof( COLORKEY ),
  561. (PFNKSHANDLER)TRUE,
  562. NULL, 0, NULL, NULL, 0
  563. ),
  564. DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_VIDEOPOSITION( (PFNKSHANDLER)TRUE ),
  565. DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_DISPLAYCHANGE( (PFNKSHANDLER)TRUE ),
  566. DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORREF( (PFNKSHANDLER)TRUE )
  567. };
  568. DEFINE_KSPROPERTY_SET_TABLE( VideoOutPropSet )
  569. {
  570. DEFINE_KSPROPERTY_SET
  571. (
  572. &KSPROPSETID_OverlayUpdate,
  573. SIZEOF_ARRAY( psOverlayUpdate ),
  574. psOverlayUpdate,
  575. 0,
  576. NULL
  577. )
  578. };
  579. #else
  580. static const KSPROPERTY_ITEM VideoPortPropItm[] =
  581. {
  582. {
  583. KSPROPERTY_VPCONFIG_NUMCONNECTINFO,
  584. (PFNKSHANDLER) TRUE,
  585. sizeof(KSPROPERTY),
  586. sizeof(ULONG),
  587. (PFNKSHANDLER) FALSE,
  588. NULL,
  589. 0,
  590. NULL,
  591. NULL,
  592. 0
  593. },
  594. {
  595. KSPROPERTY_VPCONFIG_NUMVIDEOFORMAT,
  596. (PFNKSHANDLER) TRUE,
  597. sizeof(KSPROPERTY),
  598. sizeof(ULONG),
  599. (PFNKSHANDLER) FALSE,
  600. NULL,
  601. 0,
  602. NULL,
  603. NULL,
  604. 0
  605. },
  606. {
  607. KSPROPERTY_VPCONFIG_GETCONNECTINFO,
  608. (PFNKSHANDLER) TRUE,
  609. sizeof (KSMULTIPLE_DATA_PROP), // minimum property input size
  610. sizeof (ULONG),
  611. (PFNKSHANDLER)FALSE,
  612. NULL,
  613. 0,
  614. NULL,
  615. NULL,
  616. 0
  617. },
  618. {
  619. KSPROPERTY_VPCONFIG_SETCONNECTINFO,
  620. (PFNKSHANDLER) FALSE,
  621. sizeof (KSPROPERTY), // minimum property input size
  622. sizeof (ULONG), // minimum buffer size
  623. (PFNKSHANDLER)TRUE,
  624. NULL,
  625. 0,
  626. NULL,
  627. NULL,
  628. 0
  629. },
  630. {
  631. KSPROPERTY_VPCONFIG_VPDATAINFO,
  632. (PFNKSHANDLER) TRUE,
  633. sizeof (KSPROPERTY),
  634. sizeof (KS_AMVPDATAINFO),
  635. (PFNKSHANDLER)FALSE,
  636. NULL,
  637. 0,
  638. NULL,
  639. NULL,
  640. 0
  641. },
  642. {
  643. KSPROPERTY_VPCONFIG_MAXPIXELRATE,
  644. (PFNKSHANDLER) TRUE,
  645. sizeof (KSVPSIZE_PROP),
  646. sizeof (KSVPMAXPIXELRATE),
  647. (PFNKSHANDLER)FALSE,
  648. NULL,
  649. 0,
  650. NULL,
  651. NULL,
  652. 0
  653. },
  654. {
  655. KSPROPERTY_VPCONFIG_INFORMVPINPUT,
  656. (PFNKSHANDLER) TRUE,
  657. sizeof (PKSPROPERTY),
  658. sizeof (DDPIXELFORMAT), // could be 0 too
  659. (PFNKSHANDLER)FALSE,
  660. NULL,
  661. 0,
  662. NULL,
  663. NULL,
  664. 0
  665. },
  666. {
  667. KSPROPERTY_VPCONFIG_DDRAWHANDLE,
  668. (PFNKSHANDLER)FALSE,
  669. sizeof (PKSPROPERTY),
  670. sizeof (ULONG), // could be 0 too
  671. (PFNKSHANDLER) TRUE,
  672. NULL,
  673. 0,
  674. NULL,
  675. NULL,
  676. 0
  677. },
  678. {
  679. KSPROPERTY_VPCONFIG_VIDEOPORTID,
  680. (PFNKSHANDLER)FALSE,
  681. sizeof (PKSPROPERTY),
  682. sizeof (ULONG), // could be 0 too
  683. (PFNKSHANDLER) TRUE,
  684. NULL,
  685. 0,
  686. NULL,
  687. NULL,
  688. 0
  689. },
  690. {
  691. KSPROPERTY_VPCONFIG_DDRAWSURFACEHANDLE,
  692. (PFNKSHANDLER)FALSE,
  693. sizeof (PKSPROPERTY),
  694. sizeof (ULONG), // could be 0 too
  695. (PFNKSHANDLER) TRUE,
  696. NULL,
  697. 0,
  698. NULL,
  699. NULL,
  700. 0
  701. },
  702. {
  703. KSPROPERTY_VPCONFIG_GETVIDEOFORMAT,
  704. (PFNKSHANDLER) TRUE,
  705. sizeof (KSMULTIPLE_DATA_PROP), // for _GET; KSPROPERTY for _SET
  706. sizeof (ULONG), // could be 4 or more
  707. (PFNKSHANDLER)FALSE,
  708. NULL,
  709. 0,
  710. NULL,
  711. NULL,
  712. 0
  713. },
  714. {
  715. KSPROPERTY_VPCONFIG_SETVIDEOFORMAT,
  716. (PFNKSHANDLER) FALSE,
  717. sizeof (KSPROPERTY), // minimum property input size
  718. sizeof (ULONG), // minimum buffer size
  719. (PFNKSHANDLER)TRUE,
  720. NULL,
  721. 0,
  722. NULL,
  723. NULL,
  724. 0
  725. },
  726. {
  727. KSPROPERTY_VPCONFIG_INVERTPOLARITY,
  728. (PFNKSHANDLER)TRUE,
  729. sizeof (KSPROPERTY),
  730. 0,
  731. (PFNKSHANDLER)FALSE,
  732. NULL,
  733. 0,
  734. NULL,
  735. NULL,
  736. 0
  737. },
  738. {
  739. KSPROPERTY_VPCONFIG_DECIMATIONCAPABILITY,
  740. (PFNKSHANDLER)TRUE,
  741. sizeof(KSPROPERTY),
  742. //sizeof (KSVPCONTEXT_PROP),
  743. sizeof (BOOL),
  744. (PFNKSHANDLER)FALSE,
  745. NULL,
  746. 0,
  747. NULL,
  748. NULL,
  749. 0
  750. },
  751. {
  752. KSPROPERTY_VPCONFIG_SCALEFACTOR,
  753. (PFNKSHANDLER)TRUE,
  754. sizeof (KSPROPERTY),
  755. sizeof (KS_AMVPSIZE),
  756. (PFNKSHANDLER)FALSE,
  757. NULL,
  758. 0,
  759. NULL,
  760. NULL,
  761. 0
  762. }
  763. };
  764. GUID vpePropSetid = {STATIC_KSPROPSETID_VPConfig};
  765. static KSPROPERTY_SET VideoPortPropSet[] =
  766. {
  767. &vpePropSetid,
  768. SIZEOF_ARRAY(VideoPortPropItm),
  769. (PKSPROPERTY_ITEM) VideoPortPropItm
  770. };
  771. #endif // #ifdef ENCORE
  772. #define NUM_VIDEO_OUT_PROPERTY_ITEMS (SIZEOF_ARRAY (VideoOutPropSet))
  773. // Rate Change
  774. static const KSPROPERTY_ITEM RateChangePropItm[] =
  775. {
  776. {
  777. KS_AM_RATE_SimpleRateChange,
  778. (PFNKSHANDLER) TRUE,
  779. sizeof (KSPROPERTY),
  780. sizeof (KS_AM_SimpleRateChange),
  781. (PFNKSHANDLER) TRUE,
  782. NULL,
  783. 0,
  784. NULL,
  785. NULL,
  786. 0,
  787. },
  788. {
  789. KS_AM_RATE_ExactRateChange,
  790. (PFNKSHANDLER) FALSE,
  791. sizeof (KSPROPERTY),
  792. sizeof (KS_AM_ExactRateChange),
  793. (PFNKSHANDLER) FALSE,
  794. NULL,
  795. 0,
  796. NULL,
  797. NULL,
  798. 0,
  799. },
  800. {
  801. KS_AM_RATE_MaxFullDataRate,
  802. (PFNKSHANDLER) TRUE,
  803. sizeof (KSPROPERTY),
  804. sizeof (KS_AM_MaxFullDataRate),
  805. (PFNKSHANDLER) FALSE,
  806. NULL,
  807. 0,
  808. NULL,
  809. NULL,
  810. 0,
  811. },
  812. {
  813. KS_AM_RATE_Step,
  814. (PFNKSHANDLER) FALSE,
  815. sizeof (KSPROPERTY),
  816. sizeof (KS_AM_Step),
  817. (PFNKSHANDLER) TRUE,
  818. NULL,
  819. 0,
  820. NULL,
  821. NULL,
  822. 0,
  823. }
  824. };
  825. //
  826. // define the array of video property sets supported
  827. //
  828. DEFINE_KSPROPERTY_SET_TABLE( mpegVidPropSet )
  829. {
  830. DEFINE_KSPROPERTY_SET
  831. (
  832. &KSPROPSETID_Mpeg2Vid,
  833. SIZEOF_ARRAY(mpegVidPropItm),
  834. (PKSPROPERTY_ITEM)mpegVidPropItm,
  835. 0,
  836. NULL
  837. ),
  838. DEFINE_KSPROPERTY_SET
  839. (
  840. &KSPROPSETID_CopyProt,
  841. SIZEOF_ARRAY(CopyProtPropItm),
  842. (PKSPROPERTY_ITEM)CopyProtPropItm,
  843. 0,
  844. NULL
  845. ),
  846. DEFINE_KSPROPERTY_SET
  847. (
  848. &KSPROPSETID_TSRateChange,
  849. SIZEOF_ARRAY(RateChangePropItm),
  850. (PKSPROPERTY_ITEM)RateChangePropItm,
  851. 0,
  852. NULL
  853. )
  854. };
  855. #define NUM_VIDEO_IN_PROPERTY_ITEMS (SIZEOF_ARRAY (mpegVidPropSet))
  856. //
  857. // define the array of audio property sets supported
  858. //
  859. DEFINE_KSPROPERTY_SET_TABLE( audPropSet )
  860. {
  861. DEFINE_KSPROPERTY_SET
  862. (
  863. &KSPROPSETID_AudioDecoderOut,
  864. SIZEOF_ARRAY(audPropItm),
  865. (PKSPROPERTY_ITEM)audPropItm,
  866. 0,
  867. NULL
  868. ),
  869. DEFINE_KSPROPERTY_SET
  870. (
  871. &KSPROPSETID_CopyProt,
  872. SIZEOF_ARRAY(CopyProtPropItm),
  873. (PKSPROPERTY_ITEM)CopyProtPropItm,
  874. 0,
  875. NULL
  876. ),
  877. DEFINE_KSPROPERTY_SET
  878. (
  879. &KSPROPSETID_TSRateChange,
  880. SIZEOF_ARRAY(RateChangePropItm),
  881. (PKSPROPERTY_ITEM)RateChangePropItm,
  882. 0,
  883. NULL
  884. ),
  885. };
  886. #define NUM_AUDIO_IN_PROPERTY_ITEMS (SIZEOF_ARRAY (audPropSet))
  887. //
  888. // define the array of subpicture property sets supported
  889. //
  890. DEFINE_KSPROPERTY_SET_TABLE( SPPropSet )
  891. {
  892. DEFINE_KSPROPERTY_SET
  893. (
  894. &KSPROPSETID_DvdSubPic,
  895. SIZEOF_ARRAY(spPropItm),
  896. (PKSPROPERTY_ITEM)spPropItm,
  897. 0,
  898. NULL
  899. ),
  900. DEFINE_KSPROPERTY_SET
  901. (
  902. &KSPROPSETID_CopyProt,
  903. SIZEOF_ARRAY(CopyProtPropItm),
  904. (PKSPROPERTY_ITEM)CopyProtPropItm,
  905. 0,
  906. NULL
  907. ),
  908. DEFINE_KSPROPERTY_SET
  909. (
  910. &KSPROPSETID_TSRateChange,
  911. SIZEOF_ARRAY(RateChangePropItm),
  912. (PKSPROPERTY_ITEM)RateChangePropItm,
  913. 0,
  914. NULL
  915. ),
  916. };
  917. #define NUM_SUBPICTURE_IN_PROPERTY_ITEMS (SIZEOF_ARRAY (SPPropSet))
  918. #ifdef ENCORE
  919. DEFINE_AV_PROPITEM_RANGE_STEP( ColorBrightness, 15, 0, 255, 128 )
  920. DEFINE_AV_PROPITEM_RANGE_STEP( ColorContrast, 1, 0, 31, 15 )
  921. DEFINE_AV_PROPITEM_RANGE_STEP( ColorSaturation, 1, 0, 31, 15 )
  922. DEFINE_AV_PROPITEM_RANGE_STEP( ColorSolarization, 8, 0, 128, 0 )
  923. DEFINE_AV_PROPITEM_RANGE_STEP( ColorSharpness, 1, 0, 1, 0 )
  924. DEFINE_AV_PROPITEM_RANGE_STEP( ColorGamma, 64, 256, 4096, 1024 )
  925. DEFINE_KSPROPERTY_TABLE( psVideoProcAmp )
  926. {
  927. ADD_AV_PROPITEM_RANGE_U( ColorBrightness, KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS ),
  928. ADD_AV_PROPITEM_RANGE_U( ColorContrast, KSPROPERTY_VIDEOPROCAMP_CONTRAST ),
  929. ADD_AV_PROPITEM_RANGE_U( ColorSaturation, KSPROPERTY_VIDEOPROCAMP_SATURATION ),
  930. ADD_AV_PROPITEM_RANGE_U( ColorSharpness, KSPROPERTY_VIDEOPROCAMP_SHARPNESS ),
  931. ADD_AV_PROPITEM_RANGE_U( ColorGamma, KSPROPERTY_VIDEOPROCAMP_GAMMA ),
  932. ADD_AV_PROPITEM_RANGE_U( ColorSolarization, KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION )
  933. };
  934. DEFINE_AV_PROPITEM_RANGE( AlignXPosition, 0, 1023, 170 )
  935. DEFINE_AV_PROPITEM_RANGE( AlignYPosition, 0, 1023, 36 )
  936. DEFINE_AV_PROPITEM_RANGE( AlignInputDelay, -15, 16, 5 )
  937. DEFINE_AV_PROPITEM_RANGE( AlignWidthRatio, 1, 4000, 456 )
  938. DEFINE_AV_PROPITEM_RANGE( AlignClockDelay, 0, 3, 3 )
  939. DEFINE_AV_PROPITEM_RANGE( AlignCropLeft, 0, 1023, 20 )
  940. DEFINE_AV_PROPITEM_RANGE( AlignCropTop, 0, 1023, 100 )
  941. DEFINE_AV_PROPITEM_RANGE( AlignCropRight, 0, 1023, 20 )
  942. DEFINE_AV_PROPITEM_RANGE( AlignCropBottom, 0, 1023, 40 )
  943. DEFINE_AV_KSPROPERTY_TABLE( psAlign )
  944. {
  945. ADD_AV_PROPITEM_RANGE_U( AlignXPosition, AVKSPROPERTY_ALIGN_XPOSITION ),
  946. ADD_AV_PROPITEM_RANGE_U( AlignYPosition, AVKSPROPERTY_ALIGN_YPOSITION ),
  947. ADD_AV_PROPITEM_RANGE_U( AlignInputDelay, AVKSPROPERTY_ALIGN_INPUTDELAY ),
  948. ADD_AV_PROPITEM_RANGE_U( AlignWidthRatio, AVKSPROPERTY_ALIGN_WIDTHRATIO ),
  949. ADD_AV_PROPITEM_RANGE_U( AlignClockDelay, AVKSPROPERTY_ALIGN_CLOCKDELAY ),
  950. ADD_AV_PROPITEM_RANGE_U( AlignCropLeft, AVKSPROPERTY_ALIGN_CROPLEFT ),
  951. ADD_AV_PROPITEM_RANGE_U( AlignCropTop, AVKSPROPERTY_ALIGN_CROPTOP ),
  952. ADD_AV_PROPITEM_RANGE_U( AlignCropRight, AVKSPROPERTY_ALIGN_CROPRIGHT ),
  953. ADD_AV_PROPITEM_RANGE_U( AlignCropBottom, AVKSPROPERTY_ALIGN_CROPBOTTOM ),
  954. // ADD_AV_PROPITEM( AVKSPROPERTY_ALIGN_AUTOALIGNENABLED )
  955. };
  956. DEFINE_AV_KSPROPERTY_TABLE( psKey )
  957. {
  958. ADD_AV_PROPITEM( AVKSPROPERTY_KEY_MODE ),
  959. ADD_AV_PROPITEM_TYPE( AVKSPROPERTY_KEY_KEYCOLORS, AVKSPROPERTY_KEY )
  960. };
  961. DEFINE_AV_PROPITEM_RANGE( DoveAlphaMixing, 0, 63, 0 )
  962. DEFINE_AV_PROPITEM_RANGE( DoveFadingTime, 1, 8, 4 )
  963. DEFINE_AV_KSPROPERTY_TABLE( psDove )
  964. {
  965. ADD_AV_PROPITEM_READ( AVKSPROPERTY_DOVE_VERSION ),
  966. ADD_AV_PROPITEM( AVKSPROPERTY_DOVE_DAC ),
  967. ADD_AV_PROPITEM_RANGE_U( DoveAlphaMixing, AVKSPROPERTY_DOVE_ALPHAMIXING ),
  968. ADD_AV_PROPITEM_RANGE_U( DoveFadingTime, AVKSPROPERTY_DOVE_FADINGTIME ),
  969. ADD_AV_PROPITEM_WRITE( AVKSPROPERTY_DOVE_FADEIN ),
  970. ADD_AV_PROPITEM_WRITE( AVKSPROPERTY_DOVE_FADEOUT ),
  971. ADD_AV_PROPITEM_WRITE( AVKSPROPERTY_DOVE_AUTO )
  972. };
  973. DEFINE_AV_PROPITEM_RANGE( MiscSkewRise, 0, 15, 2 )
  974. DEFINE_AV_KSPROPERTY_TABLE( psMisc )
  975. {
  976. ADD_AV_PROPITEM( AVKSPROPERTY_MISC_NEGATIVE ),
  977. ADD_AV_PROPITEM_RANGE_U( MiscSkewRise, AVKSPROPERTY_MISC_SKEWRISE ),
  978. ADD_AV_PROPITEM( AVKSPROPERTY_MISC_FILTER )
  979. };
  980. DEFINE_KSPROPERTY_TABLE( psPin )
  981. {
  982. DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES( TRUE )
  983. };
  984. DEFINE_KSPROPERTY_SET_TABLE( psEncore )
  985. {
  986. DEFINE_KSPROPERTY_SET
  987. (
  988. &PROPSETID_VIDCAP_VIDEOPROCAMP,
  989. SIZEOF_ARRAY( psVideoProcAmp ),
  990. psVideoProcAmp,
  991. 0,
  992. NULL
  993. ),
  994. DEFINE_KSPROPERTY_SET
  995. (
  996. &KSPROPSETID_Pin,
  997. SIZEOF_ARRAY( psPin ),
  998. (PKSPROPERTY_ITEM)psPin,
  999. 0,
  1000. NULL
  1001. ),
  1002. DEFINE_KSPROPERTY_SET
  1003. (
  1004. &KSPROPSETID_CopyProt,
  1005. SIZEOF_ARRAY( psMacrovision ),
  1006. (PKSPROPERTY_ITEM)psMacrovision,
  1007. 0,
  1008. NULL
  1009. ),
  1010. DEFINE_AV_KSPROPERTY_SET( AVKSPROPSETID_Align, psAlign ),
  1011. DEFINE_AV_KSPROPERTY_SET( AVKSPROPSETID_Key, psKey ),
  1012. DEFINE_AV_KSPROPERTY_SET( AVKSPROPSETID_Dove, psDove ),
  1013. DEFINE_AV_KSPROPERTY_SET( AVKSPROPSETID_Misc, psMisc )
  1014. };
  1015. #endif // #ifdef ENCORE
  1016. // CC
  1017. static /* const */ KSPROPERTY_ITEM CCPropItm[] = {
  1018. {
  1019. KSPROPERTY_CONNECTION_ALLOCATORFRAMING, // support for setting CC buffer size
  1020. (PFNKSHANDLER) TRUE, // get supported
  1021. sizeof (KSPROPERTY),
  1022. sizeof (KSALLOCATOR_FRAMING),
  1023. (PFNKSHANDLER) FALSE, // we only provide the allocator requirments
  1024. NULL,
  1025. 0,
  1026. NULL,
  1027. NULL,
  1028. 0
  1029. },
  1030. {
  1031. KSPROPERTY_CONNECTION_STATE, // support for setting CC buffer size
  1032. (PFNKSHANDLER) TRUE, // get supported
  1033. sizeof (KSPROPERTY),
  1034. sizeof (KSSTATE),
  1035. (PFNKSHANDLER) FALSE, // we only provide the allocator requirments
  1036. NULL,
  1037. 0,
  1038. NULL,
  1039. NULL,
  1040. 0
  1041. }
  1042. };
  1043. static /* const */ KSPROPERTY_SET CCPropSet[] = {
  1044. &KSPROPSETID_Connection,
  1045. SIZEOF_ARRAY(CCPropItm),
  1046. (PKSPROPERTY_ITEM) CCPropItm
  1047. };
  1048. static const KSTOPOLOGY Topology =
  1049. {
  1050. 1,
  1051. (GUID*)&KSCATEGORY_DATADECOMPRESSOR,
  1052. 0,
  1053. NULL,
  1054. 0,
  1055. NULL
  1056. };
  1057. typedef struct tagALL_STREAM_INFO {
  1058. HW_STREAM_INFORMATION hwStreamInfo;
  1059. HW_STREAM_OBJECT hwStreamObject;
  1060. } ALL_STREAM_INFO, *PALL_STREAM_INFO;
  1061. static ALL_STREAM_INFO infoStreams[] =
  1062. {
  1063. { // Input MPEG2 video stream
  1064. { // HW_STREAM_INFORMATION
  1065. 1, // NumberOfPossibleInstances
  1066. KSPIN_DATAFLOW_IN, // DataFlow
  1067. TRUE, // DataAccessible
  1068. NUM_VIDEO_IN_FORMATS, // NumberOfFormatArrayEntries
  1069. ZivaVideoInFormatArray, // StreamFormatsArray
  1070. 0, 0, 0, 0, // ClassReserved
  1071. NUM_VIDEO_IN_PROPERTY_ITEMS, // NumStreamPropArrayEntries
  1072. (PKSPROPERTY_SET)mpegVidPropSet,// StreamPropertiesArray
  1073. 0, // NumStreamEventArrayEntries;
  1074. 0, // StreamEventsArray;
  1075. (GUID*)&GUID_NULL, // Category
  1076. (GUID*)&GUID_NULL, // Name
  1077. 0, // MediumsCount
  1078. NULL, // Mediums
  1079. FALSE // BridgeStream
  1080. },
  1081. { // HW_STREAM_OBJECT
  1082. sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket
  1083. ZivaVideo, // StreamNumber
  1084. 0, // HwStreamExtension
  1085. VideoReceiveDataPacket, // HwReceiveDataPacket
  1086. VideoReceiveCtrlPacket, // HwReceiveControlPacket
  1087. { NULL, 0 }, // HW_CLOCK_OBJECT
  1088. #ifndef EZDVD
  1089. TRUE, // Dma
  1090. TRUE, // Pio
  1091. #else
  1092. FALSE, // Dma
  1093. TRUE, // Pio
  1094. #endif
  1095. 0, // HwDeviceExtension
  1096. 0, // StreamHeaderMediaSpecific
  1097. 0, // StreamHeaderWorkspace
  1098. FALSE, // Allocator
  1099. NULL, // HwEventRoutine
  1100. { 0, 0 } // Reserved[2]
  1101. }
  1102. },
  1103. { // Input AC3 audio stream
  1104. { // HW_STREAM_INFORMATION
  1105. 1, // NumberOfPossibleInstances
  1106. KSPIN_DATAFLOW_IN, // DataFlow
  1107. TRUE, // DataAccessible
  1108. NUM_AUDIO_IN_FORMATS, // NumberOfFormatArrayEntries
  1109. ZivaAudioInFormatArray, // StreamFormatsArray
  1110. 0, 0, 0, 0, // ClassReserved
  1111. NUM_AUDIO_IN_PROPERTY_ITEMS, // NumStreamPropArrayEntries
  1112. (PKSPROPERTY_SET)audPropSet, // StreamPropertiesArray
  1113. SIZEOF_ARRAY( ClockEventSet ), // NumStreamEventArrayEntries;
  1114. ClockEventSet, // StreamEventsArray;
  1115. (GUID*)&GUID_NULL, // Category
  1116. (GUID*)&GUID_NULL, // Name
  1117. 0, // MediumsCount
  1118. NULL, // Mediums
  1119. FALSE // BridgeStream
  1120. },
  1121. { // HW_STREAM_OBJECT
  1122. sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket
  1123. ZivaAudio, // StreamNumber
  1124. 0, // HwStreamExtension
  1125. AudioReceiveDataPacket, // HwReceiveDataPacket
  1126. AudioReceiveCtrlPacket, // HwReceiveControlPacket
  1127. { // HW_CLOCK_OBJECT
  1128. AudioClockFunction,
  1129. CLOCK_SUPPORT_CAN_SET_ONBOARD_CLOCK |
  1130. CLOCK_SUPPORT_CAN_READ_ONBOARD_CLOCK |
  1131. CLOCK_SUPPORT_CAN_RETURN_STREAM_TIME
  1132. },
  1133. #ifndef EZDVD
  1134. TRUE, // Dma
  1135. TRUE, // Pio
  1136. #else
  1137. FALSE, // Dma
  1138. TRUE, // Pio
  1139. #endif
  1140. 0, // HwDeviceExtension
  1141. 0, // StreamHeaderMediaSpecific
  1142. 0, // StreamHeaderWorkspace
  1143. FALSE, // Allocator
  1144. AudioEventFunction, // HwEventRoutine
  1145. { 0, 0 } // Reserved[2]
  1146. }
  1147. },
  1148. { // Input subpicture stream
  1149. { // HW_STREAM_INFORMATION
  1150. 1, // NumberOfPossibleInstances
  1151. KSPIN_DATAFLOW_IN, // DataFlow
  1152. TRUE, // DataAccessible
  1153. NUM_SUBPICTURE_IN_FORMATS, // NumberOfFormatArrayEntries
  1154. ZivaSubPictureInFormatArray, // StreamFormatsArray
  1155. 0, 0, 0, 0, // ClassReserved
  1156. NUM_SUBPICTURE_IN_PROPERTY_ITEMS,//NumStreamPropArrayEntries
  1157. (PKSPROPERTY_SET)SPPropSet, // StreamPropertiesArray
  1158. 0, // NumStreamEventArrayEntries;
  1159. NULL, // StreamEventsArray;
  1160. (GUID*)&GUID_NULL, // Category
  1161. (GUID*)&GUID_NULL, // Name
  1162. 0, // MediumsCount
  1163. NULL, // Mediums
  1164. FALSE // BridgeStream
  1165. },
  1166. { // HW_STREAM_OBJECT
  1167. sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket
  1168. ZivaSubpicture, // StreamNumber
  1169. 0, // HwStreamExtension
  1170. SubpictureReceiveDataPacket, // HwReceiveDataPacket
  1171. SubpictureReceiveCtrlPacket, // HwReceiveControlPacket
  1172. { NULL, 0 }, // HW_CLOCK_OBJECT
  1173. #ifndef EZDVD
  1174. TRUE, // Dma
  1175. TRUE, // Pio
  1176. #else
  1177. FALSE, // Dma
  1178. TRUE, // Pio
  1179. #endif
  1180. 0, // HwDeviceExtension
  1181. 0, // StreamHeaderMediaSpecific
  1182. 0, // StreamHeaderWorkspace
  1183. FALSE, // Allocator
  1184. NULL, // HwEventRoutine
  1185. { 0, 0 } // Reserved[2]
  1186. }
  1187. },
  1188. #if defined(ENCORE)
  1189. { // Output analog video stream
  1190. { // HW_STREAM_INFORMATION
  1191. 2, // NumberOfPossibleInstances
  1192. KSPIN_DATAFLOW_OUT, // DataFlow
  1193. FALSE, // DataAccessible
  1194. NUM_VIDEO_OUT_FORMATS, // NumberOfFormatArrayEntries
  1195. ZivaVideoOutFormatArray, // StreamFormatsArray
  1196. 0, 0, 0, 0, // ClassReserved
  1197. NUM_VIDEO_OUT_PROPERTY_ITEMS, // NumStreamPropArrayEntries
  1198. (PKSPROPERTY_SET)VideoOutPropSet,//StreamPropertiesArray
  1199. 0, // NumStreamEventArrayEntries;
  1200. NULL, // StreamEventsArray;
  1201. (GUID*)&GUID_NULL, // Category
  1202. (GUID*)&GUID_NULL, // Name
  1203. 0, // MediumsCount
  1204. NULL, // Mediums
  1205. FALSE // BridgeStream
  1206. },
  1207. { // HW_STREAM_OBJECT
  1208. sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket
  1209. ZivaAnalog, // StreamNumber
  1210. 0, // HwStreamExtension
  1211. AnalogReceiveDataPacket, // HwReceiveDataPacket
  1212. AnalogReceiveCtrlPacket, // HwReceiveControlPacket
  1213. { NULL, 0 }, // HW_CLOCK_OBJECT
  1214. TRUE, // Dma
  1215. FALSE, // Pio
  1216. 0, // HwDeviceExtension
  1217. sizeof( KS_FRAME_INFO ), // StreamHeaderMediaSpecific
  1218. 0, // StreamHeaderWorkspace
  1219. FALSE, // Allocator
  1220. NULL, // HwEventRoutine
  1221. { 0, 0 } // Reserved[2]
  1222. }
  1223. }
  1224. #elif defined(DECODER_DVDPC) || defined(EZDVD)
  1225. { // Output VPE video stream
  1226. { // HW_STREAM_INFORMATION
  1227. 1, // NumberOfPossibleInstances
  1228. KSPIN_DATAFLOW_OUT, // DataFlow
  1229. TRUE, // DataAccessible
  1230. NUM_VIDEO_OUT_FORMATS, // NumberOfFormatArrayEntries
  1231. ZivaVideoOutFormatArray, // StreamFormatsArray
  1232. 0, 0, 0, 0, // ClassReserved
  1233. 1, // NumStreamPropArrayEntries
  1234. (PKSPROPERTY_SET)VideoPortPropSet,//StreamPropertiesArray
  1235. SIZEOF_ARRAY( VPEventSet ), // NumStreamEventArrayEntries;
  1236. VPEventSet, // StreamEventsArray;
  1237. (GUID*)&GUID_NULL, // Category
  1238. (GUID*)&GUID_NULL, // Name
  1239. 1, // MediumsCount
  1240. &VPMedium, // Mediums
  1241. FALSE // BridgeStream
  1242. },
  1243. { // HW_STREAM_OBJECT
  1244. sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket
  1245. ZivaYUV, // StreamNumber
  1246. 0, // HwStreamExtension
  1247. VpeReceiveDataPacket, // HwReceiveDataPacket
  1248. VpeReceiveCtrlPacket, // HwReceiveControlPacket
  1249. { NULL, 0 }, // HW_CLOCK_OBJECT
  1250. FALSE, // Dma
  1251. TRUE, // Pio
  1252. 0, // HwDeviceExtension
  1253. 0, // StreamHeaderMediaSpecific
  1254. 0, // StreamHeaderWorkspace
  1255. FALSE, // Allocator
  1256. NULL, // HwEventRoutine
  1257. { 0, 0 } // Reserved[2]
  1258. }
  1259. }
  1260. #endif
  1261. #ifndef OVATION
  1262. ,
  1263. { // Output CC
  1264. { // HW_STREAM_INFORMATION
  1265. 1, // NumberOfPossibleInstances
  1266. KSPIN_DATAFLOW_OUT, // DataFlow
  1267. TRUE, // DataAccessible
  1268. NUM_CC_OUT_FORMATS, // NumberOfFormatArrayEntries
  1269. CCInfo, // StreamFormatsArray
  1270. 0, 0, 0, 0, // ClassReserved
  1271. 1, // NumStreamPropArrayEntries
  1272. (PKSPROPERTY_SET)CCPropSet, // StreamPropertiesArray
  1273. 0, // NumStreamEventArrayEntries;
  1274. 0, // StreamEventsArray;
  1275. (GUID*)&GUID_NULL, // Category
  1276. (GUID*)&GUID_NULL, // Name
  1277. 0, // MediumsCount
  1278. NULL, // Mediums
  1279. FALSE // BridgeStream
  1280. },
  1281. { // HW_STREAM_OBJECT
  1282. sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket
  1283. ZivaCCOut, // StreamNumber
  1284. 0, // HwStreamExtension
  1285. CCReceiveDataPacket, // HwReceiveDataPacket
  1286. CCReceiveCtrlPacket, // HwReceiveControlPacket
  1287. { NULL, 0 }, // HW_CLOCK_OBJECT
  1288. FALSE, // Dma
  1289. TRUE, // Pio
  1290. 0, // HwDeviceExtension
  1291. 0, // StreamHeaderMediaSpecific
  1292. 0, // StreamHeaderWorkspace
  1293. FALSE, // Allocator
  1294. NULL, // HwEventRoutine
  1295. { 0, 0 } // Reserved[2]
  1296. }
  1297. }
  1298. #endif
  1299. };
  1300. #endif // _ZIVAGUID_H_