Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
AEC-systemfiltret (Aec.sys) implementerar AEC-algoritmerna (akustisk ekoreducering) och brusdämpning (NS) i programvara. Det här filtret är en standardkomponent för operativsystemet i Windows XP och senare. Information om hur DirectSoundCapture-program aktiverar användning av AEC-systemfiltret finns i Microsoft Windows SDK-dokumentationen.
Begränsningar som införts av AEC-systemfilter
Ett ljudfilterdiagram som innehåller en avbildningseffekt som implementeras i AEC-systemfiltret omfattas av följande begränsningar:
AEC-systemfiltret kan bara ansluta till stift som hanterar PCM-dataformat.
Bitdjupet måste vara 16 bitar för avbildningsströmmen och 8 eller 16 bitar för återgivningsströmmen.
AEC-systemfiltret utför all intern bearbetning på 16 kHz. Indata- och utdataströmmarna konverteras till källhastighet vid behov.
I Windows XP SP1, Windows Server 2003 och senare måste AEC-systemfiltrets capture-out och render-in pinnar (se följande bild) ha samma samplingsfrekvens, men samplingsfrekvensen vid anslutningspunkter för capture-in och render-out kan väljas oberoende av de andra stiften. Exempelfrekvensen vid infångningsstiftet kan vara (i prioritetsordning) 16 kHz, 48 kHz, 44,1 kHz eller 8 kHz. (Prioritetsordningen baseras på bearbetningstid och ljudkvalitet.) Exempelfrekvensen vid ut renderningsstiftet kan vara (i prioritetsordning) 16 kHz, 48 kHz eller 44,1 kHz. Observera att återgivningsutgången inte stöder en samplingsfrekvens på 8 kHz.
Noderna AEC och NS (se bild i Exponera Hardware-Accelerated Capture Effects) kan endast hantera monofoniska strömmar. Om inspelningsströmmen har flera kanaler (till exempel stereo med två kanaler), ignoreras alla andra kanaler än den första. Endast monofoniska strömmar kan bearbetas av återgivningssidan.
I Windows XP SP1, Windows Server 2003 och senare finns inte den här begränsningen. AEC-systemfiltret hanterar korrekt skillnader mellan klockorna för infångnings- och renderingsströmmarna, och separata enheter kan användas för infångning och rendering.
När AEC-systemfiltret används inaktiverar SysAudio-systemdrivrutinen maskinvaruacceleration för blandning, samplingsfrekvensomvandling, 3D-rymdliggörande och så vidare. All blandning av strömmar görs i programvaruemulering av KMixer-systemdrivrutinen. Den här begränsningen är nödvändig för att säkerställa att allt ljud som spelas upp av renderingsenheten kan avbrytas från avbildningsströmmen av AEC-systemfiltret.
All signalförbearbetning som utförs före AEC- eller NS-noden på insamlingens sida av grafen eller efter AEC- eller NS-noden på återgivningssidan måste vara linjär tidsinvariant. Om icke-linjär eller tidsberoende signalbearbetning utförs på någon av dessa platser hindrar det AEC från att eliminera ekot i inspelningssignalen.
AEC-filtrering avbryter endast ekon som kommer från de AEC-filtrerade kanalerna på datorn. Ljud som matas ut via kanaler som inte passerar via AEC får ingen ekokompensation. Ekon i en icke-AEC-ljudkanal är funktionellt likvärdiga med ekon i ljudet som spelas upp på en radio på kontoret bredvid datorn. AEC har inget sätt att avbryta (och ingen effekt på) ekon från en radio eller en icke-AEC-kanal.
Ovanstående krav gäller för alla kernel-streaming ljudfiltergrafer som innehåller inspelningseffekter som implementeras i Aec.sys. Dessa begränsningar återspeglar grundläggande antaganden i utformningen och implementeringen av AEC-systemfiltret. Begränsningarna för strömformat kan ändras i framtida versioner av Windows.
Alla produktdesign som använder AEC-systemfiltret bör ta hänsyn till de föregående begränsningarna. Följande frågor och svar visar hur dessa begränsningar kan påverka AEC-filtreringsbeteendet:
F: Jag har skapat en DirectSound-buffert för stereorendering, men båda kanalerna låter likadana när jag använder AEC. Varför är det här?
S: AEC fungerar bara på monoströmmar, så KMixer blandar stereoströmmen tillbaka till mono för att uppfylla denna begränsning.
F: Varför låter mitt 44-kHz, 16-bitars ljud som 16 kHz när jag använder AEC?
S: Eftersom AEC-systemfiltret utför all intern bearbetning på 16 kHz.
F: Varför kan jag inte få en maskinvaruaccelererad DirectSound-buffert med AEC?
S: Eftersom SysAudio inaktiverar maskinvaruaccelererad blandning när AEC är aktiverat.
F: Kommer AEC-systemfiltret att fungera med mitt gamla Sound Blaster 16-kort?
S: Ja. Även om Sound Blaster16-kortet inte kan hantera 16-bitars renderings- och avbildningsströmmar samtidigt kan det hantera en 8-bitars renderingsström och en 16-bitars inspelningsström, vilket är en kombination som AEC-systemfiltrets återgivnings- och infångningsstift stöder. Nya ljudkort bör utformas för att stödja bitdjup på minst 16 bitar för både rendering och avbildning.
Sammanfattning av dataformat för AEC-pins
Ett DirectSound-program som aktiverar AEC-systemfiltret kan välja för sin DirectSound-buffertar valfri exempelfrekvens eller exempelstorlek som KMixer stöder. KMixer konverterar data från programmets återgivningsbuffert till ett 16 kHz mono 16-bitarsformat innan de går in i AEC-systemfiltret. På samma sätt kan KMixer konvertera data som är avsedda för ett DirectSoundCapture-programs insamlingsbuffert till ett 16 kHz mono 16-bitarsformat när det har lämnat AEC-systemfiltret. Men för att både minimera mängden bearbetning som görs i grafen och uppnå högsta ljudkvalitet bör programmen använda ett 16 kHz mono 16-bitarsformat för både renderings- och avbildningsbuffertar.
Om du vill att ljudmaskinvaran ska fungera med AEC-systemfiltret måste pin-koden för maskinvaruåtergivning ha stöd för minst en av de exempelfrekvenser som stöds av pin-koden för AEC-återgivning, och pin-koden för maskinvaruinsamling måste ha stöd för en av de exempelfrekvenser som stöds av pin-koden för AEC-infångning. För att uppnå bästa AEC-prestanda bör din maskinvara stödja en 16 kHz samplingsfrekvens utöver alla högre frekvenser den stöder. Genom att stödja 16 kHz-hastigheten minskar maskinvaran mängden bearbetning som AEC-systemfiltret måste göra genom att eliminera behovet av att göra exempelfrekvenskonvertering.
AEC-systemfiltrets återgivningsstift ansluter till KMixer-utdatastiftet. KMixer utför den nödvändiga konverteringen av sina indataströmmar till det format som renderingstiften kräver. Renderingspinnen stöder endast två dataformat:
Ett 16 kHz mono PCM-format med en exempelstorlek på 16 bitar
Ett 16 kHz mono PCM-format med en exempelstorlek på 8 bitar
Pin-koden för insamling stöder endast ett format:
- Ett 16 kHz mono PCM-format med en exempelstorlek på 16 bitar
Om DirectSoundCapture-programmets buffertformat är 16 kHz mono 16-bitars PCM kan AEC-insamlingsstiftet kringgå KMixer och ansluta direkt till DSound.DLL (se föregående bild). Annars ansluter AEC capture-out-stiftet till KMixer, som konverterar 16-kHz mono 16-bitars PCM-strömmen från stiftet till vilket format programmets capture-buffert använder.
Utgångsstiftet för AEC-rendering kan hantera något av följande format:
16 kHz 16-bitars PCM med två kanaler (stereo)
16 kHz 8-bitars PCM med två kanaler
48 kHz 16-bitars PCM med två kanaler
48 kHz 8-bitars PCM med två kanaler
44,1 kHz 16-bitars PCM med två kanaler
44,1 kHz 8-bitars PCM med två kanaler
Render-out-pinnen genererar ett stereoflöde genom att kopiera den enda kanalen från AEC-noden till båda kanalerna i utdataflödet.
Infångningsstiftet kan hantera något av följande format:
16 kHz 16-bitars PCM med valfritt antal kanaler
48 kHz 16-bitars PCM med valfritt antal kanaler
44,1 kHz 16-bitars PCM med valfritt antal kanaler
8 kHz 16-bitars PCM med valfritt antal kanaler
Infångningsstiftet använder bara den första kanalen och ignorerar (och tar bort) de andra.
Alla pins för AEC-systemfiltret använder parametervärdena för dataformat som visas i följande tabell.
| KSDATARANGE-medlem | Parametervärde |
|---|---|
MajorFormat |
KSDATAFORMAT_TYPE_AUDIO |
underformat |
KSDATAFORMAT_SUBTYPE_PCM |
Specifikation |
KSDATAFORMAT_SPECIFIER_WAVEFORMATEX |
Mer information om medlemmarna MajorFormat, SubFormat och Specifier finns i KSDATARANGE. Ett exempel på en KSDATARANGE_AUDIO dataområdesbeskrivning som använder dessa tre parametervärden finns i PCM Stream Data Range.