diff options
| author | Daniel Rugerio <[email protected]> | 2019-06-28 16:08:54 -0700 |
|---|---|---|
| committer | Adonais Romero González <[email protected]> | 2019-06-28 16:08:54 -0700 |
| commit | 8ffcdad009e4d410f92fabc4e322a76a0be3a69d (patch) | |
| tree | 378b2d98a4210c61e2bc34f5b8959e87e4be5c6c /audio/sysvad/TabletAudioSample | |
| parent | 75b2290f2a4ece68739d07135d352cdfec3a9e89 (diff) | |
Update audio samples (#387)
* Update SysVAD public sample.
* Add WaveTest public sample.
Diffstat (limited to 'audio/sysvad/TabletAudioSample')
| -rw-r--r-- | audio/sysvad/TabletAudioSample/ComponentizedApoSample.inx | bin | 15426 -> 18736 bytes | |||
| -rw-r--r-- | audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inx | bin | 49782 -> 50422 bytes | |||
| -rw-r--r-- | audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inx | bin | 7688 -> 11338 bytes | |||
| -rw-r--r-- | audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj | 119 | ||||
| -rw-r--r-- | audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj.Filters | 2 | ||||
| -rw-r--r-- | audio/sysvad/TabletAudioSample/micarray2wavtable.h | 990 | ||||
| -rw-r--r-- | audio/sysvad/TabletAudioSample/minipairs.h | 12 | ||||
| -rw-r--r-- | audio/sysvad/TabletAudioSample/sources | 53 | ||||
| -rw-r--r-- | audio/sysvad/TabletAudioSample/tabletaudiosample.inx | bin | 67372 -> 72830 bytes |
9 files changed, 998 insertions, 178 deletions
diff --git a/audio/sysvad/TabletAudioSample/ComponentizedApoSample.inx b/audio/sysvad/TabletAudioSample/ComponentizedApoSample.inx Binary files differindex 43457d73..4ee84101 100644 --- a/audio/sysvad/TabletAudioSample/ComponentizedApoSample.inx +++ b/audio/sysvad/TabletAudioSample/ComponentizedApoSample.inx diff --git a/audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inx b/audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inx Binary files differindex cd77bd98..a5e6e73f 100644 --- a/audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inx +++ b/audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inx diff --git a/audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inx b/audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inx Binary files differindex a13515cc..4f29c985 100644 --- a/audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inx +++ b/audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inx diff --git a/audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj b/audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj index ba22dcf1..f7752502 100644 --- a/audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj +++ b/audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj @@ -1,10 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|ARM"> - <Configuration>Debug</Configuration> - <Platform>ARM</Platform> - </ProjectConfiguration> <ProjectConfiguration Include="Debug|ARM64"> <Configuration>Debug</Configuration> <Platform>ARM64</Platform> @@ -13,10 +9,6 @@ <Configuration>Debug</Configuration> <Platform>Win32</Platform> </ProjectConfiguration> - <ProjectConfiguration Include="Release|ARM"> - <Configuration>Release</Configuration> - <Platform>ARM</Platform> - </ProjectConfiguration> <ProjectConfiguration Include="Release|ARM64"> <Configuration>Release</Configuration> <Platform>ARM64</Platform> @@ -85,14 +77,6 @@ <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>False</UseDebugLibraries> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - <DriverType>KMDF</DriverType> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - </PropertyGroup> <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <TargetVersion>Windows10</TargetVersion> <UseDebugLibraries>True</UseDebugLibraries> @@ -101,14 +85,6 @@ <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>True</UseDebugLibraries> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - <DriverType>KMDF</DriverType> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <PropertyGroup> <OutDir>$(IntDir)</OutDir> @@ -128,15 +104,9 @@ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> - </ImportGroup> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> - </ImportGroup> <ItemGroup Label="WrappedTaskItems" /> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <Link> @@ -248,28 +218,6 @@ <PreprocessorDefinitions>%(PreprocessorDefinitions);DEBUG_LEVEL=DEBUGLVL_TERSE</PreprocessorDefinitions> </Midl> </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> - <Link> - <AdditionalDependencies>%(AdditionalDependencies);$(DDK_LIB_PATH)\portcls.lib;$(DDK_LIB_PATH)\stdunk.lib;$(DDK_LIB_PATH)\libcntpr.lib</AdditionalDependencies> - </Link> - <ResourceCompile> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(DDK_INC_PATH);..</AdditionalIncludeDirectories> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_WIN32;UNICODE;_UNICODE;PC_IMPLEMENTATION</PreprocessorDefinitions> - <PreprocessorDefinitions>%(PreprocessorDefinitions);DEBUG_LEVEL=DEBUGLVL_TERSE</PreprocessorDefinitions> - </ResourceCompile> - <ClCompile> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(DDK_INC_PATH);..</AdditionalIncludeDirectories> - <TreatWarningAsError>true</TreatWarningAsError> - <WarningLevel>Level4</WarningLevel> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_WIN32;UNICODE;_UNICODE;PC_IMPLEMENTATION</PreprocessorDefinitions> - <PreprocessorDefinitions>%(PreprocessorDefinitions);DEBUG_LEVEL=DEBUGLVL_TERSE</PreprocessorDefinitions> - </ClCompile> - <Midl> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(DDK_INC_PATH);..</AdditionalIncludeDirectories> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_WIN32;UNICODE;_UNICODE;PC_IMPLEMENTATION</PreprocessorDefinitions> - <PreprocessorDefinitions>%(PreprocessorDefinitions);DEBUG_LEVEL=DEBUGLVL_TERSE</PreprocessorDefinitions> - </Midl> - </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <Link> <AdditionalDependencies>%(AdditionalDependencies);$(DDK_LIB_PATH)\portcls.lib;$(DDK_LIB_PATH)\stdunk.lib;$(DDK_LIB_PATH)\libcntpr.lib</AdditionalDependencies> @@ -292,28 +240,6 @@ <PreprocessorDefinitions>%(PreprocessorDefinitions);DEBUG_LEVEL=DEBUGLVL_TERSE</PreprocessorDefinitions> </Midl> </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> - <Link> - <AdditionalDependencies>%(AdditionalDependencies);$(DDK_LIB_PATH)\portcls.lib;$(DDK_LIB_PATH)\stdunk.lib;$(DDK_LIB_PATH)\libcntpr.lib</AdditionalDependencies> - </Link> - <ResourceCompile> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(DDK_INC_PATH);..</AdditionalIncludeDirectories> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_WIN32;UNICODE;_UNICODE;PC_IMPLEMENTATION</PreprocessorDefinitions> - <PreprocessorDefinitions>%(PreprocessorDefinitions);DEBUG_LEVEL=DEBUGLVL_TERSE</PreprocessorDefinitions> - </ResourceCompile> - <ClCompile> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(DDK_INC_PATH);..</AdditionalIncludeDirectories> - <TreatWarningAsError>true</TreatWarningAsError> - <WarningLevel>Level4</WarningLevel> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_WIN32;UNICODE;_UNICODE;PC_IMPLEMENTATION</PreprocessorDefinitions> - <PreprocessorDefinitions>%(PreprocessorDefinitions);DEBUG_LEVEL=DEBUGLVL_TERSE</PreprocessorDefinitions> - </ClCompile> - <Midl> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(DDK_INC_PATH);..</AdditionalIncludeDirectories> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_WIN32;UNICODE;_UNICODE;PC_IMPLEMENTATION</PreprocessorDefinitions> - <PreprocessorDefinitions>%(PreprocessorDefinitions);DEBUG_LEVEL=DEBUGLVL_TERSE</PreprocessorDefinitions> - </Midl> - </ItemDefinitionGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <TargetName>TabletAudioSample</TargetName> </PropertyGroup> @@ -329,15 +255,9 @@ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <TargetName>TabletAudioSample</TargetName> </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> - <TargetName>TabletAudioSample</TargetName> - </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <TargetName>TabletAudioSample</TargetName> </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> - <TargetName>TabletAudioSample</TargetName> - </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <Link> <AdditionalDependencies>%(AdditionalDependencies);.\..\EndpointsCommon\$(IntDir)\EndpointsCommon.lib</AdditionalDependencies> @@ -441,25 +361,6 @@ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\EndpointsCommon</AdditionalIncludeDirectories> </ResourceCompile> </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> - <Link> - <AdditionalDependencies>%(AdditionalDependencies);.\..\EndpointsCommon\$(IntDir)\EndpointsCommon.lib</AdditionalDependencies> - </Link> - <ClCompile> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_USE_WAVERT_;SYSVAD_BTH_BYPASS;SYSVAD_USB_SIDEBAND;_USE_IPortClsRuntimePower;_NEW_DELETE_OPERATORS_</PreprocessorDefinitions> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\EndpointsCommon;.</AdditionalIncludeDirectories> - <ExceptionHandling> - </ExceptionHandling> - </ClCompile> - <Midl> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_USE_WAVERT_;SYSVAD_BTH_BYPASS;SYSVAD_USB_SIDEBAND;_USE_IPortClsRuntimePower</PreprocessorDefinitions> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\EndpointsCommon</AdditionalIncludeDirectories> - </Midl> - <ResourceCompile> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_USE_WAVERT_;SYSVAD_BTH_BYPASS;SYSVAD_USB_SIDEBAND;_USE_IPortClsRuntimePower</PreprocessorDefinitions> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\EndpointsCommon</AdditionalIncludeDirectories> - </ResourceCompile> - </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <Link> <AdditionalDependencies>%(AdditionalDependencies);.\..\EndpointsCommon\$(IntDir)\EndpointsCommon.lib</AdditionalDependencies> @@ -479,26 +380,6 @@ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\EndpointsCommon</AdditionalIncludeDirectories> </ResourceCompile> </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> - <Link> - <AdditionalDependencies>%(AdditionalDependencies);.\..\EndpointsCommon\$(IntDir)\EndpointsCommon.lib</AdditionalDependencies> - </Link> - <ClCompile> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_USE_WAVERT_;SYSVAD_BTH_BYPASS;SYSVAD_USB_SIDEBAND;_USE_IPortClsRuntimePower;_NEW_DELETE_OPERATORS_</PreprocessorDefinitions> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\EndpointsCommon;.</AdditionalIncludeDirectories> - <ExceptionHandling> - </ExceptionHandling> - <DisableSpecificWarnings>4595;%(DisableSpecificWarnings)</DisableSpecificWarnings> - </ClCompile> - <Midl> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_USE_WAVERT_;SYSVAD_BTH_BYPASS;SYSVAD_USB_SIDEBAND;_USE_IPortClsRuntimePower</PreprocessorDefinitions> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\EndpointsCommon</AdditionalIncludeDirectories> - </Midl> - <ResourceCompile> - <PreprocessorDefinitions>%(PreprocessorDefinitions);_USE_WAVERT_;SYSVAD_BTH_BYPASS;SYSVAD_USB_SIDEBAND;_USE_IPortClsRuntimePower</PreprocessorDefinitions> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\EndpointsCommon</AdditionalIncludeDirectories> - </ResourceCompile> - </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\adapter.cpp" /> <ClCompile Include="..\basetopo.cpp" /> diff --git a/audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj.Filters b/audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj.Filters index 643d5929..142c7f02 100644 --- a/audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj.Filters +++ b/audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj.Filters @@ -41,4 +41,4 @@ <Filter>Driver Files</Filter> </Inf> </ItemGroup> -</Project>
\ No newline at end of file +</Project> diff --git a/audio/sysvad/TabletAudioSample/micarray2wavtable.h b/audio/sysvad/TabletAudioSample/micarray2wavtable.h new file mode 100644 index 00000000..1087d5eb --- /dev/null +++ b/audio/sysvad/TabletAudioSample/micarray2wavtable.h @@ -0,0 +1,990 @@ +/*++ + +Copyright (c) Microsoft Corporation All Rights Reserved + +Module Name: + micarray2wavtable.h + +Abstract: + + Declaration of wave miniport tables for the rear mic array. + +--*/ + +#ifndef _SYSVAD_MICARRAY2WAVTABLE_H_ +#define _SYSVAD_MICARRAY2WAVTABLE_H_ + +// +// Mic array range. +// +#define MICARRAY2_RAW_CHANNELS 2 // Channels for raw mode +#define MICARRAY2_PROCESSED_CHANNELS 1 // Channels for default mode +#define MICARRAY2_DEVICE_MAX_CHANNELS 2 // Max channels overall +#define MICARRAY2_16_BITS_PER_SAMPLE_PCM 16 // 16 Bits Per Sample +#define MICARRAY2_32_BITS_PER_SAMPLE_PCM 32 // 32 Bits Per Sample +#define MICARRAY2_RAW_SAMPLE_RATE 48000 // Raw sample rate +#define MICARRAY2_PROCESSED_MIN_SAMPLE_RATE 8000 // Min Sample Rate +#define MICARRAY2_PROCESSED_MAX_SAMPLE_RATE 48000 // Max Sample Rate + +// +// Max # of pin instances. +// +#define MICARRAY2_MAX_INPUT_STREAMS 4 + +//============================================================================= +static +KSDATAFORMAT_WAVEFORMATEXTENSIBLE MicArray2PinSupportedDeviceFormats[] = +{ + // 0 - Note the ENDPOINT_MINIPAIR structures for the mic arrays use this first element as the proposed DEFAULT format + // 48 KHz 16-bit mono + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 48000, + 96000, + 2, + 16, + sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX) + }, + 16, + KSAUDIO_SPEAKER_MONO, + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, + // 1 + // 8 KHz 16-bit mono + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 8000, + 16000, + 2, + 16, + sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX) + }, + 16, + KSAUDIO_SPEAKER_MONO, + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, + // 2 + // 11.025 KHz 16-bit mono + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 11025, + 22050, + 2, + 16, + sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX) + }, + 16, + KSAUDIO_SPEAKER_MONO, + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, + // 3 - Note the ENDPOINT_MINIPAIR structures for the mic arrays use this element as the proposed SPEECH format + // 16 KHz 16-bit mono + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 1, // One channel + 16000, // 16KHz + 32000, // average bytes per second + 2, // 2 bytes per frame + 16, // 16 bits per sample container + sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX) + }, + 16, // valid bits per sample + KSAUDIO_SPEAKER_MONO, + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, + // 4 + // 22.05 KHz 16-bit mono + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 22050, + 44100, + 2, + 16, + sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX) + }, + 16, + KSAUDIO_SPEAKER_MONO, + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, + // 5 - Note the ENDPOINT_MINIPAIR structures for the mic arrays use this element as the proposed COMMUNICATIONS format + // 24 KHz 16-bit mono + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 24000, + 48000, + 2, + 16, + sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX) + }, + 16, + KSAUDIO_SPEAKER_MONO, + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, + // 6 + // 32 KHz 16-bit mono + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 32000, + 64000, + 2, + 16, + sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX) + }, + 16, + KSAUDIO_SPEAKER_MONO, + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, + // 7 + // 44.1 KHz 16-bit mono + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 44100, + 88200, + 2, + 16, + sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX) + }, + 16, + KSAUDIO_SPEAKER_MONO, + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, + // 8 - Note the ENDPOINT_MINIPAIR structures for the mic arrays use this last element as the proposed RAW format + // 48 KHz 32-bit 2 channels + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 2, + 48000, + 384000, + 8, + 32, + sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX) + }, + 32, + 0, // No channel configuration for unprocessed mic array + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, +}; + +// +// Supported modes (only on streaming pins). +// +static +MODE_AND_DEFAULT_FORMAT MicArray2PinSupportedDeviceModes[] = +{ + { + STATIC_AUDIO_SIGNALPROCESSINGMODE_RAW, + &MicArray2PinSupportedDeviceFormats[SIZEOF_ARRAY(MicArray2PinSupportedDeviceFormats)-1].DataFormat + }, + { + STATIC_AUDIO_SIGNALPROCESSINGMODE_DEFAULT, + &MicArray2PinSupportedDeviceFormats[0].DataFormat + }, + { + STATIC_AUDIO_SIGNALPROCESSINGMODE_SPEECH, + &MicArray2PinSupportedDeviceFormats[3].DataFormat + }, + { + STATIC_AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS, + &MicArray2PinSupportedDeviceFormats[5].DataFormat + } +}; + +// This structure goes along with the keyword supported device format, +// to indicate that the audio is interleaved microphone and loopback data. +INTERLEAVED_AUDIO_FORMAT_INFORMATION InterleavedFormatInformation = +{ + sizeof(INTERLEAVED_AUDIO_FORMAT_INFORMATION), + 4, // Microphone channel count + 0, // Microphone channel start position + 0, // No channel configuration for unprocessed mic array + 2, // Channel count for interleaved data + 2, // Interleaved audio start position + KSAUDIO_SPEAKER_STEREO // Channel mask for interleaved loopback data +}; + +//============================================================================= +static +KSDATAFORMAT_WAVEFORMATEXTENSIBLE KeywordPin2SupportedDeviceFormats[] = +{ + { + { + sizeof(KSDATAFORMAT_WAVEFORMATEXTENSIBLE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + { + { + WAVE_FORMAT_EXTENSIBLE, + 6, // six channels, make sure this matches InterleavedFormatInformation, if interleaving loopback audio + 16000, // 16KHz + 192000, // average bytes per second + 12, // 8 bytes per frame + 16, // 16 bits per sample container + sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX) + }, + 16, // valid bits per sample + 0, // No channel configuration for unprocessed mic array + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) + } + }, +}; + +static +MODE_AND_DEFAULT_FORMAT KeywordPin2SupportedDeviceModes[] = +{ + // NOTE: Because we're using the KWS apo as an EFX, this endpoint may only support a single mode. + // You can not have an EFX when there are multiple modes supported by the driver, EFX must be implemented + // in the driver in that case. Because we are exposing a single mode the audio engine can insert the KWSAPO + // as an EFX. Further, in the INF associated to this driver the KWS EFX APO is registered as supporting default + // mode. That registration is not coupled to the mode enumerated in this list. + { + STATIC_AUDIO_SIGNALPROCESSINGMODE_SPEECH, + &KeywordPin2SupportedDeviceFormats[SIZEOF_ARRAY(KeywordPin2SupportedDeviceFormats) - 1].DataFormat + }, +}; + +// +// The entries here must follow the same order as the filter's pin +// descriptor array. +// +static +PIN_DEVICE_FORMATS_AND_MODES MicArray2PinDeviceFormatsAndModes[] = +{ + { + BridgePin, + NULL, + 0, + NULL, + 0 + }, + { + SystemCapturePin, + MicArray2PinSupportedDeviceFormats, + SIZEOF_ARRAY(MicArray2PinSupportedDeviceFormats), + MicArray2PinSupportedDeviceModes, + SIZEOF_ARRAY(MicArray2PinSupportedDeviceModes) + }, + { + KeywordCapturePin, + KeywordPin2SupportedDeviceFormats, + SIZEOF_ARRAY(KeywordPin2SupportedDeviceFormats), + KeywordPin2SupportedDeviceModes, + SIZEOF_ARRAY(KeywordPin2SupportedDeviceModes) + } +}; + +//============================================================================= +// Data ranges +// +// See CMiniportWaveRT::DataRangeIntersection. +// +// Both mono and two-channel formats are supported for the mic arrays. The +// design of this sample driver's data range intersection handler requires a +// separate data for each supported channel count. +// +static +KSDATARANGE_AUDIO MicArray2PinDataRangesRawStream[] = +{ + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + MICARRAY2_RAW_CHANNELS, + MICARRAY2_32_BITS_PER_SAMPLE_PCM, + MICARRAY2_32_BITS_PER_SAMPLE_PCM, + MICARRAY2_RAW_SAMPLE_RATE, + MICARRAY2_RAW_SAMPLE_RATE + }, +}; + +static +KSDATARANGE_AUDIO MicArray2PinDataRangesProcessedStream[] = +{ + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + MICARRAY2_PROCESSED_CHANNELS, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_PROCESSED_MIN_SAMPLE_RATE, + MICARRAY2_PROCESSED_MIN_SAMPLE_RATE + }, + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + MICARRAY2_PROCESSED_CHANNELS, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + 11025, + 11025 + }, + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + MICARRAY2_PROCESSED_CHANNELS, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + 16000, + 16000 + }, + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + MICARRAY2_PROCESSED_CHANNELS, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + 22050, + 22050 + }, + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + MICARRAY2_PROCESSED_CHANNELS, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + 24000, + 24000 + }, + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + MICARRAY2_PROCESSED_CHANNELS, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + 32000, + 32000 + }, + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + MICARRAY2_PROCESSED_CHANNELS, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + 44100, + 44100 + }, + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + MICARRAY2_PROCESSED_CHANNELS, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_16_BITS_PER_SAMPLE_PCM, + MICARRAY2_PROCESSED_MAX_SAMPLE_RATE, + MICARRAY2_PROCESSED_MAX_SAMPLE_RATE + }, +}; + +// if MicArray2PinDataRangesProcessedStream is changed, we MUST update MicArray2PinDataRangePointersStream too! +C_ASSERT(SIZEOF_ARRAY(MicArray2PinDataRangesProcessedStream) == 8); + +static +PKSDATARANGE MicArray2PinDataRangePointersStream[] = +{ + // All supported device formats should be listed in the DataRange. + PKSDATARANGE(&MicArray2PinDataRangesProcessedStream[0]), + PKSDATARANGE(&PinDataRangeAttributeList), + PKSDATARANGE(&MicArray2PinDataRangesProcessedStream[1]), + PKSDATARANGE(&PinDataRangeAttributeList), + PKSDATARANGE(&MicArray2PinDataRangesProcessedStream[2]), + PKSDATARANGE(&PinDataRangeAttributeList), + PKSDATARANGE(&MicArray2PinDataRangesProcessedStream[3]), + PKSDATARANGE(&PinDataRangeAttributeList), + PKSDATARANGE(&MicArray2PinDataRangesProcessedStream[4]), + PKSDATARANGE(&PinDataRangeAttributeList), + PKSDATARANGE(&MicArray2PinDataRangesProcessedStream[5]), + PKSDATARANGE(&PinDataRangeAttributeList), + PKSDATARANGE(&MicArray2PinDataRangesProcessedStream[6]), + PKSDATARANGE(&PinDataRangeAttributeList), + PKSDATARANGE(&MicArray2PinDataRangesProcessedStream[7]), + PKSDATARANGE(&PinDataRangeAttributeList), + PKSDATARANGE(&MicArray2PinDataRangesRawStream[0]), + PKSDATARANGE(&PinDataRangeAttributeList), +}; + +//============================================================================= +static +KSDATARANGE MicArray2PinDataRangesBridge[] = +{ + { + sizeof(KSDATARANGE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_ANALOG), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE) + } +}; + +static +PKSDATARANGE MicArray2PinDataRangePointersBridge[] = +{ + &MicArray2PinDataRangesBridge[0] +}; + +static +KSDATARANGE_AUDIO KeywordPin2DataRangesStream[] = +{ + { + { + sizeof(KSDATARANGE_AUDIO), + KSDATARANGE_ATTRIBUTES, // An attributes list follows this data range + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + }, + 6, // max channels + 16, // min bits per sample + 16, // max bits per sample + 16000, // min sample rate + 16000 // max sample rate + }, +}; + +static +PKSDATARANGE KeywordPin2DataRangePointersStream[] = +{ + PKSDATARANGE(&KeywordPin2DataRangesStream[0]), + PKSDATARANGE(&PinDataRangeAttributeList), +}; + +//============================================================================= +static +PCPIN_DESCRIPTOR MicArray2WaveMiniportPins[] = +{ + // Wave In Bridge Pin (Capture - From Topology) KSPIN_WAVE_BRIDGE + { + 0, + 0, + 0, + NULL, + { + 0, + NULL, + 0, + NULL, + SIZEOF_ARRAY(MicArray2PinDataRangePointersBridge), + MicArray2PinDataRangePointersBridge, + KSPIN_DATAFLOW_IN, + KSPIN_COMMUNICATION_NONE, + &KSCATEGORY_AUDIO, + NULL, + 0 + } + }, + // Wave In Streaming Pin (Capture) KSPIN_WAVE_HOST + { + MICARRAY2_MAX_INPUT_STREAMS, + MICARRAY2_MAX_INPUT_STREAMS, + 0, + NULL, + { + 0, + NULL, + 0, + NULL, + SIZEOF_ARRAY(MicArray2PinDataRangePointersStream), + MicArray2PinDataRangePointersStream, + KSPIN_DATAFLOW_OUT, + KSPIN_COMMUNICATION_SINK, + &KSCATEGORY_AUDIO, + &KSAUDFNAME_RECORDING_CONTROL, + 0 + } + }, + // Keyword Detector Streaming Pin (Capture) KSPIN_WAVEIN_KEYWORD + { + 1, + 1, + 0, + NULL, + { + 0, + NULL, + 0, + NULL, + SIZEOF_ARRAY(KeywordPin2DataRangePointersStream), + KeywordPin2DataRangePointersStream, + KSPIN_DATAFLOW_OUT, + KSPIN_COMMUNICATION_SINK, + &KSNODETYPE_AUDIO_KEYWORDDETECTOR, + NULL, + 0 + } + } +}; + +//============================================================================= +static +PCNODE_DESCRIPTOR MicArray2WaveMiniportNodes[] = +{ + // KSNODE_WAVE_ADC + { + 0, // Flags + NULL, // AutomationTable + &KSNODETYPE_ADC, // Type + NULL // Name + } +}; + +//============================================================================= +static +PCCONNECTION_DESCRIPTOR MicArray2WaveMiniportConnections[] = +{ + { PCFILTER_NODE, KSPIN_WAVE_BRIDGE, KSNODE_WAVE_ADC, 1 }, + { KSNODE_WAVE_ADC, 0, PCFILTER_NODE, KSPIN_WAVEIN_HOST }, + { KSNODE_WAVE_ADC, 0, PCFILTER_NODE, KSPIN_WAVEIN_KEYWORD }, +}; + +//============================================================================= +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Get_SoundDetectorSupportedPatterns); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Set_SoundDetectorPatterns); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Get_SoundDetectorArmed); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Set_SoundDetectorArmed); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Get_SoundDetectorMatchResult); + +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Get_SoundDetectorSupportedPatterns2); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Set_SoundDetectorPatterns2); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Get_SoundDetectorArmed2); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Set_SoundDetectorArmed2); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Set_SoundDetectorReset2); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Get_SoundDetectorStreamingSupport2); +DECLARE_CLASSPROPERTYHANDLER(CMiniportWaveRT, Get_InterleavedFormatInformation); + + +static +SYSVADPROPERTY_ITEM PropertiesMicArray2WaveFilter[] = +{ + { + { + &KSPROPSETID_General, + KSPROPERTY_GENERAL_COMPONENTID, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + PropertyHandler_WaveFilter, + }, + 0, + 0, + NULL, + NULL, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_Pin, + KSPROPERTY_PIN_PROPOSEDATAFORMAT, + KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + PropertyHandler_WaveFilter, + }, + 0, + 0, + NULL, + NULL, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_Pin, + KSPROPERTY_PIN_PROPOSEDATAFORMAT2, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + PropertyHandler_WaveFilter, + }, + 0, + 0, + NULL, + NULL, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_AudioEffectsDiscovery, + KSPROPERTY_AUDIOEFFECTSDISCOVERY_EFFECTSLIST, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + PropertyHandler_WaveFilter + }, + 0, + 0, + NULL, + NULL, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_SoundDetector, + KSPROPERTY_SOUNDDETECTOR_SUPPORTEDPATTERNS, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + 0, + sizeof(CONTOSO_SUPPORTEDPATTERNSVALUE), + CMiniportWaveRT_Get_SoundDetectorSupportedPatterns, + NULL, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_SoundDetector, + KSPROPERTY_SOUNDDETECTOR_PATTERNS, + KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + 0, + (sizeof(KSMULTIPLE_ITEM) + sizeof(CONTOSO_KEYWORDCONFIGURATION)), + NULL, + CMiniportWaveRT_Set_SoundDetectorPatterns, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_SoundDetector, + KSPROPERTY_SOUNDDETECTOR_ARMED, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + 0, + sizeof(BOOL), + CMiniportWaveRT_Get_SoundDetectorArmed, + CMiniportWaveRT_Set_SoundDetectorArmed, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_SoundDetector, + KSPROPERTY_SOUNDDETECTOR_MATCHRESULT, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + 0, + sizeof(CONTOSO_KEYWORDDETECTIONRESULT), + CMiniportWaveRT_Get_SoundDetectorMatchResult, + NULL, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_SoundDetector2, + KSPROPERTY_SOUNDDETECTOR_SUPPORTEDPATTERNS, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + sizeof(KSSOUNDDETECTORPROPERTY) - sizeof(KSPROPERTY), + sizeof(CONTOSO_SUPPORTEDPATTERNSVALUE), + CMiniportWaveRT_Get_SoundDetectorSupportedPatterns2, + NULL, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_SoundDetector2, + KSPROPERTY_SOUNDDETECTOR_PATTERNS, + KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + sizeof(KSSOUNDDETECTORPROPERTY) - sizeof(KSPROPERTY), + (sizeof(KSMULTIPLE_ITEM) + sizeof(CONTOSO_KEYWORDCONFIGURATION)), + NULL, + CMiniportWaveRT_Set_SoundDetectorPatterns2, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_SoundDetector2, + KSPROPERTY_SOUNDDETECTOR_ARMED, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + sizeof(KSSOUNDDETECTORPROPERTY) - sizeof(KSPROPERTY), + sizeof(BOOL), + CMiniportWaveRT_Get_SoundDetectorArmed2, + CMiniportWaveRT_Set_SoundDetectorArmed2, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_SoundDetector2, + KSPROPERTY_SOUNDDETECTOR_RESET, + KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + sizeof(KSSOUNDDETECTORPROPERTY) - sizeof(KSPROPERTY), + sizeof(BOOL), + NULL, + CMiniportWaveRT_Set_SoundDetectorReset2, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_SoundDetector2, + KSPROPERTY_SOUNDDETECTOR_STREAMINGSUPPORT, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + sizeof(KSSOUNDDETECTORPROPERTY) - sizeof(KSPROPERTY), + sizeof(BOOL), + CMiniportWaveRT_Get_SoundDetectorStreamingSupport2, + NULL, + NULL, + NULL, + 0 + }, + { + { + &KSPROPSETID_InterleavedAudio, + KSPROPERTY_INTERLEAVEDAUDIO_FORMATINFORMATION, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + SysvadPropertyDispatch, + }, + sizeof(KSP_PIN) - sizeof(KSPROPERTY), + sizeof(INTERLEAVED_AUDIO_FORMAT_INFORMATION), + CMiniportWaveRT_Get_InterleavedFormatInformation, + NULL, + NULL, + &InterleavedFormatInformation, // format interleaving information for this endpoint + sizeof(InterleavedFormatInformation) + }, +}; + +NTSTATUS CMiniportWaveRT_EventHandler_SoundDetectorMatchDetected( + _In_ PPCEVENT_REQUEST EventRequest + ); + +static +PCEVENT_ITEM EventsMicArray2WaveFilter[] = +{ + { + &KSEVENTSETID_SoundDetector, + KSEVENT_SOUNDDETECTOR_MATCHDETECTED, + KSEVENT_TYPE_ENABLE | KSEVENT_TYPE_BASICSUPPORT, + CMiniportWaveRT_EventHandler_SoundDetectorMatchDetected, + } +}; + +DEFINE_PCAUTOMATION_TABLE_PROP_EVENT(AutomationMicArray2WaveFilter, PropertiesMicArray2WaveFilter, EventsMicArray2WaveFilter); + +//============================================================================= +static +PCFILTER_DESCRIPTOR MicArray2WaveMiniportFilterDescriptor = +{ + 0, // Version + &AutomationMicArray2WaveFilter, // AutomationTable + sizeof(PCPIN_DESCRIPTOR), // PinSize + SIZEOF_ARRAY(MicArray2WaveMiniportPins), // PinCount + MicArray2WaveMiniportPins, // Pins + sizeof(PCNODE_DESCRIPTOR), // NodeSize + SIZEOF_ARRAY(MicArray2WaveMiniportNodes), // NodeCount + MicArray2WaveMiniportNodes, // Nodes + SIZEOF_ARRAY(MicArray2WaveMiniportConnections), // ConnectionCount + MicArray2WaveMiniportConnections, // Connections + 0, // CategoryCount + NULL // Categories - use defaults (audio, render, capture) +}; + + +#endif // _SYSVAD_MICARRAY2WAVTABLE_H_ + diff --git a/audio/sysvad/TabletAudioSample/minipairs.h b/audio/sysvad/TabletAudioSample/minipairs.h index 0a3c82ef..d9060e9f 100644 --- a/audio/sysvad/TabletAudioSample/minipairs.h +++ b/audio/sysvad/TabletAudioSample/minipairs.h @@ -40,6 +40,7 @@ Abstract: #include "micarray2toptable.h" #include "micarray3toptable.h" #include "micarraywavtable.h" +#include "micarray2wavtable.h" #include "micarray3wavtable.h" NTSTATUS @@ -446,11 +447,12 @@ ENDPOINT_MINIPAIR MicArray2Miniports = L"WaveMicArray2", // make sure this or the template name matches with KSNAME_WaveMicArray2 in the inf's [Strings] section NULL, // optional template name CreateMiniportWaveRTSYSVAD, - &MicArrayWaveMiniportFilterDescriptor, - 0, NULL, // Interface properties - MICARRAY_DEVICE_MAX_CHANNELS, - MicArrayPinDeviceFormatsAndModes, - SIZEOF_ARRAY(MicArrayPinDeviceFormatsAndModes), + &MicArray2WaveMiniportFilterDescriptor, + ARRAYSIZE(SysvadWaveFilterInterfacePropertiesCapture), // Interface properties + SysvadWaveFilterInterfacePropertiesCapture, + MICARRAY2_DEVICE_MAX_CHANNELS, + MicArray2PinDeviceFormatsAndModes, + SIZEOF_ARRAY(MicArray2PinDeviceFormatsAndModes), MicArray2TopologyPhysicalConnections, SIZEOF_ARRAY(MicArray2TopologyPhysicalConnections), ENDPOINT_SOUNDDETECTOR_SUPPORTED, diff --git a/audio/sysvad/TabletAudioSample/sources b/audio/sysvad/TabletAudioSample/sources deleted file mode 100644 index 07b14c18..00000000 --- a/audio/sysvad/TabletAudioSample/sources +++ /dev/null @@ -1,53 +0,0 @@ - -# Copyright (c) Microsoft Corporation. All rights reserved. - - -!include ..\sources.inc - -TARGETNAME=TabletAudioSample - -TARGETLIBS= \ - $(TARGETLIBS) \ - $(OBJ_PATH)\..\EndpointsCommon\$(O)\EndpointsCommon.lib \ - - -C_DEFINES = $(C_DEFINES) -D_USE_WAVERT_ -DSYSVAD_BTH_BYPASS -DSYSVAD_USB_SIDEBAND - - -#C_DEFINES = $(C_DEFINES) -D_USE_WAVERT_ -# -# Indicate to the WDK that this sample only supports Win10[+] -# -MINIMUM_NT_TARGET_VERSION=$(_NT_TARGET_VERSION_WINTHRESHOLD) - -# -# Audio driver is a KMDF miniport. -# -KMDF_VERSION_MAJOR=1 - -# -# Uncomment one of the following lines to select the right power management. -# Note that the single-component/multi-state feature requires also a registry -# value set via the INF. The name of the registry value is SingleComponentMultiFxStates. -# see INF file for more info. -# -#C_DEFINES= $(C_DEFINES) -D_USE_IPortClsRuntimePower -C_DEFINES= $(C_DEFINES) -D_USE_SingleComponentMultiFxStates - -INCLUDES= \ - $(INCLUDES); \ - ..\EndpointsCommon; \ - -SOURCES=$(SOURCES) \ - hdmitopo.cpp \ - spdiftopo.cpp \ - micintopo.cpp \ - TabletAudioSample.rc \ - - -# Indicate that this module must be included in the driver package -DDK_NO_PACKAGE_PROJECT=0 -DDK_INCLUDE_PACKAGE_PROJECT=1 - - -MUI_VERIFY_NO_LOC_RESOURCE=1 diff --git a/audio/sysvad/TabletAudioSample/tabletaudiosample.inx b/audio/sysvad/TabletAudioSample/tabletaudiosample.inx Binary files differindex e1c0512f..ba96faee 100644 --- a/audio/sysvad/TabletAudioSample/tabletaudiosample.inx +++ b/audio/sysvad/TabletAudioSample/tabletaudiosample.inx |
