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