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


XAudio2 visszahívások

Az XAudio2 meghívhatja az ügyfél által biztosított függvényeket, hogy aszinkron módon értesítsék a hangfeldolgozási szál bizonyos eseményeiről. Ezek a visszahívások lehetnek globálisak vagy adott forráshangra jellemzőek. A globális motorvisszahívások fogadásához az ügyfélnek meg kell adnia a IXAudio2EngineCallback felületet implementáló osztály egy példányát az XAudio2 inicializálásakor. A forráshangvisszahívások fogadásához az ügyfélnek meg kell adnia a IXAudio2VoiceCallback felületet implementáló osztály egy példányát a forráshangok létrehozásakor. További információ: IXAudio2EngineCallback és IXAudio2VoiceCallback.

Körültekintően kell végrehajtania a visszahívásokat, hogy ne okozhassa a hangtöréseket. Amikor visszahívás fut, az XAudio2 nem tud hangot létrehozni. Néhány ezredmásodpercnél hosszabb késés hangproblémát okozhat. Az ilyen jellegű késések hibakereső kimenetet is létrehoznak. Ez potenciális teljesítményproblémákat jelez. Legalább a visszahívási függvények nem végezhetik el a következőket:

  • Hozzáférés a merevlemezhez vagy más állandó tárolóhoz
  • Költséges vagy letiltott API-hívások
  • Szinkronizálás az ügyfélkód más részeivel
  • Jelentős processzorhasználat megkövetelése

Ha az ügyféltervezéshez visszahívás szükséges a korábban felsorolt műveletekhez hasonló műveletek aktiválásához, a visszahívásnak egy másik ügyfélszálat kell jeleznie a munka elvégzéséhez. Ezt egy egyszerű SetEvent mechanizmussal vagy kifinomultabb mechanizmusokkal teheti meg, például egy másik szál által használt letiltási parancssorsal.

IXAudio2EngineCallback

Az IXAudio2EngineCallback osztály olyan metódusokat tartalmaz, amelyek értesítik az ügyfelet, ha bizonyos események történnek az XAudio2 motorban. Ezeket a módszereket az XAudio2-ügyfélnek kell implementálnia. Az XAudio2 az ügyfél által a IXAudio2::RegisterForCallbacks metódussal megadott felületmutatóval hívja meg ezeket a metódusokat. Ezek a metódusok üresad vissza , nem pedig HRESULT.

IXAudio2VoiceCallback

Az IXAudio2VoiceCallback osztály olyan metódusokat tartalmaz, amelyek értesítik az ügyfelet bizonyos eseményekről egy adott XAudio2-forráshangban. Az XAudio2 ezeket a metódusokat az ügyfél által IXAudio2::CreateSourceVoice. Az IXAudio2EngineCallback-hez hasonlóan ezeket a metódusokat is az XAudio2-ügyfélnek kell implementálnia, és üres kell visszaadnia HRESULThelyett.

Mint korábban említettük, kulcsfontosságú, hogy a visszahívások ügyfél által biztosított implementációi a lehető leggyorsabban, lehetőleg ezredmásodpercen belül térjenek vissza. A visszahívások végrehajtása a hangfeldolgozási szálon történik, és az összes feldolgozás megszakad, amíg a visszahívás vissza nem tér. A visszahívások késleltetése könnyen hangproblémát okozhat.

Visszahívások

XAudio2 programozási útmutató

Útmutató: A Forrás hangvisszahívások használata

Útmutató: A motorvisszahívások használata

Hang streamelése lemezről