Stream Management
A hangvégpont-eszközök számbavétele a rendszerben, és egy megfelelő renderelő vagy rögzítő eszköz azonosítása után a hangügyfelügyelő alkalmazás következő feladata a végponteszközzel való kapcsolat megnyitása és a hangadatok ezen a kapcsolaton keresztüli áramlásának kezelése. WASAPI lehetővé teszi az ügyfelek számára a hangstreamek létrehozását és kezelését.
A WASAPI számos felületet implementál, hogy streamkezelési szolgáltatásokat biztosítson a hang-ügyfelek számára. Az elsődleges felület az IAudioClient. Az ügyfél a hangvégpont-eszköz IAudioClient felületét az IMMDevice::Activate metódus meghívásával (iid paraméterrel REFIID IID_IAudioClient) hívja meg a végpontobjektumon.
Az ügyfél meghívja az IAudioClient felület metódusait a következők végrehajtásához:
- Megtudhatja, hogy a végponteszköz mely hangformátumokat támogatja.
- A végpont pufferméretének lekérése.
- A stream formátumának és késésének lekérése.
- Indítsa el, állítsa le és állítsa alaphelyzetbe a végponteszközön áthaladó adatfolyamot.
- További hangszolgáltatások elérése.
Stream létrehozásához egy ügyfél meghívja az IAudioClient::Initialize metódust. Ezzel a módszerrel az ügyfél megadja a stream adatformátumát, a végpontpuffer méretét, valamint azt, hogy a stream megosztott vagy kizárólagos módban működik-e.
Az IAudioClient felület többi metódusa két csoportba sorolható:
- A IAudioClient::Initializeáltal csak a stream megnyitása után hívható metódusok.
- A inicializálása hívás előtt vagy után bármikor meghívható metódusok.
A következő metódusok csak az IAudioClient hívása után hívhatók meg::Inicializálás:
- IAudioClient::GetBufferSize
- IAudioClient::GetCurrentPadding
- IAudioClient::GetService
- IAudioClient::GetStreamLatency
- IAudioClient::Reset
- IAudioClient::Start
- IAudioClient::Stop
Az alábbi metódusok hívhatók meg az IAudioClient előtt vagy után::Inicializálás hívás:
A további hangügyfél-szolgáltatások eléréséhez az ügyfél meghívja a IAudioClient::GetService metódust. Ezzel a módszerrel az ügyfél a következő felületekre mutató hivatkozásokat szerezhet be:
-
Renderelési adatokat ír egy hangleképező végpontpufferbe.
-
Beolvassa a rögzített adatokat egy hangrögzítési végpont pufferéből.
-
Kommunikál a hangmunkamenet-kezelővel a streamhez társított hangkonfigurálás konfigurálásához és kezeléséhez.
-
A streamhez társított hang munkamenet hangerőszintjének szabályozása.
-
Szabályozza a streamhez társított hang munkamenet egyes csatornáinak hangerőszintjét.
-
Figyeli a streamadatok sebességét és a stream pozícióját.
Emellett a munkamenettel kapcsolatos eseményekről értesítést igénylő WASAPI-ügyfeleknek a következő felületet kell implementálniuk:
-
Az eseményértesítések fogadásához az ügyfél egy mutatót ad át a IAudioSessionEvents felületére az IAudioSessionControl::RegisterAudioSessionNotification metódushoz hívásparaméterként.
Végül előfordulhat, hogy egy ügyfél egy magasabb szintű API-val hoz létre hangstreamet, de hozzáférést is igényel a streamet tartalmazó munkamenet munkamenet-vezérlőihez és hangerő-vezérlőihez. A magasabb szintű API általában nem biztosítja ezt a hozzáférést. Az ügyfél az IAudioSessionManager interfészen keresztül szerezheti be egy adott munkamenet vezérlőit. Ez az interfész lehetővé teszi az ügyfél számára az IAudioSessionControl és ISimpleAudioVolume interfészek beszerzését anélkül, hogy az ügyfélnek a IAudioClient interfészt kellene használnia egy stream létrehozásához és a stream munkamenethez való hozzárendeléséhez. Az ügyfél a IAudioSessionManager interfészt szerzi be egy hangvégpont-eszközhöz a IMMDevice::Activate metódus meghívásával (iid paraméterrel REFIID IID_IAudioSessionManager) a végpontobjektumon.
Az IAudioSessionControl, IAudioSessionEventsés IAudioSessionManager interfészek az Audiopolicy.h fejlécfájlban vannak definiálva. Az összes többi WASAPI-felület az Audioclient.h fejlécfájlban van definiálva.
A következő szakaszok bemutatják, hogyan használható a WASAPI a hangstreamek kezelésére:
- A WASAPI
- Stream- renderelése
- Stream- rögzítése
- visszacsatolási rögzítési
- streamek Exclusive-Mode
- helyreállítás Invalid-Device hiba
- Kommunikációs eszköz használata
- Stream-útválasztási
Kapcsolódó témakörök