home *** CD-ROM | disk | FTP | other *** search
/ Beginning Direct3D Game Programming / Direct3D.iso / directx / dxf / include / dshowidl / tuner.idl < prev    next >
Text File  |  2000-10-01  |  68KB  |  1,997 lines

  1. //------------------------------------------------------------------------------
  2. // File: Tuner.idl
  3. //
  4. // Desc: 
  5. //
  6. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  7. //------------------------------------------------------------------------------
  8.  
  9.  
  10. cpp_quote("//+-------------------------------------------------------------------------")
  11. cpp_quote("//")
  12. cpp_quote("//  Microsoft Windows")
  13. cpp_quote("//  Copyright (C) Microsoft Corporation, 1999-2000.")
  14. cpp_quote("//")
  15. cpp_quote("//--------------------------------------------------------------------------")
  16. cpp_quote("#pragma once")
  17.  
  18. #include <olectl.h>
  19.  
  20. #ifndef DO_NO_IMPORTS
  21. import "oaidl.idl";
  22. import "comcat.idl";
  23. import "strmif.idl";
  24. import "bdatypes.h";
  25. import "regbag.idl";
  26. #endif
  27.  
  28. cpp_quote("#include <bdatypes.h>")
  29.  
  30. interface ITuningSpaceContainer;
  31. interface ITuningSpace;
  32. interface IEnumTuningSpaces;
  33. interface ITuneRequest;
  34. interface ITuner;
  35. interface IScanningTuner;
  36. interface ITunerEvents;
  37. interface IEnumComponentTypes;
  38. interface IComponentTypes;
  39. interface IComponentType;
  40. interface ILanguageComponentType;
  41. interface IEnumComponents;
  42. interface IComponents;
  43. interface IComponent;
  44. interface IMPEG2ComponentType;
  45. interface IMPEG2Component;
  46. interface ILocator;
  47. interface IATSCLocator;
  48. interface IDVBSLocator;
  49. interface IDVBTLocator;
  50.  
  51. // tuner.idl:
  52. //  interface ITuningSpaceContainer : IDispatch
  53. //  interface ITuningSpace : IDispatch
  54. //  interface ITuneRequest : IDispatch
  55. //  interface IComponentType : IDispatch
  56. //  interface ILanguageComponentType : IComponentType
  57. //  interface IComponentTypes : IDispatch
  58. //  interface IComponent : IDispatch
  59. //  interface IComponents : IDispatch
  60. //  interface ITVTuningSpace : ITuningSpace
  61. //  interface IFMRadioTuningSpace : ITuningSpace
  62. //  interface IAMRadioTuningSpace : ITuningSpace
  63. //  interface IAnalogTVTuningSpace : ITVTuningSpace
  64. //  interface IAnalogTVAudioComponent : IComponent
  65. //  interface IAnalogTVDataComponent : IComponent
  66. //  interface IChannelTuneRequest : ITuneRequest
  67. //  interface IDVBComponent : IComponent
  68. //  interface IDVBTuneRequest : ITuneRequest
  69.  
  70. // DISPIDs for ITuningSpaces interface
  71. // we don't expect to inherit from this interface and consequently there's
  72. //     no chance of collision, thus we'll allow midl to auto assign ids for this one
  73.  
  74. // DISPIDs for ITuningSpace interface
  75. enum {
  76. DISPID_TUNER_TS_UNIQUENAME                      = 1,
  77. DISPID_TUNER_TS_FRIENDLYNAME                    = 2,
  78. DISPID_TUNER_TS_CLSID                            = 3,
  79. DISPID_TUNER_TS_NETWORKTYPE                     = 4,
  80. DISPID_TUNER_TS__NETWORKTYPE                    = 5,
  81. DISPID_TUNER_TS_CREATETUNEREQUEST               = 6,
  82. DISPID_TUNER_TS_ENUMCATEGORYGUIDS               = 7,
  83. DISPID_TUNER_TS_ENUMDEVICEMONIKERS              = 8,
  84. DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES  = 9,
  85. DISPID_TUNER_TS_FREQMAP                            = 10,
  86. DISPID_TUNER_TS_DEFLOCATOR                        = 11,
  87. DISPID_TUNER_TS_CLONE                            = 12,
  88.  
  89. // DISPIDs for ITuneRequest interface
  90. DISPID_TUNER_TR_TUNINGSPACE                     = 1,
  91. DISPID_TUNER_TR_COMPONENTS                      = 2,
  92. DISPID_TUNER_TR_CLONE                           = 3,
  93. DISPID_TUNER_TR_LOCATOR                         = 4,
  94.  
  95.  
  96. // DISPID for IComponentType interface
  97. DISPID_TUNER_CT_CATEGORY                        = 1,
  98. DISPID_TUNER_CT_MEDIAMAJORTYPE            = 2,
  99. DISPID_TUNER_CT__MEDIAMAJORTYPE                 = 3,
  100. DISPID_TUNER_CT_MEDIASUBTYPE                   = 4,
  101. DISPID_TUNER_CT__MEDIASUBTYPE                = 5,
  102. DISPID_TUNER_CT_MEDIAFORMATTYPE         = 6,
  103. DISPID_TUNER_CT__MEDIAFORMATTYPE         = 7,
  104. DISPID_TUNER_CT_MEDIATYPE            = 8,
  105. DISPID_TUNER_CT_CLONE                           = 9,
  106.  
  107.  
  108. // DISPID for ILanguageComponentType interface
  109. DISPID_TUNER_LCT_LANGID                         = 100,
  110.  
  111. // DISPID for IMPEG2ComponentType interface
  112. DISPID_TUNER_MP2CT_TYPE                         = 200,
  113.  
  114. // DISPID for IATSCComponentType interface
  115. DISPID_TUNER_ATSCCT_FLAGS                       = 300,
  116.  
  117. // DISPID for ILocator interface
  118. DISPID_TUNER_L_CARRFREQ                         = 1,
  119. DISPID_TUNER_L_INNERFECMETHOD                   = 2,
  120. DISPID_TUNER_L_INNERFECRATE                     = 3,
  121. DISPID_TUNER_L_OUTERFECMETHOD                   = 4,
  122. DISPID_TUNER_L_OUTERFECRATE                     = 5,
  123. DISPID_TUNER_L_MOD                              = 6,
  124. DISPID_TUNER_L_SYMRATE                          = 7,
  125. DISPID_TUNER_L_CLONE                            = 8,
  126.  
  127. // DISPID for IATSCLocator interface
  128. DISPID_TUNER_L_ATSC_PHYS_CHANNEL                = 201,
  129. DISPID_TUNER_L_ATSC_TSID                        = 202,
  130.  
  131. // DISPID for IDVBTLocator interface
  132. DISPID_TUNER_L_DVBT_BANDWIDTH                   = 301,
  133. DISPID_TUNER_L_DVBT_LPINNERFECMETHOD            = 302,
  134. DISPID_TUNER_L_DVBT_LPINNERFECRATE              = 303,
  135. DISPID_TUNER_L_DVBT_GUARDINTERVAL               = 304,
  136. DISPID_TUNER_L_DVBT_HALPHA                      = 305,
  137. DISPID_TUNER_L_DVBT_TRANSMISSIONMODE            = 306,
  138. DISPID_TUNER_L_DVBT_INUSE                       = 307,
  139.  
  140. // DISPID for IDVBSLocator interface
  141. DISPID_TUNER_L_DVBS_POLARISATION                = 401,
  142. DISPID_TUNER_L_DVBS_WEST                        = 402,
  143. DISPID_TUNER_L_DVBS_ORBITAL                     = 403,
  144. DISPID_TUNER_L_DVBS_AZIMUTH                     = 404,
  145. DISPID_TUNER_L_DVBS_ELEVATION                   = 405,
  146.  
  147. // DISPID for IDVBCLocator interface
  148.  
  149. // DISPIDs for IComponent interface
  150. DISPID_TUNER_C_TYPE                             = 1,
  151. DISPID_TUNER_C_STATUS                           = 2,
  152. DISPID_TUNER_C_LANGID                           = 3,
  153. DISPID_TUNER_C_DESCRIPTION                      = 4,
  154. DISPID_TUNER_C_CLONE                            = 5,
  155.  
  156. // DISPIDs for IMPEG2Component interface
  157. DISPID_TUNER_C_MP2_PID                           = 101,
  158. DISPID_TUNER_C_MP2_PCRPID                        = 102,
  159. DISPID_TUNER_C_MP2_PROGNO                        = 103,
  160.  
  161. // DISPIDs for IDVBTuningSpace interface
  162. DISPID_TUNER_TS_DVB_SYSTEMTYPE                = 101,
  163.  
  164. // DISPIDs for IAnalogRadioTuningSpace interface
  165. DISPID_TUNER_TS_AR_MINFREQUENCY               = 101,
  166. DISPID_TUNER_TS_AR_MAXFREQUENCY               = 102,
  167. DISPID_TUNER_TS_AR_STEP                       = 103,
  168.  
  169. // DISPIDs for IAnalogTVTuningSpace interface
  170. DISPID_TUNER_TS_ATV_MINCHANNEL                 = 101,
  171. DISPID_TUNER_TS_ATV_MAXCHANNEL                 = 102,
  172. DISPID_TUNER_TS_ATV_INPUTTYPE                  = 103,
  173. DISPID_TUNER_TS_ATV_COUNTRYCODE                = 104,
  174.  
  175. // DISPIDs for IATSCTuningSpace interface
  176. DISPID_TUNER_TS_ATSC_MINMINORCHANNEL           = 201,
  177. DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL           = 202,
  178. DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL            = 203,
  179. DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL            = 204,
  180.  
  181. // DISPID for IAnalogTVAudioComponent interface
  182. DISPID_CHTUNER_ATVAC_CHANNEL                    = 101,
  183.  
  184. // DISPIDs for IAnalogTVDataComponent interface
  185. DISPID_CHTUNER_ATVDC_SYSTEM                     = 101,
  186. DISPID_CHTUNER_ATVDC_CONTENT                    = 102,
  187.  
  188. // DISPID for IChannelTuneRequest interface
  189. DISPID_CHTUNER_CTR_CHANNEL                      = 101,
  190.  
  191. // DISPID IATSCChannelTuneRequest
  192. DISPID_CHTUNER_ACTR_MINOR_CHANNEL               = 201,
  193.  
  194. // DISPIDs for IDVBComponent interface
  195. DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID            = 101,
  196. DISPID_DVBTUNER_DVBC_PID                        = 102,
  197. DISPID_DVBTUNER_DVBC_TAG                        = 103,
  198. DISPID_DVBTUNER_DVBC_COMPONENTTYPE              = 104,
  199.  
  200. // DISPIDs for IDVBTuneRequest interface
  201. DISPID_DVBTUNER_ONID         = 101,
  202. DISPID_DVBTUNER_TSID         = 102,
  203. DISPID_DVBTUNER_SID          = 103,
  204.  
  205. };
  206.  
  207.  
  208. //////////////////////////////////////////////////////////////////////////////////////
  209. // Tuning Space Container
  210. //////////////////////////////////////////////////////////////////////////////////////
  211. // simple read-only collection of tuning spaces for enumerating subsets of the total
  212. // set of system tuning spaces
  213.     [
  214.         object,
  215.         uuid(901284E4-33FE-4b69-8D63-634A596F3756),
  216.         dual,
  217.         oleautomation,
  218.         nonextensible,
  219.         helpstring("Tuning Space Collection Interface"),
  220.         pointer_default(unique)
  221.     ]
  222.     interface ITuningSpaces : IDispatch
  223.     {
  224.  
  225.         [propget, helpstring("Number of items in the collection")]
  226.         HRESULT Count(
  227.             [out, retval] long *Count
  228.             );
  229.  
  230.         [propget, id(DISPID_NEWENUM), hidden, restricted]
  231.         HRESULT _NewEnum(
  232.             [out, retval] IEnumVARIANT** NewEnum
  233.             );
  234.  
  235.         [id(DISPID_VALUE),
  236.             propget,
  237.             helpstring("Find the Tuning Space with the specified Index")]
  238.         HRESULT Item(
  239.             [in] VARIANT varIndex,
  240.             [out, retval] ITuningSpace** TuningSpace
  241.             );
  242.  
  243.         [propget, hidden, restricted, 
  244.             helpstring("convenience function so C++ apps don't have to unpack VARIANT")]
  245.         HRESULT EnumTuningSpaces(
  246.             [out, retval] IEnumTuningSpaces** NewEnum
  247.             );
  248.  
  249.     }
  250.  
  251. //////////////////////////////////////////////////////////////////////////////////////
  252. // Tuning Space Container
  253. //////////////////////////////////////////////////////////////////////////////////////
  254.     [
  255.         object,
  256.         uuid(5B692E84-E2F1-11d2-9493-00C04F72D980),
  257.         dual,
  258.         oleautomation,
  259.         hidden,
  260.         nonextensible,
  261.         helpstring("Tuning Space Container Interface"),
  262.         pointer_default(unique)
  263.     ]
  264.     interface ITuningSpaceContainer : IDispatch
  265.     {
  266.  
  267.         [propget, helpstring("Number of items in the collection")]
  268.         HRESULT Count(
  269.             [out, retval] long *Count
  270.             );
  271.  
  272.         [propget, id(DISPID_NEWENUM), hidden, restricted]
  273.         HRESULT _NewEnum(
  274.             [out, retval] IEnumVARIANT** NewEnum
  275.             );
  276.  
  277.         [id(DISPID_VALUE),
  278.             propget,
  279.             helpstring("Find the Tuning Space with the specified Index")]
  280.         HRESULT Item(
  281.             [in] VARIANT varIndex,
  282.             [out, retval] ITuningSpace** TuningSpace
  283.             );
  284.         [id(DISPID_VALUE),
  285.             propput,
  286.             helpstring("Change the Tuning Space with the specified Index")]
  287.         HRESULT Item([in] VARIANT varIndex, [in] ITuningSpace *TuningSpace);
  288.  
  289.         [helpstring("Returns the collection of Tuning Spaces with the same implementation")]
  290.         HRESULT TuningSpacesForCLSID(
  291.             [in] BSTR SpaceCLSID,
  292.             [out, retval] ITuningSpaces** NewColl
  293.             );
  294.  
  295.         [hidden, restricted, 
  296.             helpstring("Convenience Function for enumerating from C")]
  297.         HRESULT _TuningSpacesForCLSID(
  298.             [in] REFCLSID SpaceCLSID,
  299.             [out, retval] ITuningSpaces** NewColl
  300.             );
  301.  
  302.         [helpstring("Returns the collection of Tuning Spaces matching the name")]
  303.         HRESULT TuningSpacesForName(
  304.             [in] BSTR Name,
  305.             [out, retval] ITuningSpaces** NewColl
  306.             );
  307.  
  308.         [helpstring("Find Local ID Number of the specified Tuning Space")]
  309.         HRESULT FindID(
  310.             [in] ITuningSpace *TuningSpace,
  311.             [out, retval] long *ID
  312.             );
  313.  
  314.  
  315.         [id(DISPID_ADDITEM), 
  316.          helpstring("Add a new Tuning Space to the collection.  This tuning space will be persisted unless removed")]
  317.         HRESULT Add(
  318.             [in] ITuningSpace* TuningSpace,
  319.             [out, retval] VARIANT* NewIndex
  320.             );
  321.  
  322.         [propget, hidden, restricted, helpstring("Convenience Function for enumerating collection from C")]
  323.         HRESULT EnumTuningSpaces(
  324.             [out, retval] IEnumTuningSpaces **ppEnum
  325.             );
  326.  
  327.         [id(DISPID_REMOVEITEM), 
  328.          helpstring("Remove a Tuning Space from the collection.  this tuning space will be deleted from the registry")]
  329.         HRESULT Remove(
  330.             [in] VARIANT Index
  331.             );
  332.  
  333.         [propget, helpstring("Maximum number of items allowed in the collection")]
  334.         HRESULT MaxCount(
  335.             [out, retval] long *MaxCount
  336.             );
  337.  
  338.         // we don't allow script to set this, but we do allow c code to change it.
  339.         [propput, hidden, restricted, helpstring("Maximum number of items allowed in the collection")]
  340.         HRESULT MaxCount(
  341.             [in] long MaxCount
  342.             );
  343.  
  344.     }
  345.  
  346. //////////////////////////////////////////////////////////////////////////////////////
  347. // Tuning Space Interfaces
  348. //////////////////////////////////////////////////////////////////////////////////////
  349.  
  350. // note: the network type is the clsid of the tuning space implementation
  351.     [
  352.         object,
  353.         uuid(061C6E30-E622-11d2-9493-00C04F72D980),
  354.         dual,
  355.         oleautomation,
  356.         nonextensible,
  357.         helpstring("Tuning Space Interface"),
  358.         pointer_default(unique)
  359.     ]
  360.     interface ITuningSpace : IDispatch
  361.     {
  362.         [propget, id(DISPID_TUNER_TS_UNIQUENAME),
  363.              helpstring("Unique name of the Tuning Space")]
  364.         HRESULT UniqueName(
  365.             [out, retval] BSTR *Name
  366.             );
  367.  
  368.         [propput, id(DISPID_TUNER_TS_UNIQUENAME),
  369.              helpstring("Unique name of the Tuning Space")]
  370.         HRESULT UniqueName(
  371.             [in] BSTR Name
  372.             );
  373.  
  374.         [propget, id(DISPID_TUNER_TS_FRIENDLYNAME),
  375.              helpstring("User-friendly name of the Tuning Space")]
  376.         HRESULT FriendlyName(
  377.             [out, retval] BSTR *Name
  378.             );
  379.  
  380.         [propput, id(DISPID_TUNER_TS_FRIENDLYNAME),
  381.              helpstring("User-friendly name of the Tuning Space")]
  382.         HRESULT FriendlyName(
  383.             [in] BSTR Name
  384.             );
  385.  
  386.         [propget, id(DISPID_TUNER_TS_CLSID), 
  387.             helpstring("Returns the clsid of the tuning space implementation.  provides script access to IPersist:GetClassID")]
  388.         HRESULT CLSID(
  389.             [out, retval] BSTR* SpaceCLSID
  390.             );
  391.  
  392.         [propget, id(DISPID_TUNER_TS_NETWORKTYPE),
  393.              helpstring("Network Type (Network Proivder CLSID)")]
  394.         HRESULT NetworkType(
  395.             [out, retval] BSTR *NetworkTypeGuid
  396.             );
  397.         [propput, id(DISPID_TUNER_TS_NETWORKTYPE),
  398.              helpstring("Network Type (Network Proivder CLSID)")]
  399.         HRESULT NetworkType(
  400.             [in] BSTR NetworkTypeGuid
  401.             );
  402.  
  403.         [propget, id(DISPID_TUNER_TS__NETWORKTYPE),
  404.              helpstring("Network Type (Network Proivder CLSID)"), hidden, restricted]
  405.         HRESULT _NetworkType(
  406.             [out, retval] GUID* NetworkTypeGuid
  407.             );
  408.         [propput, id(DISPID_TUNER_TS__NETWORKTYPE),
  409.              helpstring("Network Type (Network Proivder CLSID)"), hidden, restricted]
  410.         HRESULT _NetworkType(
  411.             [in] REFCLSID NetworkTypeGuid
  412.             );
  413.  
  414.         [id(DISPID_TUNER_TS_CREATETUNEREQUEST),
  415.             helpstring("Create a Tune Request object")]
  416.         HRESULT CreateTuneRequest(
  417.             [out, retval] ITuneRequest **TuneRequest
  418.             );
  419.  
  420.         [id(DISPID_TUNER_TS_ENUMCATEGORYGUIDS), hidden, restricted]
  421.         HRESULT EnumCategoryGUIDs(
  422.             [out, retval] IEnumGUID **ppEnum
  423.             );
  424.  
  425.         [id(DISPID_TUNER_TS_ENUMDEVICEMONIKERS), hidden, restricted]
  426.         HRESULT EnumDeviceMonikers(
  427.             [out, retval] IEnumMoniker **ppEnum
  428.             );
  429.  
  430.         [propget, id(DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES)]
  431.         HRESULT DefaultPreferredComponentTypes(
  432.             [out, retval] IComponentTypes** ComponentTypes
  433.             );
  434.         [propput, id(DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES)]
  435.         HRESULT DefaultPreferredComponentTypes(
  436.             [in] IComponentTypes* NewComponentTypes
  437.             );
  438.  
  439.         // the following property is for the network providers to store frequency/channel maps, frequency/transponder maps
  440.         // or whatever other mapping from carrier frequencies to frequency identifiers are appropriate for the tuning space
  441.         // in question.  the bstr is treated as a binary blob.  it is expected to contain embedded nulls,  and it may be formatted
  442.         // internally in whatever fashion the network provider sees fit.
  443.         [propget, id(DISPID_TUNER_TS_FREQMAP), hidden, restricted]
  444.         HRESULT FrequencyMapping([out, retval] BSTR *pMapping);
  445.         [propput, id(DISPID_TUNER_TS_FREQMAP), hidden, restricted]
  446.         HRESULT FrequencyMapping(BSTR Mapping);
  447.  
  448.         // the following property provides a starting point for the initial IScanningTuner after installation
  449.         [propget, id(DISPID_TUNER_TS_DEFLOCATOR)]
  450.         HRESULT DefaultLocator([out, retval] ILocator **LocatorVal);
  451.         [propput, id(DISPID_TUNER_TS_DEFLOCATOR)]
  452.         HRESULT DefaultLocator([in]ILocator *LocatorVal);
  453.  
  454.         HRESULT Clone([out, retval] ITuningSpace **NewTS);
  455.     }
  456.  
  457. //////////////////////////////////////////////////////////////////////////////////////
  458.     [
  459.         hidden,
  460.         restricted,
  461.         object,
  462.         uuid(8B8EB248-FC2B-11d2-9D8C-00C04F72D980),
  463.         pointer_default(unique)
  464.     ]
  465.     interface IEnumTuningSpaces : IUnknown
  466.     {
  467.         HRESULT Next(
  468.             [in] ULONG celt,
  469.             [out, size_is(celt), length_is(*pceltFetched)]
  470.                 ITuningSpace** rgelt,
  471.             [out] ULONG* pceltFetched
  472.             );
  473.  
  474.         HRESULT Skip(
  475.             [in] ULONG celt
  476.             );
  477.  
  478.         HRESULT Reset(void);
  479.  
  480.         HRESULT Clone(
  481.             [out] IEnumTuningSpaces** ppEnum
  482.             );
  483.     }
  484.  
  485. //////////////////////////////////////////////////////////////////////////////////////
  486.     [
  487.         object,
  488.         hidden,
  489.         nonextensible,
  490.         uuid(ADA0B268-3B19-4e5b-ACC4-49F852BE13BA),
  491.         pointer_default(unique)
  492.     ]
  493.     interface IDVBTuningSpace : ITuningSpace
  494.     {
  495.         [propget, id(DISPID_TUNER_TS_DVB_SYSTEMTYPE),
  496.          helpstring("Type of DVB System")
  497.         ]
  498.         HRESULT SystemType(
  499.             [out, retval] DVBSystemType *SysType
  500.             );
  501.         [propput, id(DISPID_TUNER_TS_DVB_SYSTEMTYPE),
  502.          helpstring("Type of DVB System")
  503.         ]
  504.         HRESULT SystemType(
  505.             [in] DVBSystemType SysType
  506.             );
  507.  
  508.     }
  509.  
  510.  
  511. //////////////////////////////////////////////////////////////////////////////////////
  512.     [
  513.         object,
  514.         hidden,
  515.         nonextensible,
  516.         uuid(2A6E293C-2595-11d3-B64C-00C04F79498E),
  517.         pointer_default(unique)
  518.     ]
  519.     interface IAnalogTVTuningSpace : ITuningSpace
  520.     {
  521.         [propget, id(DISPID_TUNER_TS_ATV_MINCHANNEL),
  522.          helpstring("Smallest channel number ever provided by this tuning space")
  523.         ]
  524.         HRESULT MinChannel(
  525.             [out, retval] long *MinChannelVal
  526.             );
  527.         [propput, id(DISPID_TUNER_TS_ATV_MINCHANNEL),
  528.          helpstring("Smallest channel number ever provided by this tuning space")
  529.         ]
  530.         HRESULT MinChannel(
  531.             [in] long NewMinChannelVal
  532.             );
  533.         [propget, id(DISPID_TUNER_TS_ATV_MAXCHANNEL),
  534.          helpstring("Largest channel number ever provided by this tuning space")
  535.         ]
  536.         HRESULT MaxChannel(
  537.             [out, retval] long *MaxChannelVal
  538.             );
  539.         [propput, id(DISPID_TUNER_TS_ATV_MAXCHANNEL),
  540.          helpstring("Largest channel number ever provided by this tuning space")
  541.         ]
  542.         HRESULT MaxChannel(
  543.             [in] long NewMaxChannelVal
  544.             );
  545.         [propget, id(DISPID_TUNER_TS_ATV_INPUTTYPE),
  546.          helpstring("Input type for this tuning space")
  547.         ]
  548.         HRESULT InputType([out, retval] TunerInputType *InputTypeVal);
  549.         [propput, id(DISPID_TUNER_TS_ATV_INPUTTYPE),
  550.          helpstring("Input type for this tuning space")
  551.         ]
  552.         HRESULT InputType([in] TunerInputType NewInputTypeVal);
  553.         [propget, id(DISPID_TUNER_TS_ATV_COUNTRYCODE),
  554.          helpstring("International dialing prefix for country of physical broadcast source")
  555.         ]
  556.         HRESULT CountryCode([out, retval] long *CountryCodeVal);
  557.         [propput, id(DISPID_TUNER_TS_ATV_COUNTRYCODE),
  558.          helpstring("International dialing prefix for country of physical broadcast source")
  559.         ]
  560.         HRESULT CountryCode([in] long NewCountryCodeVal);
  561.     }
  562.  
  563. //////////////////////////////////////////////////////////////////////////////////////
  564.     [
  565.         object,
  566.         hidden,
  567.         nonextensible,
  568.         uuid(0369B4E2-45B6-11d3-B650-00C04F79498E),
  569.         pointer_default(unique)
  570.     ]
  571. // note: we inherit ATSC from analog because we need the same properties.
  572. // - the definition of channel is overloaded to be the major channel,
  573. // - input type allows us to distinguish between broadcast and cable frequencies
  574. // which allows us to use the atsc tuning space class for "open cable".
  575. // - country code will allow us to redefine physical channel frequencies
  576. // if any other countries adopt ATSC which may happen in Latin America in particular.
  577.     interface IATSCTuningSpace : IAnalogTVTuningSpace
  578.     {
  579.         [propget, id(DISPID_TUNER_TS_ATSC_MINMINORCHANNEL),
  580.          helpstring("Smallest minor channel number ever provided by this tuning space")
  581.         ]
  582.         HRESULT MinMinorChannel(
  583.             [out, retval] long *MinMinorChannelVal
  584.             );
  585.         [propput, id(DISPID_TUNER_TS_ATSC_MINMINORCHANNEL),
  586.          helpstring("Smallest minor channel number ever provided by this tuning space")
  587.         ]
  588.         HRESULT MinMinorChannel(
  589.             [in] long NewMinMinorChannelVal
  590.             );
  591.         [propget, id(DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL),
  592.          helpstring("Largest minor channel number ever provided by this tuning space")
  593.         ]
  594.         HRESULT MaxMinorChannel(
  595.             [out, retval] long *MaxMinorChannelVal
  596.             );
  597.         [propput, id(DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL),
  598.          helpstring("Largest minor channel number ever provided by this tuning space")
  599.         ]
  600.         HRESULT MaxMinorChannel(
  601.             [in] long NewMaxMinorChannelVal
  602.             );
  603.         [propget, id(DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL),
  604.          helpstring("Smallest physical channel number ever provided by this tuning space")
  605.         ]
  606.         HRESULT MinPhysicalChannel(
  607.             [out, retval] long *MinPhysicalChannelVal
  608.             );
  609.         [propput, id(DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL),
  610.          helpstring("Smallest physical channel number ever provided by this tuning space")
  611.         ]
  612.         HRESULT MinPhysicalChannel(
  613.             [in] long NewMinPhysicalChannelVal
  614.             );
  615.         [propget, id(DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL),
  616.          helpstring("Largest physical channel number ever provided by this tuning space")
  617.         ]
  618.         HRESULT MaxPhysicalChannel(
  619.             [out, retval] long *MaxPhysicalChannelVal
  620.             );
  621.         [propput, id(DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL),
  622.          helpstring("Largest physical channel number ever provided by this tuning space")
  623.         ]
  624.         HRESULT MaxPhysicalChannel(
  625.             [in] long NewMaxPhysicalChannelVal
  626.             );
  627.  
  628.     }
  629.  
  630. //////////////////////////////////////////////////////////////////////////////////////
  631.     [
  632.         object,
  633.         hidden,
  634.         nonextensible,
  635.         uuid(2A6E293B-2595-11d3-B64C-00C04F79498E),
  636.         pointer_default(unique)
  637.     ]
  638.     interface IAnalogRadioTuningSpace : ITuningSpace {
  639.         [propget, id(DISPID_TUNER_TS_AR_MINFREQUENCY),
  640.          helpstring("Smallest frequency(khz) ever used by this tuning space")
  641.         ]
  642.         HRESULT MinFrequency(
  643.             [out, retval] long *MinFrequencyVal
  644.             );
  645.         [propput, id(DISPID_TUNER_TS_AR_MINFREQUENCY),
  646.          helpstring("Smallest frequency(khz) ever used by this tuning space")
  647.         ]
  648.         HRESULT MinFrequency(
  649.             [in] long NewMinFrequencyVal
  650.             );
  651.         [propget, id(DISPID_TUNER_TS_AR_MAXFREQUENCY),
  652.          helpstring("Largest frequency(khz) ever used by this tuning space")
  653.         ]
  654.         HRESULT MaxFrequency(
  655.             [out, retval] long *MaxFrequencyVal
  656.             );
  657.         [propput, id(DISPID_TUNER_TS_AR_MAXFREQUENCY),
  658.          helpstring("Largest frequency(khz) ever used by this tuning space")
  659.         ]
  660.         HRESULT MaxFrequency(
  661.             [in] long NewMaxFrequencyVal
  662.             );
  663.         [propget, id(DISPID_TUNER_TS_AR_STEP),
  664.          helpstring("Default step value(khz) to next frequency for this tuning space")
  665.         ]
  666.         HRESULT Step(
  667.             [out, retval] long *StepVal
  668.             );
  669.         [propput, id(DISPID_TUNER_TS_AR_STEP),
  670.          helpstring("Default step value(khz) to next frequency for this tuning space")
  671.         ]
  672.         HRESULT Step(
  673.             [in] long NewStepVal
  674.             );      
  675.     }
  676.  
  677.  
  678. //////////////////////////////////////////////////////////////////////////////////////
  679. // Tune Request Interfaces
  680. //////////////////////////////////////////////////////////////////////////////////////
  681.     [
  682.         object,
  683.         nonextensible,
  684.         uuid(07DDC146-FC3D-11d2-9D8C-00C04F72D980),
  685.         dual,
  686.         oleautomation,
  687.         helpstring("Tune Request Interface"),
  688.         pointer_default(unique)
  689.     ]
  690.     interface ITuneRequest : IDispatch
  691.     {
  692.         [propget, id(DISPID_TUNER_TR_TUNINGSPACE),
  693.             helpstring("Tuning Space object")]
  694.         HRESULT TuningSpace(
  695.             [out, retval] ITuningSpace **TuningSpace
  696.             );
  697.         [propget, id(DISPID_TUNER_TR_COMPONENTS),
  698.             helpstring("Components collection")]
  699.         HRESULT Components(
  700.             [out, retval] IComponents **Components
  701.             );
  702.         [id(DISPID_TUNER_TR_CLONE),
  703.             helpstring("Create a new copy of this tune request")]
  704.         HRESULT Clone(
  705.             [out, retval] ITuneRequest **NewTuneRequest
  706.             );
  707.         [propget, id(DISPID_TUNER_TR_LOCATOR),
  708.             helpstring("Locator Object")]
  709.         HRESULT Locator(
  710.             [out, retval] ILocator **Locator
  711.             );
  712.         [propput, id(DISPID_TUNER_TR_LOCATOR),
  713.             helpstring("Locator Object")]
  714.         HRESULT Locator(
  715.             [in] ILocator *Locator
  716.             );
  717.     }
  718.  
  719. //////////////////////////////////////////////////////////////////////////////////////
  720.     [
  721.         object,
  722.         nonextensible,
  723.         uuid(0369B4E0-45B6-11d3-B650-00C04F79498E),
  724.         dual,
  725.         oleautomation,
  726.         helpstring("Channel Tune Request Interface"),
  727.         pointer_default(unique)
  728.     ]
  729.     interface IChannelTuneRequest : ITuneRequest
  730.     {
  731.         [propget, id(DISPID_CHTUNER_CTR_CHANNEL),
  732.             helpstring("Channel")]
  733.         HRESULT Channel(
  734.             [out, retval] long *Channel
  735.             );
  736.         [propput, id(DISPID_CHTUNER_CTR_CHANNEL),
  737.             helpstring("Channel")]
  738.         HRESULT Channel(
  739.             [in] long Channel
  740.             );
  741.     }
  742.  
  743. //////////////////////////////////////////////////////////////////////////////////////
  744.     [
  745.         object,
  746.         nonextensible,
  747.         uuid(0369B4E1-45B6-11d3-B650-00C04F79498E),
  748.         dual,
  749.         oleautomation,
  750.         helpstring("ATSC Channel Tune Request Interface"),
  751.         pointer_default(unique)
  752.     ]
  753.     interface IATSCChannelTuneRequest : IChannelTuneRequest
  754.     {
  755.         [propget, id(DISPID_CHTUNER_ACTR_MINOR_CHANNEL),
  756.             helpstring("Minor Channel")]
  757.         HRESULT MinorChannel(
  758.             [out, retval] long *MinorChannel
  759.             );
  760.         [propput, id(DISPID_CHTUNER_ACTR_MINOR_CHANNEL),
  761.             helpstring("Minor Channel")]
  762.         HRESULT MinorChannel(
  763.             [in] long MinorChannel
  764.             );
  765.     }
  766.  
  767. //////////////////////////////////////////////////////////////////////////////////////
  768.     [
  769.         object,
  770.         nonextensible,
  771.         uuid(0D6F567E-A636-42bb-83BA-CE4C1704AFA2),
  772.         dual,
  773.         oleautomation,
  774.         helpstring("DVB Tune Request Interface"),
  775.         pointer_default(unique)
  776.     ]
  777.     interface IDVBTuneRequest : ITuneRequest
  778.     {
  779.         [propget, id(DISPID_DVBTUNER_ONID),
  780.             helpstring("Original Network ID")]
  781.         HRESULT ONID(
  782.             [out, retval] long *ONID
  783.             );
  784.         [propput, id(DISPID_DVBTUNER_ONID),
  785.             helpstring("Original Network ID")]
  786.         HRESULT ONID(
  787.             [in] long ONID
  788.             );
  789.         [propget, id(DISPID_DVBTUNER_TSID),
  790.             helpstring("Transport Stream ID")]
  791.         HRESULT TSID(
  792.             [out, retval] long *TSID
  793.             );
  794.         [propput, id(DISPID_DVBTUNER_TSID),
  795.             helpstring("Transport Stream ID")]
  796.         HRESULT TSID(
  797.             [in] long TSID
  798.             );
  799.         [propget, id(DISPID_DVBTUNER_SID),
  800.             helpstring("Service ID")]
  801.         HRESULT SID(
  802.             [out, retval] long *SID
  803.             );
  804.         [propput, id(DISPID_DVBTUNER_SID),
  805.             helpstring("Service ID")]
  806.         HRESULT SID(
  807.             [in] long SID
  808.             );
  809.     }
  810.  
  811. //////////////////////////////////////////////////////////////////////////////////////
  812. // Tuner Interfaces
  813. //////////////////////////////////////////////////////////////////////////////////////
  814.     [
  815.         object,
  816.         hidden,
  817.         nonextensible,
  818.         uuid(28C52640-018A-11d3-9D8E-00C04F72D980),
  819.         helpstring("Tuner Interface"),
  820.         pointer_default(unique)
  821.     ]
  822.     interface ITuner : IUnknown
  823.     {
  824.         [propget, helpstring("Tuning Space object")]
  825.         HRESULT TuningSpace(
  826.             [out, retval] ITuningSpace **TuningSpace
  827.             );
  828.  
  829.         [propput, helpstring("Tuning Space object")]
  830.         HRESULT TuningSpace(
  831.             [in] ITuningSpace *TuningSpace
  832.             );
  833.  
  834.         [hidden, restricted, helpstring("Returns an enumerator for Tuning Spaces accepted by this tuner")]
  835.         HRESULT EnumTuningSpaces(
  836.             [out, retval] IEnumTuningSpaces **ppEnum
  837.             );
  838.  
  839.         [propget, helpstring("Tune Request object")]
  840.         HRESULT TuneRequest(
  841.             [out, retval] ITuneRequest **TuneRequest
  842.             );
  843.  
  844.         [propput, helpstring("Tune Request object")]
  845.         HRESULT TuneRequest(
  846.             [in] ITuneRequest *TuneRequest
  847.             );
  848.  
  849.         [helpstring("Validate the tuning request without tuning")]
  850.         HRESULT Validate(
  851.             [in] ITuneRequest *TuneRequest
  852.             );
  853.  
  854.         [propget, helpstring("Preferred Component Types collection")]
  855.         HRESULT PreferredComponentTypes(
  856.             [out, retval] IComponentTypes **ComponentTypes
  857.             );
  858.  
  859.         [propput, helpstring("Preferred Component Types collection")]
  860.         HRESULT PreferredComponentTypes(
  861.             [in] IComponentTypes *ComponentTypes
  862.             );
  863.  
  864.         [propget, helpstring("Signal Strength")]
  865.         HRESULT SignalStrength(
  866.             [out, retval] long *Strength
  867.             );
  868.  
  869.         [helpstring("Trigger Signal events (interval in milliseconds; 0 turns off trigger)")]
  870.         HRESULT TriggerSignalEvents(
  871.             [in] long Interval
  872.             );
  873.     }
  874.  
  875. //////////////////////////////////////////////////////////////////////////////////////
  876.     [
  877.         object,
  878.         hidden,
  879.         nonextensible,
  880.         uuid(1DFD0A5C-0284-11d3-9D8E-00C04F72D980),
  881.         helpstring("Scanning Tuner Interface"),
  882.         pointer_default(unique)
  883.     ]
  884.     interface IScanningTuner : ITuner
  885.     {
  886.         [helpstring("Seek to the next valid selection")]
  887.         HRESULT SeekUp(
  888.             );
  889.  
  890.         [helpstring("Seek to the previous valid selection")]
  891.         HRESULT SeekDown(
  892.             );
  893.  
  894.         [helpstring("Scan for valid selections upward")]
  895.         HRESULT ScanUp(
  896.             [in] long MillisecondsPause
  897.             );
  898.  
  899.         [helpstring("Scan for valid selections downward")]
  900.         HRESULT ScanDown(
  901.             [in] long MillisecondsPause
  902.             );
  903.  
  904.         [helpstring("Enter the device's autoprogram mode")]
  905.         HRESULT AutoProgram(
  906.             );
  907.     };
  908.  
  909. //////////////////////////////////////////////////////////////////////////////////////
  910.     [
  911.         object,
  912.         hidden,
  913.         nonextensible,
  914.         uuid(68481420-0280-11d3-9D8E-00C04F72D980),
  915.         helpstring("Tuner Events Interface"),
  916.         pointer_default(unique)
  917.     ]
  918.     interface ITunerEvents : IUnknown
  919.     {
  920.         [helpstring("Reports a completed (or failed) tune operation")]
  921.         HRESULT OnTune(
  922.             [in] ITuneRequest **Request,
  923.             [in] long *Strength
  924.             );
  925.     }
  926.  
  927. //////////////////////////////////////////////////////////////////////////////////////
  928.     [
  929.         object,
  930.         hidden,
  931.         nonextensible,
  932.         uuid(85E2439E-0E23-11d3-9D8E-00C04F72D980),
  933.         helpstring("Signal Events Interface"),
  934.         pointer_default(unique)
  935.     ]
  936.     interface ISignalEvents : IUnknown
  937.     {
  938.         [helpstring("Reports the signal strength")]
  939.         HRESULT OnSignal(
  940.             [out] long *Strength
  941.             );
  942.     }
  943.  
  944. //////////////////////////////////////////////////////////////////////////////////////
  945. // Component Type Interfaces
  946. //////////////////////////////////////////////////////////////////////////////////////
  947.  
  948.     // Component Category
  949.  
  950.     [
  951.         object,
  952.         hidden,
  953.         nonextensible,
  954.         uuid(6A340DC0-0311-11d3-9D8E-00C04F72D980),
  955.         dual,
  956.         oleautomation,
  957.         helpstring("Component Type Interface"),
  958.         pointer_default(unique)
  959.     ]
  960.     interface IComponentType : IDispatch
  961.     {
  962.         [propget, id(DISPID_TUNER_CT_CATEGORY),
  963.             helpstring("General category of component")]
  964.         HRESULT Category(
  965.             [out, retval] ComponentCategory *Category
  966.             );
  967.         [propput, id(DISPID_TUNER_CT_CATEGORY),
  968.             helpstring("General category of component")]
  969.         HRESULT Category(
  970.             [in] ComponentCategory Category
  971.             );
  972.  
  973.         [propget, id(DISPID_TUNER_CT_MEDIAMAJORTYPE),
  974.             helpstring("DirectShow MediaType Major Type Guid")]
  975.         HRESULT MediaMajorType(
  976.             [out, retval] BSTR *MediaMajorType
  977.             );    
  978.         [propput, id(DISPID_TUNER_CT_MEDIAMAJORTYPE),
  979.             helpstring("DirectShow MediaType Major Type Guid")]
  980.         HRESULT MediaMajorType(
  981.             [in] BSTR MediaMajorType
  982.             );
  983.         [propget, id(DISPID_TUNER_CT__MEDIAMAJORTYPE),
  984.             helpstring("DirectShow MediaType Major Type Guid"), hidden, restricted]
  985.         HRESULT _MediaMajorType(
  986.             [out, retval] GUID* MediaMajorTypeGuid
  987.             );
  988.         [propput, id(DISPID_TUNER_CT__MEDIAMAJORTYPE),
  989.             helpstring("DirectShow MediaType Major Type Guid"), hidden, restricted]
  990.         HRESULT _MediaMajorType(
  991.             [in] REFCLSID MediaMajorTypeGuid
  992.             );
  993.         [propget, id(DISPID_TUNER_CT_MEDIASUBTYPE),
  994.             helpstring("DirectShow MediaType Sub Type Guid")]
  995.         HRESULT MediaSubType(
  996.             [out, retval] BSTR *MediaSubType
  997.             );
  998.         [propput, id(DISPID_TUNER_CT_MEDIASUBTYPE),
  999.             helpstring("DirectShow MediaType Sub Type Guid")]
  1000.         HRESULT MediaSubType(
  1001.             [in] BSTR MediaSubType
  1002.             );
  1003.         [propget, id(DISPID_TUNER_CT__MEDIASUBTYPE),
  1004.             helpstring("DirectShow MediaType Sub Type Guid"), hidden, restricted]
  1005.         HRESULT _MediaSubType(
  1006.             [out, retval] GUID* MediaSubTypeGuid
  1007.             );
  1008.         [propput, id(DISPID_TUNER_CT__MEDIASUBTYPE),
  1009.             helpstring("DirectShow MediaType Sub Type Guid"), hidden, restricted]
  1010.         HRESULT _MediaSubType(
  1011.             [in] REFCLSID MediaSubTypeGuid
  1012.             );
  1013.         [propget, id(DISPID_TUNER_CT_MEDIAFORMATTYPE),
  1014.             helpstring("DirectShow MediaType Format Guid")]
  1015.         HRESULT MediaFormatType(
  1016.             [out, retval] BSTR *MediaFormatType
  1017.             );
  1018.         [propput, id(DISPID_TUNER_CT_MEDIAFORMATTYPE),
  1019.             helpstring("DirectShow MediaType Format Guid")]
  1020.         HRESULT MediaFormatType(
  1021.             [in] BSTR MediaFormatType
  1022.             );
  1023.         [propget, id(DISPID_TUNER_CT__MEDIAFORMATTYPE),
  1024.             helpstring("DirectShow MediaType Format Guid"), hidden, restricted]
  1025.         HRESULT _MediaFormatType(
  1026.             [out, retval] GUID* MediaFormatTypeGuid
  1027.             );
  1028.         [propput, id(DISPID_TUNER_CT__MEDIAFORMATTYPE),
  1029.             helpstring("DirectShow MediaType Format Guid"), hidden, restricted]
  1030.         HRESULT _MediaFormatType(
  1031.             [in] REFCLSID MediaFormatTypeGuid
  1032.             );
  1033.  
  1034.         [propget, id(DISPID_TUNER_CT_MEDIATYPE), hidden, restricted,
  1035.             helpstring("DirectShow MediaType Guid, this only retrieves major, sub, format guids not the entire struct")]
  1036.         HRESULT MediaType(
  1037.             [out, retval] AM_MEDIA_TYPE *MediaType
  1038.             );
  1039.         [propput, id(DISPID_TUNER_CT_MEDIATYPE), hidden, restricted,
  1040.             helpstring("DirectShow MediaType Guid, this only retrieves major, sub, format guids not the entire struct")]
  1041.         HRESULT MediaType(
  1042.             [in] AM_MEDIA_TYPE *MediaType
  1043.             );
  1044.  
  1045.         [id(DISPID_TUNER_CT_CLONE),
  1046.             helpstring("Create a copy of this component type")]
  1047.         HRESULT Clone(
  1048.             [out, retval] IComponentType **NewCT
  1049.             );
  1050.     };
  1051.  
  1052. //////////////////////////////////////////////////////////////////////////////////////
  1053.     [
  1054.         object,
  1055.         hidden,
  1056.         nonextensible,
  1057.         uuid(B874C8BA-0FA2-11d3-9D8E-00C04F72D980),
  1058.         dual,
  1059.         oleautomation,
  1060.         helpstring("Language Component Type Interface"),
  1061.         pointer_default(unique)
  1062.     ]
  1063.     interface ILanguageComponentType : IComponentType
  1064.     {
  1065.         [propget, id(DISPID_TUNER_LCT_LANGID),
  1066.             helpstring("Language Identifier for Substream Content Language")]
  1067.         HRESULT LangID(
  1068.             [out, retval] long *LangID
  1069.             );
  1070.  
  1071.         [propput, id(DISPID_TUNER_LCT_LANGID),
  1072.             helpstring("Language Identifier for Substream Content Language")]
  1073.         HRESULT LangID(
  1074.             [in] long LangID
  1075.             );
  1076.     };
  1077.  
  1078. //////////////////////////////////////////////////////////////////////////////////////
  1079.     [
  1080.         object,
  1081.         hidden,
  1082.         nonextensible,
  1083.         uuid(2C073D84-B51C-48c9-AA9F-68971E1F6E38),
  1084.         dual,
  1085.         oleautomation,
  1086.         helpstring("MPEG2 Component Type Interface"),
  1087.         pointer_default(unique)
  1088.     ]
  1089.     interface IMPEG2ComponentType : ILanguageComponentType
  1090.     {
  1091.         [propget, id(DISPID_TUNER_MP2CT_TYPE),
  1092.             helpstring("MPEG2 Stream Type")]
  1093.         HRESULT StreamType(
  1094.             [out, retval] MPEG2StreamType *MP2StreamType
  1095.             );
  1096.  
  1097.         [propput, id(DISPID_TUNER_MP2CT_TYPE),
  1098.             helpstring("MPEG2 Stream Type")]
  1099.         HRESULT StreamType(
  1100.             [in] MPEG2StreamType MP2StreamType
  1101.             );
  1102.     };
  1103.  
  1104. //////////////////////////////////////////////////////////////////////////////////////
  1105.  
  1106.     [
  1107.         object,
  1108.         hidden,
  1109.         nonextensible,
  1110.         uuid(FC189E4D-7BD4-4125-B3B3-3A76A332CC96),
  1111.         dual,
  1112.         oleautomation,
  1113.         helpstring("ATSC Component Type Interface"),
  1114.         pointer_default(unique)
  1115.     ]
  1116.     interface IATSCComponentType : IMPEG2ComponentType
  1117.     {
  1118.         [propget, id(DISPID_TUNER_ATSCCT_FLAGS),
  1119.             helpstring("ATSC Component Type Flags")]
  1120.         HRESULT Flags(
  1121.             [out, retval] long *Flags
  1122.             );
  1123.  
  1124.         [propput, id(DISPID_TUNER_ATSCCT_FLAGS),
  1125.             helpstring("ATSC Component Type Flags")]
  1126.         HRESULT Flags(
  1127.             [in] long flags
  1128.             );
  1129.     };
  1130.  
  1131. //////////////////////////////////////////////////////////////////////////////////////
  1132.     [
  1133.         hidden, restricted,
  1134.         object,
  1135.         uuid(8A674B4A-1F63-11d3-B64C-00C04F79498E),
  1136.         pointer_default(unique)
  1137.     ]
  1138.     interface IEnumComponentTypes : IUnknown
  1139.     {
  1140.         HRESULT Next(
  1141.             [in] ULONG celt,
  1142.             [out, size_is(celt), length_is(*pceltFetched)]
  1143.                 IComponentType** rgelt,
  1144.             [out] ULONG* pceltFetched
  1145.             );
  1146.  
  1147.         HRESULT Skip(
  1148.             [in] ULONG celt
  1149.             );
  1150.  
  1151.         HRESULT Reset(void);
  1152.  
  1153.         HRESULT Clone(
  1154.             [out] IEnumComponentTypes** ppEnum
  1155.             );
  1156.     }
  1157.  
  1158.  
  1159. //////////////////////////////////////////////////////////////////////////////////////
  1160. // Component Type Container
  1161. //////////////////////////////////////////////////////////////////////////////////////
  1162.  
  1163.     [
  1164.         object,
  1165.         hidden,
  1166.         nonextensible,
  1167.         uuid(0DC13D4A-0313-11d3-9D8E-00C04F72D980),
  1168.         dual,
  1169.         oleautomation,
  1170.         helpstring("ComponentType Collection Interface"),
  1171.         pointer_default(unique)
  1172.     ]
  1173.     interface IComponentTypes : IDispatch
  1174.     {
  1175.         [propget, helpstring("Number of items in the collection")]
  1176.         HRESULT Count(
  1177.             [out, retval] long *Count
  1178.             );
  1179.  
  1180.         [propget, id(DISPID_NEWENUM), hidden, restricted]
  1181.         HRESULT _NewEnum(
  1182.             [out, retval] IEnumVARIANT **ppNewEnum
  1183.             );
  1184.  
  1185.         [hidden, restricted, helpstring("Convenience Function for Use with C")]
  1186.         HRESULT EnumComponentTypes(
  1187.             [out, retval] IEnumComponentTypes **ppNewEnum
  1188.             );
  1189.  
  1190.         [id(DISPID_VALUE),
  1191.             propget,
  1192.             helpstring("Get the ComponentType at the specified index")]
  1193.         HRESULT Item(
  1194.             [in] VARIANT Index,
  1195.             [out, retval] IComponentType **ComponentType
  1196.             );
  1197.  
  1198.         [id(DISPID_VALUE),
  1199.             propput,
  1200.             helpstring("Get the ComponentType at the specified index")]
  1201.         HRESULT Item(
  1202.             [in] VARIANT Index,
  1203.             [in] IComponentType *ComponentType
  1204.             );
  1205.  
  1206.         [id(DISPID_ADDITEM), 
  1207.          helpstring("Append the ComponentType to the collection")]
  1208.         HRESULT Add(
  1209.             [in] IComponentType *ComponentType,
  1210.             [out, retval] VARIANT *NewIndex
  1211.             );
  1212.  
  1213.         [id(DISPID_REMOVEITEM), 
  1214.          helpstring("Clear the collection")]
  1215.         HRESULT Remove(
  1216.             [in] VARIANT Index
  1217.             );
  1218.  
  1219.         [helpstring("Copy the collection")]
  1220.         HRESULT Clone([out, retval] IComponentTypes **NewList);
  1221.     };
  1222.  
  1223. //////////////////////////////////////////////////////////////////////////////////////
  1224. // Component Interfaces
  1225. //////////////////////////////////////////////////////////////////////////////////////
  1226.  
  1227.     [
  1228.         object,
  1229.         nonextensible,
  1230.         uuid(1A5576FC-0E19-11d3-9D8E-00C04F72D980),
  1231.         dual,
  1232.         oleautomation,
  1233.         helpstring("Component Interface"),
  1234.         pointer_default(unique)
  1235.     ]
  1236.     interface IComponent : IDispatch
  1237.     {
  1238.         [propget, id(DISPID_TUNER_C_TYPE),
  1239.             helpstring("Component Type")]
  1240.         HRESULT Type(
  1241.             [out, retval] IComponentType** CT
  1242.             );
  1243.     
  1244.         // only loaders initialize components
  1245.         [hidden, restricted, propput, id(DISPID_TUNER_C_TYPE),
  1246.             helpstring("Component Type")]
  1247.         HRESULT Type(
  1248.             [in] IComponentType* CT
  1249.             );
  1250.  
  1251.         // NOTE: this langid is *not* the same as the langid
  1252.         // in the componenttype(if the componenttype is a languagecomponenttype)
  1253.         // the langid in the component type is the language of the content this
  1254.         // component is describing.  the following langid in the component is the
  1255.         // language of the descriptive info in the component object.
  1256.         [propget, id(DISPID_TUNER_C_LANGID),
  1257.             helpstring("Language Identifier for Description Language")]
  1258.         HRESULT DescLangID(
  1259.             [out, retval] long *LangID
  1260.             );
  1261.  
  1262.         [propput, id(DISPID_TUNER_C_LANGID),
  1263.             helpstring("Language Identifier for Description Language")]
  1264.         HRESULT DescLangID(
  1265.             [in] long LangID
  1266.             );
  1267.  
  1268.         [propget, id(DISPID_TUNER_C_STATUS),
  1269.             helpstring("Component Status")]
  1270.         HRESULT Status(
  1271.             [out, retval] ComponentStatus *Status
  1272.             );
  1273.  
  1274.         [propput, id(DISPID_TUNER_C_STATUS),
  1275.             helpstring("Component Status")]
  1276.         HRESULT Status(
  1277.             [in] ComponentStatus Status
  1278.             );
  1279.  
  1280.         [propget, id(DISPID_TUNER_C_DESCRIPTION),
  1281.             helpstring("Component Description")]
  1282.         HRESULT Description(
  1283.             [out, retval] BSTR *Description
  1284.             );
  1285.  
  1286.         // restricted: only loaders will initialize components
  1287.         [hidden, restricted, propput, id(DISPID_TUNER_C_DESCRIPTION),
  1288.             helpstring("Component Description")]
  1289.         HRESULT Description(
  1290.             [in] BSTR Description
  1291.             );
  1292.  
  1293.         [id(DISPID_TUNER_C_CLONE),
  1294.             helpstring("Copy Component")]
  1295.         HRESULT Clone(
  1296.             [out, retval] IComponent **NewComponent
  1297.             );
  1298.  
  1299.     };
  1300.  
  1301. //////////////////////////////////////////////////////////////////////////////////////
  1302.     [
  1303.         object,
  1304.         nonextensible,
  1305.         uuid(1493E353-1EB6-473c-802D-8E6B8EC9D2A9),
  1306.         dual,
  1307.         oleautomation,
  1308.         helpstring("MPEG2 Component Interface"),
  1309.         pointer_default(unique)
  1310.     ]
  1311.     interface IMPEG2Component : IComponent
  1312.     {
  1313.         [propget, id(DISPID_TUNER_C_MP2_PID),
  1314.             helpstring("MPEG2 Packet ID for this Substream")]
  1315.         HRESULT PID(
  1316.             [out, retval] long *PID
  1317.             );
  1318.  
  1319.         [propput, id(DISPID_TUNER_C_MP2_PID),
  1320.             helpstring("MPEG2 Packet ID for this Substream")]
  1321.         HRESULT PID(
  1322.             [in] long PID
  1323.             );
  1324.         [propget, id(DISPID_TUNER_C_MP2_PCRPID),
  1325.             helpstring("MPEG2 Packet ID for this Substream's Timestamps")]
  1326.         HRESULT PCRPID(
  1327.             [out, retval] long *PCRPID
  1328.             );
  1329.  
  1330.         [propput, id(DISPID_TUNER_C_MP2_PCRPID),
  1331.             helpstring("MPEG2 Packet ID for this Substream's Timestamps")]
  1332.         HRESULT PCRPID(
  1333.             [in] long PCRPID
  1334.             );
  1335.  
  1336.         // program number provides reverse lookup to PAT
  1337.         [propget, id(DISPID_TUNER_C_MP2_PROGNO),
  1338.             helpstring("MPEG2 Program Number")]
  1339.         HRESULT ProgramNumber(
  1340.             [out, retval] long *ProgramNumber
  1341.             );
  1342.  
  1343.         [propput, id(DISPID_TUNER_C_MP2_PROGNO),
  1344.             helpstring("MPEG2 Program Number")]
  1345.         HRESULT ProgramNumber(
  1346.             [in] long ProgramNumber
  1347.             );
  1348.     };
  1349.  
  1350. //////////////////////////////////////////////////////////////////////////////////////
  1351.     [
  1352.         hidden, restricted,
  1353.         object,
  1354.         uuid(2A6E2939-2595-11d3-B64C-00C04F79498E),
  1355.         pointer_default(unique)
  1356.     ]
  1357.     interface IEnumComponents : IUnknown
  1358.     {
  1359.         HRESULT Next(
  1360.             [in] ULONG celt,
  1361.             [out, size_is(celt), length_is(*pceltFetched)]
  1362.                 IComponent** rgelt,
  1363.             [out] ULONG* pceltFetched
  1364.             );
  1365.  
  1366.         HRESULT Skip(
  1367.             [in] ULONG celt
  1368.             );
  1369.  
  1370.         HRESULT Reset(void);
  1371.  
  1372.         HRESULT Clone(
  1373.             [out] IEnumComponents** ppEnum
  1374.             );
  1375.     }
  1376.  
  1377.  
  1378. //////////////////////////////////////////////////////////////////////////////////////
  1379. // Component Container
  1380. //////////////////////////////////////////////////////////////////////////////////////
  1381.  
  1382.     [
  1383.         object,
  1384.         nonextensible,
  1385.         uuid(FCD01846-0E19-11d3-9D8E-00C04F72D980),
  1386.         dual,
  1387.         oleautomation,
  1388.         helpstring("Component Collection Interface"),
  1389.         pointer_default(unique)
  1390.     ]
  1391.     interface IComponents : IDispatch
  1392.     {
  1393.         [propget, helpstring("Number of items in the collection")]
  1394.         HRESULT Count(
  1395.             [out, retval] long *Count
  1396.             );
  1397.  
  1398.         [propget, id(DISPID_NEWENUM), hidden, restricted]
  1399.         HRESULT _NewEnum(
  1400.             [out, retval] IEnumVARIANT **ppNewEnum
  1401.             );
  1402.  
  1403.         [hidden, restricted, helpstring("Convenience Function for Use with C")]
  1404.         HRESULT EnumComponents(
  1405.             [out, retval] IEnumComponents **ppNewEnum
  1406.             );
  1407.  
  1408.         [id(DISPID_VALUE),
  1409.             propget,
  1410.             helpstring("Get the Component at the specified index")]
  1411.         HRESULT Item(
  1412.             [in] VARIANT Index,
  1413.             [out, retval] IComponent **ppComponent
  1414.             );
  1415.  
  1416.         [id(DISPID_ADDITEM), 
  1417.          helpstring("Add the Component to the collection")]
  1418.         HRESULT Add(
  1419.             [in] IComponent *Component,
  1420.             [out, retval] VARIANT *NewIndex
  1421.             );
  1422.  
  1423.         [id(DISPID_REMOVEITEM), 
  1424.          helpstring("Remove the Component at the specified index")]
  1425.         HRESULT Remove(
  1426.             [in] VARIANT Index
  1427.             );
  1428.  
  1429.         [helpstring("Copy the collection")]
  1430.         HRESULT Clone([out, retval] IComponents **NewList);
  1431.     };
  1432.  
  1433. //////////////////////////////////////////////////////////////////////////////////////
  1434. // Component Container
  1435. //////////////////////////////////////////////////////////////////////////////////////
  1436. // this separates the what(general tune request properties) from the where
  1437.     
  1438.  
  1439.  
  1440.     [
  1441.         object,
  1442.         nonextensible,
  1443.         uuid(286D7F89-760C-4F89-80C4-66841D2507AA),
  1444.         dual,
  1445.         oleautomation,
  1446.         helpstring("Generic Locator Information"),
  1447.         pointer_default(unique)
  1448.     ]
  1449.     interface ILocator : IDispatch
  1450.     {
  1451.  
  1452.         [propget, id(DISPID_TUNER_L_CARRFREQ), helpstring("Carrier Frequency(DecaHertz)")]
  1453.         HRESULT CarrierFrequency(
  1454.             [out, retval] long* Frequency
  1455.             );
  1456.         [propput, id(DISPID_TUNER_L_CARRFREQ), helpstring("Carrier Frequency(DecaHertz)")]
  1457.         HRESULT CarrierFrequency(
  1458.             [in] long Frequency
  1459.             );
  1460.         [propget, id(DISPID_TUNER_L_INNERFECMETHOD), helpstring("Inner Fec Type")]
  1461.         HRESULT InnerFEC(
  1462.             [out, retval] FECMethod* FEC
  1463.             );
  1464.         [propput, id(DISPID_TUNER_L_INNERFECMETHOD), helpstring("Inner Fec Type")]
  1465.         HRESULT InnerFEC(
  1466.             [in] FECMethod FEC
  1467.             );
  1468.         [propget, id(DISPID_TUNER_L_INNERFECRATE), helpstring("Inner Fec Rate")]
  1469.         HRESULT InnerFECRate(
  1470.             [out, retval] BinaryConvolutionCodeRate* FEC
  1471.             );
  1472.         [propput, id(DISPID_TUNER_L_INNERFECRATE), helpstring("Inner Fec Rate")]
  1473.         HRESULT InnerFECRate(
  1474.             [in] BinaryConvolutionCodeRate FEC
  1475.             );
  1476.         [propget, id(DISPID_TUNER_L_OUTERFECMETHOD), helpstring("Outer Fec Type")]
  1477.         HRESULT OuterFEC(
  1478.             [out, retval] FECMethod* FEC
  1479.             );
  1480.         [propput, id(DISPID_TUNER_L_OUTERFECMETHOD), helpstring("Outer Fec Type")]
  1481.         HRESULT OuterFEC(
  1482.             [in] FECMethod FEC
  1483.             );
  1484.         [propget, id(DISPID_TUNER_L_OUTERFECRATE), helpstring("Outer Fec Rate")]
  1485.         HRESULT OuterFECRate(
  1486.             [out, retval] BinaryConvolutionCodeRate* FEC
  1487.             );
  1488.         [propput, id(DISPID_TUNER_L_OUTERFECRATE), helpstring("Outer Fec Rate")]
  1489.         HRESULT OuterFECRate(
  1490.             [in] BinaryConvolutionCodeRate FEC
  1491.             );
  1492.         [propget, id(DISPID_TUNER_L_MOD), helpstring("Modulation Type")]
  1493.         HRESULT Modulation(
  1494.             [out, retval] ModulationType* Modulation
  1495.             );
  1496.         [propput, id(DISPID_TUNER_L_MOD), helpstring("Modulation Type")]
  1497.         HRESULT Modulation(
  1498.             [in] ModulationType Modulation
  1499.             );
  1500.         [propget, id(DISPID_TUNER_L_SYMRATE), helpstring("Modulation Symbol Rate")]
  1501.         HRESULT SymbolRate(
  1502.             [out, retval] long* Rate
  1503.             );
  1504.         [propput, id(DISPID_TUNER_L_SYMRATE), helpstring("Modulation Symbol Rate")]
  1505.         HRESULT SymbolRate(
  1506.             [in] long Rate
  1507.             );
  1508.         [id(DISPID_TUNER_L_CLONE), helpstring("Copy the Locator")]
  1509.         HRESULT Clone([out, retval] ILocator **NewLocator);
  1510.     };
  1511.  
  1512. //////////////////////////////////////////////////////////////////////////////////////
  1513.     [
  1514.         object,
  1515.         hidden,
  1516.         nonextensible,
  1517.         uuid(BF8D986F-8C2B-4131-94D7-4D3D9FCC21EF),
  1518.         dual,
  1519.         oleautomation,
  1520.         helpstring("ATSC Locator Information"),
  1521.         pointer_default(unique)
  1522.     ]
  1523.     interface IATSCLocator : ILocator
  1524.     {
  1525.         [propget, id(DISPID_TUNER_L_ATSC_PHYS_CHANNEL),
  1526.             helpstring("Physical Channel")]
  1527.         HRESULT PhysicalChannel(
  1528.             [out, retval] long *PhysicalChannel
  1529.             );
  1530.         [propput, id(DISPID_TUNER_L_ATSC_PHYS_CHANNEL),
  1531.             helpstring("Physical Channel")]
  1532.         HRESULT PhysicalChannel(
  1533.             [in] long PhysicalChannel
  1534.             );
  1535.         [propget, id(DISPID_TUNER_L_ATSC_TSID),
  1536.             helpstring("Transport Stream ID")]
  1537.         HRESULT TSID(
  1538.             [out, retval] long *TSID
  1539.             );
  1540.         [propput, id(DISPID_TUNER_L_ATSC_TSID),
  1541.             helpstring("Transport Stream ID")]
  1542.         HRESULT TSID(
  1543.             [in] long TSID
  1544.             );
  1545.     };
  1546.  
  1547. //////////////////////////////////////////////////////////////////////////////////////
  1548.  
  1549.     [
  1550.         object,
  1551.         hidden,
  1552.         nonextensible,
  1553.         uuid(8664DA16-DDA2-42ac-926A-C18F9127C302),
  1554.         dual,
  1555.         oleautomation,
  1556.         helpstring("DVB Terrestrial Locator Information"),
  1557.         pointer_default(unique)
  1558.     ]
  1559.     interface IDVBTLocator : ILocator
  1560.     {
  1561.         [propget, id(DISPID_TUNER_L_DVBT_BANDWIDTH), helpstring("Bandwidth")]
  1562.         HRESULT Bandwidth(
  1563.             [out, retval] long* BandWidthVal
  1564.             );
  1565.         [propput, id(DISPID_TUNER_L_DVBT_BANDWIDTH), helpstring("Bandwidth")]
  1566.         HRESULT Bandwidth(
  1567.             [in] long BandwidthVal
  1568.             );
  1569.  
  1570.         [propget, id(DISPID_TUNER_L_DVBT_LPINNERFECMETHOD), helpstring("Inner Fec Type for Low Priority Stream")]
  1571.         HRESULT LPInnerFEC(
  1572.             [out, retval] FECMethod* FEC
  1573.             );
  1574.         [propput, id(DISPID_TUNER_L_DVBT_LPINNERFECMETHOD), helpstring("Inner Fec Type for Low Priority Stream")]
  1575.         HRESULT LPInnerFEC(
  1576.             [in] FECMethod FEC
  1577.             );
  1578.         [propget, id(DISPID_TUNER_L_DVBT_LPINNERFECRATE), helpstring("Inner Fec Rate for Low Priority Stream")]
  1579.         HRESULT LPInnerFECRate(
  1580.             [out, retval] BinaryConvolutionCodeRate* FEC
  1581.             );
  1582.         [propput, id(DISPID_TUNER_L_DVBT_LPINNERFECRATE), helpstring("Inner Fec Rate for Low Priority Stream")]
  1583.         HRESULT LPInnerFECRate(
  1584.             [in] BinaryConvolutionCodeRate FEC
  1585.             );
  1586.         [propget, id(DISPID_TUNER_L_DVBT_HALPHA), helpstring("Hierarchical Alpha")]
  1587.         HRESULT HAlpha(
  1588.             [out, retval] HierarchyAlpha* Alpha
  1589.             );
  1590.         [propput, id(DISPID_TUNER_L_DVBT_HALPHA), helpstring("Hierarchical Alpha")]
  1591.         HRESULT HAlpha(
  1592.             [in] HierarchyAlpha Alpha
  1593.             );
  1594.         [propget, id(DISPID_TUNER_L_DVBT_GUARDINTERVAL), helpstring("Guard Interval")]
  1595.         HRESULT Guard(
  1596.             [out, retval] GuardInterval* GI
  1597.             );
  1598.         [propput, id(DISPID_TUNER_L_DVBT_GUARDINTERVAL), helpstring("Guard Interval")]
  1599.         HRESULT Guard(
  1600.             [in] GuardInterval GI
  1601.             );
  1602.         [propget, id(DISPID_TUNER_L_DVBT_TRANSMISSIONMODE), helpstring("Transmission Mode")]
  1603.         HRESULT Mode(
  1604.             [out, retval] TransmissionMode* mode
  1605.             );
  1606.         [propput, id(DISPID_TUNER_L_DVBT_TRANSMISSIONMODE), helpstring("Transmission Mode")]
  1607.         HRESULT Mode(
  1608.             [in] TransmissionMode mode
  1609.             );
  1610.         [propget, id(DISPID_TUNER_L_DVBT_INUSE), helpstring("Hierarchical Alpha")]
  1611.         HRESULT OtherFrequencyInUse(
  1612.             [out, retval] VARIANT_BOOL* OtherFrequencyInUseVal
  1613.             );
  1614.         [propput, id(DISPID_TUNER_L_DVBT_INUSE), helpstring("Hierarchical Alpha")]
  1615.         HRESULT OtherFrequencyInUse(
  1616.             [in] VARIANT_BOOL OtherFrequencyInUseVal
  1617.             );
  1618.     };
  1619.  
  1620. //////////////////////////////////////////////////////////////////////////////////////
  1621.     [
  1622.         object,
  1623.         hidden,
  1624.         nonextensible,
  1625.         uuid(3D7C353C-0D04-45f1-A742-F97CC1188DC8),
  1626.         dual,
  1627.         oleautomation,
  1628.         helpstring("DVB Satellite Locator Information"),
  1629.         pointer_default(unique)
  1630.     ]
  1631.     interface IDVBSLocator : ILocator
  1632.     {
  1633.  
  1634.         [propget, id(DISPID_TUNER_L_DVBS_POLARISATION), helpstring("Signal Polarisation Type")]
  1635.         HRESULT SignalPolarisation(
  1636.             [out, retval] Polarisation* PolarisationVal
  1637.             );
  1638.         [propput, id(DISPID_TUNER_L_DVBS_POLARISATION), helpstring("Signal Polarisation Type")]
  1639.         HRESULT SignalPolarisation(
  1640.             [in] Polarisation PolarisationVal
  1641.             );
  1642.         [propget, id(DISPID_TUNER_L_DVBS_WEST), helpstring("VARIANT_TRUE means orbital position specifies west longitude")]
  1643.         HRESULT WestPosition(
  1644.             [out, retval] VARIANT_BOOL* WestLongitude
  1645.             );
  1646.         [propput, id(DISPID_TUNER_L_DVBS_WEST), helpstring("VARIANT_TRUE means orbital position specifies west longitude")]
  1647.         HRESULT WestPosition(
  1648.             [in] VARIANT_BOOL WestLongitude
  1649.             );
  1650.         [propget, id(DISPID_TUNER_L_DVBS_ORBITAL), helpstring("Longitude in tenths of a degree")]
  1651.         HRESULT OrbitalPosition(
  1652.             [out, retval] long* longitude
  1653.             );
  1654.         [propput, id(DISPID_TUNER_L_DVBS_ORBITAL), helpstring("Longitude in tenths of a degree")]
  1655.         HRESULT OrbitalPosition(
  1656.             [in] long longitude
  1657.             );
  1658.         [propget, id(DISPID_TUNER_L_DVBS_AZIMUTH), helpstring("Azimuth in tenths of a degree")]
  1659.         HRESULT Azimuth(
  1660.             [out, retval] long* Azimuth
  1661.             );
  1662.         [propput, id(DISPID_TUNER_L_DVBS_AZIMUTH), helpstring("Azimuth in tenths of a degree")]
  1663.         HRESULT Azimuth(
  1664.             [in] long Azimuth
  1665.             );
  1666.         [propget, id(DISPID_TUNER_L_DVBS_ELEVATION), helpstring("Elevation in tenths of a degree")]
  1667.         HRESULT Elevation(
  1668.             [out, retval] long* Elevation
  1669.             );
  1670.         [propput, id(DISPID_TUNER_L_DVBS_ELEVATION), helpstring("Elevation in tenths of a degree")]
  1671.         HRESULT Elevation(
  1672.             [in] long Elevation
  1673.             );
  1674.     };
  1675.  
  1676. //////////////////////////////////////////////////////////////////////////////////////
  1677.     [
  1678.         object,
  1679.         hidden,
  1680.         nonextensible,
  1681.         uuid(6E42F36E-1DD2-43c4-9F78-69D25AE39034),
  1682.         dual,
  1683.         oleautomation,
  1684.         helpstring("DVB Cable Locator Information"),
  1685.         pointer_default(unique)
  1686.     ]
  1687.     interface IDVBCLocator : ILocator
  1688.     {
  1689.     };
  1690.  
  1691. //////////////////////////////////////////////////////////////////////////////////////
  1692. //////////////////////////////////////////////////////////////////////////////////////
  1693. // TYPELIB & CoClasses
  1694. //////////////////////////////////////////////////////////////////////////////////////
  1695. //////////////////////////////////////////////////////////////////////////////////////
  1696. [
  1697.     uuid(9B085638-018E-11d3-9D8E-00C04F72D980),
  1698.     version(1.0),
  1699.     helpstring("Microsoft Tuner 1.0 Type Library")
  1700. ]
  1701. library TunerLib
  1702. {
  1703.     importlib("stdole2.tlb");
  1704.  
  1705.     // SystemTuningSpaces class
  1706.     [
  1707.         uuid(D02AAC50-027E-11d3-9D8E-00C04F72D980),
  1708.         helpstring("SystemTuningSpace Class")
  1709.     ]
  1710.     coclass SystemTuningSpaces
  1711.     {
  1712.         [default] interface ITuningSpaceContainer;
  1713.     };
  1714.  
  1715.     // NOTE: there is no object factory for this class.  the implementation for the underlying
  1716.     // code is a c++ abstract base class.  this coclass is only provided here to
  1717.     // force vb to expose the base interface to enable polymorphic access to 
  1718.     // derived objects
  1719.     [
  1720.         hidden, restricted,
  1721.         uuid(5FFDC5E6-B83A-4b55-B6E8-C69E765FE9DB),
  1722.         helpstring("dummy class to expose base tuning space i/f to VB")
  1723.     ]
  1724.     coclass TuningSpace
  1725.     {
  1726.         [default] interface ITuningSpace;
  1727.     };
  1728.  
  1729.  
  1730.     [
  1731.         uuid(A2E30750-6C3D-11d3-B653-00C04F79498E),
  1732.         helpstring("ATSC Digital Broadcast Tuning Space Class")
  1733.     ]
  1734.     coclass ATSCTuningSpace
  1735.     {
  1736.         [default] interface IATSCTuningSpace;
  1737.     };
  1738.  
  1739.     [
  1740.         uuid(8A674B4C-1F63-11d3-B64C-00C04F79498E),
  1741.         helpstring("Analog Radio Tuning Space Class")
  1742.     ]
  1743.     coclass AnalogRadioTuningSpace
  1744.     {
  1745.         [default] interface IAnalogRadioTuningSpace;
  1746.     };
  1747.  
  1748.     [
  1749.         uuid(8A674B4D-1F63-11d3-B64C-00C04F79498E),
  1750.         helpstring("Analog TV Tuning Space Class")
  1751.     ]
  1752.     coclass AnalogTVTuningSpace
  1753.     {
  1754.         [default] interface IAnalogTVTuningSpace;
  1755.     };
  1756.  
  1757.     [
  1758.         uuid(C6B14B32-76AA-4a86-A7AC-5C79AAF58DA7),
  1759.         helpstring("DVB Tuning Space Class")
  1760.     ]
  1761.     coclass DVBTuningSpace
  1762.     {
  1763.         [default] interface IDVBTuningSpace;
  1764.     };
  1765.  
  1766.  
  1767.  
  1768.     // ComponentTypes container class
  1769.     [
  1770.         uuid(A1A2B1C4-0E3A-11d3-9D8E-00C04F72D980),
  1771.         helpstring("Component Types Collection Class")
  1772.     ]
  1773.     coclass ComponentTypes
  1774.     {
  1775.         [default] interface IComponentTypes;
  1776.     };
  1777.  
  1778.     // ComponentType class
  1779.     [
  1780.         uuid(823535A0-0318-11d3-9D8E-00C04F72D980),
  1781.         helpstring("ComponentType Class")
  1782.     ]
  1783.     coclass ComponentType
  1784.     {
  1785.         [default] interface IComponentType;
  1786.     };
  1787.  
  1788.     // Language ComponentType class
  1789.     [
  1790.         uuid(1BE49F30-0E1B-11d3-9D8E-00C04F72D980),
  1791.         helpstring("LanguageComponentType Class")
  1792.     ]
  1793.     coclass LanguageComponentType
  1794.     {
  1795.         [default] interface ILanguageComponentType;
  1796.     };
  1797.  
  1798.     // MPEG2 ComponentType class
  1799.     [
  1800.         uuid(418008F3-CF67-4668-9628-10DC52BE1D08),
  1801.         helpstring("MPEG2ComponentType Class")
  1802.     ]
  1803.     coclass MPEG2ComponentType
  1804.     {
  1805.         [default] interface IMPEG2ComponentType;
  1806.     };
  1807.  
  1808.     // ATSC ComponentType class
  1809.     [
  1810.         uuid(A8DCF3D5-0780-4ef4-8A83-2CFFAACB8ACE),
  1811.         helpstring("ATSCComponentType Class")
  1812.     ]
  1813.     coclass ATSCComponentType
  1814.     {
  1815.         [default] interface IATSCComponentType;
  1816.     };
  1817.  
  1818.     // Components class
  1819.     [
  1820.         hidden, restricted,
  1821.         uuid(809B6661-94C4-49e6-B6EC-3F0F862215AA),
  1822.         helpstring("Components Collection Class")
  1823.     ]
  1824.     coclass Components
  1825.     {
  1826.         [default] interface IComponents;
  1827.     };
  1828.  
  1829.     // Component class
  1830.     // the components can only be created by network provider/tif.  client apps
  1831.     // retrieve them from a filled-in tune request by either loading a persisted tune
  1832.     // request that has been filled in by a proper guide store loader or by re-getting
  1833.     // the current tune request property which will have this filled in by the network
  1834.     // provider
  1835.     [
  1836.         hidden, restricted,
  1837.         uuid(59DC47A8-116C-11d3-9D8E-00C04F72D980),
  1838.         helpstring("Component Class")
  1839.     ]
  1840.     coclass Component
  1841.     {
  1842.         [default] interface IComponent;
  1843.     };
  1844.  
  1845.     // MPEG2 Component class
  1846.     [
  1847.         hidden, restricted,
  1848.         uuid(055CB2D7-2969-45cd-914B-76890722F112),
  1849.         helpstring("MPEG2 Component Class")
  1850.     ]
  1851.     coclass MPEG2Component
  1852.     {
  1853.         [default] interface IMPEG2Component;
  1854.     };
  1855.  
  1856.  
  1857.     // NOTE: there is no object factory for this class.  the implementation for the underlying
  1858.     // code is a c++ abstract base class.  this coclass is only provided here to
  1859.     // force vb to expose the base interface to enable polymorphic access to 
  1860.     // derived objects
  1861.     [
  1862.         hidden, restricted,
  1863.         uuid(B46E0D38-AB35-4a06-A137-70576B01B39F),
  1864.         helpstring("dummy class to expose base tune request i/f to VB")
  1865.     ]
  1866.     coclass TuneRequest
  1867.     {
  1868.         [default] interface ITuneRequest;
  1869.     };
  1870.  
  1871.  
  1872.     // NOTE: the tuning request factories should not be invoked directly.
  1873.     // instead apps should use ITuningSpace::CreateTuningRequest to obtain a correctly
  1874.     // initialized tuning request of the appropriate type for that space.
  1875.     // the object factories are provided to allow generic code to a load a previously persisted
  1876.     // tune request object.
  1877.     [
  1878.         hidden,
  1879.         restricted,
  1880.         uuid(0369B4E5-45B6-11d3-B650-00C04F79498E),
  1881.         helpstring("Channel Tune Request")
  1882.     ]
  1883.     coclass ChannelTuneRequest
  1884.     {
  1885.         [default] interface IChannelTuneRequest;
  1886.     };
  1887.  
  1888.     [
  1889.         hidden,
  1890.         restricted,
  1891.         uuid(0369B4E6-45B6-11d3-B650-00C04F79498E),
  1892.         helpstring("ATSC Channel Tune Request")
  1893.     ]
  1894.     coclass ATSCChannelTuneRequest
  1895.     {
  1896.         [default] interface IATSCChannelTuneRequest;
  1897.     };
  1898.  
  1899.  
  1900.     // NOTE: there is no object factory for this class.  the implementation for the underlying
  1901.     // code is a c++ abstract base class.  this coclass is only provided here to
  1902.     // force vb to expose the base interface to enable polymorphic access to 
  1903.     // derived objects
  1904.     [
  1905.         hidden, restricted,
  1906.         uuid(0888C883-AC4F-4943-B516-2C38D9B34562),
  1907.         helpstring("dummy class to expose base locator i/f to VB")
  1908.     ]
  1909.     coclass Locator
  1910.     {
  1911.         [default] interface ILocator;
  1912.     };
  1913.  
  1914.     // its not intended that client apps actually create locators.  the network
  1915.     // provider in combination with the transport information filter(TIF) are the 
  1916.     // only modules in the system that actually know the correct values for these objects
  1917.     // however, for testing purposes, its necessary to allow these to be created.
  1918.     // instead, normally these will simply be passed around opaquely since they're a 
  1919.     // property of the base tune request interface.
  1920.     [
  1921.         uuid(8872FF1B-98FA-4d7a-8D93-C9F1055F85BB),
  1922.         helpstring("ATSC Locator")
  1923.     ]
  1924.     coclass ATSCLocator
  1925.     {
  1926.         [default] interface IATSCLocator;
  1927.     };
  1928.  
  1929.     [
  1930.         uuid(9CD64701-BDF3-4d14-8E03-F12983D86664),
  1931.         helpstring("DVB-Terrestrial Locator")
  1932.     ]
  1933.     coclass DVBTLocator
  1934.     {
  1935.         [default] interface IDVBTLocator;
  1936.     };
  1937.  
  1938.     [
  1939.         uuid(1DF7D126-4050-47f0-A7CF-4C4CA9241333),
  1940.         helpstring("DVB-Satellite Locator")
  1941.     ]
  1942.     coclass DVBSLocator
  1943.     {
  1944.         [default] interface IDVBSLocator;
  1945.     };
  1946.  
  1947.     [
  1948.         uuid(C531D9FD-9685-4028-8B68-6E1232079F1E),
  1949.         helpstring("DVB-Cable Locator")
  1950.     ]
  1951.     coclass DVBCLocator
  1952.     {
  1953.         [default] interface ILocator;
  1954.     };
  1955.  
  1956.     [
  1957.         hidden,
  1958.         restricted,
  1959.         uuid(15D6504A-5494-499c-886C-973C9E53B9F1),
  1960.         helpstring("DVB Tune Request")
  1961.     ]
  1962.     coclass DVBTuneRequest
  1963.     {
  1964.         [default] interface IDVBTuneRequest;
  1965.     };
  1966.  
  1967. // Sample tuner class definition:
  1968. //
  1969. //  [
  1970. //      uuid(<some guid>),
  1971. //      helpstring("My Tuner object")
  1972. //  ]
  1973. //  coclass MyTuner
  1974. //  {
  1975. //      [default] interface ITuner;
  1976. //      interface IMyTunerCustomFeatureInterface;
  1977. //      [default, source] interface ITunerEvents;
  1978. //      [source] interface ISignalEvents;
  1979. //  };
  1980.  
  1981. ///////////////////////////////////////////////////////////////////////////////////////
  1982. // utility objects
  1983. ///////////////////////////////////////////////////////////////////////////////////////
  1984.     [
  1985.         hidden, restricted,
  1986.         uuid(8A674B49-1F63-11d3-B64C-00C04F79498E),
  1987.         helpstring("Create property bag backed by registry")
  1988.     ]
  1989.     coclass CreatePropBagOnRegKey
  1990.     {
  1991.         interface ICreatePropBagOnRegKey;
  1992.     };
  1993.  
  1994. }
  1995.  
  1996. // end of file -- tuner.idl
  1997.