effa9517d37a9660ac0eea9e5956df7cac30568b
[vlc.git] / modules / access / bda / bdadefs.h
1 /*****************************************************************************
2  * bdadefs.h : DirectShow BDA headers for vlc
3  *****************************************************************************
4  * Copyright (C) 2007 the VideoLAN team
5  *
6  * Author: Ken Self <kens@campoz.fslife.co.uk>
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 IATSCChannelTuneRequest;
24 class IATSCLocator;
25 class IChannelTuneRequest;
26 class IComponent;
27 class IComponents;
28 class IComponentType;
29 class IComponentTypes;
30 class IDVBCLocator;
31 class IDVBSLocator;
32 class IDVBTLocator;
33 class IDVBTuneRequest;
34 class IEnumComponents;
35 class IEnumComponentTypes;
36 class IEnumTuningSpaces;
37 class ILocator;
38 class ISampleGrabber;
39 class ISampleGrabberCB;
40 class IScanningTuner;
41 class ITuner;
42 class ITuneRequest;
43 class ITuningSpace;
44 class ITuningSpaceContainer;
45 class ITuningSpaces;
46
47 typedef enum BinaryConvolutionCodeRate
48 {
49     BDA_BCC_RATE_NOT_SET = -1,
50     BDA_BCC_RATE_NOT_DEFINED=0,
51     BDA_BCC_RATE_1_2 = 1,
52     BDA_BCC_RATE_2_3,
53     BDA_BCC_RATE_3_4,
54     BDA_BCC_RATE_3_5,
55     BDA_BCC_RATE_4_5,
56     BDA_BCC_RATE_5_6,
57     BDA_BCC_RATE_5_11,
58     BDA_BCC_RATE_7_8,
59     BDA_BCC_RATE_MAX,
60 } BinaryConvolutionCodeRate;
61
62 typedef enum ComponentCategory
63 {
64     CategoryNotSet = -1,
65     CategoryOther=0,
66     CategoryVideo,
67     CategoryAudio,
68     CategoryText,
69     CategoryData,
70 } ComponentCategory;
71
72 typedef enum ComponentStatus
73 {
74     StatusActive,
75     StatusInactive,
76     StatusUnavailable,
77 } ComponentStatus;
78
79 typedef enum FECMethod
80 {
81     BDA_FEC_METHOD_NOT_SET = -1,
82     BDA_FEC_METHOD_NOT_DEFINED=0,
83     BDA_FEC_VITERBI = 1,
84     BDA_FEC_RS_204_188,
85     BDA_FEC_MAX,
86 } FECMethod;
87
88 typedef enum GuardInterval
89 {
90     BDA_GUARD_NOT_SET = -1,
91     BDA_GUARD_NOT_DEFINED=0,
92     BDA_GUARD_1_32 = 1,
93     BDA_GUARD_1_16,
94     BDA_GUARD_1_8,
95     BDA_GUARD_1_4,
96     BDA_GUARD_MAX,
97 } GuardInterval;
98
99 typedef enum HierarchyAlpha
100 {
101     BDA_HALPHA_NOT_SET = -1,
102     BDA_HALPHA_NOT_DEFINED=0,
103     BDA_HALPHA_1 = 1,
104     BDA_HALPHA_2,
105     BDA_HALPHA_4,
106     BDA_HALPHA_MAX,
107 } HierarchyAlpha;
108
109 typedef enum ModulationType
110 {
111     BDA_MOD_NOT_SET = -1,
112     BDA_MOD_NOT_DEFINED=0,
113     BDA_MOD_16QAM = 1,
114     BDA_MOD_32QAM,
115     BDA_MOD_64QAM,
116     BDA_MOD_80QAM,
117     BDA_MOD_96QAM,
118     BDA_MOD_112QAM,
119     BDA_MOD_128QAM,
120     BDA_MOD_160QAM,
121     BDA_MOD_192QAM,
122     BDA_MOD_224QAM,
123     BDA_MOD_256QAM,
124     BDA_MOD_320QAM,
125     BDA_MOD_384QAM,
126     BDA_MOD_448QAM,
127     BDA_MOD_512QAM,
128     BDA_MOD_640QAM,
129     BDA_MOD_768QAM,
130     BDA_MOD_896QAM,
131     BDA_MOD_1024QAM,
132     BDA_MOD_QPSK,
133     BDA_MOD_BPSK,
134     BDA_MOD_OQPSK,
135     BDA_MOD_8VSB,
136     BDA_MOD_16VSB,
137     BDA_MOD_ANALOG_AMPLITUDE,
138     BDA_MOD_ANALOG_FREQUENCY,
139     BDA_MOD_MAX,
140 } ModulationType;
141
142 typedef enum Polarisation
143 {
144     BDA_POLARISATION_NOT_SET     = -1,
145     BDA_POLARISATION_NOT_DEFINED = 0,
146     BDA_POLARISATION_LINEAR_H    = 1,
147     BDA_POLARISATION_LINEAR_V    = 2,
148     BDA_POLARISATION_CIRCULAR_L  = 3,
149     BDA_POLARISATION_CIRCULAR_R  = 4,
150     BDA_POLARISATION_MAX         = 5
151 } Polarisation;
152
153 typedef enum TransmissionMode
154 {
155     BDA_XMIT_MODE_NOT_SET = -1,
156     BDA_XMIT_MODE_NOT_DEFINED=0,
157     BDA_XMIT_MODE_2K = 1,
158     BDA_XMIT_MODE_8K,
159     BDA_XMIT_MODE_MAX,
160 } TransmissionMode;
161
162 class IComponent : public IDispatch
163 {
164 public:
165     virtual HRESULT __stdcall get_Type( IComponentType** p_p_cpt_type )=0;
166     virtual HRESULT __stdcall put_Type( IComponentType* p_cpt_type )=0;
167     virtual HRESULT __stdcall get_DescLangID( long* p_l_language )=0;
168     virtual HRESULT __stdcall put_DescLangID( long l_language )=0;
169     virtual HRESULT __stdcall get_Status( ComponentStatus* p_status )=0;
170     virtual HRESULT __stdcall put_Status( ComponentStatus status )=0;
171     virtual HRESULT __stdcall get_Description( BSTR* p_bstr_desc )=0;
172     virtual HRESULT __stdcall put_Description( BSTR bstr_desc )=0;
173     virtual HRESULT __stdcall Clone( IComponent** p_p_component )=0;
174 };
175
176 class IComponents : public IDispatch
177 {
178 public:
179     virtual HRESULT __stdcall get_Count( long* pl_count )=0;
180     virtual HRESULT __stdcall get__NewEnum( IEnumVARIANT** p_p_enum )=0;
181     virtual HRESULT __stdcall EnumComponents( IEnumComponents** p_p_enum )=0;
182     virtual HRESULT __stdcall get_Item( VARIANT Index,
183         IComponent** p_p_component )=0;
184     virtual HRESULT __stdcall Add( IComponent* p_component,
185         VARIANT* v_index )=0;
186     virtual HRESULT __stdcall Remove( VARIANT v_index )=0;
187     virtual HRESULT __stdcall Clone( IComponents** p_p_cpts )=0;
188 };
189
190 class IComponentType : public IDispatch
191 {
192 public:
193     virtual HRESULT __stdcall get_Category( ComponentCategory* p_category )=0;
194     virtual HRESULT __stdcall put_Category( ComponentCategory category )=0;
195     virtual HRESULT __stdcall get_MediaMajorType( BSTR* p_bstr_major_type )=0;
196     virtual HRESULT __stdcall put_MediaMajorType( BSTR bstr_major_type )=0;
197     virtual HRESULT __stdcall get__MediaMajorType( GUID* p_guid_major_type )=0;
198     virtual HRESULT __stdcall put__MediaMajorType( REFCLSID guid_major_type )=0;
199     virtual HRESULT __stdcall get_MediaSubType( BSTR* p_bstr_sub_type )=0;
200     virtual HRESULT __stdcall put_MediaSubType( BSTR bstr_sub_type )=0;
201     virtual HRESULT __stdcall get__MediaSubType( GUID* p_guid_sub_type )=0;
202     virtual HRESULT __stdcall put__MediaSubType( REFCLSID guid_sub_type )=0;
203     virtual HRESULT __stdcall get_MediaFormatType( BSTR* p_bstr_format_type )=0;
204     virtual HRESULT __stdcall put_MediaFormatType( BSTR bstr_format_type )=0;
205     virtual HRESULT __stdcall get__MediaFormatType(
206         GUID* p_guid_format_type )=0;
207     virtual HRESULT __stdcall put__MediaFormatType(
208         REFCLSID guid_format_type )=0;
209     virtual HRESULT __stdcall get_MediaType( AM_MEDIA_TYPE* p_media_type )=0;
210     virtual HRESULT __stdcall put_MediaType( AM_MEDIA_TYPE* p_media_type )=0;
211     virtual HRESULT __stdcall Clone( IComponentType** p_p_cpt_type )=0;
212 };
213
214 class IComponentTypes : public IDispatch
215 {
216 public:
217     virtual HRESULT __stdcall get_Count( long* l_count )=0;
218     virtual HRESULT __stdcall get__NewEnum( IEnumVARIANT** p_p_enum )=0;
219     virtual HRESULT __stdcall EnumComponentTypes(
220         IEnumComponentTypes** p_p_enum )=0;
221     virtual HRESULT __stdcall get_Item( VARIANT v_index,
222         IComponentType** p_p_cpt_type )=0;
223     virtual HRESULT __stdcall put_Item( VARIANT v_index,
224         IComponentType* p_cpt_type )=0;
225     virtual HRESULT __stdcall Add( IComponentType* p_cpt_type,
226         VARIANT* v_index )=0;
227     virtual HRESULT __stdcall Remove( VARIANT v_index )=0;
228     virtual HRESULT __stdcall Clone( IComponentTypes** p_p_cpt_types )=0;
229 };
230
231 class IEnumComponents : public IUnknown
232 {
233 public:
234     virtual HRESULT __stdcall Next( ULONG num_elem, IComponent** p_p_elem,
235         ULONG* p_num_elem_fetch )=0;
236     virtual HRESULT __stdcall Skip( ULONG num_elem )=0;
237     virtual HRESULT __stdcall Reset( void )=0;
238     virtual HRESULT __stdcall Clone( IEnumComponents** p_p_enum )=0;
239 };
240
241 class IEnumComponentTypes : public IUnknown
242 {
243 public:
244     virtual HRESULT __stdcall Next( ULONG num_elem, IComponentType** p_p_elem,
245         ULONG* p_num_elem_fetch )=0;
246     virtual HRESULT __stdcall Skip( ULONG num_elem )=0;
247     virtual HRESULT __stdcall Reset( void )=0;
248     virtual HRESULT __stdcall Clone( IEnumComponentTypes** p_p_enum )=0;
249 };
250
251 class IEnumTuningSpaces : public IUnknown
252 {
253 public:
254     virtual HRESULT __stdcall Next( ULONG l_num_elem,
255         ITuningSpace** p_p_tuning_space, ULONG* pl_num_elem_fetched )=0;
256     virtual HRESULT __stdcall Skip( ULONG l_num_elem )=0;
257     virtual HRESULT __stdcall Reset( void )=0;
258     virtual HRESULT __stdcall Clone( IEnumTuningSpaces** p_p_enum )=0;
259 };
260
261 class ITuner : public IUnknown
262 {
263 public:
264     virtual HRESULT __stdcall get_TuningSpace(
265         ITuningSpace** p_p_tuning_space )=0;
266     virtual HRESULT __stdcall put_TuningSpace( ITuningSpace* p_tuning_space )=0;
267     virtual HRESULT __stdcall EnumTuningSpaces( IEnumTuningSpaces** p_p_enum )=0;
268     virtual HRESULT __stdcall get_TuneRequest(
269         ITuneRequest** p_p_tune_request )=0;
270     virtual HRESULT __stdcall put_TuneRequest( ITuneRequest* p_tune_request )=0;
271     virtual HRESULT __stdcall Validate( ITuneRequest* p_tune_request )=0;
272     virtual HRESULT __stdcall get_PreferredComponentTypes(
273         IComponentTypes** p_p_cpt_types )=0;
274     virtual HRESULT __stdcall put_PreferredComponentTypes(
275         IComponentTypes* p_cpt_types )=0;
276     virtual HRESULT __stdcall get_SignalStrength( long* l_sig_strength )=0;
277     virtual HRESULT __stdcall TriggerSignalEvents( long l_interval )=0;
278 };
279
280 class ISampleGrabber : public IUnknown
281 {
282 public:
283     virtual HRESULT __stdcall SetOneShot( BOOL b_one_shot )=0;
284     virtual HRESULT __stdcall SetMediaType(
285         const AM_MEDIA_TYPE* p_media_type )=0;
286     virtual HRESULT __stdcall GetConnectedMediaType(
287         AM_MEDIA_TYPE* p_media_type )=0;
288     virtual HRESULT __stdcall SetBufferSamples( BOOL b_buffer_samples )=0;
289     virtual HRESULT __stdcall GetCurrentBuffer( long* p_buff_size,
290         long* p_buffer )=0;
291     virtual HRESULT __stdcall GetCurrentSample( IMediaSample** p_p_sample )=0;
292     virtual HRESULT __stdcall SetCallback( ISampleGrabberCB* pf_callback,
293         long l_callback_type )=0;
294 };
295
296 class ISampleGrabberCB : public IUnknown
297 {
298 public:
299     virtual HRESULT __stdcall SampleCB( double d_sample_time,
300         IMediaSample* p_sample )=0;
301     virtual HRESULT __stdcall BufferCB( double d_sample_time, BYTE *p_buffer,
302         long l_bufferLen )=0;
303 };
304
305 class IScanningTuner : public ITuner
306 {
307 public:
308     virtual HRESULT __stdcall SeekUp( void )=0;
309     virtual HRESULT __stdcall SeekDown( void )=0;
310     virtual HRESULT __stdcall ScanDown( long l_pause )=0;
311     virtual HRESULT __stdcall ScanUp( long l_pause )=0;
312     virtual HRESULT __stdcall AutoProgram( void )=0;
313 };
314
315 class ITuneRequest : public IDispatch
316 {
317 public:
318     virtual HRESULT __stdcall get_TuningSpace(
319         ITuningSpace** p_p_tuning_space )=0;
320     virtual HRESULT __stdcall get_Components( IComponents** p_p_components )=0;
321     virtual HRESULT __stdcall Clone( ITuneRequest** p_p_tune_request )=0;
322     virtual HRESULT __stdcall get_Locator( ILocator** p_p_locator )=0;
323     virtual HRESULT __stdcall put_Locator( ILocator* p_locator )=0;
324 };
325
326 class IChannelTuneRequest : public ITuneRequest
327 {
328 public:
329     virtual HRESULT __stdcall get_Channel( long* pl_channel )=0;
330     virtual HRESULT __stdcall put_Channel( long l_channel )=0;
331 };
332
333 class IATSCChannelTuneRequest : public IChannelTuneRequest
334 {
335 public:
336     virtual HRESULT __stdcall get_MinorChannel( long* pl_minor_channel )=0;
337     virtual HRESULT __stdcall put_MinorChannel( long l_minor_channel )=0;
338 };
339
340 class IDVBTuneRequest : public ITuneRequest
341 {
342 public:
343     virtual HRESULT __stdcall get_ONID( long* pl_onid )=0;
344     virtual HRESULT __stdcall put_ONID( long l_onid )=0;
345     virtual HRESULT __stdcall get_TSID( long* pl_tsid )=0;
346     virtual HRESULT __stdcall put_TSID( long l_tsid )=0;
347     virtual HRESULT __stdcall get_SID( long* pl_sid )=0;
348     virtual HRESULT __stdcall put_SID( long l_sid )=0;
349 };
350
351 class ILocator : public IDispatch
352 {
353 public:
354     virtual HRESULT __stdcall get_CarrierFrequency( long* pl_frequency )=0;
355     virtual HRESULT __stdcall put_CarrierFrequency( long l_frequency )=0;
356     virtual HRESULT __stdcall get_InnerFEC( FECMethod* FEC )=0;
357     virtual HRESULT __stdcall put_InnerFEC( FECMethod FEC )=0;
358     virtual HRESULT __stdcall get_InnerFECRate(
359         BinaryConvolutionCodeRate* FEC )=0;
360     virtual HRESULT __stdcall put_InnerFECRate(
361         BinaryConvolutionCodeRate FEC )=0;
362     virtual HRESULT __stdcall get_OuterFEC( FECMethod* FEC )=0;
363     virtual HRESULT __stdcall put_OuterFEC( FECMethod FEC )=0;
364     virtual HRESULT __stdcall get_OuterFECRate(
365         BinaryConvolutionCodeRate* FEC )=0;
366     virtual HRESULT __stdcall put_OuterFECRate(
367         BinaryConvolutionCodeRate FEC )=0;
368     virtual HRESULT __stdcall get_Modulation( ModulationType* p_modulation )=0;
369     virtual HRESULT __stdcall put_Modulation( ModulationType modulation )=0;
370     virtual HRESULT __stdcall get_SymbolRate( long* pl_rate )=0;
371     virtual HRESULT __stdcall put_SymbolRate( long l_rate )=0;
372     virtual HRESULT __stdcall Clone( ILocator** p_p_locator )=0;
373 };
374
375 class IATSCLocator : public ILocator
376 {
377 public:
378     virtual HRESULT __stdcall get_PhysicalChannel( long* pl_phys_channel )=0;
379     virtual HRESULT __stdcall put_PhysicalChannel( long l_phys_channel )=0;
380     virtual HRESULT __stdcall get_TSID( long* pl_tsid )=0;
381     virtual HRESULT __stdcall put_TSID( long l_tsid )=0;
382 };
383
384 class IDVBCLocator : public ILocator
385 {
386 public:
387 };
388
389 class IDVBSLocator : public ILocator
390 {
391 public:
392     virtual HRESULT __stdcall get_SignalPolarisation(
393         Polarisation* p_polarisation )=0;
394     virtual HRESULT __stdcall put_SignalPolarisation(
395         Polarisation polarisation )=0;
396     virtual HRESULT __stdcall get_WestPosition( VARIANT_BOOL* pb_west )=0;
397     virtual HRESULT __stdcall put_WestPosition( VARIANT_BOOL b_west )=0;
398     virtual HRESULT __stdcall get_OrbitalPosition( long* pl_longitude )=0;
399     virtual HRESULT __stdcall put_OrbitalPosition( long l_longitude )=0;
400     virtual HRESULT __stdcall get_Azimuth( long* pl_azimuth )=0;
401     virtual HRESULT __stdcall put_Azimuth( long l_azimuth )=0;
402     virtual HRESULT __stdcall get_Elevation( long* pl_elevation )=0;
403     virtual HRESULT __stdcall put_Elevation( long l_elevation )=0;
404 };
405
406 class IDVBTLocator : public ILocator
407 {
408 public:
409     virtual HRESULT __stdcall get_Bandwidth( long* pl_bandwidth )=0;
410     virtual HRESULT __stdcall put_Bandwidth( long l_bandwidth )=0;
411     virtual HRESULT __stdcall get_LPInnerFEC( FECMethod* FEC )=0;
412     virtual HRESULT __stdcall put_LPInnerFEC( FECMethod FEC )=0;
413     virtual HRESULT __stdcall get_LPInnerFECRate(
414         BinaryConvolutionCodeRate* FEC )=0;
415     virtual HRESULT __stdcall put_LPInnerFECRate(
416         BinaryConvolutionCodeRate FEC )=0;
417     virtual HRESULT __stdcall get_HAlpha( HierarchyAlpha* Alpha )=0;
418     virtual HRESULT __stdcall put_HAlpha( HierarchyAlpha Alpha )=0;
419     virtual HRESULT __stdcall get_Guard( GuardInterval* GI )=0;
420     virtual HRESULT __stdcall put_Guard( GuardInterval GI )=0;
421     virtual HRESULT __stdcall get_Mode( TransmissionMode* mode )=0;
422     virtual HRESULT __stdcall put_Mode( TransmissionMode mode )=0;
423     virtual HRESULT __stdcall get_OtherFrequencyInUse(
424         VARIANT_BOOL* OtherFrequencyInUseVal )=0;
425     virtual HRESULT __stdcall put_OtherFrequencyInUse(
426         VARIANT_BOOL OtherFrequencyInUseVal )=0;
427 };
428
429 class ITuningSpace : public IDispatch
430 {
431 public:
432     virtual HRESULT __stdcall get_UniqueName( BSTR* p_bstr_name )=0;
433     virtual HRESULT __stdcall put_UniqueName( BSTR Name )=0;
434     virtual HRESULT __stdcall get_FriendlyName( BSTR* p_bstr_name )=0;
435     virtual HRESULT __stdcall put_FriendlyName( BSTR bstr_name )=0;
436     virtual HRESULT __stdcall get_CLSID( BSTR* bstr_clsid )=0;
437     virtual HRESULT __stdcall get_NetworkType( BSTR* p_bstr_network_guid )=0;
438     virtual HRESULT __stdcall put_NetworkType( BSTR bstr_network_guid )=0;
439     virtual HRESULT __stdcall get__NetworkType( GUID* p_guid_network_guid )=0;
440     virtual HRESULT __stdcall put__NetworkType( REFCLSID clsid_network_guid )=0;
441     virtual HRESULT __stdcall CreateTuneRequest(
442         ITuneRequest** p_p_tune_request )=0;
443     virtual HRESULT __stdcall EnumCategoryGUIDs( IEnumGUID** p_p_enum )=0;
444     virtual HRESULT __stdcall EnumDeviceMonikers( IEnumMoniker** p_p_enum )=0;
445     virtual HRESULT __stdcall get_DefaultPreferredComponentTypes(
446         IComponentTypes** p_p_cpt_types )=0;
447     virtual HRESULT __stdcall put_DefaultPreferredComponentTypes(
448         IComponentTypes* p_cpt_types )=0;
449     virtual HRESULT __stdcall get_FrequencyMapping( BSTR* p_bstr_mapping )=0;
450     virtual HRESULT __stdcall put_FrequencyMapping( BSTR bstr_mapping )=0;
451     virtual HRESULT __stdcall get_DefaultLocator( ILocator** p_p_locator )=0;
452     virtual HRESULT __stdcall put_DefaultLocator( ILocator* p_locator )=0;
453     virtual HRESULT __stdcall Clone( ITuningSpace** p_p_tuning_space )=0;
454 };
455
456 class ITuningSpaceContainer : public IDispatch
457 {
458 public:
459     virtual HRESULT __stdcall get_Count( long* l_count )=0;
460     virtual HRESULT __stdcall get__NewEnum( IEnumVARIANT** p_p_enum )=0;
461     virtual HRESULT __stdcall get_Item( VARIANT v_index,
462         ITuningSpace** p_p_tuning_space )=0;
463     virtual HRESULT __stdcall put_Item( VARIANT v_index,
464         ITuningSpace* p_tuning_space )=0;
465     virtual HRESULT __stdcall TuningSpacesForCLSID( BSTR bstr_clsid,
466         ITuningSpaces** p_p_tuning_spaces )=0;
467     virtual HRESULT __stdcall _TuningSpacesForCLSID( REFCLSID clsid,
468         ITuningSpaces** p_p_tuning_spaces )=0;
469     virtual HRESULT __stdcall TuningSpacesForName( BSTR bstr_name,
470         ITuningSpaces** p_p_tuning_spaces )=0;
471     virtual HRESULT __stdcall FindID( ITuningSpace* p_tuning_space,
472         long* l_id )=0;
473     virtual HRESULT __stdcall Add( ITuningSpace* p_tuning_space,
474         VARIANT* v_index )=0;
475     virtual HRESULT __stdcall get_EnumTuningSpaces(
476         IEnumTuningSpaces** p_p_enum )=0;
477     virtual HRESULT __stdcall Remove( VARIANT v_index )=0;
478     virtual HRESULT __stdcall get_MaxCount( long* l_maxcount )=0;
479     virtual HRESULT __stdcall put_MaxCount( long l_maxcount )=0;
480 };
481
482 class ITuningSpaces : public IDispatch
483 {
484 public:
485     virtual HRESULT __stdcall get_Count( long* l_count )=0;
486     virtual HRESULT __stdcall get__NewEnum( IEnumVARIANT** p_p_enum )=0;
487     virtual HRESULT __stdcall get_Item( VARIANT v_index,
488         ITuningSpace** p_p_tuning_space )=0;
489     virtual HRESULT __stdcall get_EnumTuningSpaces(
490         IEnumTuningSpaces** p_p_enum )=0;
491 };
492
493 extern "C" {
494 extern const GUID CLSID_ATSCLocator;
495 extern const GUID CLSID_ATSCNetworkProvider;
496 extern const GUID CLSID_DVBCLocator;
497 extern const GUID CLSID_DVBCNetworkProvider;
498 extern const GUID CLSID_DVBSLocator;
499 extern const GUID CLSID_DVBSNetworkProvider;
500 extern const GUID CLSID_DVBSTuningSpace;
501 extern const GUID CLSID_DVBTLocator;
502 extern const GUID CLSID_DVBTNetworkProvider;
503 extern const GUID CLSID_FilterGraph;
504 extern const GUID CLSID_InfTee;
505 extern const GUID CLSID_MPEG2Demultiplexer;
506 extern const GUID CLSID_NullRenderer;
507 extern const GUID CLSID_SampleGrabber;
508 extern const GUID CLSID_SystemDeviceEnum;
509 extern const GUID CLSID_SystemTuningSpaces;
510
511 extern const GUID IID_IATSCChannelTuneRequest;
512 extern const GUID IID_IATSCLocator;
513 extern const GUID IID_IBaseFilter;
514 extern const GUID IID_ICreateDevEnum;
515 extern const GUID IID_IDVBTLocator;
516 extern const GUID IID_IDVBCLocator;
517 extern const GUID IID_IDVBSLocator;
518 extern const GUID IID_IDVBSTuningSpace;
519 extern const GUID IID_IDVBTuneRequest;
520 extern const GUID IID_IGraphBuilder;
521 extern const GUID IID_IMediaControl;
522 extern const GUID IID_IMpeg2Demultiplexer;
523 extern const GUID IID_ISampleGrabber;
524 extern const GUID IID_IScanningTuner;
525 extern const GUID IID_ITuner;
526 extern const GUID IID_ITuningSpace;
527 extern const GUID IID_ITuningSpaceContainer;
528
529 extern const GUID MEDIATYPE_MPEG2_SECTIONS;
530 extern const GUID MEDIASUBTYPE_None;
531 extern const GUID FORMAT_None;
532
533 const GUID KSCATEGORY_BDA_TRANSPORT_INFORMATION =\r
534     {0xa2e3074f,0x6c3d,0x11d3,{0xb6,0x53,0x00,0xc0,0x4f,0x79,0x49,0x8e}};\r
535 const GUID KSCATEGORY_BDA_RECEIVER_COMPONENT    =\r
536     {0xFD0A5AF4,0xB41D,0x11d2,{0x9c,0x95,0x00,0xc0,0x4f,0x79,0x71,0xe0}};\r
537 const GUID KSCATEGORY_BDA_NETWORK_TUNER         =\r
538     {0x71985f48,0x1ca1,0x11d3,{0x9c,0xc8,0x00,0xc0,0x4f,0x79,0x71,0xe0}};
539 };