/*++ Copyright (c) 1997-2000 Microsoft Corporation All Rights Reserved Module Name: wavtable.h Abstract: Declaration of wave miniport tables. --*/ #ifndef _MSVAD_WAVTABLE_H_ #define _MSVAD_WAVTABLE_H_ //============================================================================= static KSDATARANGE_AUDIO PinDataRangesStream[] = { { { sizeof(KSDATARANGE_AUDIO), 0, 0, 0, STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) }, MAX_CHANNELS_PCM, MIN_BITS_PER_SAMPLE_PCM, MAX_BITS_PER_SAMPLE_PCM, MIN_SAMPLE_RATE, MAX_SAMPLE_RATE }, }; static PKSDATARANGE PinDataRangePointersStream[] = { PKSDATARANGE(&PinDataRangesStream[0]) }; //============================================================================= static KSDATARANGE PinDataRangesBridge[] = { { sizeof(KSDATARANGE), 0, 0, 0, STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), STATICGUIDOF(KSDATAFORMAT_SUBTYPE_ANALOG), STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE) } }; static PKSDATARANGE PinDataRangePointersBridge[] = { &PinDataRangesBridge[0] }; //============================================================================= static PCPIN_DESCRIPTOR MiniportPins[] = { // Wave In Streaming Pin (Capture) KSPIN_WAVE_CAPTURE_SINK { MAX_OUTPUT_STREAMS, MAX_OUTPUT_STREAMS, 0, NULL, { 0, NULL, 0, NULL, SIZEOF_ARRAY(PinDataRangePointersStream), PinDataRangePointersStream, KSPIN_DATAFLOW_OUT, KSPIN_COMMUNICATION_SINK, &KSCATEGORY_AUDIO, &KSAUDFNAME_RECORDING_CONTROL, 0 } }, // Wave In Bridge Pin (Capture - From Topology) KSPIN_WAVE_CAPTURE_SOURCE { 0, 0, 0, NULL, { 0, NULL, 0, NULL, SIZEOF_ARRAY(PinDataRangePointersBridge), PinDataRangePointersBridge, KSPIN_DATAFLOW_IN, KSPIN_COMMUNICATION_NONE, &KSCATEGORY_AUDIO, NULL, 0 } }, // Wave Out Streaming Pin (Renderer) KSPIN_WAVE_RENDER_SINK { MAX_INPUT_STREAMS, MAX_INPUT_STREAMS, 0, NULL, { 0, NULL, 0, NULL, SIZEOF_ARRAY(PinDataRangePointersStream), PinDataRangePointersStream, KSPIN_DATAFLOW_IN, KSPIN_COMMUNICATION_SINK, &KSCATEGORY_AUDIO, &KSAUDFNAME_VOLUME_CONTROL, 0 } }, // Wave Out Bridge Pin (Renderer) KSPIN_WAVE_RENDER_SOURCE { 0, 0, 0, NULL, { 0, NULL, 0, NULL, SIZEOF_ARRAY(PinDataRangePointersBridge), PinDataRangePointersBridge, KSPIN_DATAFLOW_OUT, KSPIN_COMMUNICATION_NONE, &KSCATEGORY_AUDIO, NULL, 0 } }, }; //============================================================================= static PCPROPERTY_ITEM PropertiesVolume[] = { { &KSPROPSETID_Audio, KSPROPERTY_AUDIO_VOLUMELEVEL, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_Wave }, { &KSPROPSETID_Audio, KSPROPERTY_AUDIO_CPU_RESOURCES, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_Wave } }; DEFINE_PCAUTOMATION_TABLE_PROP(AutomationVolume, PropertiesVolume); //============================================================================= // TODO This needs more properties. static PCPROPERTY_ITEM PropertiesSuperMix[] = { { &KSPROPSETID_Audio, KSPROPERTY_AUDIO_CPU_RESOURCES, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_Wave } }; DEFINE_PCAUTOMATION_TABLE_PROP(AutomationSuperMix, PropertiesSuperMix); //============================================================================= // TODO This needs more properties. static PCPROPERTY_ITEM PropertiesSrc[] = { { &KSPROPSETID_Audio, KSPROPERTY_AUDIO_SAMPLING_RATE, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_Wave }, { &KSPROPSETID_Audio, KSPROPERTY_AUDIO_CPU_RESOURCES, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_Wave } }; DEFINE_PCAUTOMATION_TABLE_PROP(AutomationSrc, PropertiesSrc); //============================================================================= static PCPROPERTY_ITEM PropertiesSum[] = { { &KSPROPSETID_Audio, KSPROPERTY_AUDIO_CPU_RESOURCES, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_Wave } }; DEFINE_PCAUTOMATION_TABLE_PROP(AutomationSum, PropertiesSum); //============================================================================= static PCNODE_DESCRIPTOR MiniportNodes[] = { // KSNODE_WAVE_ADC { 0, // Flags NULL, // AutomationTable &KSNODETYPE_ADC, // Type NULL // Name }, // KSNODE_WAVE_DAC { 0, // Flags NULL, // AutomationTable &KSNODETYPE_DAC, // Type NULL // Name }, // KSNODE_WAVE_VOLUME1 { 0, // Flags &AutomationVolume, // AutomationTable &KSNODETYPE_VOLUME, // Type NULL // Name }, // KSNODE_WAVE_SUPERMIX { 0, // Flags &AutomationSuperMix, // AutomationTable &KSNODETYPE_SUPERMIX, // Type NULL // Name }, // KSNODE_WAVE_VOLUME2 { 0, // Flags &AutomationVolume, // AutomationTable &KSNODETYPE_VOLUME, // Type NULL // Name }, // KSNODE_WAVE_SRC { 0, // Flags &AutomationSrc, // AutomationTable &KSNODETYPE_SRC, // Type NULL // Name }, // KSNODE_WAVE_SUM { 0, // Flags &AutomationSum, // AutomationTable &KSNODETYPE_SUM, // Type NULL // Name }, }; //============================================================================= static PCCONNECTION_DESCRIPTOR MiniportConnections[] = { { PCFILTER_NODE, KSPIN_WAVE_CAPTURE_SOURCE, KSNODE_WAVE_ADC, 1 }, { KSNODE_WAVE_ADC, 0, PCFILTER_NODE, KSPIN_WAVE_CAPTURE_SINK }, { PCFILTER_NODE, KSPIN_WAVE_RENDER_SINK, KSNODE_WAVE_VOLUME1, 1 }, { KSNODE_WAVE_VOLUME1, 0, KSNODE_WAVE_SUPERMIX,1 }, { KSNODE_WAVE_SUPERMIX, 0, KSNODE_WAVE_VOLUME2, 1 }, { KSNODE_WAVE_VOLUME2, 0, KSNODE_WAVE_SRC, 1 }, { KSNODE_WAVE_SRC, 0, KSNODE_WAVE_SUM, 1 }, { KSNODE_WAVE_SUM, 0, KSNODE_WAVE_DAC, 1 }, { KSNODE_WAVE_DAC, 0, PCFILTER_NODE, KSPIN_WAVE_RENDER_SOURCE }, }; //============================================================================= static PCFILTER_DESCRIPTOR MiniportFilterDescriptor = { 0, // Version NULL, // AutomationTable sizeof(PCPIN_DESCRIPTOR), // PinSize SIZEOF_ARRAY(MiniportPins), // PinCount MiniportPins, // Pins sizeof(PCNODE_DESCRIPTOR), // NodeSize SIZEOF_ARRAY(MiniportNodes), // NodeCount MiniportNodes, // Nodes SIZEOF_ARRAY(MiniportConnections), // ConnectionCount MiniportConnections, // Connections 0, // CategoryCount NULL // Categories - NULL->use defaults (AUDIO RENDER CAPTURE) }; #endif