Windows äldre ljudkomponenter

Den här artikeln beskriver ljud-API:er och komponenter i Microsoft Windows som nu är föråldrade eller utfasade.

Multimedia Extensions (MME)

MME API eller Windows Multimedia API (även känd som WinMM ) var det första universella och standardiserade Windows audio API. Wave-ljudshändelser som spelas i Windows (upp till Windows XP ) och MIDI I/O använder MME. Enheterna som listas i multimedia/ljud och ljudkontrollpanelens applet representerar MME API för ljudkortsdrivrutinen .

Multimedia Extensions (WaveIn/WaveOut-gränssnitt) släpptes hösten 1991 för att stödja ljudkort , såväl som CD-ROM -enheter, som då blev alltmer tillgängliga. Multimediatilläggen släpptes till OEM-tillverkare (Original Equipment Manufacturers) , främst tillverkare av CD-ROM-enheter och ljudkort, och lade till grundläggande multimediastöd för ljudingång och ljudutgång och en CD -ljudspelareapplikation till Windows 3.0. Multimedia Extensions nya funktioner var inte tillgängliga i Windows 3.0 real-läge, bara i standard och 386 förbättrat läge. Windows 3.1x skulle senare införliva många av dess funktioner. Microsoft utvecklade ljudkortspecifikationen för Windows Sound System för att komplettera dessa tillägg.

I Windows 95/ME saknar MME mixning av flera ljudströmmar under uppspelning och enhetsdelning, så endast en ljudström kan renderas åt gången. Men vissa ljudkortsdrivrutiner kan emulera mer än en MME-enhet (eller stödja mer än en enda strömmande klient) så det skulle kunna fungera med MME också. Från och med Windows 2000 stöder MME delning av uppspelningsenheter (multiklientåtkomst) och kan blanda uppspelningsströmmar. Från och med Windows XP började MME stödja delning av inspelningsenheter.

I tidigare Windows-version stödde MME upp till två kanaler för inspelning, 16-bitars ljudbitdjup och samplingshastigheter på upp till 44100 samplingar per sekund med allt ljud som mixades och samplades till 44100 sampel per sekund. [ citat behövs ] Från och med Windows 2000 stöder MME upp till 384 000 sampel per sekund, upp till 8 kanaler och upp till 32 bitar per sampel.

Före Windows XP är antalet MME/WinMM-enhetsgränssnitt (waveIn, waveOut, midiIn, midiOut, mixer och aux) begränsat till 10. Denna gräns höjs från 10 till 32 i Windows XP.

Enhetsnamnslängden i MME är begränsad till 31 tecken, så långa enhetsnamn kan endast visas delvis.

frågor

Ett fel i MME WaveIn/WaveOut-emuleringen introducerades i Windows Vista: om samplingshastighetskonvertering behövs, introduceras ibland hörbart brus, till exempel när man spelar upp ljud i en webbläsare som använder dessa API:er. Detta beror på att den interna resamplern, som inte längre är konfigurerbar, förinställer en snabb heltalsbaserad linjär interpolation (t.ex. ett nytt sampel tas som en exakt dubblett [ tveksam ] av det närmaste samplet istället för en varierande del av de två närmaste. samples), vilket var det konverteringsläge av lägsta kvalitet som kunde ställas in i tidigare versioner av Windows. Omsamplaren kan ställas in på ett högkvalitativt läge via en snabbkorrigering endast för Windows 7 och Windows Server 2008.

Audio Compression Manager

Audio Compression Manager (ACM) är ett Windows- multimediaramverk som hanterar ljudkodekar (kompressor/dekomprimerare). ACM kan också betraktas som en API-specifikation. En codec måste överensstämma med den implicita ACM-specifikationen för att fungera med Windows Multimedia. ACM-filer kan kännas igen av deras filnamnstillägg .acm . ACM-filer använder också RIFF- kompatibla filtyper som WAV eller AVI som en "wrapper" för att lagra ljuddata kodad av någon ljudcodec som stöds av ACM.

ACM anses vara ett föråldrat ramverk/API och Microsoft uppmuntrar nu användningen av åtminstone DirectShow . Men till skillnad från ACM och den relaterade videokomprimeringshanteraren (VCM) ger DirectShow inga sätt att koda filer för slutanvändare utan kräver att utvecklare skapar grafer från början till slut för att koda innehåll . ACM stöder inte heller VBR- ljudströmmar; Därför kan nyare codecs som MPEG-4 AAC , Ogg Vorbis , FLAC etc. inte stödjas genom ACM om man använder variabla bithastigheter. Även om många källor säger motsatsen, fungerar Ogg Vorbis bra med ACM, t.ex. när den är inbäddad i en RIFF-kompatibel fil (som en WAV- eller AVI-fil som nämnts tidigare), förutsatt att Ogg Vorbis-strömmen är kodad med en konstant bithastighet.

Windows levereras med ett antal ACM-codecs förinstallerade. För en lista över dessa codecs, se WAV-filen § Jämförelse av kodningsscheman .

ACM-codecs identifieras av en två-byte-kod (TwoCC) tilldelad av Microsoft.

DirectX ljudbibliotek

KMixer

KMixer är drivrutinen för Kernel Audio Mixer , en del av WDM Audio i Windows 98 till Windows XP som hanterar blandningen av flera ljudbuffertar till en utgång.

