summaryrefslogtreecommitdiff
path: root/audio/sysvad/TabletAudioSample
diff options
context:
space:
mode:
authorDaniel Rugerio <[email protected]>2019-06-28 16:08:54 -0700
committerAdonais Romero González <[email protected]>2019-06-28 16:08:54 -0700
commit8ffcdad009e4d410f92fabc4e322a76a0be3a69d (patch)
tree378b2d98a4210c61e2bc34f5b8959e87e4be5c6c /audio/sysvad/TabletAudioSample
parent75b2290f2a4ece68739d07135d352cdfec3a9e89 (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.inxbin15426 -> 18736 bytes
-rw-r--r--audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inxbin49782 -> 50422 bytes
-rw-r--r--audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inxbin7688 -> 11338 bytes
-rw-r--r--audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj119
-rw-r--r--audio/sysvad/TabletAudioSample/TabletAudioSample.vcxproj.Filters2
-rw-r--r--audio/sysvad/TabletAudioSample/micarray2wavtable.h990
-rw-r--r--audio/sysvad/TabletAudioSample/minipairs.h12
-rw-r--r--audio/sysvad/TabletAudioSample/sources53
-rw-r--r--audio/sysvad/TabletAudioSample/tabletaudiosample.inxbin67372 -> 72830 bytes
9 files changed, 998 insertions, 178 deletions
diff --git a/audio/sysvad/TabletAudioSample/ComponentizedApoSample.inx b/audio/sysvad/TabletAudioSample/ComponentizedApoSample.inx
index 43457d73..4ee84101 100644
--- a/audio/sysvad/TabletAudioSample/ComponentizedApoSample.inx
+++ b/audio/sysvad/TabletAudioSample/ComponentizedApoSample.inx
Binary files differ
diff --git a/audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inx b/audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inx
index cd77bd98..a5e6e73f 100644
--- a/audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inx
+++ b/audio/sysvad/TabletAudioSample/ComponentizedAudioSample.inx
Binary files differ
diff --git a/audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inx b/audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inx
index a13515cc..4f29c985 100644
--- a/audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inx
+++ b/audio/sysvad/TabletAudioSample/ComponentizedAudioSampleExtension.inx
Binary files differ
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
index e1c0512f..ba96faee 100644
--- a/audio/sysvad/TabletAudioSample/tabletaudiosample.inx
+++ b/audio/sysvad/TabletAudioSample/tabletaudiosample.inx
Binary files differ