Megosztás a következőn keresztül:


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 következő metódusok csak az IAudioClient hívása után hívhatók meg::Inicializálás:

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:

  • IAudioRenderClient

    Renderelési adatokat ír egy hangleképező végpontpufferbe.

  • IAudioCaptureClient

    Beolvassa a rögzített adatokat egy hangrögzítési végpont pufferéből.

  • IAudioSessionControl

    Kommunikál a hangmunkamenet-kezelővel a streamhez társított hangkonfigurálás konfigurálásához és kezeléséhez.

  • ISimpleAudioVolume

    A streamhez társított hang munkamenet hangerőszintjének szabályozása.

  • IChannelAudioVolume

    Szabályozza a streamhez társított hang munkamenet egyes csatornáinak hangerőszintjét.

  • IAudioClock

    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:

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:

programozási útmutató