diff options
Diffstat (limited to '')
-rw-r--r-- | dxsdk/Include/DShowIDL/bdaiface.idl | 1013 |
1 files changed, 1013 insertions, 0 deletions
diff --git a/dxsdk/Include/DShowIDL/bdaiface.idl b/dxsdk/Include/DShowIDL/bdaiface.idl new file mode 100644 index 00000000..e1d27ca9 --- /dev/null +++ b/dxsdk/Include/DShowIDL/bdaiface.idl @@ -0,0 +1,1013 @@ +//------------------------------------------------------------------------------ +// File: BDAIface.idl +// +// Desc: This file defines the Ring 3 BDA interfaces that are common to +// all BDA network and device types. +// +// The interfaces specific to a particular Network Type or filter +// implementation are defined in a separate include file for that +// Network Type or filter implementation. +// +// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +//--------------------------------------------------------------------- +// IUnknown import idl +//--------------------------------------------------------------------- +#ifndef DO_NO_IMPORTS +import "unknwn.idl"; +import "strmif.idl"; +import "BdaTypes.h"; +#endif + +//--------------------------------------------------------------------- +// +// IBDA_NetworkProvider interface +// +// Implemented by a BDA Network Provider +// +// Used by a BDA device filter to register itself with +// a Network Provider and query information about the +// the current tuning request. +// +//--------------------------------------------------------------------- +[ + object, + uuid(fd501041-8ebe-11ce-8183-00aa00577da2), + pointer_default(unique) +] + +interface IBDA_NetworkProvider : IUnknown +{ + + HRESULT + PutSignalSource ( + [in] ULONG ulSignalSource + ); + + + HRESULT + GetSignalSource ( + [in, out] ULONG * pulSignalSource + ); + + HRESULT + GetNetworkType ( + [in, out] GUID * pguidNetworkType + ); + + HRESULT + PutTuningSpace ( + [in] REFGUID guidTuningSpace + ); + + HRESULT + GetTuningSpace ( + [in, out] GUID * pguidTuingSpace + ); + + HRESULT + RegisterDeviceFilter ( + [in] IUnknown * pUnkFilterControl, + [in, out] ULONG * ppvRegisitrationContext + ); + + HRESULT + UnRegisterDeviceFilter ( + [in] ULONG pvRegistrationContext + ); + +} + + +//--------------------------------------------------------------------- +// +// IBDA_EthernetFilter interface +// +// Implemented by a BDA Network Provider +// +// Used by an Ethernet Network Data Sink filter (eg. IPSink) to +// request that the Network Provider make its best effort to tune +// to the stream(s) on which a list of Ethernet multicast addresses +// may be transmitted. +// +// Addresses in the address list are byte aligned in Network order. +// UlcbAddresses will always be an integer multiple of the +// size of an ethernet address. +// +//--------------------------------------------------------------------- +[ + object, + uuid(71985F43-1CA1-11d3-9CC8-00C04F7971E0), + pointer_default(unique) +] + +interface IBDA_EthernetFilter : IUnknown +{ + HRESULT + GetMulticastListSize ( + [in, out] ULONG * pulcbAddresses + ); + + HRESULT + PutMulticastList ( + [in] ULONG ulcbAddresses, + [in, size_is(ulcbAddresses)] BYTE pAddressList [] + ); + + HRESULT + GetMulticastList ( + [in, out] ULONG * pulcbAddresses, + [out, size_is(*pulcbAddresses)] BYTE pAddressList [] + ); + + HRESULT + PutMulticastMode ( + [in] ULONG ulModeMask + ); + + HRESULT + GetMulticastMode ( + [out] ULONG * pulModeMask + ); + +} + + + +//--------------------------------------------------------------------- +// +// IBDA_IPV4Filter interface +// +// Implemented by a BDA Network Provider +// +// Used by an IPv4 Network Data Sink filter to request +// that the Network Provider make its best effort to tune +// to the stream(s) on which a list of IPv4 multicast addresses +// may be transmitted. +// +// Addresses in the address list are byte aligned in Network order. +// UlcbAddresses will always be an integer multiple of the +// size of an IPv4 address. +// +//--------------------------------------------------------------------- +[ + object, + uuid(71985F44-1CA1-11d3-9CC8-00C04F7971E0), + pointer_default(unique) +] + +interface IBDA_IPV4Filter : IUnknown +{ + + HRESULT + GetMulticastListSize ( + [in, out] ULONG * pulcbAddresses + ); + + HRESULT + PutMulticastList ( + [in] ULONG ulcbAddresses, + [in, size_is(ulcbAddresses)] BYTE pAddressList [] + ); + + HRESULT + GetMulticastList ( + [in, out] ULONG * pulcbAddresses, + [out, size_is(*pulcbAddresses)] BYTE pAddressList [] + ); + + HRESULT + PutMulticastMode ( + [in] ULONG ulModeMask + ); + + HRESULT + GetMulticastMode ( + [out] ULONG* pulModeMask + ); +} + + + +//--------------------------------------------------------------------- +// +// IBDA_IPV6Filter interface +// +// Implemented by a BDA Network Provider +// +// Used by an IPv6 Network Data Sink filter to request +// that the Network Provider make its best effort to tune +// to the stream(s) on which a list of IPv6 multicast addresses +// may be transmitted. +// +// Addresses in the address list are byte aligned in Network order. +// UlcbAddresses will always be an integer multiple of the +// size of an IPv6 address. +// +//--------------------------------------------------------------------- +[ + object, + uuid(E1785A74-2A23-4fb3-9245-A8F88017EF33), + pointer_default(unique) +] + +interface IBDA_IPV6Filter : IUnknown +{ + + HRESULT + GetMulticastListSize ( + [in, out] ULONG * pulcbAddresses + ); + + HRESULT + PutMulticastList ( + [in] ULONG ulcbAddresses, + [in, size_is(ulcbAddresses)] BYTE pAddressList [] + ); + + HRESULT + GetMulticastList ( + [in, out] ULONG * pulcbAddresses, + [out, size_is(*pulcbAddresses)] BYTE pAddressList [] + ); + + HRESULT + PutMulticastMode ( + [in] ULONG ulModeMask + ); + + HRESULT + GetMulticastMode ( + [out] ULONG* pulModeMask + ); +} + + + +//--------------------------------------------------------------------- +// +// IBDA_DeviceControl interface +// +// Implemented by a BDA Device Filter +// +// Used by the Network Provider to commit a series of changes +// on a BDA device filter. The device filter validates and +// accumulates all changes requested after StartChanges(). It +// effects the accumulated list of changes when CommitChanges() is +// called. +// +//--------------------------------------------------------------------- +[ + object, + uuid(FD0A5AF3-B41D-11d2-9C95-00C04F7971E0), + pointer_default(unique) +] + +interface IBDA_DeviceControl : IUnknown +{ + HRESULT + StartChanges ( + void + ); + + HRESULT + CheckChanges ( + void + ); + + HRESULT + CommitChanges ( + void + ); + + HRESULT + GetChangeState ( + [in, out] ULONG * pState + ); + +} + + + +//--------------------------------------------------------------------- +// +// IBDA_PinControl interface +// +// Implemented by a BDA Device Filter's Pin +// +// Used by the Network Provider to determine the BDA PinID and +// PinType on a BDA Filter's Pin +// +//--------------------------------------------------------------------- +[ + object, + uuid(0DED49D5-A8B7-4d5d-97A1-12B0C195874D), + pointer_default(unique) +] + +interface IBDA_PinControl : IUnknown +{ + HRESULT + GetPinID ( + [in, out] ULONG * pulPinID + ); + + HRESULT + GetPinType ( + [in, out] ULONG * pulPinType + ); + + HRESULT + RegistrationContext ( + [in, out] ULONG * pulRegistrationCtx + ); +} + + + +//--------------------------------------------------------------------- +// +// IBDA_SignalProperties interface +// +// Implemented by a BDA Device Filter +// +// BDA Signal Properties is used by a Network Provider to inform +// a BDA Device Filter about the current tuning request. The +// Network Provider will call the Put functions when the BDA +// device is first registered with the Network Provider and whenever +// the current tuning request is modified. +// +//--------------------------------------------------------------------- +[ + object, + uuid(D2F1644B-B409-11d2-BC69-00A0C9EE9E16), + pointer_default(unique) +] + +interface IBDA_SignalProperties : IUnknown +{ + HRESULT + PutNetworkType ( + [in] REFGUID guidNetworkType + ); + + HRESULT + GetNetworkType ( + [in, out] GUID * pguidNetworkType + ); + + HRESULT + PutSignalSource ( + [in] ULONG ulSignalSource + ); + + HRESULT + GetSignalSource ( + [in, out] ULONG * pulSignalSource + ); + + HRESULT + PutTuningSpace ( + [in] REFGUID guidTuningSpace + ); + + HRESULT + GetTuningSpace ( + [in, out] GUID * pguidTuingSpace + ); +} + + +//--------------------------------------------------------------------- +// +// IBDA_SignalStatistics interface +// +// Implemented by a BDA Control Node +// +// A BDA Control Node may return these properties to describe +// the condition of a signal that is being received. +// +// +// +// +//--------------------------------------------------------------------- +[ + object, + uuid(1347D106-CF3A-428a-A5CB-AC0D9A2A4338), + pointer_default(unique) +] + +interface IBDA_SignalStatistics : IUnknown +{ + HRESULT + put_SignalStrength ( + [in] LONG lDbStrength + ); + + HRESULT + get_SignalStrength ( + [in, out] LONG * plDbStrength + ); + + HRESULT + put_SignalQuality ( + [in] LONG lPercentQuality + ); + + HRESULT + get_SignalQuality ( + [in, out] LONG * plPercentQuality + ); + + HRESULT + put_SignalPresent ( + [in] BOOLEAN fPresent + ); + + HRESULT + get_SignalPresent ( + [in, out] BOOLEAN * pfPresent + ); + + HRESULT + put_SignalLocked ( + [in] BOOLEAN fLocked + ); + + HRESULT + get_SignalLocked ( + [in, out] BOOLEAN * pfLocked + ); + + HRESULT + put_SampleTime ( + [in] LONG lmsSampleTime + ); + + HRESULT + get_SampleTime ( + [in, out] LONG * plmsSampleTime + ); +} + + +//--------------------------------------------------------------------- +// +// IBDA_Topology interface +// +// Implemented by a BDA Device Filter +// +// Used by the Network Provider to query a BDA Device Filter's +// possible topologies (template topology) and to configure +// the device with an appropriate topology for the current +// tuning request. It is also used to get an IUnknown to +// a control node which may be used to set specific tuning +// information. +// +//--------------------------------------------------------------------- +[ + object, + uuid(79B56888-7FEA-4690-B45D-38FD3C7849BE), + pointer_default(unique) +] + +interface IBDA_Topology : IUnknown +{ + HRESULT + GetNodeTypes ( + [in, out] ULONG * pulcNodeTypes, + [in] ULONG ulcNodeTypesMax, + [in, out, size_is (ulcNodeTypesMax)] ULONG rgulNodeTypes[] + ); + + HRESULT + GetNodeDescriptors ( + [in, out] ULONG * ulcNodeDescriptors, + [in] ULONG ulcNodeDescriptorsMax, + [in, out, size_is (ulcNodeDescriptorsMax)] BDANODE_DESCRIPTOR rgNodeDescriptors[] + ); + + HRESULT + GetNodeInterfaces ( + [in] ULONG ulNodeType, + [in, out] ULONG * pulcInterfaces, + [in] ULONG ulcInterfacesMax, + [in, out, size_is (ulcInterfacesMax)] GUID rgguidInterfaces[] + ); + + HRESULT + GetPinTypes ( + [in, out] ULONG * pulcPinTypes, + [in] ULONG ulcPinTypesMax, + [in, out, size_is (ulcPinTypesMax)] ULONG rgulPinTypes[] + ); + + HRESULT + GetTemplateConnections ( + [in, out] ULONG * pulcConnections, + [in] ULONG ulcConnectionsMax, + [in, out, size_is (ulcConnectionsMax)] BDA_TEMPLATE_CONNECTION rgConnections[] + ); + + HRESULT + CreatePin ( + [in] ULONG ulPinType, + [in, out] ULONG * pulPinId + ); + + HRESULT + DeletePin ( + [in] ULONG ulPinId + ); + + HRESULT + SetMediaType ( + [in] ULONG ulPinId, + [in] AM_MEDIA_TYPE * pMediaType + ); + + HRESULT + SetMedium ( + [in] ULONG ulPinId, + [in] REGPINMEDIUM * pMedium + ); + + HRESULT + CreateTopology ( + [in] ULONG ulInputPinId, + [in] ULONG ulOutputPinId + ); + + HRESULT + GetControlNode ( + [in] ULONG ulInputPinId, + [in] ULONG ulOutputPinId, + [in] ULONG ulNodeType, + [in, out] IUnknown ** ppControlNode + ); +} + +//--------------------------------------------------------------------- +// IBDA_VoidTransform interface +//--------------------------------------------------------------------- +[ + object, + uuid(71985F46-1CA1-11d3-9CC8-00C04F7971E0), + pointer_default(unique) +] + +interface IBDA_VoidTransform : IUnknown +{ + HRESULT + Start ( + void + ); + + HRESULT + Stop ( + void + ); + +} + +//--------------------------------------------------------------------- +// IBDA_NullTransform interface +//--------------------------------------------------------------------- +[ + object, + uuid(DDF15B0D-BD25-11d2-9CA0-00C04F7971E0), + pointer_default(unique) +] + +interface IBDA_NullTransform : IUnknown +{ + HRESULT + Start ( + void + ); + + HRESULT + Stop ( + void + ); + +} + + +//--------------------------------------------------------------------- +// IBDA_FrequencyFilter interface +//--------------------------------------------------------------------- +[ + object, + uuid(71985F47-1CA1-11d3-9CC8-00C04F7971E0), + pointer_default(unique) +] + +interface IBDA_FrequencyFilter : IUnknown +{ + HRESULT + put_Autotune ( + [in] ULONG ulTransponder + ); + + HRESULT + get_Autotune ( + [in, out] ULONG * pulTransponder + ); + + HRESULT + put_Frequency ( + [in] ULONG ulFrequency + ); + + HRESULT + get_Frequency ( + [in, out] ULONG * pulFrequency + ); + + HRESULT + put_Polarity ( + [in] Polarisation Polarity + ); + + HRESULT + get_Polarity ( + [in, out] Polarisation * pPolarity + ); + + HRESULT + put_Range ( + [in] ULONG ulRange + ); + + HRESULT + get_Range ( + [in, out] ULONG * pulRange + ); + + HRESULT + put_Bandwidth ( + [in] ULONG ulBandwidth + ); + + HRESULT + get_Bandwidth ( + [in, out] ULONG * pulBandwidth + ); + + HRESULT + put_FrequencyMultiplier ( + [in] ULONG ulMultiplier + ); + + HRESULT + get_FrequencyMultiplier ( + [in, out] ULONG * pulMultiplier + ); +} + + +//--------------------------------------------------------------------- +// IBDA_LNBInfo interface +//--------------------------------------------------------------------- +[ + object, + uuid(992CF102-49F9-4719-A664-C4F23E2408F4), + pointer_default(unique) +] + +interface IBDA_LNBInfo : IUnknown +{ + HRESULT + put_LocalOscilatorFrequencyLowBand ( + [in] ULONG ulLOFLow + ); + + HRESULT + get_LocalOscilatorFrequencyLowBand ( + [in, out] ULONG * pulLOFLow + ); + + HRESULT + put_LocalOscilatorFrequencyHighBand ( + [in] ULONG ulLOFHigh + ); + + HRESULT + get_LocalOscilatorFrequencyHighBand ( + [in, out] ULONG * pulLOFHigh + ); + + HRESULT + put_HighLowSwitchFrequency ( + [in] ULONG ulSwitchFrequency + ); + + HRESULT + get_HighLowSwitchFrequency ( + [in, out] ULONG * pulSwitchFrequency + ); +} + + +//--------------------------------------------------------------------- +// IBDA_AutoDemodulate interface +//--------------------------------------------------------------------- +[ + object, + uuid(DDF15B12-BD25-11d2-9CA0-00C04F7971E0), + pointer_default(unique) +] + +interface IBDA_AutoDemodulate : IUnknown +{ + HRESULT + put_AutoDemodulate ( + void + ); +} + +//--------------------------------------------------------------------- +// IBDA_DigitalDemodulator interface +//--------------------------------------------------------------------- +[ + object, + uuid(EF30F379-985B-4d10-B640-A79D5E04E1E0), + pointer_default(unique) +] + +interface IBDA_DigitalDemodulator : IUnknown +{ + HRESULT + put_ModulationType ( + [in] ModulationType * pModulationType + ); + + HRESULT + get_ModulationType ( + [in, out] ModulationType * pModulationType + ); + + HRESULT + put_InnerFECMethod ( + [in] FECMethod * pFECMethod + ); + + HRESULT + get_InnerFECMethod ( + [in, out] FECMethod * pFECMethod + ); + + HRESULT + put_InnerFECRate ( + [in] BinaryConvolutionCodeRate * pFECRate + ); + + HRESULT + get_InnerFECRate ( + [in, out] BinaryConvolutionCodeRate * pFECRate + ); + + HRESULT + put_OuterFECMethod ( + [in] FECMethod * pFECMethod + ); + + HRESULT + get_OuterFECMethod ( + [in, out] FECMethod * pFECMethod + ); + + HRESULT + put_OuterFECRate ( + [in] BinaryConvolutionCodeRate * pFECRate + ); + + HRESULT + get_OuterFECRate ( + [in, out] BinaryConvolutionCodeRate * pFECRate + ); + + HRESULT + put_SymbolRate ( + [in] ULONG * pSymbolRate + ); + + HRESULT + get_SymbolRate ( + [in, out] ULONG * pSymbolRate + ); + + HRESULT + put_SpectralInversion ( + [in] SpectralInversion * pSpectralInversion + ); + + HRESULT + get_SpectralInversion ( + [in, out] SpectralInversion * pSpectralInversion + ); +} + +typedef enum +{ + KSPROPERTY_IPSINK_MULTICASTLIST, + KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION, + KSPROPERTY_IPSINK_ADAPTER_ADDRESS + +} KSPROPERTY_IPSINK; + + + +//--------------------------------------------------------------------- +// IBDA_IPSinkControl interface (mutlimedia\filters.ks\ipsink) +// IBDA_IPSinkInfo interface +// +// IBDA_IPSinkControl is no longer being supported for Ring3 clients. +// Use the BDA_IPSinkInfo interface instead. +//--------------------------------------------------------------------- + +[ + object, + uuid(3F4DC8E2-4050-11d3-8F4B-00C04F7971E2), + pointer_default(unique), + helpstring("Not supported - Use IBDA_IPSinkInfo instead") +] +interface IBDA_IPSinkControl : IUnknown +{ + HRESULT GetMulticastList ( + [in, out] unsigned long *pulcbSize, + [in, out] BYTE **pbBuffer + ); + + + HRESULT GetAdapterIPAddress ( + [in,out] unsigned long *pulcbSize, + [in,out] BYTE **pbBuffer + ); + +} + +[ + object, + uuid(A750108F-492E-4d51-95F7-649B23FF7AD7), + pointer_default(unique) +] +interface IBDA_IPSinkInfo : IUnknown +{ + HRESULT get_MulticastList ( // returns N 6-byte 802.3 IP addreses. + [in, out] ULONG * pulcbAddresses, // 6*N + [out, size_is(*pulcbAddresses)] BYTE **ppbAddressList // Allocated by caller, must deallocate in callee with CoTaskMemFree() + ); + + HRESULT get_AdapterIPAddress ( + [out] BSTR *pbstrBuffer + ); + + HRESULT get_AdapterDescription ( + [out] BSTR *pbstrBuffer + ); +} +// +// mpeg-2 demultiplexer-specific interfaces follow +// + +//--------------------------------------------------------------------- +// IEnumPIDMap interface +//--------------------------------------------------------------------- + +#ifdef REMOVE_THESE +typedef enum { + MEDIA_TRANSPORT_PACKET, // complete TS packet e.g. pass-through mode + MEDIA_ELEMENTARY_STREAM, // PES payloads; audio/video only + MEDIA_MPEG2_PSI, // PAT, PMT, CAT, Private + MEDIA_TRANSPORT_PAYLOAD // gathered TS packet payloads (PES packets, etc...) +} MEDIA_SAMPLE_CONTENT ; + +typedef struct { + ULONG ulPID ; + MEDIA_SAMPLE_CONTENT MediaSampleContent ; +} PID_MAP ; +#endif // REMOVE_THESE + +[ + object, + uuid (afb6c2a2-2c41-11d3-8a60-0000f81e0e4a), + pointer_default(unique) +] +interface IEnumPIDMap : IUnknown +{ + HRESULT + Next ( + [in] ULONG cRequest, + [in, out, size_is (cRequest)] PID_MAP * pPIDMap, + [out] ULONG * pcReceived + ) ; + + HRESULT + Skip ( + [in] ULONG cRecords + ) ; + + HRESULT + Reset ( + ) ; + + HRESULT + Clone ( + [out] IEnumPIDMap ** ppIEnumPIDMap + ) ; +} ; + +//--------------------------------------------------------------------- +// IMPEG2PIDMap interface +//--------------------------------------------------------------------- + +[ + object, + uuid (afb6c2a1-2c41-11d3-8a60-0000f81e0e4a), + pointer_default(unique) +] +interface IMPEG2PIDMap : IUnknown +{ + HRESULT + MapPID ( + [in] ULONG culPID, + [in] ULONG * pulPID, + [in] MEDIA_SAMPLE_CONTENT MediaSampleContent + ) ; + + HRESULT + UnmapPID ( + [in] ULONG culPID, + [in] ULONG * pulPID + ) ; + + HRESULT + EnumPIDMap ( + [out] IEnumPIDMap ** pIEnumPIDMap + ) ; +} ; + +//--------------------------------------------------------------------- +// IFrequencyMap interface +// Currently implemented on the TIF. The interface can be QIed on the NP +//--------------------------------------------------------------------- + + + [ + object, + uuid(06FB45C1-693C-4ea7-B79F-7A6A54D8DEF2), + helpstring("IFrequencyMap Interface"), + pointer_default(unique), + hidden, restricted + ] + + interface IFrequencyMap : IUnknown + { + [helpstring("method get_FrequencyMapping")] + HRESULT + get_FrequencyMapping( + [out] ULONG* ulCount, + [out, size_is(1, *ulCount)] ULONG** ppulList + ); + [helpstring("method put_FrequencyMapping")] + HRESULT + put_FrequencyMapping( + [in] ULONG ulCount, + [in, size_is(ulCount)] ULONG pList[] + ); + [helpstring("method get_CountryCode")] + HRESULT + get_CountryCode( + [out] ULONG *pulCountryCode + ); + [helpstring("method put_CountryCode")] + HRESULT + put_CountryCode( + [in] ULONG ulCountryCode + ); + + [helpstring("method get_DefaultFrequencyMapping")] + HRESULT + get_DefaultFrequencyMapping( + [in] ULONG ulCountryCode, + [out] ULONG* pulCount, + [out, size_is(1, *pulCount)] ULONG** ppulList + ); + + + [helpstring("method get_CountryCodeList")] + HRESULT + get_CountryCodeList( + [out] ULONG* pulCount, + [out, size_is(1, *pulCount)] ULONG** ppulList + ); + + + }; + + + |