1 /*****************************************************************************
2 * bdadefs.h : DirectShow BDA headers for vlc
3 *****************************************************************************
4 * Copyright (C) 2007 the VideoLAN team
6 * Author: Ken Self <kenself(at)optusnet(dot)com(dot)au>
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.
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.
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 *****************************************************************************/
23 class IDigitalCableTuneRequest;
24 class IDigitalCableLocator;
25 class IATSCChannelTuneRequest;
27 class IBDA_DeviceControl;
28 class IBDA_FrequencyFilter;
29 class IBDA_SignalStatistics;
31 class IChannelTuneRequest;
35 class IComponentTypes;
38 class IDVBSTuningSpace;
40 class IDVBTuneRequest;
41 class IDVBTuningSpace;
42 class IDVBTuningSpace2;
43 class IEnumComponents;
44 class IEnumComponentTypes;
45 class IEnumTuningSpaces;
48 class ISampleGrabberCB;
54 class ITuningSpaceContainer;
58 class IGuideDataEvent;
60 class IEnumTuneRequests;
61 class IEnumGuideDataProperties;
62 class IGuideDataProperty;
65 typedef enum BinaryConvolutionCodeRate
67 BDA_BCC_RATE_NOT_SET = -1,
68 BDA_BCC_RATE_NOT_DEFINED=0,
78 } BinaryConvolutionCodeRate;
80 typedef enum ComponentCategory
90 typedef enum ComponentStatus
97 typedef enum DVBSystemType
104 typedef enum FECMethod
106 BDA_FEC_METHOD_NOT_SET = -1,
107 BDA_FEC_METHOD_NOT_DEFINED=0,
113 typedef enum GuardInterval
115 BDA_GUARD_NOT_SET = -1,
116 BDA_GUARD_NOT_DEFINED=0,
124 typedef enum HierarchyAlpha
126 BDA_HALPHA_NOT_SET = -1,
127 BDA_HALPHA_NOT_DEFINED=0,
134 typedef enum ModulationType
136 BDA_MOD_NOT_SET = -1,
137 BDA_MOD_NOT_DEFINED=0,
162 BDA_MOD_ANALOG_AMPLITUDE,
163 BDA_MOD_ANALOG_FREQUENCY,
167 typedef enum Polarisation
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
178 typedef enum SpectralInversion
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
188 typedef enum TransmissionMode
190 BDA_XMIT_MODE_NOT_SET = -1,
191 BDA_XMIT_MODE_NOT_DEFINED=0,
192 BDA_XMIT_MODE_2K = 1,
197 typedef struct _BDANODE_DESCRIPTOR
202 } BDANODE_DESCRIPTOR, *PBDANODE_DESCRIPTOR;
204 typedef struct _BDA_TEMPLATE_CONNECTION
207 ULONG FromNodePinType;
210 } BDA_TEMPLATE_CONNECTION, *PBDA_TEMPLATE_CONNECTION;
212 typedef struct _BDA_TEMPLATE_PIN_JOINT
214 ULONG uliTemplateConnection;
215 ULONG ulcInstancesMax;
216 } BDA_TEMPLATE_PIN_JOINT, *PBDA_TEMPLATE_PIN_JOINT;
218 class IComponent : public IDispatch
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;
232 class IComponents : public IDispatch
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;
246 class IComponentType : public IDispatch
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;
270 class IComponentTypes : public IDispatch
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;
287 class IEnumComponents : public IUnknown
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;
297 class IEnumComponentTypes : public IUnknown
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;
307 class IEnumTuningSpaces : public IUnknown
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;
317 class ITunerCap : public IUnknown
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;
330 class ITuner : public IUnknown
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;
350 class ISampleGrabber : public IUnknown
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,
361 virtual HRESULT __stdcall GetCurrentSample( IMediaSample** p_p_sample )=0;
362 virtual HRESULT __stdcall SetCallback( ISampleGrabberCB* pf_callback,
363 long l_callback_type )=0;
366 class ISampleGrabberCB : public IUnknown
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;
375 class IScanningTuner : public ITuner
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;
385 class ITuneRequest : public IDispatch
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;
396 class IChannelTuneRequest : public ITuneRequest
399 virtual HRESULT __stdcall get_Channel( long* pl_channel )=0;
400 virtual HRESULT __stdcall put_Channel( long l_channel )=0;
403 class IATSCChannelTuneRequest : public IChannelTuneRequest
406 virtual HRESULT __stdcall get_MinorChannel( long* pl_minor_channel )=0;
407 virtual HRESULT __stdcall put_MinorChannel( long l_minor_channel )=0;
410 class IDigitalCableTuneRequest : public IATSCChannelTuneRequest
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;
419 class IDVBTuneRequest : public ITuneRequest
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;
430 class ILocator : public IDispatch
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;
454 class IATSCLocator : public ILocator
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;
463 class IATSCLocator2 : public IATSCLocator
466 virtual HRESULT __stdcall get_ProgramNumber( long* pl_prog_number )=0;
467 virtual HRESULT __stdcall put_ProgramNumber( long l_prog_number )=0;
470 class IDigitalCableLocator : public IATSCLocator2
475 class IDVBCLocator : public ILocator
480 class IDVBSLocator : public ILocator
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;
497 class IDVBTLocator : public ILocator
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;
520 class ITuningSpace : public IDispatch
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;
547 class IDVBTuningSpace : public ITuningSpace
550 virtual HRESULT __stdcall get_SystemType( DVBSystemType* p_sys_type )=0;
551 virtual HRESULT __stdcall put_SystemType( DVBSystemType sys_type )=0;
554 class IDVBTuningSpace2 : public IDVBTuningSpace
557 virtual HRESULT __stdcall get_NetworkID( long* p_l_network_id )=0;
558 virtual HRESULT __stdcall put_NetworkID( long l_network_id )=0;
561 class IDVBSTuningSpace : public IDVBTuningSpace2
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;
578 class ITuningSpaceContainer : public IDispatch
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,
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;
604 class ITuningSpaces : public IDispatch
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;
615 class IBDA_DeviceControl : public IUnknown
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;
624 class IBDA_FrequencyFilter : public IUnknown
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;
642 class IBDA_SignalStatistics : public IUnknown
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;
657 class IBDA_Topology : public IUnknown
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;
684 typedef struct _MPEG_HEADER_BITS_MIDL
687 } MPEG_HEADER_BITS_MIDL;
689 typedef struct _MPEG_HEADER_VERSION_BITS_MIDL
692 } MPEG_HEADER_VERSION_BITS_MIDL;
698 typedef struct _SECTION
703 MPEG_HEADER_BITS_MIDL S;
706 BYTE SectionData[ 1 ];
707 } SECTION, *PSECTION;
709 typedef struct _LONG_SECTION
714 MPEG_HEADER_BITS_MIDL S;
717 WORD TableIdExtension;
720 MPEG_HEADER_VERSION_BITS_MIDL S;
724 BYTE LastSectionNumber;
725 BYTE RemainingData[ 1 ];
728 typedef struct _MPEG_BCS_DEMUX
733 typedef struct _MPEG_WINSOC
740 MPEG_CONTEXT_BCS_DEMUX = 0,
741 MPEG_CONTEXT_WINSOCK = MPEG_CONTEXT_BCS_DEMUX + 1
744 typedef struct _MPEG_RQST_PACKET
748 } MPEG_RQST_PACKET, *PMPEG_RQST_PACKET;
750 typedef struct _MPEG_PACKET_LIST
753 PMPEG_RQST_PACKET PacketList[ 1 ];
754 } MPEG_PACKET_LIST, *PMPEG_PACKET_LIST;
756 typedef struct _DSMCC_FILTER_OPTIONS
758 BOOL fSpecifyProtocol;
762 BOOL fSpecifyMessageId;
764 BOOL fSpecifyTransactionId;
765 BOOL fUseTrxIdMessageIdMask;
767 BOOL fSpecifyModuleVersion;
769 BOOL fSpecifyBlockNumber;
772 WORD NumberOfBlocksInModule;
773 } DSMCC_FILTER_OPTIONS;
775 typedef struct _ATSC_FILTER_OPTIONS
779 } ATSC_FILTER_OPTIONS;
781 typedef struct _MPEG_STREAM_BUFFER
784 DWORD dwDataBufferSize;
785 DWORD dwSizeOfDataRead;
787 } MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER;
789 typedef struct _MPEG_CONTEXT
791 MPEG_CONTEXT_TYPE Type;
794 MPEG_BCS_DEMUX Demux;
795 MPEG_WINSOCK Winsock;
797 } MPEG_CONTEXT, *PMPEG_CONTEXT;
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
812 typedef struct _MPEG2_FILTER
816 BOOL fUseRawFilteringBits;
819 BOOL fSpecifyTableIdExtension;
820 WORD TableIdExtension;
821 BOOL fSpecifyVersion;
823 BOOL fSpecifySectionNumber;
825 BOOL fSpecifyCurrentNext;
827 BOOL fSpecifyDsmccOptions;
828 DSMCC_FILTER_OPTIONS Dsmcc;
829 BOOL fSpecifyAtscOptions;
830 ATSC_FILTER_OPTIONS Atsc;
831 } MPEG2_FILTER, *PMPEG2_FILTER;
833 typedef struct _MPEG_HEADER_BITS
835 WORD SectionLength : 12;
837 WORD PrivateIndicator : 1;
838 WORD SectionSyntaxIndicator : 1;
839 } MPEG_HEADER_BITS, *PMPEG_HEADER_BITS;
841 typedef struct _MPEG_HEADER_VERSION_BITS
843 BYTE CurrentNextIndicator : 1;
844 BYTE VersionNumber : 5;
846 } MPEG_HEADER_VERSION_BITS, *PMPEG_HEADER_VERSION_BITS;
848 class IMpeg2Data : public IUnknown
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;
861 class IGuideData : public IUnknown
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;
881 class IGuideDataEvent : public IUnknown
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;
899 class IGuideDataProperty : public IUnknown
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;
907 class IMpeg2Stream : public IUnknown
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;
917 class ISectionList : public IUnknown
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;
933 class IEnumGuideDataProperties : public IUnknown
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;
943 class IEnumTuneRequests : public IUnknown
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;
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}};
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}};
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}};
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;
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;
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;