Sdílet prostřednictvím


zpracování zvuku Hardware-Offloaded

Zpracování zvuku s přesměrováním zatížení hardwaru umožňuje provádět hlavní úlohy zpracování zvuku mimo hlavní procesor počítače.

Zpracování zvuku může být velmi výpočetně náročné. Takže v mnoha scénářích může být užitečné umožnit vyhrazenému procesoru, aby se postaral o úlohy zpracování, jako je například kombinování a použití efektů.

Když implementujete ovladač pro offloadovaný zvuk, vyvíjíte ovladač, který dokáže zpracovávat offloadované streamy zvuku a zpřístupnit tuto schopnost zvukovému systému Windows.

Následující témata v této části popisují vývoj ovladačů, dopad na aplikaci a další problémy, o kterých byste měli vědět při vývoji zvukového ovladače pro zvukový adaptér, který implementuje hardwarový zvukový modul pro zpracování přenesených zvukových datových proudů.

Implementace hardwaru přetěžovaného zvukového ovladače

Pomocná rozhraní pro zpracování zvuku s přesměrováním zpracování

Hlášení chyb pro přenesený zvuk

Informace o přesměrování zpracování objektů APO najdete v tématu Efekty APO s přesměrováním zatížení hardwaru.

Přehled architektury zpracování zvuku Hardware-Offloaded

Softwarový zvukový modul

Následující diagram znázorňuje softwarový zvukový stroj Windows.

Diagram znázorňující architekturu ovladače zvuku s aplikací volající do efektů SFX, MFX a EFX, které se připojují k ovladačům a zvukovému hardwaru

Zvukové streamy přicházejí do softwarového zvukového engine z vrstvy rozhraní API zvukové relace Windows (WASAPI) a případně prostřednictvím rozhraní API vyšší úrovně, jako je Media Foundation. V softwarovém zvukovém engine mohou být efekty streamu (SFX) aplikovány na úrovni jednotlivých proudů, ještě předtím, než jsou tyto proudy směšovány, poté procházejí všemi dostupnými efekty koncových bodů (EFX) a odesílají se do vykreslovacího hardwaru a reproduktorů.

Hardwarový zvukový modul

Hardwarový zvukový modul je implementován v zvukovém adaptéru a z velké části zrcadlí funkce softwarového zvukového stroje. I když Systém Windows podporuje zpracování zvuku se snižováním zátěže hardwaru, je ovladač zvuku pro daný zvukový adaptér zodpovědný za zveřejnění základních funkcí zvukového hardwaru pomocí topologie znázorněné v následujícím diagramu.

Hardwarový zvukový subsystém musí přijmout jeden datový proud hostitelského procesu a až n odlehčených datových proudů. Tyto offloadované streamy jsou přímo směrovány z aplikační vrstvy ke zpracování v hardwaru. Jinými slovy, odložené streamy nebudou předány prostřednictvím softwarového audio systému. Diagram ukazuje implementaci, která byla navržena pro zpracování až tří offloadovaných streamů. Stream hostitelského procesu je konečným výstupem softwarového mixéru všech datových proudů, které byly zpracovány v softwarovém zvukovém modulu. Každý hardwarový zvukový modul musí obsahovat také hardwarový mixér.

Aby byl zachována parita se softwarovým zvukovým modulem a rozhraním WASAPI, je nutné, aby hardwarový zvukový modul poskytoval konečný zvukový výstupní datový proud zpět do zvukového zásobníku ve formě streamu zpětné smyčky. To je zvlášť důležité pro aplikace a scénáře, které spoléhají na Acoustic Echo Cancellation, což vyžaduje znalost konečného výstupního streamu, aby se zrušily ozvěny a zabránily zpětné vazbě.

Aby bylo možné implementovat cestu pro stream zpětné smyčky, je ovladač zvuku zodpovědný za poskytnutí pinu zpětné smyčky. Tento pin vrátí zvuková data z konečného výstupu zvukového stroje, pokud jsou data kódována do formátu PCM. Jinak se vrátí výsledek následného míchání (ale před kódováním). To znamená, že v případě zvukových dat, která jsou zpracována pomocí hardwarového EFX kódujícího do jiného formátu než PCM, je stream zpětné smyčky převzat přímo po hardwarovém mixéru, a to před fází EFX v hardwarovém audio procesoru. Informace o topologii filtru KS, která představuje hardwarový zvukový modul, naleznete v tématu Implementace ovladače zvuku se snižováním zatížení hardwaru.

Integrovaná zvuková architektura

Následující diagram znázorňuje přehled výsledné architektury, když hardwarový zvukový modul pracuje se softwarovým zvukovým modulem Windows.

Diagram integrovaných softwarových a hardwarových zvukových modulů, kde aplikace volá efekty SFX, MFX a EFX, čímž se připojuje k ovladačům, zvukovému hardwaru a zpětné smyčce vedoucí zpět na vrstvu WASAPI.

Ve scénáři, kdy ovladač zvuku naznačil jeho podporu offload zpracování zvuku, budou první n (v tomto případě tři) datové proudy, které jsou inicializovány, směrovány přímo z vrstvy WASAPI do hardwarového zvukového stroje, aniž by procházely softwarovým zvukovým enginem. Všechny nové zvukové streamy, které překračují počet n podporovaný hardwarovým zvukovým motorem, budou směrovány prostřednictvím softwarového zvukového motoru pro zpracování. Výsledný datový proud ze softwarového zvukového modulu se pak odešle do hardwarového zvukového modulu jako stream hostitelského procesu. Stream hostitelského procesu se směšuje s prvními n datovými proudy, použije se zpracování EFX a výsledný datový proud se pak odešle do reproduktorů.

