]> git.sesse.net Git - vlc/blob - modules/access/dtv/bdadefs.h
v4l2: fix and cleanup of mmap buffers allocation
[vlc] / modules / access / dtv / bdadefs.h
1 /*****************************************************************************
2  * bdadefs.h : DirectShow BDA headers for vlc
3  *****************************************************************************
4  * Copyright (C) 2007 the VideoLAN team
5  *
6  * Author: Ken Self <kenself(at)optusnet(dot)com(dot)au>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21  *****************************************************************************/
22
23 class IDigitalCableTuneRequest;
24 class IDigitalCableLocator;
25 class IATSCChannelTuneRequest;
26 class IATSCLocator;
27 class IBDA_DeviceControl;
28 class IBDA_FrequencyFilter;
29 class IBDA_SignalStatistics;
30 class IBDA_Topology;
31 class IChannelTuneRequest;
32 class IComponent;
33 class IComponents;
34 class IComponentType;
35 class IComponentTypes;
36 class IDVBCLocator;
37 class IDVBSLocator;
38 class IDVBSTuningSpace;
39 class IDVBTLocator;
40 class IDVBTuneRequest;
41 class IDVBTuningSpace;
42 class IDVBTuningSpace2;
43 class IEnumComponents;
44 class IEnumComponentTypes;
45 class IEnumTuningSpaces;
46 class ILocator;
47 class ISampleGrabber;
48 class ISampleGrabberCB;
49 class IScanningTuner;
50 class ITuner;
51 class ITunerCap;
52 class ITuneRequest;
53 class ITuningSpace;
54 class ITuningSpaceContainer;
55 class ITuningSpaces;
56 class IMpeg2Data;
57 class IGuideData;
58 class IGuideDataEvent;
59 class ISectionList;
60 class IEnumTuneRequests;
61 class IEnumGuideDataProperties;
62 class IGuideDataProperty;
63 class IMpeg2Stream;
64
65 typedef enum BinaryConvolutionCodeRate
66 {
67     BDA_BCC_RATE_NOT_SET = -1,
68     BDA_BCC_RATE_NOT_DEFINED=0,
69     BDA_BCC_RATE_1_2 = 1,
70     BDA_BCC_RATE_2_3,
71     BDA_BCC_RATE_3_4,
72     BDA_BCC_RATE_3_5,
73     BDA_BCC_RATE_4_5,
74     BDA_BCC_RATE_5_6,
75     BDA_BCC_RATE_5_11,
76     BDA_BCC_RATE_7_8,
77     BDA_BCC_RATE_MAX,
78 } BinaryConvolutionCodeRate;
79
80 typedef enum ComponentCategory
81 {
82     CategoryNotSet = -1,
83     CategoryOther=0,
84     CategoryVideo,
85     CategoryAudio,
86     CategoryText,
87     CategoryData,
88 } ComponentCategory;
89
90 typedef enum ComponentStatus
91 {
92     StatusActive,
93     StatusInactive,
94     StatusUnavailable,
95 } ComponentStatus;
96
97 typedef enum DVBSystemType
98 {
99     DVB_Cable,
100     DVB_Terrestrial,
101     DVB_Satellite,
102 } DVBSystemType;
103
104 typedef enum FECMethod
105 {
106     BDA_FEC_METHOD_NOT_SET = -1,
107     BDA_FEC_METHOD_NOT_DEFINED=0,
108     BDA_FEC_VITERBI = 1,
109     BDA_FEC_RS_204_188,
110     BDA_FEC_MAX,
111 } FECMethod;
112
113 typedef enum GuardInterval
114 {
115     BDA_GUARD_NOT_SET = -1,
116     BDA_GUARD_NOT_DEFINED=0,
117     BDA_GUARD_1_32 = 1,
118     BDA_GUARD_1_16,
119     BDA_GUARD_1_8,
120     BDA_GUARD_1_4,
121     BDA_GUARD_MAX,
122 } GuardInterval;
123
124 typedef enum HierarchyAlpha
125 {
126     BDA_HALPHA_NOT_SET = -1,
127     BDA_HALPHA_NOT_DEFINED=0,
128     BDA_HALPHA_1 = 1,
129     BDA_HALPHA_2,
130     BDA_HALPHA_4,
131     BDA_HALPHA_MAX,
132 } HierarchyAlpha;
133
134 typedef enum ModulationType
135 {
136     BDA_MOD_NOT_SET = -1,
137     BDA_MOD_NOT_DEFINED=0,
138     BDA_MOD_16QAM = 1,
139     BDA_MOD_32QAM,
140     BDA_MOD_64QAM,
141     BDA_MOD_80QAM,
142     BDA_MOD_96QAM,
143     BDA_MOD_112QAM,
144     BDA_MOD_128QAM,
145     BDA_MOD_160QAM,
146     BDA_MOD_192QAM,
147     BDA_MOD_224QAM,
148     BDA_MOD_256QAM,
149     BDA_MOD_320QAM,
150     BDA_MOD_384QAM,
151     BDA_MOD_448QAM,
152     BDA_MOD_512QAM,
153     BDA_MOD_640QAM,
154     BDA_MOD_768QAM,
155     BDA_MOD_896QAM,
156     BDA_MOD_1024QAM,
157     BDA_MOD_QPSK,
158     BDA_MOD_BPSK,
159     BDA_MOD_OQPSK,
160     BDA_MOD_8VSB,
161     BDA_MOD_16VSB,
162     BDA_MOD_ANALOG_AMPLITUDE,
163     BDA_MOD_ANALOG_FREQUENCY,
164     BDA_MOD_MAX,
165 } ModulationType;
166
167 typedef enum Polarisation
168 {
169     BDA_POLARISATION_NOT_SET     = -1,
170     BDA_POLARISATION_NOT_DEFINED = 0,
171     BDA_POLARISATION_LINEAR_H    = 1,
172     BDA_POLARISATION_LINEAR_V    = 2,
173     BDA_POLARISATION_CIRCULAR_L  = 3,
174     BDA_POLARISATION_CIRCULAR_R  = 4,
175     BDA_POLARISATION_MAX         = 5
176 } Polarisation;
177
178 typedef enum SpectralInversion
179 {
180     BDA_SPECTRAL_INVERSION_NOT_SET = -1,
181     BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0,
182     BDA_SPECTRAL_INVERSION_AUTOMATIC = 1,
183     BDA_SPECTRAL_INVERSION_NORMAL,
184     BDA_SPECTRAL_INVERSION_INVERTED,
185     BDA_SPECTRAL_INVERSION_MAX
186 } SpectralInversion;
187
188 typedef enum TransmissionMode
189 {
190     BDA_XMIT_MODE_NOT_SET = -1,
191     BDA_XMIT_MODE_NOT_DEFINED=0,
192     BDA_XMIT_MODE_2K = 1,
193     BDA_XMIT_MODE_8K,
194     BDA_XMIT_MODE_MAX,
195 } TransmissionMode;
196
197 typedef struct _BDANODE_DESCRIPTOR
198 {
199     ULONG               ulBdaNodeType;
200     GUID                guidFunction;
201     GUID                guidName;
202 } BDANODE_DESCRIPTOR, *PBDANODE_DESCRIPTOR;
203
204 typedef struct _BDA_TEMPLATE_CONNECTION
205 {
206     ULONG   FromNodeType;
207     ULONG   FromNodePinType;
208     ULONG   ToNodeType;
209     ULONG   ToNodePinType;
210 } BDA_TEMPLATE_CONNECTION, *PBDA_TEMPLATE_CONNECTION;
211
212 typedef struct _BDA_TEMPLATE_PIN_JOINT
213 {
214     ULONG   uliTemplateConnection;
215     ULONG   ulcInstancesMax;
216 } BDA_TEMPLATE_PIN_JOINT, *PBDA_TEMPLATE_PIN_JOINT;
217
218 class IComponent : public IDispatch
219 {
220 public:
221     virtual HRESULT __stdcall get_Type( IComponentType** p_p_cpt_type )=0;
222     virtual HRESULT __stdcall put_Type( IComponentType* p_cpt_type )=0;
223     virtual HRESULT __stdcall get_DescLangID( long* p_l_language )=0;
224     virtual HRESULT __stdcall put_DescLangID( long l_language )=0;
225     virtual HRESULT __stdcall get_Status( ComponentStatus* p_status )=0;
226     virtual HRESULT __stdcall put_Status( ComponentStatus status )=0;
227     virtual HRESULT __stdcall get_Description( BSTR* p_bstr_desc )=0;
228     virtual HRESULT __stdcall put_Description( BSTR bstr_desc )=0;
229     virtual HRESULT __stdcall Clone( IComponent** p_p_component )=0;
230 };
231
232 class IComponents : public IDispatch
233 {
234 public:
235     virtual HRESULT __stdcall get_Count( long* pl_count )=0;
236     virtual HRESULT __stdcall get__NewEnum( IEnumVARIANT** p_p_enum )=0;
237     virtual HRESULT __stdcall EnumComponents( IEnumComponents** p_p_enum )=0;
238     virtual HRESULT __stdcall get_Item( VARIANT Index,
239         IComponent** p_p_component )=0;
240     virtual HRESULT __stdcall Add( IComponent* p_component,
241         VARIANT* v_index )=0;
242     virtual HRESULT __stdcall Remove( VARIANT v_index )=0;
243     virtual HRESULT __stdcall Clone( IComponents** p_p_cpts )=0;
244 };
245
246 class IComponentType : public IDispatch
247 {
248 public:
249     virtual HRESULT __stdcall get_Category( ComponentCategory* p_category )=0;
250     virtual HRESULT __stdcall put_Category( ComponentCategory category )=0;
251     virtual HRESULT __stdcall get_MediaMajorType( BSTR* p_bstr_major_type )=0;
252     virtual HRESULT __stdcall put_MediaMajorType( BSTR bstr_major_type )=0;
253     virtual HRESULT __stdcall get__MediaMajorType( GUID* p_guid_major_type )=0;
254     virtual HRESULT __stdcall put__MediaMajorType( REFCLSID guid_major_type )=0;
255     virtual HRESULT __stdcall get_MediaSubType( BSTR* p_bstr_sub_type )=0;
256     virtual HRESULT __stdcall put_MediaSubType( BSTR bstr_sub_type )=0;
257     virtual HRESULT __stdcall get__MediaSubType( GUID* p_guid_sub_type )=0;
258     virtual HRESULT __stdcall put__MediaSubType( REFCLSID guid_sub_type )=0;
259     virtual HRESULT __stdcall get_MediaFormatType( BSTR* p_bstr_format_type )=0;
260     virtual HRESULT __stdcall put_MediaFormatType( BSTR bstr_format_type )=0;
261     virtual HRESULT __stdcall get__MediaFormatType(
262         GUID* p_guid_format_type )=0;
263     virtual HRESULT __stdcall put__MediaFormatType(
264         REFCLSID guid_format_type )=0;
265     virtual HRESULT __stdcall get_MediaType( AM_MEDIA_TYPE* p_media_type )=0;
266     virtual HRESULT __stdcall put_MediaType( AM_MEDIA_TYPE* p_media_type )=0;
267     virtual HRESULT __stdcall Clone( IComponentType** p_p_cpt_type )=0;
268 };
269
270 class IComponentTypes : public IDispatch
271 {
272 public:
273     virtual HRESULT __stdcall get_Count( long* l_count )=0;
274     virtual HRESULT __stdcall get__NewEnum( IEnumVARIANT** p_p_enum )=0;
275     virtual HRESULT __stdcall EnumComponentTypes(
276         IEnumComponentTypes** p_p_enum )=0;
277     virtual HRESULT __stdcall get_Item( VARIANT v_index,
278         IComponentType** p_p_cpt_type )=0;
279     virtual HRESULT __stdcall put_Item( VARIANT v_index,
280         IComponentType* p_cpt_type )=0;
281     virtual HRESULT __stdcall Add( IComponentType* p_cpt_type,
282         VARIANT* v_index )=0;
283     virtual HRESULT __stdcall Remove( VARIANT v_index )=0;
284     virtual HRESULT __stdcall Clone( IComponentTypes** p_p_cpt_types )=0;
285 };
286
287 class IEnumComponents : public IUnknown
288 {
289 public:
290     virtual HRESULT __stdcall Next( ULONG num_elem, IComponent** p_p_elem,
291         ULONG* p_num_elem_fetch )=0;
292     virtual HRESULT __stdcall Skip( ULONG num_elem )=0;
293     virtual HRESULT __stdcall Reset( void )=0;
294     virtual HRESULT __stdcall Clone( IEnumComponents** p_p_enum )=0;
295 };
296
297 class IEnumComponentTypes : public IUnknown
298 {
299 public:
300     virtual HRESULT __stdcall Next( ULONG num_elem, IComponentType** p_p_elem,
301         ULONG* p_num_elem_fetch )=0;
302     virtual HRESULT __stdcall Skip( ULONG num_elem )=0;
303     virtual HRESULT __stdcall Reset( void )=0;
304     virtual HRESULT __stdcall Clone( IEnumComponentTypes** p_p_enum )=0;
305 };
306
307 class IEnumTuningSpaces : public IUnknown
308 {
309 public:
310     virtual HRESULT __stdcall Next( ULONG l_num_elem,
311         ITuningSpace** p_p_tuning_space, ULONG* pl_num_elem_fetched )=0;
312     virtual HRESULT __stdcall Skip( ULONG l_num_elem )=0;
313     virtual HRESULT __stdcall Reset( void )=0;
314     virtual HRESULT __stdcall Clone( IEnumTuningSpaces** p_p_enum )=0;
315 };
316
317 class ITunerCap : public IUnknown
318 {
319 public:
320     virtual HRESULT __stdcall get_AuxInputCount( ULONG* pulCompositeCount,
321         ULONG* pulSvideoCount )=0;
322     virtual HRESULT __stdcall get_SupportedNetworkTypes(
323         ULONG ulcNetworkTypesMax, ULONG* pulcNetworkTypes,
324         GUID* pguidNetworkTypes )=0;
325     virtual HRESULT __stdcall get_SupportedVideoFormats(
326         ULONG* pulAMTunerModeType, ULONG* pulAnalogVideoStandard )=0;
327 };
328
329
330 class ITuner : public IUnknown
331 {
332 public:
333     virtual HRESULT __stdcall get_TuningSpace(
334         ITuningSpace** p_p_tuning_space )=0;
335     virtual HRESULT __stdcall put_TuningSpace( ITuningSpace* p_tuning_space )=0;
336     virtual HRESULT __stdcall EnumTuningSpaces(
337        IEnumTuningSpaces** p_p_enum )=0;
338     virtual HRESULT __stdcall get_TuneRequest(
339         ITuneRequest** p_p_tune_request )=0;
340     virtual HRESULT __stdcall put_TuneRequest( ITuneRequest* p_tune_request )=0;
341     virtual HRESULT __stdcall Validate( ITuneRequest* p_tune_request )=0;
342     virtual HRESULT __stdcall get_PreferredComponentTypes(
343         IComponentTypes** p_p_cpt_types )=0;
344     virtual HRESULT __stdcall put_PreferredComponentTypes(
345         IComponentTypes* p_cpt_types )=0;
346     virtual HRESULT __stdcall get_SignalStrength( long* l_sig_strength )=0;
347     virtual HRESULT __stdcall TriggerSignalEvents( long l_interval )=0;
348 };
349
350 class ISampleGrabber : public IUnknown
351 {
352 public:
353     virtual HRESULT __stdcall SetOneShot( BOOL b_one_shot )=0;
354     virtual HRESULT __stdcall SetMediaType(
355         const AM_MEDIA_TYPE* p_media_type )=0;
356     virtual HRESULT __stdcall GetConnectedMediaType(
357         AM_MEDIA_TYPE* p_media_type )=0;
358     virtual HRESULT __stdcall SetBufferSamples( BOOL b_buffer_samples )=0;
359     virtual HRESULT __stdcall GetCurrentBuffer( long* p_buff_size,
360         long* p_buffer )=0;
361     virtual HRESULT __stdcall GetCurrentSample( IMediaSample** p_p_sample )=0;
362     virtual HRESULT __stdcall SetCallback( ISampleGrabberCB* pf_callback,
363         long l_callback_type )=0;
364 };
365
366 class ISampleGrabberCB : public IUnknown
367 {
368 public:
369     virtual HRESULT __stdcall SampleCB( double d_sample_time,
370         IMediaSample* p_sample )=0;
371     virtual HRESULT __stdcall BufferCB( double d_sample_time, BYTE *p_buffer,
372         long l_bufferLen )=0;
373 };
374
375 class IScanningTuner : public ITuner
376 {
377 public:
378     virtual HRESULT __stdcall SeekUp( void )=0;
379     virtual HRESULT __stdcall SeekDown( void )=0;
380     virtual HRESULT __stdcall ScanDown( long l_pause )=0;
381     virtual HRESULT __stdcall ScanUp( long l_pause )=0;
382     virtual HRESULT __stdcall AutoProgram( void )=0;
383 };
384
385 class ITuneRequest : public IDispatch
386 {
387 public:
388     virtual HRESULT __stdcall get_TuningSpace(
389         ITuningSpace** p_p_tuning_space )=0;
390     virtual HRESULT __stdcall get_Components( IComponents** p_p_components )=0;
391     virtual HRESULT __stdcall Clone( ITuneRequest** p_p_tune_request )=0;
392     virtual HRESULT __stdcall get_Locator( ILocator** p_p_locator )=0;
393     virtual HRESULT __stdcall put_Locator( ILocator* p_locator )=0;
394 };
395
396 class IChannelTuneRequest : public ITuneRequest
397 {
398 public:
399     virtual HRESULT __stdcall get_Channel( long* pl_channel )=0;
400     virtual HRESULT __stdcall put_Channel( long l_channel )=0;
401 };
402
403 class IATSCChannelTuneRequest : public IChannelTuneRequest
404 {
405 public:
406     virtual HRESULT __stdcall get_MinorChannel( long* pl_minor_channel )=0;
407     virtual HRESULT __stdcall put_MinorChannel( long l_minor_channel )=0;
408 };
409
410 class IDigitalCableTuneRequest : public IATSCChannelTuneRequest
411 {
412 public:
413     virtual HRESULT __stdcall get_MajorChannel( long* pl_major_channel )=0;
414     virtual HRESULT __stdcall put_MajorChannel( long l_major_channel )=0;
415     virtual HRESULT __stdcall get_SourceID( long* pl_source_id )=0;
416     virtual HRESULT __stdcall put_SourceID( long l_source_id )=0;
417 };
418
419 class IDVBTuneRequest : public ITuneRequest
420 {
421 public:
422     virtual HRESULT __stdcall get_ONID( long* pl_onid )=0;
423     virtual HRESULT __stdcall put_ONID( long l_onid )=0;
424     virtual HRESULT __stdcall get_TSID( long* pl_tsid )=0;
425     virtual HRESULT __stdcall put_TSID( long l_tsid )=0;
426     virtual HRESULT __stdcall get_SID( long* pl_sid )=0;
427     virtual HRESULT __stdcall put_SID( long l_sid )=0;
428 };
429
430 class ILocator : public IDispatch
431 {
432 public:
433     virtual HRESULT __stdcall get_CarrierFrequency( long* pl_frequency )=0;
434     virtual HRESULT __stdcall put_CarrierFrequency( long l_frequency )=0;
435     virtual HRESULT __stdcall get_InnerFEC( FECMethod* FEC )=0;
436     virtual HRESULT __stdcall put_InnerFEC( FECMethod FEC )=0;
437     virtual HRESULT __stdcall get_InnerFECRate(
438         BinaryConvolutionCodeRate* FEC )=0;
439     virtual HRESULT __stdcall put_InnerFECRate(
440         BinaryConvolutionCodeRate FEC )=0;
441     virtual HRESULT __stdcall get_OuterFEC( FECMethod* FEC )=0;
442     virtual HRESULT __stdcall put_OuterFEC( FECMethod FEC )=0;
443     virtual HRESULT __stdcall get_OuterFECRate(
444         BinaryConvolutionCodeRate* FEC )=0;
445     virtual HRESULT __stdcall put_OuterFECRate(
446         BinaryConvolutionCodeRate FEC )=0;
447     virtual HRESULT __stdcall get_Modulation( ModulationType* p_modulation )=0;
448     virtual HRESULT __stdcall put_Modulation( ModulationType modulation )=0;
449     virtual HRESULT __stdcall get_SymbolRate( long* pl_rate )=0;
450     virtual HRESULT __stdcall put_SymbolRate( long l_rate )=0;
451     virtual HRESULT __stdcall Clone( ILocator** p_p_locator )=0;
452 };
453
454 class IATSCLocator : public ILocator
455 {
456 public:
457     virtual HRESULT __stdcall get_PhysicalChannel( long* pl_phys_channel )=0;
458     virtual HRESULT __stdcall put_PhysicalChannel( long l_phys_channel )=0;
459     virtual HRESULT __stdcall get_TSID( long* pl_tsid )=0;
460     virtual HRESULT __stdcall put_TSID( long l_tsid )=0;
461 };
462
463 class IATSCLocator2 : public IATSCLocator
464 {
465 public:
466     virtual HRESULT __stdcall get_ProgramNumber( long* pl_prog_number )=0;
467     virtual HRESULT __stdcall put_ProgramNumber( long l_prog_number )=0;
468 };
469
470 class IDigitalCableLocator : public IATSCLocator2
471 {
472 public:
473 };
474
475 class IDVBCLocator : public ILocator
476 {
477 public:
478 };
479
480 class IDVBSLocator : public ILocator
481 {
482 public:
483     virtual HRESULT __stdcall get_SignalPolarisation(
484         Polarisation* p_polarisation )=0;
485     virtual HRESULT __stdcall put_SignalPolarisation(
486         Polarisation polarisation )=0;
487     virtual HRESULT __stdcall get_WestPosition( VARIANT_BOOL* pb_west )=0;
488     virtual HRESULT __stdcall put_WestPosition( VARIANT_BOOL b_west )=0;
489     virtual HRESULT __stdcall get_OrbitalPosition( long* pl_longitude )=0;
490     virtual HRESULT __stdcall put_OrbitalPosition( long l_longitude )=0;
491     virtual HRESULT __stdcall get_Azimuth( long* pl_azimuth )=0;
492     virtual HRESULT __stdcall put_Azimuth( long l_azimuth )=0;
493     virtual HRESULT __stdcall get_Elevation( long* pl_elevation )=0;
494     virtual HRESULT __stdcall put_Elevation( long l_elevation )=0;
495 };
496
497 class IDVBTLocator : public ILocator
498 {
499 public:
500     virtual HRESULT __stdcall get_Bandwidth( long* pl_bandwidth )=0;
501     virtual HRESULT __stdcall put_Bandwidth( long l_bandwidth )=0;
502     virtual HRESULT __stdcall get_LPInnerFEC( FECMethod* FEC )=0;
503     virtual HRESULT __stdcall put_LPInnerFEC( FECMethod FEC )=0;
504     virtual HRESULT __stdcall get_LPInnerFECRate(
505         BinaryConvolutionCodeRate* FEC )=0;
506     virtual HRESULT __stdcall put_LPInnerFECRate(
507         BinaryConvolutionCodeRate FEC )=0;
508     virtual HRESULT __stdcall get_HAlpha( HierarchyAlpha* Alpha )=0;
509     virtual HRESULT __stdcall put_HAlpha( HierarchyAlpha Alpha )=0;
510     virtual HRESULT __stdcall get_Guard( GuardInterval* GI )=0;
511     virtual HRESULT __stdcall put_Guard( GuardInterval GI )=0;
512     virtual HRESULT __stdcall get_Mode( TransmissionMode* mode )=0;
513     virtual HRESULT __stdcall put_Mode( TransmissionMode mode )=0;
514     virtual HRESULT __stdcall get_OtherFrequencyInUse(
515         VARIANT_BOOL* OtherFrequencyInUseVal )=0;
516     virtual HRESULT __stdcall put_OtherFrequencyInUse(
517         VARIANT_BOOL OtherFrequencyInUseVal )=0;
518 };
519
520 class ITuningSpace : public IDispatch
521 {
522 public:
523     virtual HRESULT __stdcall get_UniqueName( BSTR* p_bstr_name )=0;
524     virtual HRESULT __stdcall put_UniqueName( BSTR Name )=0;
525     virtual HRESULT __stdcall get_FriendlyName( BSTR* p_bstr_name )=0;
526     virtual HRESULT __stdcall put_FriendlyName( BSTR bstr_name )=0;
527     virtual HRESULT __stdcall get_CLSID( BSTR* bstr_clsid )=0;
528     virtual HRESULT __stdcall get_NetworkType( BSTR* p_bstr_network_guid )=0;
529     virtual HRESULT __stdcall put_NetworkType( BSTR bstr_network_guid )=0;
530     virtual HRESULT __stdcall get__NetworkType( GUID* p_guid_network_guid )=0;
531     virtual HRESULT __stdcall put__NetworkType( REFCLSID clsid_network_guid )=0;
532     virtual HRESULT __stdcall CreateTuneRequest(
533         ITuneRequest** p_p_tune_request )=0;
534     virtual HRESULT __stdcall EnumCategoryGUIDs( IEnumGUID** p_p_enum )=0;
535     virtual HRESULT __stdcall EnumDeviceMonikers( IEnumMoniker** p_p_enum )=0;
536     virtual HRESULT __stdcall get_DefaultPreferredComponentTypes(
537         IComponentTypes** p_p_cpt_types )=0;
538     virtual HRESULT __stdcall put_DefaultPreferredComponentTypes(
539         IComponentTypes* p_cpt_types )=0;
540     virtual HRESULT __stdcall get_FrequencyMapping( BSTR* p_bstr_mapping )=0;
541     virtual HRESULT __stdcall put_FrequencyMapping( BSTR bstr_mapping )=0;
542     virtual HRESULT __stdcall get_DefaultLocator( ILocator** p_p_locator )=0;
543     virtual HRESULT __stdcall put_DefaultLocator( ILocator* p_locator )=0;
544     virtual HRESULT __stdcall Clone( ITuningSpace** p_p_tuning_space )=0;
545 };
546
547 class IDVBTuningSpace : public ITuningSpace
548 {
549 public:
550     virtual HRESULT __stdcall get_SystemType( DVBSystemType* p_sys_type )=0;
551     virtual HRESULT __stdcall put_SystemType( DVBSystemType sys_type )=0;
552 };
553
554 class IDVBTuningSpace2 : public IDVBTuningSpace
555 {
556 public:
557     virtual HRESULT __stdcall get_NetworkID( long* p_l_network_id )=0;
558     virtual HRESULT __stdcall put_NetworkID( long l_network_id )=0;
559 };
560
561 class IDVBSTuningSpace : public IDVBTuningSpace2
562 {
563 public:
564     virtual HRESULT __stdcall get_LowOscillator( long* p_l_low_osc )=0;
565     virtual HRESULT __stdcall put_LowOscillator( long l_low_osc )=0;
566     virtual HRESULT __stdcall get_HighOscillator( long* p_l_high_osc )=0;
567     virtual HRESULT __stdcall put_HighOscillator( long l_high_osc )=0;
568     virtual HRESULT __stdcall get_LNBSwitch( long* p_l_lnb_switch )=0;
569     virtual HRESULT __stdcall put_LNBSwitch( long l_lnb_switch )=0;
570     virtual HRESULT __stdcall get_InputRange( BSTR* p_bstr_input_range )=0;
571     virtual HRESULT __stdcall put_InputRange( BSTR bstr_input_range )=0;
572     virtual HRESULT __stdcall get_SpectralInversion(
573         SpectralInversion* p_spectral_inv )=0;
574     virtual HRESULT __stdcall put_SpectralInversion(
575         SpectralInversion spectral_inv )=0;
576 };
577
578 class ITuningSpaceContainer : public IDispatch
579 {
580 public:
581     virtual HRESULT __stdcall get_Count( long* l_count )=0;
582     virtual HRESULT __stdcall get__NewEnum( IEnumVARIANT** p_p_enum )=0;
583     virtual HRESULT __stdcall get_Item( VARIANT v_index,
584         ITuningSpace** p_p_tuning_space )=0;
585     virtual HRESULT __stdcall put_Item( VARIANT v_index,
586         ITuningSpace* p_tuning_space )=0;
587     virtual HRESULT __stdcall TuningSpacesForCLSID( BSTR bstr_clsid,
588         ITuningSpaces** p_p_tuning_spaces )=0;
589     virtual HRESULT __stdcall _TuningSpacesForCLSID( REFCLSID clsid,
590         ITuningSpaces** p_p_tuning_spaces )=0;
591     virtual HRESULT __stdcall TuningSpacesForName( BSTR bstr_name,
592         ITuningSpaces** p_p_tuning_spaces )=0;
593     virtual HRESULT __stdcall FindID( ITuningSpace* p_tuning_space,
594         long* l_id )=0;
595     virtual HRESULT __stdcall Add( ITuningSpace* p_tuning_space,
596         VARIANT* v_index )=0;
597     virtual HRESULT __stdcall get_EnumTuningSpaces(
598         IEnumTuningSpaces** p_p_enum )=0;
599     virtual HRESULT __stdcall Remove( VARIANT v_index )=0;
600     virtual HRESULT __stdcall get_MaxCount( long* l_maxcount )=0;
601     virtual HRESULT __stdcall put_MaxCount( long l_maxcount )=0;
602 };
603
604 class ITuningSpaces : public IDispatch
605 {
606 public:
607     virtual HRESULT __stdcall get_Count( long* l_count )=0;
608     virtual HRESULT __stdcall get__NewEnum( IEnumVARIANT** p_p_enum )=0;
609     virtual HRESULT __stdcall get_Item( VARIANT v_index,
610         ITuningSpace** p_p_tuning_space )=0;
611     virtual HRESULT __stdcall get_EnumTuningSpaces(
612         IEnumTuningSpaces** p_p_enum )=0;
613 };
614
615 class IBDA_DeviceControl : public IUnknown
616 {
617 public:
618     virtual HRESULT __stdcall StartChanges( void )=0;
619     virtual HRESULT __stdcall CheckChanges( void )=0;
620     virtual HRESULT __stdcall CommitChanges( void )=0;
621     virtual HRESULT __stdcall GetChangeState( ULONG *pState )=0;
622 };
623
624 class IBDA_FrequencyFilter : public IUnknown
625 {
626 public:
627     virtual HRESULT __stdcall put_Autotune( ULONG ulTransponder )=0;
628     virtual HRESULT __stdcall get_Autotune( ULONG *pulTransponder )=0;
629     virtual HRESULT __stdcall put_Frequency( ULONG ulFrequency )=0;
630     virtual HRESULT __stdcall get_Frequency( ULONG *pulFrequency )=0;
631     virtual HRESULT __stdcall put_Polarity( Polarisation Polarity )=0;
632     virtual HRESULT __stdcall get_Polarity( Polarisation *pPolarity )=0;
633     virtual HRESULT __stdcall put_Range( ULONG ulRange )=0;
634     virtual HRESULT __stdcall get_Range( ULONG *pulRange )=0;
635     virtual HRESULT __stdcall put_Bandwidth( ULONG ulBandwidth )=0;
636     virtual HRESULT __stdcall get_Bandwidth( ULONG *pulBandwidth )=0;
637     virtual HRESULT __stdcall put_FrequencyMultiplier( ULONG ulMultiplier )=0;
638     virtual HRESULT __stdcall get_FrequencyMultiplier(
639         ULONG *pulMultiplier )=0;
640 };
641
642 class IBDA_SignalStatistics : public IUnknown
643 {
644 public:
645     virtual HRESULT __stdcall put_SignalStrength( LONG lDbStrength )=0;
646     virtual HRESULT __stdcall get_SignalStrength( LONG *plDbStrength )=0;
647     virtual HRESULT __stdcall put_SignalQuality( LONG lPercentQuality )=0;
648     virtual HRESULT __stdcall get_SignalQuality( LONG *plPercentQuality )=0;
649     virtual HRESULT __stdcall put_SignalPresent( BOOLEAN fPresent )=0;
650     virtual HRESULT __stdcall get_SignalPresent( BOOLEAN *pfPresent )=0;
651     virtual HRESULT __stdcall put_SignalLocked( BOOLEAN fLocked )=0;
652     virtual HRESULT __stdcall get_SignalLocked( BOOLEAN *pfLocked )=0;
653     virtual HRESULT __stdcall put_SampleTime( LONG lmsSampleTime )=0;
654     virtual HRESULT __stdcall get_SampleTime( LONG *plmsSampleTime )=0;
655 };
656
657 class IBDA_Topology : public IUnknown
658 {
659 public:
660     virtual HRESULT __stdcall GetNodeTypes( ULONG *pulcNodeTypes,
661         ULONG ulcNodeTypesMax, ULONG rgulNodeTypes[] )=0;
662     virtual HRESULT __stdcall GetNodeDescriptors( ULONG *ulcNodeDescriptors,
663         ULONG ulcNodeDescriptorsMax,
664         BDANODE_DESCRIPTOR rgNodeDescriptors[] )=0;
665     virtual HRESULT __stdcall GetNodeInterfaces( ULONG ulNodeType,
666         ULONG *pulcInterfaces, ULONG ulcInterfacesMax,
667         GUID rgguidInterfaces[] )=0;
668     virtual HRESULT __stdcall GetPinTypes( ULONG *pulcPinTypes,
669         ULONG ulcPinTypesMax, ULONG rgulPinTypes[] )=0;
670     virtual HRESULT __stdcall GetTemplateConnections( ULONG *pulcConnections,
671         ULONG ulcConnectionsMax, BDA_TEMPLATE_CONNECTION rgConnections[] )=0;
672     virtual HRESULT __stdcall CreatePin( ULONG ulPinType, ULONG *pulPinId )=0;
673     virtual HRESULT __stdcall DeletePin( ULONG ulPinId )=0;
674     virtual HRESULT __stdcall SetMediaType( ULONG ulPinId,
675        AM_MEDIA_TYPE *pMediaType )=0;
676     virtual HRESULT __stdcall SetMedium( ULONG ulPinId,
677        REGPINMEDIUM *pMedium )=0;
678     virtual HRESULT __stdcall CreateTopology( ULONG ulInputPinId,
679        ULONG ulOutputPinId )=0;
680     virtual HRESULT __stdcall GetControlNode( ULONG ulInputPinId,
681        ULONG ulOutputPinId, ULONG ulNodeType, IUnknown **ppControlNode )=0;
682 };
683
684 typedef struct _MPEG_HEADER_BITS_MIDL
685 {
686     WORD Bits;
687 } MPEG_HEADER_BITS_MIDL;
688
689 typedef struct _MPEG_HEADER_VERSION_BITS_MIDL
690 {
691     BYTE Bits;
692 } MPEG_HEADER_VERSION_BITS_MIDL;
693
694 typedef WORD PID;
695
696 typedef BYTE TID;
697
698 typedef struct _SECTION
699 {
700     TID TableId;
701     union
702     {
703         MPEG_HEADER_BITS_MIDL S;
704         WORD W;
705     } Header;
706     BYTE SectionData[ 1 ];
707 } SECTION, *PSECTION;
708
709 typedef struct _LONG_SECTION
710 {
711     TID TableId;
712     union
713     {
714         MPEG_HEADER_BITS_MIDL S;
715         WORD W;
716     } Header;
717     WORD TableIdExtension;
718     union
719     {
720         MPEG_HEADER_VERSION_BITS_MIDL S;
721         BYTE B;
722         } Version;
723     BYTE SectionNumber;
724     BYTE LastSectionNumber;
725     BYTE RemainingData[ 1 ];
726 } LONG_SECTION;
727
728 typedef struct _MPEG_BCS_DEMUX
729 {
730     DWORD AVMGraphId;
731 } MPEG_BCS_DEMUX;
732
733 typedef struct _MPEG_WINSOC
734 {
735     DWORD AVMGraphId;
736 } MPEG_WINSOCK;
737
738 typedef enum
739 {
740     MPEG_CONTEXT_BCS_DEMUX = 0,
741     MPEG_CONTEXT_WINSOCK = MPEG_CONTEXT_BCS_DEMUX + 1
742 } MPEG_CONTEXT_TYPE;
743
744 typedef struct _MPEG_RQST_PACKET
745 {
746     DWORD dwLength;
747     PSECTION pSection;
748 } MPEG_RQST_PACKET, *PMPEG_RQST_PACKET;
749
750 typedef struct _MPEG_PACKET_LIST
751 {
752     WORD wPacketCount;
753     PMPEG_RQST_PACKET PacketList[ 1 ];
754 } MPEG_PACKET_LIST, *PMPEG_PACKET_LIST;
755
756 typedef struct _DSMCC_FILTER_OPTIONS
757 {
758     BOOL fSpecifyProtocol;
759     BYTE Protocol;
760     BOOL fSpecifyType;
761     BYTE Type;
762     BOOL fSpecifyMessageId;
763     WORD MessageId;
764     BOOL fSpecifyTransactionId;
765     BOOL fUseTrxIdMessageIdMask;
766     DWORD TransactionId;
767     BOOL fSpecifyModuleVersion;
768     BYTE ModuleVersion;
769     BOOL fSpecifyBlockNumber;
770     WORD BlockNumber;
771     BOOL fGetModuleCall;
772     WORD NumberOfBlocksInModule;
773 } DSMCC_FILTER_OPTIONS;
774
775 typedef struct _ATSC_FILTER_OPTIONS
776 {
777     BOOL fSpecifyEtmId;
778     DWORD EtmId;
779 } ATSC_FILTER_OPTIONS;
780
781 typedef struct _MPEG_STREAM_BUFFER
782 {
783     HRESULT hr;
784     DWORD dwDataBufferSize;
785     DWORD dwSizeOfDataRead;
786     BYTE *pDataBuffer;
787 } MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER;
788
789 typedef struct _MPEG_CONTEXT
790 {
791     MPEG_CONTEXT_TYPE Type;
792     union
793     {
794         MPEG_BCS_DEMUX Demux;
795         MPEG_WINSOCK Winsock;
796     } U;
797 } MPEG_CONTEXT, *PMPEG_CONTEXT;
798
799 typedef enum
800 {
801    MPEG_RQST_UNKNOWN = 0,
802    MPEG_RQST_GET_SECTION = MPEG_RQST_UNKNOWN + 1,
803    MPEG_RQST_GET_SECTION_ASYNC = MPEG_RQST_GET_SECTION + 1,
804    MPEG_RQST_GET_TABLE = MPEG_RQST_GET_SECTION_ASYNC + 1,
805    MPEG_RQST_GET_TABLE_ASYNC = MPEG_RQST_GET_TABLE + 1,
806    MPEG_RQST_GET_SECTIONS_STREAM = MPEG_RQST_GET_TABLE_ASYNC + 1,
807    MPEG_RQST_GET_PES_STREAM = MPEG_RQST_GET_SECTIONS_STREAM + 1,
808    MPEG_RQST_GET_TS_STREAM = MPEG_RQST_GET_PES_STREAM + 1,
809    MPEG_RQST_START_MPE_STREAM = MPEG_RQST_GET_TS_STREAM + 1
810 } MPEG_REQUEST_TYPE;
811
812 typedef struct _MPEG2_FILTER
813 {
814     BYTE bVersionNumber;
815     WORD wFilterSize;
816     BOOL fUseRawFilteringBits;
817     BYTE Filter[ 16 ];
818     BYTE Mask[ 16 ];
819     BOOL fSpecifyTableIdExtension;
820     WORD TableIdExtension;
821     BOOL fSpecifyVersion;
822     BYTE Version;
823     BOOL fSpecifySectionNumber;
824     BYTE SectionNumber;
825     BOOL fSpecifyCurrentNext;
826     BOOL fNext;
827     BOOL fSpecifyDsmccOptions;
828     DSMCC_FILTER_OPTIONS Dsmcc;
829     BOOL fSpecifyAtscOptions;
830     ATSC_FILTER_OPTIONS Atsc;
831 } MPEG2_FILTER, *PMPEG2_FILTER;
832
833 typedef struct _MPEG_HEADER_BITS
834 {
835     WORD SectionLength          : 12;
836     WORD Reserved               :  2;
837     WORD PrivateIndicator       :  1;
838     WORD SectionSyntaxIndicator :  1;
839 } MPEG_HEADER_BITS, *PMPEG_HEADER_BITS;
840
841 typedef struct _MPEG_HEADER_VERSION_BITS
842 {
843     BYTE CurrentNextIndicator : 1;
844     BYTE VersionNumber        : 5;
845     BYTE Reserved             : 2;
846 } MPEG_HEADER_VERSION_BITS, *PMPEG_HEADER_VERSION_BITS;
847
848 class IMpeg2Data : public IUnknown
849 {
850 public:
851     virtual HRESULT __stdcall GetSection( PID pid, TID tid,
852         PMPEG2_FILTER pFilter, DWORD dwTimeout,
853         ISectionList **ppSectionList )=0;
854     virtual HRESULT __stdcall GetTable( PID pid, TID tid, PMPEG2_FILTER pFilter,
855         DWORD dwTimeout, ISectionList **ppSectionList )=0;
856     virtual HRESULT __stdcall GetStreamOfSections( PID pid, TID tid,
857         PMPEG2_FILTER pFilter, HANDLE hDataReadyEvent,
858         IMpeg2Stream **ppMpegStream )=0;
859 };
860
861 class IGuideData : public IUnknown
862 {
863 public:
864     virtual HRESULT __stdcall GetServices(
865         IEnumTuneRequests **ppEnumTuneRequestslass )=0;
866     virtual HRESULT __stdcall GetServiceProperties(
867         ITuneRequest *pTuneRequest,
868         IEnumGuideDataProperties **ppEnumProperties )=0;
869     virtual HRESULT __stdcall GetGuideProgramIDs(
870         IEnumVARIANT **pEnumPrograms )=0;
871     virtual HRESULT __stdcall GetProgramProperties(
872         VARIANT varProgramDescriptionID,
873         IEnumGuideDataProperties **ppEnumProperties )=0;
874     virtual HRESULT __stdcall GetScheduleEntryIDs(
875         IEnumVARIANT **pEnumScheduleEntries )=0;
876     virtual HRESULT __stdcall GetScheduleEntryProperties(
877         VARIANT varScheduleEntryDescriptionID,
878         IEnumGuideDataProperties **ppEnumProperties )=0;
879 };
880
881 class IGuideDataEvent : public IUnknown
882 {
883 public:
884     virtual HRESULT __stdcall GuideDataAcquired( void )=0;
885     virtual HRESULT __stdcall ProgramChanged(
886         VARIANT varProgramDescriptionID )=0;
887     virtual HRESULT __stdcall ServiceChanged(
888         VARIANT varServiceDescriptionID )=0;
889     virtual HRESULT __stdcall ScheduleEntryChanged(
890         VARIANT varScheduleEntryDescriptionID )=0;
891     virtual HRESULT __stdcall ProgramDeleted(
892         VARIANT varProgramDescriptionID )=0;
893     virtual HRESULT __stdcall ServiceDeleted(
894         VARIANT varServiceDescriptionID )=0;
895     virtual HRESULT __stdcall ScheduleDeleted(
896             VARIANT varScheduleEntryDescriptionID )=0;
897 };
898
899 class IGuideDataProperty : public IUnknown
900 {
901 public:
902     virtual  HRESULT __stdcall get_Name( BSTR *pbstrName )=0;
903     virtual  HRESULT __stdcall get_Language( long *idLang )=0;
904     virtual  HRESULT __stdcall get_Value( VARIANT *pvar )=0;
905 };
906
907 class IMpeg2Stream : public IUnknown
908 {
909 public:
910     virtual HRESULT __stdcall Initialize( MPEG_REQUEST_TYPE requestType,
911         IMpeg2Data *pMpeg2Data, PMPEG_CONTEXT pContext, PID pid, TID tid,
912         PMPEG2_FILTER pFilter, HANDLE hDataReadyEvent )=0;
913     virtual HRESULT __stdcall SupplyDataBuffer(
914         PMPEG_STREAM_BUFFER pStreamBuffer )=0;
915 };
916
917 class ISectionList : public IUnknown
918 {
919 public:
920     virtual HRESULT __stdcall Initialize( MPEG_REQUEST_TYPE requestType,
921         IMpeg2Data *pMpeg2Data, PMPEG_CONTEXT pContext, PID pid, TID tid,
922         PMPEG2_FILTER pFilter, DWORD timeout, HANDLE hDoneEvent )=0;
923     virtual HRESULT __stdcall InitializeWithRawSections(
924         PMPEG_PACKET_LIST pmplSections )=0;
925     virtual HRESULT __stdcall CancelPendingRequest( void )=0;
926     virtual HRESULT __stdcall GetNumberOfSections( WORD *pCount )=0;
927     virtual HRESULT __stdcall GetSectionData( WORD sectionNumber,
928         DWORD *pdwRawPacketLength, PSECTION *ppSection )=0;
929     virtual HRESULT __stdcall GetProgramIdentifier( PID *pPid )=0;
930     virtual HRESULT __stdcall GetTableIdentifier( TID *pTableId )=0;
931 };
932
933 class IEnumGuideDataProperties : public IUnknown
934 {
935 public:
936     virtual HRESULT __stdcall Next( unsigned long celt,
937         IGuideDataProperty **ppprop, unsigned long *pcelt )=0;
938     virtual HRESULT __stdcall Skip( unsigned long celt )=0;
939     virtual HRESULT __stdcall Reset( void )=0;
940     virtual HRESULT __stdcall Clone( IEnumGuideDataProperties **ppenum )=0;
941 };
942
943 class IEnumTuneRequests : public IUnknown
944 {
945 public:
946     virtual HRESULT __stdcall Next( unsigned long celt, ITuneRequest **ppprop,
947         unsigned long *pcelt )=0;
948     virtual HRESULT __stdcall Skip( unsigned long celt )=0;
949     virtual HRESULT __stdcall Reset( void )=0;
950     virtual HRESULT __stdcall Clone( IEnumTuneRequests **ppenum )=0;
951 };
952
953 extern "C" {
954 /* Following GUIDs are for the new windows 7 interfaces  */
955 /* windows 7 universal provider applies to all networks */
956 const CLSID CLSID_NetworkProvider =
957     {0xB2F3A67C,0x29DA,0x4C78,{0x88,0x31,0x09,0x1E,0xD5,0x09,0xA4,0x75}};
958
959 /* Win 7 - Digital Cable - North America Clear QAM */
960 const CLSID CLSID_DigitalCableTuningSpace =
961     {0xD9BB4CEE,0xB87A,0x47F1,{0xAC,0xF1,0xB0,0x8D,0x9C,0x78,0x13,0xFC}};
962 const CLSID CLSID_DigitalCableLocator =
963     {0x03C06416,0xD127,0x407A,{0xAB,0x4C,0xFD,0xD2,0x79,0xAB,0xBE,0x5D}};
964 const CLSID CLSID_DigitalCableNetworkType =
965     {0x143827AB,0xF77B,0x498d,{0x81,0xCA,0x5A,0x00,0x7A,0xEC,0x28,0xBF}};
966 const IID IID_IDigitalCableTuneRequest =
967     {0xBAD7753B,0x6B37,0x4810,{0xAE,0x57,0x3C,0xE0,0xC4,0xA9,0xE6,0xCB}};
968 const IID IID_IDigitalCableLocator =
969     {0x48F66A11,0x171A,0x419A,{0x95,0x25,0xBE,0xEE,0xCD,0x51,0x58,0x4C}};
970
971 /* KSCATEGORY_BDA */
972 const GUID KSCATEGORY_BDA_NETWORK_PROVIDER =
973     {0x71985F4B,0x1CA1,0x11d3,{0x9C,0xC8,0x00,0xC0,0x4F,0x79,0x71,0xE0}};
974 const GUID KSCATEGORY_BDA_TRANSPORT_INFORMATION =
975     {0xa2e3074f,0x6c3d,0x11d3,{0xb6,0x53,0x00,0xc0,0x4f,0x79,0x49,0x8e}};
976 const GUID KSCATEGORY_BDA_RECEIVER_COMPONENT    =
977     {0xFD0A5AF4,0xB41D,0x11d2,{0x9c,0x95,0x00,0xc0,0x4f,0x79,0x71,0xe0}};
978 const GUID KSCATEGORY_BDA_NETWORK_TUNER         =
979     {0x71985f48,0x1ca1,0x11d3,{0x9c,0xc8,0x00,0xc0,0x4f,0x79,0x71,0xe0}};
980 const GUID KSDATAFORMAT_SUBTYPE_BDA_MPEG2_TRANSPORT =
981     {0xF4AEB342,0x0329,0x4fdd,{0xA8,0xFD,0x4A,0xFF,0x49,0x26,0xC9,0x78}};
982
983 extern const CLSID CLSID_ATSCLocator;
984 extern const CLSID CLSID_ATSCNetworkProvider;
985 extern const CLSID CLSID_ATSCTuningSpace;
986 extern const CLSID CLSID_DVBCLocator;
987 extern const CLSID CLSID_DVBCNetworkProvider;
988 extern const CLSID CLSID_DVBSLocator;
989 extern const CLSID CLSID_DVBSNetworkProvider;
990 extern const CLSID CLSID_DVBSTuningSpace;
991 extern const CLSID CLSID_DVBTuningSpace;
992 extern const CLSID CLSID_DVBTLocator;
993 extern const CLSID CLSID_DVBTNetworkProvider;
994 extern const CLSID CLSID_FilterGraph;
995 extern const CLSID CLSID_InfTee;
996 extern const CLSID CLSID_MPEG2Demultiplexer;
997 extern const CLSID CLSID_NullRenderer;
998 extern const CLSID CLSID_SampleGrabber;
999 extern const CLSID CLSID_SystemDeviceEnum;
1000 extern const CLSID CLSID_SystemTuningSpaces;
1001
1002 extern const IID IID_IATSCChannelTuneRequest;
1003 extern const IID IID_IATSCLocator;
1004 extern const IID IID_IBaseFilter;
1005 extern const IID IID_IBDA_DeviceControl;
1006 extern const IID IID_IBDA_FrequencyFilter;
1007 extern const IID IID_IBDA_SignalStatistics;
1008 /* Following symbol does not exist in library
1009 extern const IID IID_IBDA_Topology; */
1010 const IID IID_IBDA_Topology =
1011     {0x79B56888,0x7FEA,0x4690,{0xB4,0x5D,0x38,0xFD,0x3C,0x78,0x49,0xBE}};
1012 extern const IID IID_ICreateDevEnum;
1013 extern const IID IID_IDVBTLocator;
1014 extern const IID IID_IDVBCLocator;
1015 extern const IID IID_IDVBSLocator;
1016 extern const IID IID_IDVBSTuningSpace;
1017 extern const IID IID_IDVBTuneRequest;
1018 extern const IID IID_IDVBTuningSpace;
1019 extern const IID IID_IDVBTuningSpace2;
1020 extern const IID IID_IGraphBuilder;
1021 extern const IID IID_IMediaControl;
1022 extern const IID IID_IMpeg2Demultiplexer;
1023 extern const IID IID_ISampleGrabber;
1024 extern const IID IID_IScanningTuner;
1025 extern const IID IID_ITuner;
1026 /* Following symbol does not exist in library
1027 extern const IID IID_ITunerCap; */
1028 const IID IID_ITunerCap =
1029     {0xE60DFA45,0x8D56,0x4e65,{0xA8,0xAB,0xD6,0xBE,0x94,0x12,0xC2,0x49}};
1030 extern const IID IID_ITuningSpace;
1031 extern const IID IID_ITuningSpaceContainer;
1032 /* Following symbol does not exist in library
1033 extern const IID IID_IMpeg2Data; */
1034 const IID IID_IMpeg2Data =
1035     {0x9B396D40,0xF380,0x4e3c,{0xA5,0x14,0x1A,0x82,0xBF,0x6E,0xBF,0xE6}};
1036 extern const IID IID_IGuideData;
1037 extern const IID IID_ISectionList;
1038 extern const IID IID_IEnumTuneRequests;
1039 extern const IID IID_IEnumGuideDataProperties;
1040 extern const IID IID_IGuideDataProperty;
1041 extern const IID IID_IMpeg2Stream;
1042 extern const IID IID_IGuideDataEvent;
1043
1044 extern const GUID MEDIATYPE_MPEG2_SECTIONS;
1045 extern const GUID MEDIASUBTYPE_MPEG2_TRANSPORT;
1046 extern const GUID MEDIASUBTYPE_None;
1047 extern const GUID FORMAT_None;
1048
1049 };