Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

952 lines
22 KiB

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