|
|
//------------------------------------------------------------------------------ // 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 - 2000, 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 ) ; } ;
|