/*++ Copyright (c) 1997-2000 Microsoft Corporation All Rights Reserved Module Name: minwave.h Abstract: Definition of wavecyclic miniport class. --*/ #ifndef _MSVAD_MINWAVE_H_#define _MSVAD_MINWAVE_H_ #define CB_EXTENSIBLE (sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX)) //=============================================================================// Referenced Forward//=============================================================================class CMiniportWaveCyclicStream;typedef CMiniportWaveCyclicStream *PCMiniportWaveCyclicStream; //=============================================================================// Classes//=============================================================================///////////////////////////////////////////////////////////////////////////////// CMiniportWaveCyclic // class CMiniportWaveCyclic : public IMiniportWaveCyclic, public CUnknown {private: BOOL m_fCaptureAllocated; BOOL m_fRenderAllocated; protected: PADAPTERCOMMON m_AdapterCommon; // Adapter common object PPORTWAVECYCLIC m_Port; // Callback interface PPCFILTER_DESCRIPTOR m_FilterDescriptor; // Filter descriptor ULONG m_NotificationInterval; // milliseconds. ULONG m_SamplingFrequency; // Frames per second. PSERVICEGROUP m_ServiceGroup; // For notification. KMUTEX m_SampleRateSync; // Sync for sample rate ULONG m_MaxDmaBufferSize; // Dma buffer size. // All the below members should be updated by the child classes ULONG m_MaxOutputStreams; // Max stream caps ULONG m_MaxInputStreams; ULONG m_MaxTotalStreams; ULONG m_MinChannels; // Format caps ULONG m_MaxChannelsPcm; ULONG m_MinBitsPerSamplePcm; ULONG m_MaxBitsPerSamplePcm; ULONG m_MinSampleRatePcm; ULONG m_MaxSampleRatePcm; public: DECLARE_STD_UNKNOWN(); CMiniportWaveCyclic(PUNKNOWN other); ~CMiniportWaveCyclic(); IMP_IMiniportWaveCyclic; NTSTATUS PropertyHandlerComponentId(IN PPCPROPERTY_REQUEST PropertyRequest); NTSTATUS PropertyHandlerProposedFormat(IN PPCPROPERTY_REQUEST PropertyRequest); NTSTATUS PropertyHandlerCpuResources(IN PPCPROPERTY_REQUEST PropertyRequest); NTSTATUS PropertyHandlerGeneric(IN PPCPROPERTY_REQUEST PropertyRequest); NTSTATUS PropertyHandlerPrivate(IN PPCPROPERTY_REQUEST PropertyRequest); // Friends friend class CMiniportWaveCyclicStream; friend class CMiniportTopology; friend void TimerNotify(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SA1, IN PVOID SA2);};typedef CMiniportWaveCyclic *PCMiniportWaveCyclic; #endif
/*++
Copyright (c) 1997-2000 Microsoft Corporation All Rights Reserved
Module Name:
minwave.h
Abstract:
Definition of wavecyclic miniport class.
--*/
#ifndef _MSVAD_MINWAVE_H_
#define _MSVAD_MINWAVE_H_
#define CB_EXTENSIBLE (sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX))
//=============================================================================
// Referenced Forward
//=============================================================================
class CMiniportWaveCyclicStream;
typedef CMiniportWaveCyclicStream *PCMiniportWaveCyclicStream;
//=============================================================================
// Classes
//=============================================================================
///////////////////////////////////////////////////////////////////////////////
// CMiniportWaveCyclic
//
class CMiniportWaveCyclic : public IMiniportWaveCyclic, public CUnknown {
private:
BOOL m_fCaptureAllocated;
BOOL m_fRenderAllocated;
protected:
PADAPTERCOMMON m_AdapterCommon; // Adapter common object
PPORTWAVECYCLIC m_Port; // Callback interface
PPCFILTER_DESCRIPTOR m_FilterDescriptor; // Filter descriptor
ULONG m_NotificationInterval; // milliseconds.
ULONG m_SamplingFrequency; // Frames per second.
PSERVICEGROUP m_ServiceGroup; // For notification.
KMUTEX m_SampleRateSync; // Sync for sample rate
ULONG m_MaxDmaBufferSize; // Dma buffer size.
// All the below members should be updated by the child classes
ULONG m_MaxOutputStreams; // Max stream caps
ULONG m_MaxInputStreams;
ULONG m_MaxTotalStreams;
ULONG m_MinChannels; // Format caps
ULONG m_MaxChannelsPcm;
ULONG m_MinBitsPerSamplePcm;
ULONG m_MaxBitsPerSamplePcm;
ULONG m_MinSampleRatePcm;
ULONG m_MaxSampleRatePcm;
public:
DECLARE_STD_UNKNOWN();
CMiniportWaveCyclic(PUNKNOWN other);
~CMiniportWaveCyclic();
IMP_IMiniportWaveCyclic;
NTSTATUS PropertyHandlerComponentId(IN PPCPROPERTY_REQUEST PropertyRequest);
NTSTATUS PropertyHandlerProposedFormat(IN PPCPROPERTY_REQUEST PropertyRequest);
NTSTATUS PropertyHandlerCpuResources(IN PPCPROPERTY_REQUEST PropertyRequest);
NTSTATUS PropertyHandlerGeneric(IN PPCPROPERTY_REQUEST PropertyRequest);
NTSTATUS PropertyHandlerPrivate(IN PPCPROPERTY_REQUEST PropertyRequest);
// Friends
friend class CMiniportWaveCyclicStream;
friend class CMiniportTopology;
friend void TimerNotify(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SA1, IN PVOID SA2);
};
typedef CMiniportWaveCyclic *PCMiniportWaveCyclic;
#endif