Topologie filtru KS

V operačních systémech Windows 8 a novějších byl k dispozici podpora hardwarového zvukového modulu pro zpracování zvukových proudů na palubě. Při vývoji takového zvukového adaptéru musí přidružený zvukový ovladač zpřístupnit tento fakt zvukovému systému uživatelského režimu určitým způsobem, aby mohl zvukový systém zjišťovat, používat a řádně vystavit funkce tohoto adaptéru a jeho ovladače.

Aby bylo možné, aby zvukové ovladače zpřístupnily hardwarové možnosti těchto nových zvukových adaptérů, systém Windows 8 zavedl topologii filtru KS, kterou musí ovladač používat:

Diagram topologie filtru KS s vstupním pinem hostitelského procesu, vstupním pinem přesměrovaného zvukového vstupu a výstupním pinem smyčky. Zvukové zpracování použité na vstupní piny hostitelského procesu a přesměrovaného zvukového vstupu, cesta smyčky z konečné fáze zpracování a dva streamy přes DAC z topologie filtru KS.

Jak je znázorněno na předchozím obrázku, topologie filtru KS představuje datové cesty přes hardware a také ukazuje funkce, které jsou na těchto cestách k dispozici. V případě zvukového adaptéru, který může zpracovávat odložené zpracování zvuku, jsou na KS-filtru následující vstupy a výstupy (označované jako piny):

  • Jeden pin kód hostitelského procesu Představuje vstup do filtru KS ze softwarového zvukového modulu.

  • Jeden kolík zpětné smyčky. Toto představuje výstup z hardwarového zvukového enginu do vrstvy rozhraní API zvukové relace systému Windows (WASAPI).

  • Počet kolíků pro přesměrování zpracování zvuku. Ačkoli obrázek ukazuje pouze jeden kolík tohoto typu, nezávislý prodejce hardwaru (IHV) má volnost implementovat libovolný počet (n) kolíků.

Skutečnou službou v zvukovém systému uživatelského režimu, který "vede" ke zjišťování zvukového adaptéru a jeho ovladače, je AudioEndpointBuilder. Služba AudioEndpointBuilder monitoruje třídu KSCATEGORY_AUDIO pro příchody a odebrání rozhraní zařízení. Když ovladač zvukového zařízení zaregistruje novou instanci třídy rozhraní KSCATEGORY_AUDIO zařízení, je vyvoláno oznámení o příchodu rozhraní zařízení. Služba AudioEndpointBuilder detekuje oznámení o doručení rozhraní zařízení a používá algoritmus k prozkoumání topologie zvukových zařízení v systému, aby mohl provést odpovídající akci.

Při vývoji zvukového ovladače pro podporu adaptéru, který dokáže zpracovávat offloadovaný zvuk, musí ovladač použít koncový bod zvuku KSNODETYPE_AUDIO_ENGINE k zpřístupnění schopností hardwarového zvukového modulu. Další informace o procesu zjišťování zvukového koncového bodu najdete v tématu Algoritmus tvůrce zvukových koncových bodů.

Důležité informace o uživatelském rozhraní

Vytvořili jste ovladač zvuku pro řízení základních hardwarových schopností zvukového adaptéru, který dokáže zpracovávat zvuk přenášený mimo procesor. To znamená, že ovladač má nejlepší znalosti o tom, jak ovládat funkce adaptéru. Proto musíte vytvořit uživatelské rozhraní, které koncovému uživateli zpřístupní funkce adaptéru ve formě možností, které můžou vybrat, povolit nebo zakázat.

Pokud už ale máte uživatelské rozhraní, které se používá k řízení objektů zpracování zvuku (APO), které jste vyvinuli, můžete toto uživatelské rozhraní rozšířit tak, aby fungovalo s novým zvukovým adaptérem. V takovém případě vaše rozšíření uživatelského rozhraní poskytují softwarové řízení pro apO a hardwarové řízení adaptéru.

Dopad aplikace

Funkce popsané pro tento nový typ zvukového adaptéru a jeho přidruženého ovladače mohou být používány aplikacemi UWP prostřednictvím WASAPI, Media Foundation, Media Engine nebo HTML5 <audio> značek. Všimněte si, že wave a DSound nelze použít, protože nejsou k dispozici pro aplikace pro UPW. Upozorňujeme také, že aplikace pro stolní počítače nemohou využívat schopnosti hardwarového přesměrování zvuku zvukových adaptérů, které podporují zvuk zpracovaný s využitím hardwaru. Tyto aplikace mohou stále vykreslovat zvuk, ale pouze prostřednictvím hostitelského pinu, který využívá softwarový zvukový engine.

Pokud aplikace pro UWP streamuje mediální obsah a používá Media Foundation, Media Engine nebo značky <audio> HTML 5, aplikace je automaticky zapojena do hardware offloadingu, pokud je pro stream nastavena správná kategorie zvuku. Výslovný souhlas s přesměrováním zátěže hardwaru se provádí na základě datového proudu.

Aplikace UPW, které používají komunikaci WASAPI nebo streamované komunikace, musí explicitně vyjádřit výslovný souhlas s přesměrováním zátěže hardwaru.

Implementace hardwaru přetěžovaného zvukového ovladače

Objekty pro zpracování zvuku systému Windows Audio Processing Objects