/[cvs]/api/include/DShowIDL/bdaiface.idl
ViewVC logotype

Contents of /api/include/DShowIDL/bdaiface.idl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Sun Jul 1 20:47:59 2001 UTC (23 years, 4 months ago) by bearsoft
Branch point for: lazy, MAIN
Initial revision

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 } ;

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26