bdatif.idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:21k
源码类别:

模拟服务器

开发平台:

C/C++

  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. //
  161. //  IGuideDataEvent
  162. //
  163. //  This is the guide data event notification callback interface.  The
  164. //  callback interface is registered on a transport analyzer's
  165. //  IConnectionPoint by the event consumer.
  166. //
  167. //  The event consumer MUST NOT BLOCK THE CALLING THREAD.
  168. //
  169. //  If the consumer requires additional information about the event, it
  170. //  should queue the event to a separate thread.    
  171. //
  172. // {EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7}
  173. //
  174. [
  175.     object,
  176.     uuid(EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7),
  177.     helpstring("Consumers of a guide data events must implement this callback interface."),
  178.     pointer_default(unique)
  179. ]
  180. interface IGuideDataEvent : IUnknown
  181. {
  182.     //  Indicates that a complete set of guide data has been acquire from
  183.     //  the current transport stream.
  184.     //
  185.     //  MANDATORY - If a transport analyzer supports IGuideDataEvent then
  186.     //              it must supply this event.
  187.     //
  188.     HRESULT GuideDataAcquired(
  189.         );
  190.         
  191.     //  Indicates that information about one or more programs changed.
  192.     //
  193.     //  If varProgramDescriptionID is NULL then the consumer
  194.     //  must get properties for all programs to determine which ones
  195.     //  changed.
  196.     //
  197.     //  MANDATORY - If a transport analyzer supports IGuideDataEvent then
  198.     //              it must supply this event.
  199.     //
  200.     HRESULT ProgramChanged(
  201.         [in] VARIANT    varProgramDescriptionID
  202.         );
  203.         
  204.     //  Indicates that information about one or more services changed.
  205.     //
  206.     //  If varServiceDescriptionID is NULL then the consumer
  207.     //  must get properties for all services to determine which ones
  208.     //  changed.
  209.     //
  210.     //  MANDATORY - If a transport analyzer supports IGuideDataEvent then
  211.     //              it must supply this event.
  212.     //
  213.     HRESULT ServiceChanged(
  214.         [in] VARIANT    varServiceDescriptionID
  215.         );
  216.         
  217.     //  Indicates that information about one or more schedule entries
  218.     //  changed.
  219.     //
  220.     //  If varScheduleEntryDescriptionID is NULL then the consumer
  221.     //  must get properties for all schedule entries to determine which ones
  222.     //  changed.
  223.     //
  224.     //  MANDATORY - If a transport analyzer supports IGuideDataEvent then
  225.     //              it must supply this event.
  226.     //
  227.     HRESULT ScheduleEntryChanged(
  228.         [in] VARIANT    varScheduleEntryDescriptionID
  229.         );
  230.         
  231.     //  Indicates that the program with the given Description.ID
  232.     //  has been deleted.
  233.     //  
  234.     //
  235.     //  Optional - Transport analyzer may supply this event.  Consumer
  236.     //             may return E_NOTIMPL.   
  237.     //
  238.     HRESULT ProgramDeleted(
  239.         [in] VARIANT    varProgramDescriptionID
  240.         );
  241.         
  242.     //  Indicates that the service with the given Description.ID
  243.     //  has been deleted.
  244.     //  
  245.     //
  246.     //  Optional - Transport analyzer may supply this event.  Consumer
  247.     //             may return E_NOTIMPL.   
  248.     //
  249.     HRESULT ServiceDeleted(
  250.         [in] VARIANT    varServiceDescriptionID
  251.         );
  252.         
  253.         
  254.     //  Indicates that the schedule entry with the given Description.ID
  255.     //  has been deleted.
  256.     //  
  257.     //
  258.     //  Optional - Transport analyzer may supply this event.  Consumer
  259.     //             may return E_NOTIMPL.   
  260.     //
  261.     HRESULT ScheduleDeleted(
  262.         [in] VARIANT    varScheduleEntryDescriptionID
  263.         );
  264. }
  265.     
  266. //******************************************************************************
  267. //
  268. //  IGuideDataPropery
  269. //
  270. // {88EC5E58-BB73-41d6-99CE-66C524B8B591}
  271. //
  272. [
  273.     object,
  274.     uuid(88EC5E58-BB73-41d6-99CE-66C524B8B591),
  275.     helpstring("Interface provided by a transport analyzer to represent a guide data property."),
  276.     pointer_default(unique)
  277. ]
  278. interface IGuideDataProperty : IUnknown
  279. {
  280.     [propget] HRESULT Name([out] BSTR *pbstrName);
  281.     [propget] HRESULT Language([out] long *idLang);
  282.     [propget] HRESULT Value([out] VARIANT *pvar);
  283. }
  284. //******************************************************************************
  285. //
  286. //  IEnumGuideDataProperties
  287. //
  288. // {AE44423B-4571-475c-AD2C-F40A771D80EF}
  289. //
  290. [
  291.     object,
  292.     uuid(AE44423B-4571-475c-AD2C-F40A771D80EF),
  293.     helpstring("Interface provided by a transport analyzer to enumerate guide data properties."),
  294.     pointer_default(unique)
  295. ]
  296. interface IEnumGuideDataProperties : IUnknown
  297. {
  298.     HRESULT Next([in] unsigned long celt, [out] IGuideDataProperty **ppprop, [out] unsigned long *pcelt);
  299.     HRESULT Skip([in] unsigned long celt);
  300.     HRESULT Reset();
  301.     HRESULT Clone([out] IEnumGuideDataProperties **ppenum);
  302. }
  303. //******************************************************************************
  304. //
  305. //  IEnumTuneRequests
  306. //
  307. // {1993299C-CED6-4788-87A3-420067DCE0C7}
  308. //
  309. [
  310.     object,
  311.     uuid(1993299C-CED6-4788-87A3-420067DCE0C7),
  312.     helpstring("Interface provided by a transport analyzer to enumerate service tune requests ."),
  313.     pointer_default(unique)
  314. ]
  315. interface IEnumTuneRequests : IUnknown
  316. {
  317.     HRESULT Next([in] unsigned long celt, [out] ITuneRequest **ppprop, [out] unsigned long *pcelt);
  318.     HRESULT Skip([in] unsigned long celt);
  319.     HRESULT Reset();
  320.     HRESULT Clone([out] IEnumTuneRequests **ppenum);
  321. }
  322. //******************************************************************************
  323. //
  324. //  IGuideData
  325. //
  326. // {61571138-5B01-43cd-AEAF-60B784A0BF93}
  327. //
  328. [
  329.     object,
  330.     uuid(61571138-5B01-43cd-AEAF-60B784A0BF93),
  331.     helpstring("Interface provided by a transport analyzer to supply guide data information."),
  332.     pointer_default(unique)
  333. ]
  334. interface IGuideData : IUnknown
  335. {
  336.     //-------------------------------------------------------------------------
  337.     //
  338.     //  GetServices
  339.     //      Returns an enumeration of tune requests for all services whose
  340. // information is found in the current transport stream.
  341.     //
  342.     //  Parameters
  343.     //
  344.     //      IEnumTuneRequests **
  345.     //          Location in which a reference to the resulting
  346.     //          IEnumTuneRequests is placed.  The caller must release
  347.     //          this reference when finished with it.
  348.     //
  349.     //  Comments
  350.     //      This call is used to enumerate all services whose information
  351. // can be found in the service descriptor table. Each tune request
  352. // in the IEnumTuneRequest * contains the tune request including the
  353. // locator data for the service.
  354.     // 
  355.     [helpstring("Returns an enumeration of services whose information is found in the given transport stream")]
  356.     HRESULT
  357.     GetServices (
  358.         [out, retval]  IEnumTuneRequests **      ppEnumTuneRequests
  359.         );
  360.     //-------------------------------------------------------------------------
  361.     //
  362.     //  GetServiceProperties
  363.     //      Returns an enumeration of all guide data properties for
  364.     //      the service with the given Description.ID.
  365.     //
  366.     //  Parameters
  367.     //      ITuneRequest *  
  368.     //          Pointer to a tune request that contains information needed
  369.     //          to indentify the requested transport stream.
  370.     //          A NULL ITuneRequest * indicates that information about the
  371.     //          current transport stream is requested.
  372.     //
  373.     //      IEnumGuideDataProperties **
  374.     //          Location in which a reference to the resulting
  375.     //          IEnumGuideDataProperties is placed.  The caller must release
  376.     //          this reference when finished with it.
  377.     //
  378.     //  Required Properties
  379.     //      The following properties MUST be included in the returned
  380.     //      property enumeration.
  381.     //
  382.     //      Description.ID
  383.     //          Uniquely identifies a service.
  384.     //
  385.     //      Description.Name
  386.     //          The default name to use for this service in the channel lineup.
  387.     //
  388.     //      Description.Version
  389.     //          Identifies the current version of the properties associated
  390.     //          with this service.
  391.     //
  392.     //      Provider.Name
  393.     //          Name of the service provider (e.g. "KCTS")
  394.     //
  395.     //      Provider.NetworkName
  396.     //          Name of the network on which the service is provided.
  397.     //          (e.g. "PBS")
  398.     //
  399.     //      Service.TuneRequest
  400.     //          Contains a tune request in the variant
  401.     //
  402.     // 
  403.     [helpstring("Returns an enumeration of all guide data properties for the service specified by a tune request.")]
  404.     HRESULT
  405.     GetServiceProperties (
  406.         [in]           ITuneRequest *               pTuneRequest,
  407.         [out, retval]  IEnumGuideDataProperties **  ppEnumProperties
  408.         );
  409.     //-------------------------------------------------------------------------
  410.     //
  411.     //  GetProgramIDs
  412.     //      Returns an enumeration of the unique identifiers (Description.ID)
  413.     //      of programs with description contained in all transport
  414.     //      streams
  415.     //
  416.     //  Parameters
  417.     //
  418.     //      IEnumVARIANT **
  419.     //          Location in which a reference to the resulting
  420.     //          IEnumVARIANT is placed.  The caller must release
  421.     //          this reference when finished with it.
  422.     //
  423.     //  Comments
  424.     //      This call is used to get a list of programs that have
  425.     //      guide data properties in all transport streams.
  426.     //      Each variant returned in the IEnumVARIANT * contains the
  427.     //      unique Description.ID property for a program.
  428.     //      Note that more than on transport stream may contain properties
  429.     //      for the same program.  In this case the properties should be
  430.     //      merged. 
  431.     // 
  432.     [helpstring("Returns an enumeration of the Description.ID property for all programs on the given transport stream.")]
  433.     HRESULT
  434.     GetGuideProgramIDs (
  435.         [out, retval]  IEnumVARIANT **      pEnumPrograms
  436.         );
  437.     //-------------------------------------------------------------------------
  438.     //
  439.     //  GetProgramProperties
  440.     //      Returns an enumeration of all guide data properties for
  441.     //      the program with the given Description.ID.
  442.     //
  443.     //  Parameters
  444.     //      varProgramDescriptionID 
  445.     //          Variant containing the unique identifier for the program
  446.     //          for which properties are requested.
  447.     //
  448.     //      IEnumGuideDataProperties **
  449.     //          Location in which a reference to the resulting
  450.     //          IEnumGuideDataProperties is placed.  The caller must release
  451.     //          this reference when finished with it.
  452.     //
  453.     //  Required Properties
  454.     //      The following properties MUST be included in the returned
  455.     //      property enumeration.
  456.     //
  457.     //      Description.ID
  458.     //          Uniquely identifies a program.
  459.     //
  460.     //      Description.Version
  461.     //          Identifies the current version of the properties associated
  462.     //          with this program.
  463.     //
  464.     //      Description.Title
  465.     //          Human readable title of the program (e.g. "")
  466.     //
  467.     //      Description.Long
  468.     //          A description of the program.
  469.     // 
  470.     [helpstring("Returns an enumeration of all guide data properties for the program with the given Description.ID.")]
  471.     HRESULT
  472.     GetProgramProperties (
  473.         [in]           VARIANT                      varProgramDescriptionID,
  474.         [out, retval]  IEnumGuideDataProperties **  ppEnumProperties
  475.         );
  476.     //-------------------------------------------------------------------------
  477.     //
  478.     //  GetScheduleIDs
  479.     //      Returns an enumeration of the unique identifiers (Description.ID)
  480.     //      transport of schedule entries with description contained in the
  481.     //      given transport stream.
  482.     //
  483.     //  Parameters
  484.     //
  485.     //      IEnumVARIANT **
  486.     //          Location in which a reference to the resulting
  487.     //          IEnumVARIANT is placed.  The caller must release
  488.     //          this reference when finished with it.
  489.     //
  490.     //  Comments
  491.     //      This call is used to get a list of schedule entries that have
  492.     //      guide data properties in all transport streams.
  493.     //      Each variant returned in the IEnumVARIANT * contains the
  494.     //      unique Description.ID property for a schedule entry.
  495.     //      Note that more than on transport stream may contain properties
  496.     //      for the same schedule entry.  In this case the properties
  497.     //      should be merged. 
  498.     // 
  499.     [helpstring("Returns an enumeration of the Description.ID property for all schedule entries in the transport stream specified by a tune request.")]
  500.     HRESULT
  501.     GetScheduleEntryIDs (
  502.         [out, retval]  IEnumVARIANT **      pEnumScheduleEntries
  503.         );
  504.     //-------------------------------------------------------------------------
  505.     //
  506.     //  GetScheduleEntryProperties
  507.     //      Returns an enumeration of all guide data properties for
  508.     //      the schedule entry with the given Description.ID.
  509.     //
  510.     //  Parameters
  511.     //      varScheduleEntryDescriptionID 
  512.     //          Variant containing the unique identifier for the schedule
  513.     //          entry for which properties are requested.
  514.     //
  515.     //      IEnumGuideDataProperties **
  516.     //          Location in which a reference to the resulting
  517.     //          IEnumGuideDataProperties is placed.  The caller must release
  518.     //          this reference when finished with it.
  519.     //
  520.     //  Required Properties
  521.     //      The following properties MUST be included in the returned
  522.     //      property enumeration.
  523.     //
  524.     //      Description.ID
  525.     //          Uniquely identifies a schedule entry.
  526.     //
  527.     //      Description.Version
  528.     //          Identifies the current version of the properties associated
  529.     //          with this program.
  530.     //
  531.     //      Time.Start
  532.     //          The starting time and date of this schedule entry.
  533.     //
  534.     //      Time.End
  535.     //          The ending time and date of this schedule entry.
  536.     //
  537.     //      Schedule.Program
  538.     //          The Description.ID of the program that will play at the
  539.     //          time specified by this schedule entry.
  540.     //
  541.     //      Schedule.Service
  542.     //          The Description.ID of the Service that carries the
  543.     //          program that will play at the time specified by this
  544.     //          schedule entry.
  545.     // 
  546.     [helpstring("Returns an enumeration of all guide data properties for the schedule entry with the given Description.ID.")]
  547.     HRESULT
  548.     GetScheduleEntryProperties (
  549.         [in]           VARIANT                      varScheduleEntryDescriptionID,
  550.         [out, retval]  IEnumGuideDataProperties **  ppEnumProperties
  551.         );
  552. }
  553. //******************************************************************************
  554. //
  555. //  IGuideDataLoader
  556. //
  557. // All Guide Data Loaders MUST implement this interface.  It is how they are
  558. // provided with the IGuideData interface that they will use.
  559. //
  560. // {4764ff7c-fa95-4525-af4d-d32236db9e38}
  561. [
  562. object,
  563. uuid(4764ff7c-fa95-4525-af4d-d32236db9e38),
  564. helpstring("IGuideDataLoader Interface"),
  565. pointer_default(unique)
  566. ]
  567. interface IGuideDataLoader : IUnknown
  568. {
  569.     HRESULT Init([in] IGuideData *pGuideStore);
  570.     HRESULT Terminate();
  571. };
  572. [
  573. uuid(8224A083-7F8C-432D-B83E-3C5E9BDE3528),
  574. version(1.0),
  575. helpstring("psisload 1.0 Type Library")
  576. ]
  577. library PSISLOADLib
  578. {
  579. importlib("stdole32.tlb");
  580. importlib("stdole2.tlb");
  581. [
  582. uuid(14EB8748-1753-4393-95AE-4F7E7A87AAD6),
  583. helpstring("TIFLoad Class")
  584. ]
  585. coclass TIFLoad
  586. {
  587. interface IGuideDataLoader;
  588.         interface IGuideDataEvent;
  589. };
  590. };