DirectSound - DirectSound
DirectSound er en forældet softwarekomponent i Microsoft DirectX- biblioteket til Windows- operativsystemet , erstattet af XAudio2 . Det giver en lav latenstid interface til lydkort drivere skrevet til Windows 95 via Windows XP og kan håndtere den blanding og optagelse af flere lydspor. DirectSound blev oprindeligt skrevet til Microsoft af John Miles .
Udover at levere den væsentlige service til at overføre lyddata til lydkortet, tilbyder DirectSound andre vigtige funktioner såsom optagelse og blanding af lyd, tilføjelse af effekter til lyd (f.eks. Rumklang , ekko eller flange ) ved hjælp af hardwareaccelererede buffere i Windows 95 til XP og positionering af lyde i 3D-rum . DirectSound giver også et middel til at fange lyde fra en mikrofon eller anden indgang og kontrollere optagelseseffekter under lydoptagelse.
Efter mange års udvikling er DirectSound i dag en moden API og leverer mange andre nyttige muligheder, såsom muligheden for at afspille flerkanalslyde i høj opløsning. Mens DirectSound blev designet til at blive brugt af spil, bruges det i dag til at afspille lyd i mange lydapplikationer. DirectShow bruger DirectSounds hardware-lydaccelerationsfunktioner, hvis lydkortets hardware-lydaccelerationsfunktioner findes og udsættes for af lyddriveren.
Funktioner
DirectSound er en bruger-mode API, der giver en grænseflade mellem applikationer og lydkort driver, der gør det muligt applikationer til at producere lyde og afspille musik.
DirectSound blev betragtet som revolutionerende, da det blev introduceret i 1995, da det indeholdt flere samtidige lydstrømme og tillod adskillige applikationer at få adgang til lydkortet samtidigt. Før det blev spiludviklerne forpligtet til at implementere deres egen lydgengivelsesmotor i software.
DirectSound giver samplerate konvertering og lyd blanding ( volumen og pan ) til et ubegrænset antal lydkilder; de praktiske begrænsninger er dog antallet af hardware-lydkilder og ydeevnen for softwaremixere.
DirectSound-arkitekturen har et koncept af "ringbuffer", som kontinuerligt afspilles i en cyklus. Applikationsprogrammereren opretter lydbufferen og spørger derefter kontinuerligt sin tilstand gennem "læsemarkøren" og opdaterer den med "skrivemarkøren". Der er to typer buffere - en "streaming" -buffer, der holder kontinuerlige lyde såsom baggrundsmusik, og en "statisk" buffer, der indeholder korte lyde.
På understøttede lydkort ville DirectSound forsøge at bruge "hardwareaccelererede" buffere, dvs. dem, der enten kan placeres i lokal lydkorthukommelse eller kan fås med lydkortet fra systemhukommelsen. Hvis hardwareacceleration ikke er tilgængelig, vil DirectSound oprette lydbuffere i systemhukommelsen og bruge rent softwareblanding.
Nogle sene " wavetable " lydkort fra DOS-æraen , såsom Sound Blaster AWE32 og Gravis Ultrasound, indeholdt dedikerede DSP'er , som blev lånt fra de digitale musikinstrumenter . Disse kort indeholdt lokal hukommelse, som kunne bruges til at buffere flere lydstrømme og blande dem om bord og dermed aflaste CPU'en og forbedre lydkvaliteten betydeligt. Dette var dog kun muligt i DOS ved direkte programmering af hardwaren, og fuldt udstyret "hardwareacceleration" fra den lokale hukommelse blev aldrig implementeret på disse kort på grund af kompleksiteten af dobbeltbuffering . Senere kort såsom Sound Blaster Live! , Audigy og X-Fi har direkte adgang til systemhukommelsesbufferne.
DirectSound3D
DirectSound3D (DS3D) er en udvidelse til DirectSound, der blev introduceret med DirectX 3 i 1996 med den hensigt at standardisere 3D-lyd i Windows. DirectSound3D tillader softwareudviklere at bruge lyd ved at skrive en gang til en enkelt lyd- API i stedet for at omskrive kode adskillige gange for at arbejde for hver lydkortleverandør.
I DirectX 5 fik DirectSound3D understøttelse af lydkort, der bruger tredjeparts 3D-lydalgoritmer for at fremskynde DirectSound3D korrekt gennem metoder godkendt af Microsoft.
I DirectX 8 blev DirectSound og DirectSound3D (DS3D) officielt fusioneret og fik navnet DirectX Audio , men API kaldes stadig stadig DirectSound.
EAX
EAX er en udvidelse til DirectSound og DirectSound3D, som leverer lydeffektbehandling til hardware-accelererede buffere.
OS-support
Windows 95
I Windows 95, 98 og Me blev DirectSound - mixerkomponenten og lydkortdrivere begge implementeret som en kernetilstand VxD- driver (Dsound.vxd), hvilket gjorde det muligt at få direkte adgang til den primære buffer, der blev brugt af lydhardwaren, og dermed give den lavest mulig latens mellem bruger-mode API og den underliggende hardware, men i nogle tilfælde forårsager ustabilitet og blå skærmfejl.
Windows 98 introducerede WDM Audio og Kernel Audio Mixer- driveren ( KMixer ), som muliggjorde digital blanding, dirigering og behandling af samtidige lydstrømme med en højere kvalitet af prøvehastighedskonvertering samt kernestreaming . Under WDM sender DirectSound data til den softwarebaserede KMixer. Windows 98 2. udgave forbedrede WDM-lydsupport ved at tilføje DirectSound-hardwarebuffering, DirectSound3D-hardwareabstraktion, KMixer-samplingsfrekvenskonvertering (SRC) til capture-streams, multikanals lydstøtte og introduktion af DirectMusic . Hvis lydhardwaren understøtter blanding af hardware (også kendt som hardwarebuffering eller DirectSound-hardwareacceleration), buffres DirectSound direkte til gengivelsesenheden. Hvis DirectSound-streams bruger hardwareblanding, omgåes KMixer og dens forsinkelse. På Windows 98 og Windows Me foretrak WDM-lyddrivere, men kompatibilitet med VxD-drivermodel blev bevaret.
Selvom Windows Driver Model (WDM) var tilgængelig startende med Windows 98, brugte kun få lydkortproducenter det. På grund af intern buffering indførte KMixer betydelig behandlingslatens (30 ms på daværende nuværende systemer). Windows 98 inkluderer også en WDM-streamingklassedriver (Stream.sys) til at imødekomme disse realtidsbehandlingsbehov til multimediedatastrøm. Når lydkortet bruger en brugerdefineret driver til brug med den systemleverede portklassedriver PortCls.sys eller implementerer en mini-driver til brug med streamingklassedriveren, kan applikationer omgå KMixer fuldstændigt og bruge kernestreaming-grænsefladerne i stedet for at reducere latens .
Windows 2000 / XP
I Windows 2000 implementerede Microsoft også den samme WDM-baserede lydstak på Windows NT ved at introducere WDM-lyddrivere og kernemixerkomponenten ( KMixer ). I Windows XP introducerede Microsoft en anden forbedret driver til kernestreamingklassen , AVStream . Begyndende med Windows XP blev hardwareacceleration også tilføjet til behandling af DirectSound-captureeffekter såsom Acoustic Echo Cancellation til USB-mikrofoner, støjdæmpning og array-mikrofonsupport.
Windows Vista / Windows 7
Windows Vista har en fuldstændig omskrevet lydstabel baseret på Universal Audio Architecture . På grund af de arkitektoniske ændringer i den redesignede lydstak findes der ikke en direkte sti fra DirectSound til lyddriverne. DirectSound, DirectMusic og andre API'er såsom MME emuleres som WASAPI Session-forekomster. DirectSound kører i emuleringstilstand på Microsofts softwaremixer. Emulatoren har ikke hardware-abstraktion, så der er ingen hardware DirectSound-acceleration, hvilket betyder, at hardware og software, der er afhængige af DirectSound-acceleration, muligvis har forringet ydeevnen. Det er sandsynligvis, at et formodet præstationshit muligvis ikke kan ses, afhængigt af applikationen og den aktuelle systemhardware. I tilfælde af hardware 3D-lydeffekter, der afspilles ved hjælp af DirectSound3D, kan de ikke afspilles; dette bryder også kompatibilitet med EAX-udvidelser.
Tredjeparts-API'er som ASIO og OpenAL påvirkes ikke af disse arkitektoniske ændringer i Windows Vista, da de bruger IOCtl til at grænseflade direkte med lyddriveren. En løsning til applikationer, der ønsker at drage fordel af hardwareaccelereret 3D-positionslyd af høj kvalitet, er at bruge OpenAL. Dette fungerer dog kun, hvis producenten leverer en OpenAL-driver til deres hardware.
Windows 8
WASAPI - lydstak i Windows 8 introducerer understøttelse til "hardware-aflæsning" af flere lydstrømme til lydkortet til blanding og effektbehandling , ud over den softwarebehandling, der blev introduceret i Vista, men funktionaliteten er kun udsat for Windows Runtime- apps. DirectSounds og DirectMusics hardware-grænseflader til lydkortdrivere implementeres ikke.
Windows CE
Selvom DirectSound-support var tilgængelig i Windows CE- versioner op til 4.2, blev den fjernet fra og med 5.0. Windows CE 6.0 understøtter heller ikke DirectSound, men foretrækker i stedet, at applikationer omskrives til at bruge Waveform Audio API.
Udskiftning implementeringer
Efter fjernelsen af DirectSound i Windows Vista er der kommet et par udskiftningsimplementeringer op.
Sound Blasters Creative ALchemy (2007) leverer hardwareacceleration af DirectSound3D og lydeffekter, såsom EAX. Creative ALchemy opfanger opkald til DirectSound3D og oversætter dem til OpenAL-opkald, der skal behandles af understøttet hardware såsom Sound Blaster X-Fi og Sound Blaster Audigy . Til softwarebaserede kreative lydløsninger bruger ALchemy sin indbyggede 3D-lydmotor uden brug af OpenAL overhovedet.
Realtek , en producent af integrerede HD-lydkodeks , har et produkt svarende til ALchemy kaldet 3D SoundBack. C-Media , en producent af pc - lydkortchipsæt, har også en løsning kaldet Xear3D EX, selvom den i stedet fungerer ved at opfange DirectSound3D-opkald transparent i baggrunden uden brugerindblanding.
IndirectSound er et freeware-bibliotek, der efterligner DirectSound 3D ved hjælp af XAudio2 uden brug af hardwareacceleration.
Se også
- DirectMusic
- OpenAL
- Windows Vista lydarkitektur
- Windows ældre lydkomponenter
- DirectX-plugin
- Værktøj til oprettelse af lyd på tværs af platforme
- XAudio2
Referencer
eksterne links
- MSDN DirectSound
- Hvad er det med 3D-lyd under DirectX
- Lyd i Windows Vista
- Creative ALchemy {på internetarkivet}
- Ordliste: Lydkort på PC Gaming Wiki med noter om DirectSound-erstatninger