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

  1. //------------------------------------------------------------------------------
  2. // File: BDAIface.idl
  3. //
  4. // Desc: This file defines the Ring 3 BDA interfaces that are common to
  5. //       all BDA network and device types.
  6. //
  7. //       The interfaces specific to a particular Network Type or filter
  8. //       implementation are defined in a separate include file for that
  9. //       Network Type or filter implementation.
  10. //
  11. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  12. //------------------------------------------------------------------------------
  13.  
  14.  
  15. //---------------------------------------------------------------------
  16. // IUnknown import idl
  17. //---------------------------------------------------------------------
  18. #ifndef DO_NO_IMPORTS
  19. import "unknwn.idl";
  20. import "strmif.idl";
  21. import "BdaTypes.h";
  22. #endif
  23.  
  24. //---------------------------------------------------------------------
  25. //
  26. //  IBDA_NetworkProvider interface
  27. //
  28. //  Implemented by a BDA Network Provider
  29. //
  30. //      Used by a BDA device filter to register itself with
  31. //      a Network Provider and query information about the
  32. //      the current tuning request.
  33. //
  34. //---------------------------------------------------------------------
  35. [
  36.     object,
  37.     uuid(fd501041-8ebe-11ce-8183-00aa00577da2),
  38.     pointer_default(unique)
  39. ]
  40.  
  41. interface IBDA_NetworkProvider : IUnknown
  42. {
  43.  
  44.     HRESULT
  45.     PutSignalSource (
  46.         [in] ULONG          ulSignalSource
  47.         );
  48.  
  49.  
  50.     HRESULT
  51.     GetSignalSource (
  52.         [in, out] ULONG *   pulSignalSource
  53.         );
  54.  
  55.     HRESULT
  56.     GetNetworkType (
  57.         [in, out] GUID *    pguidNetworkType
  58.         );
  59.  
  60.     HRESULT
  61.     PutTuningSpace (
  62.         [in] REFGUID        guidTuningSpace
  63.         );
  64.  
  65.     HRESULT
  66.     GetTuningSpace (
  67.         [in, out] GUID *    pguidTuingSpace
  68.         );
  69.  
  70.     HRESULT
  71.     RegisterDeviceFilter (
  72.         [in]  IUnknown *    pUnkFilterControl,
  73.         [in, out] ULONG *   ppvRegisitrationContext
  74.         );
  75.  
  76.     HRESULT
  77.     UnRegisterDeviceFilter (
  78.         [in] ULONG          pvRegistrationContext
  79.         );
  80.  
  81. }
  82.  
  83.  
  84. //---------------------------------------------------------------------
  85. //
  86. //  IBDA_EthernetFilter interface
  87. //
  88. //  Implemented by a BDA Network Provider
  89. //
  90. //      Used by an Ethernet Network Data Sink filter (eg. IPSink) to
  91. //      request that the Network Provider make its best effort to tune
  92. //      to the stream(s) on which a list of Ethernet multicast addresses
  93. //      may be transmitted.
  94. //
  95. //      Addresses in the address list are byte aligned in Network order.
  96. //      UlcbAddresses will always be an integer multiple of the
  97. //      size of an ethernet address.
  98. //
  99. //---------------------------------------------------------------------
  100. [
  101.     object,
  102.     uuid(71985F43-1CA1-11d3-9CC8-00C04F7971E0),
  103.     pointer_default(unique)
  104. ]
  105.  
  106. interface IBDA_EthernetFilter : IUnknown
  107. {
  108.     HRESULT
  109.     GetMulticastListSize (
  110.         [in, out] ULONG *                   pulcbAddresses
  111.         );
  112.  
  113.     HRESULT
  114.     PutMulticastList (
  115.         [in] ULONG                          ulcbAddresses,
  116.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  117.         );
  118.  
  119.     HRESULT
  120.     GetMulticastList (
  121.         [in, out] ULONG *                       pulcbAddresses,
  122.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  123.         );
  124.  
  125.     HRESULT
  126.     PutMulticastMode (
  127.         [in] ULONG      ulModeMask
  128.         );
  129.  
  130.     HRESULT
  131.     GetMulticastMode (
  132.         [out] ULONG *   pulModeMask
  133.         );
  134.  
  135. }
  136.  
  137.  
  138.  
  139. //---------------------------------------------------------------------
  140. //
  141. //  IBDA_IPV4Filter interface
  142. //
  143. //  Implemented by a BDA Network Provider
  144. //
  145. //      Used by an IPv4 Network Data Sink filter to request
  146. //      that the Network Provider make its best effort to tune
  147. //      to the stream(s) on which a list of IPv4 multicast addresses
  148. //      may be transmitted.
  149. //
  150. //      Addresses in the address list are byte aligned in Network order.
  151. //      UlcbAddresses will always be an integer multiple of the
  152. //      size of an IPv4 address.
  153. //
  154. //---------------------------------------------------------------------
  155. [
  156.     object,
  157.     uuid(71985F44-1CA1-11d3-9CC8-00C04F7971E0),
  158.     pointer_default(unique)
  159. ]
  160.  
  161. interface IBDA_IPV4Filter : IUnknown
  162. {
  163.  
  164.     HRESULT
  165.     GetMulticastListSize (
  166.         [in, out] ULONG *                   pulcbAddresses
  167.         );
  168.  
  169.     HRESULT
  170.     PutMulticastList (
  171.         [in] ULONG                          ulcbAddresses,
  172.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  173.         );
  174.  
  175.     HRESULT
  176.     GetMulticastList (
  177.         [in, out] ULONG *                       pulcbAddresses,
  178.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  179.         );
  180.  
  181.     HRESULT
  182.     PutMulticastMode (
  183.         [in] ULONG  ulModeMask
  184.         );
  185.  
  186.     HRESULT
  187.     GetMulticastMode (
  188.         [out] ULONG* pulModeMask
  189.         );
  190. }
  191.  
  192.  
  193.  
  194. //---------------------------------------------------------------------
  195. //
  196. //  IBDA_IPV6Filter interface
  197. //
  198. //  Implemented by a BDA Network Provider
  199. //
  200. //      Used by an IPv6 Network Data Sink filter to request
  201. //      that the Network Provider make its best effort to tune
  202. //      to the stream(s) on which a list of IPv6 multicast addresses
  203. //      may be transmitted.
  204. //
  205. //      Addresses in the address list are byte aligned in Network order.
  206. //      UlcbAddresses will always be an integer multiple of the
  207. //      size of an IPv6 address.
  208. //
  209. //---------------------------------------------------------------------
  210. [
  211.     object,
  212.     uuid(E1785A74-2A23-4fb3-9245-A8F88017EF33),
  213.     pointer_default(unique)
  214. ]
  215.  
  216. interface IBDA_IPV6Filter : IUnknown
  217. {
  218.  
  219.     HRESULT
  220.     GetMulticastListSize (
  221.         [in, out] ULONG *                   pulcbAddresses
  222.         );
  223.  
  224.     HRESULT
  225.     PutMulticastList (
  226.         [in] ULONG                          ulcbAddresses,
  227.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  228.         );
  229.  
  230.     HRESULT
  231.     GetMulticastList (
  232.         [in, out] ULONG *                       pulcbAddresses,
  233.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  234.         );
  235.  
  236.     HRESULT
  237.     PutMulticastMode (
  238.         [in] ULONG  ulModeMask
  239.         );
  240.  
  241.     HRESULT
  242.     GetMulticastMode (
  243.         [out] ULONG* pulModeMask
  244.         );
  245. }
  246.  
  247.  
  248.  
  249. //---------------------------------------------------------------------
  250. //
  251. //  IBDA_DeviceControl interface
  252. //
  253. //  Implemented by a BDA Device Filter
  254. //
  255. //      Used by the Network Provider to commit a series of changes
  256. //      on a BDA device filter.  The device filter validates and
  257. //      accumulates all changes requested after StartChanges().  It
  258. //      effects the accumulated list of changes when CommitChanges() is
  259. //      called.
  260. //
  261. //---------------------------------------------------------------------
  262. [
  263.     object,
  264.     uuid(FD0A5AF3-B41D-11d2-9C95-00C04F7971E0),
  265.     pointer_default(unique)
  266. ]
  267.  
  268. interface IBDA_DeviceControl : IUnknown
  269. {
  270.     HRESULT
  271.     StartChanges (
  272.         void
  273.         );
  274.  
  275.     HRESULT
  276.     CheckChanges (
  277.         void
  278.         );
  279.  
  280.     HRESULT
  281.     CommitChanges (
  282.         void
  283.         );
  284.  
  285.     HRESULT
  286.     GetChangeState (
  287.         [in, out] ULONG *   pState
  288.         );
  289.  
  290. }
  291.  
  292.  
  293.  
  294. //---------------------------------------------------------------------
  295. //
  296. //  IBDA_PinControl interface
  297. //
  298. //  Implemented by a BDA Device Filter's Pin
  299. //
  300. //      Used by the Network Provider to determine the BDA PinID and
  301. //      PinType on a BDA Filter's Pin
  302. //
  303. //---------------------------------------------------------------------
  304. [
  305.     object,
  306.     uuid(0DED49D5-A8B7-4d5d-97A1-12B0C195874D),
  307.     pointer_default(unique)
  308. ]
  309.  
  310. interface IBDA_PinControl : IUnknown
  311. {
  312.     HRESULT
  313.     GetPinID (
  314.         [in, out] ULONG *   pulPinID
  315.         );
  316.  
  317.     HRESULT
  318.     GetPinType (
  319.         [in, out] ULONG *   pulPinType
  320.         );
  321. }
  322.  
  323. //---------------------------------------------------------------------
  324. //
  325. //  IBDA_SignalProperties interface
  326. //
  327. //  Implemented by a BDA Device Filter
  328. //
  329. //      BDA Signal Properties is used by a Network Provider to inform
  330. //      a BDA Device Filter about the current tuning request.  The
  331. //      Network Provider will call the Put functions when the BDA
  332. //      device is first registered with the Network Provider and whenever
  333. //      the current tuning request is modified.
  334. //
  335. //---------------------------------------------------------------------
  336. [
  337.     object,
  338.     uuid(D2F1644B-B409-11d2-BC69-00A0C9EE9E16),
  339.     pointer_default(unique)
  340. ]
  341.  
  342. interface IBDA_SignalProperties : IUnknown
  343. {
  344.     HRESULT
  345.     PutNetworkType (
  346.         [in] REFGUID        guidNetworkType
  347.         );
  348.  
  349.     HRESULT
  350.     GetNetworkType (
  351.         [in, out] GUID *    pguidNetworkType
  352.         );
  353.  
  354.     HRESULT
  355.     PutSignalSource (
  356.         [in] ULONG          ulSignalSource
  357.         );
  358.  
  359.     HRESULT
  360.     GetSignalSource (
  361.         [in, out] ULONG *   pulSignalSource
  362.         );
  363.  
  364.     HRESULT
  365.     PutTuningSpace (
  366.         [in] REFGUID        guidTuningSpace
  367.         );
  368.  
  369.     HRESULT
  370.     GetTuningSpace (
  371.         [in, out] GUID *    pguidTuingSpace
  372.         );
  373. }
  374.  
  375.  
  376. //---------------------------------------------------------------------
  377. //
  378. //  IBDA_Topology interface
  379. //
  380. //  Implemented by a BDA Device Filter
  381. //
  382. //      Used by the Network Provider to query a BDA Device Filter's
  383. //      possible topologies (template topology) and to configure
  384. //      the device with an appropriate topology for the current
  385. //      tuning request.  It is also used to get an IUnknown to
  386. //      a control node which may be used to set specific tuning
  387. //      information.
  388. //
  389. //---------------------------------------------------------------------
  390. [
  391.     object,
  392.     uuid(A14EE835-0A23-11d3-9CC7-00C04F7971E0),
  393.     pointer_default(unique)
  394. ]
  395.  
  396. interface IBDA_Topology : IUnknown
  397. {
  398.     HRESULT
  399.     GetNodeTypes (
  400.         [in, out] ULONG *                           pulcNodeTypes,
  401.         [in]  ULONG                                 ulcNodeTypesMax,
  402.         [in, out, size_is (ulcNodeTypesMax)] ULONG  rgulNodeTypes[]
  403.         );
  404.  
  405.  
  406.     HRESULT
  407.     GetNodeInterfaces (
  408.         [in]  ULONG                                     ulNodeType,
  409.         [in, out] ULONG *                               pulcInterfaces,
  410.         [in]  ULONG                                     ulcInterfacesMax,
  411.         [in, out, size_is (ulcInterfacesMax)] GUID *    rgguidInterfaces[]
  412.         );
  413.  
  414.     HRESULT
  415.     GetPinTypes (
  416.         [in, out] ULONG *                           pulcPinTypes,
  417.         [in]  ULONG                                 ulcPinTypesMax,
  418.         [in, out, size_is (ulcPinTypesMax)] ULONG   rgulPinTypes[]
  419.         );
  420.  
  421.     HRESULT
  422.     GetTemplateConnections (
  423.         [in, out] ULONG *                       pulcConnections,
  424.         [in]  ULONG                             ulcConnectionsMax,
  425.         [in, out, size_is (ulcConnectionsMax)] BDA_TEMPLATE_CONNECTION    rgConnections[]
  426.         );
  427.  
  428.     HRESULT
  429.     CreatePin (
  430.         [in]  ULONG         ulPinType,
  431.         [in, out] ULONG *   pulPinId
  432.         );
  433.  
  434.     HRESULT
  435.     DeletePin (
  436.         [in] ULONG      ulPinId
  437.         );
  438.  
  439.     HRESULT
  440.     SetMediaType (
  441.         [in]  ULONG             ulPinId,
  442.         [in]  AM_MEDIA_TYPE *   pMediaType
  443.         );
  444.  
  445.     HRESULT
  446.     SetMedium (
  447.         [in] ULONG          ulPinId,
  448.         [in] REGPINMEDIUM * pMedium
  449.         );
  450.  
  451.     HRESULT
  452.     CreateTopology (
  453.         [in] ULONG ulInputPinId,
  454.         [in] ULONG ulOutputPinId
  455.         );
  456.  
  457.     HRESULT
  458.     GetControlNode (
  459.         [in] ULONG              ulInputPinId,
  460.         [in] ULONG              ulOutputPinId,
  461.         [in] ULONG              ulNodeType,
  462.         [in, out] IUnknown **   ppControlNode
  463.         );
  464. }
  465.  
  466. //---------------------------------------------------------------------
  467. // IBDA_VoidTransform interface
  468. //---------------------------------------------------------------------
  469. [
  470.     object,
  471.     uuid(71985F46-1CA1-11d3-9CC8-00C04F7971E0),
  472.     pointer_default(unique)
  473. ]
  474.  
  475. interface IBDA_VoidTransform : IUnknown
  476. {
  477.     HRESULT
  478.     Start (
  479.         void
  480.         );
  481.  
  482.     HRESULT
  483.     Stop (
  484.         void
  485.         );
  486.  
  487. }
  488.  
  489. //---------------------------------------------------------------------
  490. // IBDA_NullTransform interface
  491. //---------------------------------------------------------------------
  492. [
  493.     object,
  494.     uuid(DDF15B0D-BD25-11d2-9CA0-00C04F7971E0),
  495.     pointer_default(unique)
  496. ]
  497.  
  498. interface IBDA_NullTransform : IUnknown
  499. {
  500.     HRESULT
  501.     Start (
  502.         void
  503.         );
  504.  
  505.     HRESULT
  506.     Stop (
  507.         void
  508.         );
  509.  
  510. }
  511.  
  512. //---------------------------------------------------------------------
  513. // IBDA_FrequencyFilter interface
  514. //---------------------------------------------------------------------
  515. [
  516.     object,
  517.     uuid(71985F47-1CA1-11d3-9CC8-00C04F7971E0),
  518.     pointer_default(unique)
  519. ]
  520.  
  521. interface IBDA_FrequencyFilter : IUnknown
  522. {
  523.     HRESULT
  524.     put_Autotune (
  525.         [in] ULONG *        pulTransponder
  526.         );
  527.  
  528.     HRESULT
  529.     put_Frequency (
  530.         [in] ULONG *        pulFrequency
  531.         );
  532.  
  533.     HRESULT
  534.     get_Frequency (
  535.         [in, out] ULONG *   pulFrequency
  536.         );
  537.  
  538.     HRESULT
  539.     put_Polarity (
  540.         [in] ULONG *        pulPolarity
  541.         );
  542.  
  543.     HRESULT
  544.     get_Polarity (
  545.         [in, out] ULONG *   pulPolarity
  546.         );
  547.  
  548.     HRESULT
  549.     put_Range (
  550.         [in] ULONG *        pulRange
  551.         );
  552.  
  553.     HRESULT
  554.     get_Range (
  555.         [in, out] ULONG *   pulRange
  556.         );
  557. }
  558.  
  559. //---------------------------------------------------------------------
  560. // IBDA_AutoDemodulate interface
  561. //---------------------------------------------------------------------
  562. [
  563.     object,
  564.     uuid(DDF15B12-BD25-11d2-9CA0-00C04F7971E0),
  565.     pointer_default(unique)
  566. ]
  567.  
  568. interface IBDA_AutoDemodulate : IUnknown
  569. {
  570.     HRESULT
  571.     put_AutoDemodulate (
  572.         void
  573.         );
  574. }
  575.  
  576. //---------------------------------------------------------------------
  577. // IBDA_DigitalDemodulator interface
  578. //---------------------------------------------------------------------
  579. [
  580.     object,
  581.     uuid(EF30F379-985B-4d10-B640-A79D5E04E1E0),
  582.     pointer_default(unique)
  583. ]
  584.  
  585. interface IBDA_DigitalDemodulator : IUnknown
  586. {
  587.     HRESULT
  588.     put_ModulationType (
  589.         [in] ModulationType *   pModulationType
  590.         );
  591.  
  592.     HRESULT
  593.     get_ModulationType (
  594.         [in, out] ModulationType *  pModulationType
  595.         );
  596.  
  597.     HRESULT
  598.     put_InnerFECMethod (
  599.         [in] FECMethod *    pFECMethod
  600.         );
  601.  
  602.     HRESULT
  603.     get_InnerFECMethod (
  604.         [in, out] FECMethod *   pFECMethod
  605.         );
  606.  
  607.     HRESULT
  608.     put_InnerFECRate (
  609.         [in] BinaryConvolutionCodeRate *    pFECRate
  610.         );
  611.  
  612.     HRESULT
  613.     get_InnerFECRate (
  614.         [in, out] BinaryConvolutionCodeRate *   pFECRate
  615.         );
  616.  
  617.     HRESULT
  618.     put_OuterFECMethod (
  619.         [in] FECMethod *    pFECMethod
  620.         );
  621.  
  622.     HRESULT
  623.     get_OuterFECMethod (
  624.         [in, out] FECMethod *   pFECMethod
  625.         );
  626.  
  627.     HRESULT
  628.     put_OuterFECRate (
  629.         [in] BinaryConvolutionCodeRate *    pFECRate
  630.         );
  631.  
  632.     HRESULT
  633.     get_OuterFECRate (
  634.         [in, out] BinaryConvolutionCodeRate *   pFECRate
  635.         );
  636.  
  637.     HRESULT
  638.     put_SymbolRate (
  639.         [in] ULONG *    pSymbolRate
  640.         );
  641.  
  642.     HRESULT
  643.     get_SymbolRate (
  644.         [in, out] ULONG *   pSymbolRate
  645.         );
  646.  
  647.     HRESULT
  648.     put_SpectralInversion (
  649.         [in] SpectralInversion *    pSpectralInversion
  650.         );
  651.  
  652.     HRESULT
  653.     get_SpectralInversion (
  654.         [in, out] SpectralInversion *   pSpectralInversion
  655.         );
  656. }
  657.  
  658. typedef enum
  659. {
  660.     KSPROPERTY_IPSINK_MULTICASTLIST,
  661.     KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION,
  662.     KSPROPERTY_IPSINK_ADAPTER_ADDRESS
  663.  
  664. } KSPROPERTY_IPSINK;
  665.  
  666.  
  667.  
  668. //---------------------------------------------------------------------
  669. // IBDA_IPSinkControl interface
  670. //---------------------------------------------------------------------
  671.  
  672. [
  673.     object,
  674.     uuid(3F4DC8E2-4050-11d3-8F4B-00C04F7971E2),
  675.     pointer_default(unique)
  676. ]
  677.  
  678. interface IBDA_IPSinkControl : IUnknown
  679. {
  680.     HRESULT GetMulticastList (
  681.                 [in, out] unsigned long *pulcbSize,
  682.                 [in, out] BYTE **pbBuffer
  683.     );
  684.  
  685.  
  686.     HRESULT GetAdapterIPAddress (
  687.                 [in,out] unsigned long *pulcbSize,
  688.                 [in,out] BYTE **pbBuffer
  689.     );
  690.  
  691. }
  692.  
  693. //
  694. //  mpeg-2 demultiplexer-specific interfaces follow
  695. //
  696.  
  697. //---------------------------------------------------------------------
  698. // IEnumPIDMap interface
  699. //---------------------------------------------------------------------
  700.  
  701. #ifdef REMOVE_THESE
  702. typedef enum {
  703.     MEDIA_TRANSPORT_PACKET,         //  complete TS packet e.g. pass-through mode
  704.     MEDIA_ELEMENTARY_STREAM,        //  PES payloads; audio/video only
  705.     MEDIA_MPEG2_PSI,                //  PAT, PMT, CAT, Private
  706.     MEDIA_TRANSPORT_PAYLOAD         //  gathered TS packet payloads (PES packets, etc...)
  707. } MEDIA_SAMPLE_CONTENT ;
  708.  
  709. typedef struct {
  710.     ULONG                   ulPID ;
  711.     MEDIA_SAMPLE_CONTENT    MediaSampleContent ;
  712. } PID_MAP ;
  713. #endif // REMOVE_THESE
  714.  
  715. [
  716.     object,
  717.     uuid (afb6c2a2-2c41-11d3-8a60-0000f81e0e4a),
  718.     pointer_default(unique)
  719. ]
  720. interface IEnumPIDMap : IUnknown
  721. {
  722.     HRESULT
  723.     Next (
  724.         [in]                            ULONG       cRequest,
  725.         [in, out, size_is (cRequest)]   PID_MAP *   pPIDMap,
  726.         [out]                           ULONG *     pcReceived
  727.         ) ;
  728.  
  729.     HRESULT
  730.     Skip (
  731.         [in]    ULONG   cRecords
  732.         ) ;
  733.  
  734.     HRESULT
  735.     Reset (
  736.         ) ;
  737.  
  738.     HRESULT
  739.     Clone (
  740.         [out]   IEnumPIDMap **  ppIEnumPIDMap
  741.         ) ;
  742. } ;
  743.  
  744. //---------------------------------------------------------------------
  745. // IMPEG2PIDMap interface
  746. //---------------------------------------------------------------------
  747.  
  748. [
  749.     object,
  750.     uuid (afb6c2a1-2c41-11d3-8a60-0000f81e0e4a),
  751.     pointer_default(unique)
  752. ]
  753. interface IMPEG2PIDMap : IUnknown
  754. {
  755.     HRESULT
  756.     MapPID (
  757.         [in]    ULONG                   culPID,
  758.         [in]    ULONG *                 pulPID,
  759.         [in]    MEDIA_SAMPLE_CONTENT    MediaSampleContent
  760.         ) ;
  761.  
  762.     HRESULT
  763.     UnmapPID (
  764.         [in]    ULONG   culPID,
  765.         [in]    ULONG * pulPID
  766.         ) ;
  767.  
  768.     HRESULT
  769.     EnumPIDMap (
  770.         [out]   IEnumPIDMap ** pIEnumPIDMap
  771.         ) ;
  772. } ;
  773.