Uppgifterna som utförs av KMixer.sys:

  • Mixa flera PCM- ljudströmmar
  • Format, bitdjup (även känd som ordlängd) och samplingshastighetsomvandling
  • Högtalarkonfiguration och kanalmappning

I Windows 98, Windows 2000 och Windows Me är den maximala samplingsfrekvensen för KMixer 100 kHz. I Windows XP SP1 och senare stöder KMixer-ljudsamplingsfrekvensen maximalt 200 kHz.

frågor

KMixer designades för att hjälpa applikationerna genom att befria dem från behovet av att mixa ljudströmmar, särskilt på low-end ljudkort som inte stödde flera ljudströmmar. Det införde dock några betydande problem.

För det första är latensen för KMixer runt 30 ms och den kan inte reduceras, eftersom den här komponenten sitter precis ovanför portklassens ljuddrivrutin, så varje ljudström, inklusive de som utfärdas av DirectSound (förutom i fall av hårdvarublandning ) och WinMM , komma genom kärnmixern. Om ljudmaskinvaran stöder hårdvarublandning (även känd som hårdvarubuffring eller DirectSound hårdvaruacceleration), buffrar DirectSound direkt till renderingsenheten. Således, om DirectSound-strömmar använder hårdvarublandning , förbigås KMixer.

I tidigare utgåvor som den ursprungliga utgåvan av Windows 98, försökte KMixer blanda alla dataformat som passerade genom det, även de som inte stöddes. Det orsakade olika problem med mediaspelare som försökte skicka AC3 - kodade surroundljudströmmar genom S/PDIF- utgången på ljudkortet till en extern hemmabiomottagare . Detta korrigerades med Windows Me och tillhandahålls som en snabbkorrigering för Windows 98 Second Edition och Windows 2000 SP2. Från och med Windows Me stöder API:erna för waveOut, DirectSound och DirectShow icke-PCM-format som AC-3 eller WMA över S/PDIF och icke-PCM-data går direkt till klassdrivrutinen istället för att gå via KMixer.

Ett nytt kärnläges-API, Direct Kernel Streaming , introducerades också i Windows 98 för att kringgå KMixer och undvika problem i samband med den.

KMixer ändrar inte ljudet i de flesta fall. Det finns också många sätt att kringgå KMixer utan att behöva en extra plugin för att komma åt DirectSound, ASIO , Direct Kernel Streaming eller WASAPI . I Windows XP, till exempel, är användningen av DirectSound (som Winamp använder som standard) med en hårdvarumixer ett sätt att kringgå KMixer.

KMixer togs bort i Windows Vista . Den ersätts av användarläget WASAPI (Windows Audio Session API) Audio Engine som är en del av den förnyade ljudarkitekturen . Ljudmotorn kan arbeta i delat läge eller exklusivt läge . I delat läge sker blandning fortfarande. Förmixat PCM-ljud skickas till drivrutinen i ett enda format (när det gäller samplingshastighet, bitdjup och kanalantal) som kan konfigureras från kontrollpanelen för ljud. WASAPI Exclusive-läge kringgår mixern, liksom användning av tredjeparts ljud-API:er som OpenAL eller ASIO , som fortfarande har direkt tillgång till hårdvaran.

Kernel Streaming

Kernel Streaming eller Direct Kernel Streaming (Direct KS) är en teknik som stöder kernel-mode- behandling av strömmad data. Det möjliggör effektiv streaming i realtid för multimediaenheter som ljudkort och TV-tunerkort . Kärnströmning gör att en enhetsdrivrutin kan skapa DirectShow -liknande filter och stift i kärnläge , vilket ger tillgång till hårdvara, kommunikation med lägre latens och fortfarande användas i en DirectShow- filtergraf .

Kärnströmning introducerades i Windows 98. När ljudkortet använder en anpassad drivrutin för användning med den systemlevererade portklassdrivrutinen PortCls.sys eller implementerar en minidrivrutin för användning med drivrutinen för streamingklassen, kan applikationer kringgå KMixer helt och använda kärnans strömningsgränssnitt istället för att direkt interagera med ljuddrivrutinen och minska latensen. Windows 98 innehåller den första drivrutinen för kärnströmning, Stream.sys. I Windows XP introducerade Microsoft en annan förbättrad drivrutin för kärnströmning, AVStream.

Musikspelare som JRiver Media Center , JPLAY, foobar2000 , Audirvana Studio och Winamp stödjer kärnströmning . Jämfört med den vanliga "WaveOut-metoden" i Microsoft Windows kräver kärnströmning mindre CPU- tid. Detta sker på bekostnad av att kringgå KMixer och Windows volymkontroll. Kärnströmning tillåter inte heller enhetsdelning om inte ljuddrivrutinen i kärnläge stöder flera klienter.

Före Windows Vista erbjöd Kernel Streaming endast ett enda klient-till-drivrutin- kommunikationsprotokoll med buffertkedja, som används i MME. Med start från Vista introduceras nytt realtidsljud ( RT Audio , inte att förväxla med RTAudio codec ), baserat på en enda cirkulär buffert . RT Audio-protokollet implementeras av WaveRT-portdrivrutinen i portcls.sys. I Vista och senare versioner stöder Audio Subsystem båda protokollen så att det kan interagera med både äldre och nya ljuddrivrutiner. Men de flesta ljudapplikationer som använder KS stöder bara ett enda protokoll (legacy i de flesta fall) så att de bara kan kommunicera med en enda typ av ljuddrivrutiner.

Se även

externa länkar

Trasiga länkar