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.

633 lines
20 KiB

  1. //---------------------------------------------------------------------
  2. //
  3. // Copyright (c) 1999 Microsoft Corporation
  4. //
  5. // BDATIF.idl
  6. //
  7. //---------------------------------------------------------------------
  8. cpp_quote("//+-------------------------------------------------------------------------")
  9. cpp_quote("//")
  10. cpp_quote("// Microsoft Windows")
  11. cpp_quote("// Copyright (C) Microsoft Corporation, 1999.")
  12. cpp_quote("//")
  13. cpp_quote("//--------------------------------------------------------------------------")
  14. cpp_quote("#if ( _MSC_VER >= 800 )")
  15. cpp_quote("#pragma warning(disable:4201) /* Nameless struct/union */")
  16. cpp_quote("#endif")
  17. cpp_quote("#if ( _MSC_VER >= 1020 )")
  18. cpp_quote("#pragma once")
  19. cpp_quote("#endif")
  20. //---------------------------------------------------------------------
  21. // IUnknown import idl
  22. //---------------------------------------------------------------------
  23. #ifndef DO_NO_IMPORTS
  24. import "unknwn.idl";
  25. import "strmif.idl";
  26. import "tuner.idl";
  27. #endif
  28. interface IMPEG2_TIF_CONTROL;
  29. interface IATSCChannelInfo;
  30. //******************************************************************************
  31. //
  32. // IMPEG2_TIF_CONTROL interface
  33. //
  34. // Implemented by the Microsoft ATSC/DVB BDA Network Provider
  35. //
  36. // Used by a transport information filter (TIF) to request table
  37. // sections carried on specific PIDs within the transport stream.
  38. // The Network Provider Filter will, in turn, do the necessary
  39. // control on the Demux Filter. All sections are delivered as comlete
  40. // mpeg2 table sections via the TIF's connection to the Demux Filter.
  41. //
  42. [
  43. object,
  44. uuid(F9BAC2F9-4149-4916-B2EF-FAA202326862),
  45. helpstring("BDA Network Provider Inteface for DVB/ATSC Transport Information Filters"),
  46. pointer_default(unique)
  47. ]
  48. interface IMPEG2_TIF_CONTROL : IUnknown
  49. {
  50. [helpstring("Used to register a transport analyzer with the Network Provider")]
  51. HRESULT
  52. RegisterTIF (
  53. [in] IUnknown * pUnkTIF,
  54. [in, out] ULONG * ppvRegistrationContext
  55. );
  56. [helpstring("Used to unregister TIF with the Network Provider")]
  57. HRESULT
  58. UnregisterTIF (
  59. [in] ULONG pvRegistrationContext
  60. );
  61. [helpstring("Used to add PSI/SI MPEG2 packet IDs to the TIF's data stream")]
  62. HRESULT
  63. AddPIDs (
  64. [in] ULONG ulcPIDs,
  65. [in] ULONG * pulPIDs
  66. );
  67. [helpstring("Used to remove PSI/SI MPEG2 packet IDs from the TIF's data stream")]
  68. HRESULT
  69. DeletePIDs (
  70. [in] ULONG ulcPIDs,
  71. [in] ULONG * pulPIDs
  72. );
  73. [helpstring("Returns the number of MPEG2 Packet IDs being filtered into the TIF's input data.")]
  74. HRESULT
  75. GetPIDCount (
  76. [out] ULONG * pulcPIDs
  77. );
  78. [helpstring("Returns the the list of MPEG2 Packet IDs being filtered into the TIF's input data.")]
  79. HRESULT
  80. GetPIDs (
  81. [out] ULONG * pulcPIDs,
  82. [out] ULONG * pulPIDs
  83. );
  84. }
  85. //******************************************************************************
  86. //
  87. // ITuneRequestInfo interface
  88. //
  89. // Implemented by a BDA transport information filter (TIF)
  90. //
  91. // Used by the BDA Network Provider to obtain network specific
  92. // information about locating transport streams and aquiring
  93. // services.
  94. //
  95. //
  96. // GetLocatorData -
  97. //
  98. // GetComponentData -
  99. //
  100. // CreateComponentList -
  101. //
  102. // GetNextService -
  103. //
  104. // GetPreviouService -
  105. //
  106. // GetNextLocator -
  107. //
  108. // GetPreviousLocator -
  109. //
  110. [
  111. object,
  112. uuid(A3B152DF-7A90-4218-AC54-9830BEE8C0B6),
  113. helpstring("Interface provided by the Mpeg2 Transport Information Filter to supply tuning details."),
  114. pointer_default(unique)
  115. ]
  116. interface ITuneRequestInfo : IUnknown
  117. {
  118. [helpstring("TIF fills in channel/program locator information for the given tune request.")]
  119. HRESULT
  120. GetLocatorData (
  121. [in] ITuneRequest *Request
  122. );
  123. [helpstring("TIF fills in all network specific component data for the existing component list on the given tune request.")]
  124. HRESULT
  125. GetComponentData (
  126. [in] ITuneRequest *CurrentRequest
  127. );
  128. [helpstring("TIF creates a complete component list and fills in all network specific component data on the given tune request")]
  129. HRESULT
  130. CreateComponentList (
  131. [in] ITuneRequest *CurrentRequest
  132. );
  133. [helpstring("TIF creates a new TuneRequest with channel/program locator information for the next service.")]
  134. HRESULT
  135. GetNextProgram (
  136. [in] ITuneRequest *CurrentRequest,
  137. [out, retval] ITuneRequest **TuneRequest
  138. );
  139. [helpstring("TIF creates a new TuneRequest with channel/program locator information for the previous service.")]
  140. HRESULT
  141. GetPreviousProgram (
  142. [in] ITuneRequest *CurrentRequest,
  143. [out, retval] ITuneRequest **TuneRequest
  144. );
  145. [helpstring("TIF creates a new TuneRequest with locator information for the next transport stream.")]
  146. HRESULT
  147. GetNextLocator (
  148. [in] ITuneRequest *CurrentRequest,
  149. [out, retval] ITuneRequest **TuneRequest
  150. );
  151. [helpstring("TIF creates a new TuneRequest with locator information for the previous transport stream.")]
  152. HRESULT
  153. GetPreviousLocator (
  154. [in] ITuneRequest *CurrentRequest,
  155. [out, retval] ITuneRequest **TuneRequest
  156. );
  157. }
  158. //******************************************************************************
  159. //
  160. // IGuideDataEvent
  161. //
  162. // This is the guide data event notification callback interface. The
  163. // callback interface is registered on a transport analyzer's
  164. // IConnectionPoint by the event consumer.
  165. //
  166. // The event consumer MUST NOT BLOCK THE CALLING THREAD.
  167. //
  168. // If the consumer requires additional information about the event, it
  169. // should queue the event to a separate thread.
  170. //
  171. // {EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7}
  172. //
  173. [
  174. object,
  175. uuid(EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7),
  176. helpstring("Consumers of a guide data events must implement this callback interface."),
  177. pointer_default(unique)
  178. ]
  179. interface IGuideDataEvent : IUnknown
  180. {
  181. // Indicates that a complete set of guide data has been acquire from
  182. // the current transport stream.
  183. //
  184. // MANDATORY - If a transport analyzer supports IGuideDataEvent then
  185. // it must supply this event.
  186. //
  187. HRESULT GuideDataAcquired(
  188. );
  189. // Indicates that information about one or more programs changed.
  190. //
  191. // If varProgramDescriptionID is NULL then the consumer
  192. // must get properties for all programs to determine which ones
  193. // changed.
  194. //
  195. // MANDATORY - If a transport analyzer supports IGuideDataEvent then
  196. // it must supply this event.
  197. //
  198. HRESULT ProgramChanged(
  199. [in] VARIANT varProgramDescriptionID
  200. );
  201. // Indicates that information about one or more services changed.
  202. //
  203. // If varServiceDescriptionID is NULL then the consumer
  204. // must get properties for all services to determine which ones
  205. // changed.
  206. //
  207. // MANDATORY - If a transport analyzer supports IGuideDataEvent then
  208. // it must supply this event.
  209. //
  210. HRESULT ServiceChanged(
  211. [in] VARIANT varServiceDescriptionID
  212. );
  213. // Indicates that information about one or more schedule entries
  214. // changed.
  215. //
  216. // If varScheduleEntryDescriptionID is NULL then the consumer
  217. // must get properties for all schedule entries to determine which ones
  218. // changed.
  219. //
  220. // MANDATORY - If a transport analyzer supports IGuideDataEvent then
  221. // it must supply this event.
  222. //
  223. HRESULT ScheduleEntryChanged(
  224. [in] VARIANT varScheduleEntryDescriptionID
  225. );
  226. // Indicates that the program with the given Description.ID
  227. // has been deleted.
  228. //
  229. //
  230. // Optional - Transport analyzer may supply this event. Consumer
  231. // may return E_NOTIMPL.
  232. //
  233. HRESULT ProgramDeleted(
  234. [in] VARIANT varProgramDescriptionID
  235. );
  236. // Indicates that the service with the given Description.ID
  237. // has been deleted.
  238. //
  239. //
  240. // Optional - Transport analyzer may supply this event. Consumer
  241. // may return E_NOTIMPL.
  242. //
  243. HRESULT ServiceDeleted(
  244. [in] VARIANT varServiceDescriptionID
  245. );
  246. // Indicates that the schedule entry with the given Description.ID
  247. // has been deleted.
  248. //
  249. //
  250. // Optional - Transport analyzer may supply this event. Consumer
  251. // may return E_NOTIMPL.
  252. //
  253. HRESULT ScheduleDeleted(
  254. [in] VARIANT varScheduleEntryDescriptionID
  255. );
  256. }
  257. //******************************************************************************
  258. //
  259. // IGuideDataPropery
  260. //
  261. // {88EC5E58-BB73-41d6-99CE-66C524B8B591}
  262. //
  263. [
  264. object,
  265. uuid(88EC5E58-BB73-41d6-99CE-66C524B8B591),
  266. helpstring("Interface provided by a transport analyzer to represent a guide data property."),
  267. pointer_default(unique)
  268. ]
  269. interface IGuideDataProperty : IUnknown
  270. {
  271. [propget] HRESULT Name([out] BSTR *pbstrName);
  272. [propget] HRESULT Language([out] long *idLang);
  273. [propget] HRESULT Value([out] VARIANT *pvar);
  274. }
  275. //******************************************************************************
  276. //
  277. // IEnumGuideDataProperties
  278. //
  279. // {AE44423B-4571-475c-AD2C-F40A771D80EF}
  280. //
  281. [
  282. object,
  283. uuid(AE44423B-4571-475c-AD2C-F40A771D80EF),
  284. helpstring("Interface provided by a transport analyzer to enumerate guide data properties."),
  285. pointer_default(unique)
  286. ]
  287. interface IEnumGuideDataProperties : IUnknown
  288. {
  289. HRESULT Next([in] unsigned long celt, [out] IGuideDataProperty **ppprop, [out] unsigned long *pcelt);
  290. HRESULT Skip([in] unsigned long celt);
  291. HRESULT Reset();
  292. HRESULT Clone([out] IEnumGuideDataProperties **ppenum);
  293. }
  294. //******************************************************************************
  295. //
  296. // IEnumTuneRequests
  297. //
  298. // {1993299C-CED6-4788-87A3-420067DCE0C7}
  299. //
  300. [
  301. object,
  302. uuid(1993299C-CED6-4788-87A3-420067DCE0C7),
  303. helpstring("Interface provided by a transport analyzer to enumerate service tune requests ."),
  304. pointer_default(unique)
  305. ]
  306. interface IEnumTuneRequests : IUnknown
  307. {
  308. HRESULT Next([in] unsigned long celt, [out] ITuneRequest **ppprop, [out] unsigned long *pcelt);
  309. HRESULT Skip([in] unsigned long celt);
  310. HRESULT Reset();
  311. HRESULT Clone([out] IEnumTuneRequests **ppenum);
  312. }
  313. //******************************************************************************
  314. //
  315. // IGuideData
  316. //
  317. // {61571138-5B01-43cd-AEAF-60B784A0BF93}
  318. //
  319. [
  320. object,
  321. uuid(61571138-5B01-43cd-AEAF-60B784A0BF93),
  322. helpstring("Interface provided by a transport analyzer to supply guide data information."),
  323. pointer_default(unique)
  324. ]
  325. interface IGuideData : IUnknown
  326. {
  327. //-------------------------------------------------------------------------
  328. //
  329. // GetServices
  330. // Returns an enumeration of tune requests for all services whose
  331. // information is found in the current transport stream.
  332. //
  333. // Parameters
  334. //
  335. // IEnumTuneRequests **
  336. // Location in which a reference to the resulting
  337. // IEnumTuneRequests is placed. The caller must release
  338. // this reference when finished with it.
  339. //
  340. // Comments
  341. // This call is used to enumerate all services whose information
  342. // can be found in the service descriptor table. Each tune request
  343. // in the IEnumTuneRequest * contains the tune request including the
  344. // locator data for the service.
  345. //
  346. [helpstring("Returns an enumeration of services whose information is found in the given transport stream")]
  347. HRESULT
  348. GetServices (
  349. [out, retval] IEnumTuneRequests ** ppEnumTuneRequests
  350. );
  351. //-------------------------------------------------------------------------
  352. //
  353. // GetServiceProperties
  354. // Returns an enumeration of all guide data properties for
  355. // the service with the given Description.ID.
  356. //
  357. // Parameters
  358. // ITuneRequest *
  359. // Pointer to a tune request that contains information needed
  360. // to indentify the requested transport stream.
  361. // A NULL ITuneRequest * indicates that information about the
  362. // current transport stream is requested.
  363. //
  364. // IEnumGuideDataProperties **
  365. // Location in which a reference to the resulting
  366. // IEnumGuideDataProperties is placed. The caller must release
  367. // this reference when finished with it.
  368. //
  369. // Required Properties
  370. // The following properties MUST be included in the returned
  371. // property enumeration.
  372. //
  373. // Description.ID
  374. // Uniquely identifies a service.
  375. //
  376. // Description.Name
  377. // The default name to use for this service in the channel lineup.
  378. //
  379. // Description.Version
  380. // Identifies the current version of the properties associated
  381. // with this service.
  382. //
  383. // Provider.Name
  384. // Name of the service provider (e.g. "KCTS")
  385. //
  386. // Provider.NetworkName
  387. // Name of the network on which the service is provided.
  388. // (e.g. "PBS")
  389. //
  390. // Service.TuneRequest
  391. // Contains a tune request in the variant
  392. //
  393. //
  394. [helpstring("Returns an enumeration of all guide data properties for the service specified by a tune request.")]
  395. HRESULT
  396. GetServiceProperties (
  397. [in] ITuneRequest * pTuneRequest,
  398. [out, retval] IEnumGuideDataProperties ** ppEnumProperties
  399. );
  400. //-------------------------------------------------------------------------
  401. //
  402. // GetProgramIDs
  403. // Returns an enumeration of the unique identifiers (Description.ID)
  404. // of programs with description contained in all transport
  405. // streams
  406. //
  407. // Parameters
  408. //
  409. // IEnumVARIANT **
  410. // Location in which a reference to the resulting
  411. // IEnumVARIANT is placed. The caller must release
  412. // this reference when finished with it.
  413. //
  414. // Comments
  415. // This call is used to get a list of programs that have
  416. // guide data properties in all transport streams.
  417. // Each variant returned in the IEnumVARIANT * contains the
  418. // unique Description.ID property for a program.
  419. // Note that more than on transport stream may contain properties
  420. // for the same program. In this case the properties should be
  421. // merged.
  422. //
  423. [helpstring("Returns an enumeration of the Description.ID property for all programs on the given transport stream.")]
  424. HRESULT
  425. GetGuideProgramIDs (
  426. [out, retval] IEnumVARIANT ** pEnumPrograms
  427. );
  428. //-------------------------------------------------------------------------
  429. //
  430. // GetProgramProperties
  431. // Returns an enumeration of all guide data properties for
  432. // the program with the given Description.ID.
  433. //
  434. // Parameters
  435. // varProgramDescriptionID
  436. // Variant containing the unique identifier for the program
  437. // for which properties are requested.
  438. //
  439. // IEnumGuideDataProperties **
  440. // Location in which a reference to the resulting
  441. // IEnumGuideDataProperties is placed. The caller must release
  442. // this reference when finished with it.
  443. //
  444. // Required Properties
  445. // The following properties MUST be included in the returned
  446. // property enumeration.
  447. //
  448. // Description.ID
  449. // Uniquely identifies a program.
  450. //
  451. // Description.Version
  452. // Identifies the current version of the properties associated
  453. // with this program.
  454. //
  455. // Description.Title
  456. // Human readable title of the program (e.g. "")
  457. //
  458. // Description.Long
  459. // A description of the program.
  460. //
  461. [helpstring("Returns an enumeration of all guide data properties for the program with the given Description.ID.")]
  462. HRESULT
  463. GetProgramProperties (
  464. [in] VARIANT varProgramDescriptionID,
  465. [out, retval] IEnumGuideDataProperties ** ppEnumProperties
  466. );
  467. //-------------------------------------------------------------------------
  468. //
  469. // GetScheduleIDs
  470. // Returns an enumeration of the unique identifiers (Description.ID)
  471. // transport of schedule entries with description contained in the
  472. // given transport stream.
  473. //
  474. // Parameters
  475. //
  476. // IEnumVARIANT **
  477. // Location in which a reference to the resulting
  478. // IEnumVARIANT is placed. The caller must release
  479. // this reference when finished with it.
  480. //
  481. // Comments
  482. // This call is used to get a list of schedule entries that have
  483. // guide data properties in all transport streams.
  484. // Each variant returned in the IEnumVARIANT * contains the
  485. // unique Description.ID property for a schedule entry.
  486. // Note that more than on transport stream may contain properties
  487. // for the same schedule entry. In this case the properties
  488. // should be merged.
  489. //
  490. [helpstring("Returns an enumeration of the Description.ID property for all schedule entries in the transport stream specified by a tune request.")]
  491. HRESULT
  492. GetScheduleEntryIDs (
  493. [out, retval] IEnumVARIANT ** pEnumScheduleEntries
  494. );
  495. //-------------------------------------------------------------------------
  496. //
  497. // GetScheduleEntryProperties
  498. // Returns an enumeration of all guide data properties for
  499. // the schedule entry with the given Description.ID.
  500. //
  501. // Parameters
  502. // varScheduleEntryDescriptionID
  503. // Variant containing the unique identifier for the schedule
  504. // entry for which properties are requested.
  505. //
  506. // IEnumGuideDataProperties **
  507. // Location in which a reference to the resulting
  508. // IEnumGuideDataProperties is placed. The caller must release
  509. // this reference when finished with it.
  510. //
  511. // Required Properties
  512. // The following properties MUST be included in the returned
  513. // property enumeration.
  514. //
  515. // Description.ID
  516. // Uniquely identifies a schedule entry.
  517. //
  518. // Description.Version
  519. // Identifies the current version of the properties associated
  520. // with this program.
  521. //
  522. // Time.Start
  523. // The starting time and date of this schedule entry.
  524. //
  525. // Time.End
  526. // The ending time and date of this schedule entry.
  527. //
  528. // Schedule.Program
  529. // The Description.ID of the program that will play at the
  530. // time specified by this schedule entry.
  531. //
  532. // Schedule.Service
  533. // The Description.ID of the Service that carries the
  534. // program that will play at the time specified by this
  535. // schedule entry.
  536. //
  537. [helpstring("Returns an enumeration of all guide data properties for the schedule entry with the given Description.ID.")]
  538. HRESULT
  539. GetScheduleEntryProperties (
  540. [in] VARIANT varScheduleEntryDescriptionID,
  541. [out, retval] IEnumGuideDataProperties ** ppEnumProperties
  542. );
  543. }
  544. //******************************************************************************
  545. //
  546. // IGuideDataLoader
  547. //
  548. // All Guide Data Loaders MUST implement this interface. It is how they are
  549. // provided with the IGuideData interface that they will use.
  550. //
  551. // {4764ff7c-fa95-4525-af4d-d32236db9e38}
  552. [
  553. object,
  554. uuid(4764ff7c-fa95-4525-af4d-d32236db9e38),
  555. helpstring("IGuideDataLoader Interface"),
  556. pointer_default(unique)
  557. ]
  558. interface IGuideDataLoader : IUnknown
  559. {
  560. HRESULT Init([in] IGuideData *pGuideStore);
  561. HRESULT Terminate();
  562. };
  563. [
  564. uuid(8224A083-7F8C-432D-B83E-3C5E9BDE3528),
  565. version(1.0),
  566. helpstring("psisload 1.0 Type Library")
  567. ]
  568. library PSISLOADLib
  569. {
  570. importlib("stdole32.tlb");
  571. importlib("stdole2.tlb");
  572. [
  573. uuid(14EB8748-1753-4393-95AE-4F7E7A87AAD6),
  574. helpstring("TIFLoad Class")
  575. ]
  576. coclass TIFLoad
  577. {
  578. interface IGuideDataLoader;
  579. interface IGuideDataEvent;
  580. };
  581. };