XAudio2 Geri Çağırmalar
XAudio2, istemci tarafından sağlanan işlevleri çağırarak ses işleme iş parçacığında gerçekleşen belirli olayları zaman uyumsuz olarak bildirebilir. Bu geri çağırmalar genel olabilir veya belirli bir kaynak sese özgü olabilir. Genel altyapı geri çağırmalarını almak için istemcinin XAudio2'yi başlatırken IXAudio2EngineCallback arabirimini uygulayan bir sınıfın örneğini sağlaması gerekir. Kaynak sesli geri çağırmaları almak için istemcinin, kaynak sesler oluştururken IXAudio2VoiceCallback arabirimini uygulayan bir sınıfın örneğini sağlaması gerekir. Daha fazla ayrıntı için bkz. IXAudio2EngineCallback ve IXAudio2VoiceCallback.
Seste kesintilere neden olmaması için geri çağırmaları dikkatli bir şekilde uygulamanız gerekir. Bir geri arama çalıştığında, XAudio2 herhangi bir ses oluşturamaz. Birkaç milisaniyeden uzun gecikmeler ses sorununa neden olabilir. Bu özelliğin gecikmeleri hata ayıklayıcı çıkışı da oluşturur. Bu, olası performans sorunlarını gösterir. Geri çağırma işlevleri en azından aşağıdakileri yapmamalıdır:
- Sabit diske veya diğer kalıcı depolama alanına erişme
- Pahalı veya engelleyici API çağrıları yapma
- İstemci kodunun diğer bölümleriyle eşitleme
- Önemli CPU kullanımı gerektir
İstemci tasarımı, daha önce listelenenler gibi eylemleri tetikleyen bir geri çağırma gerektiriyorsa, geri çağırmanın işi yapması için farklı bir istemci iş parçacığına işaret etmesi gerekir. Bunu basit bir SetEvent mekanizmasıyla veya başka bir iş parçacığı tarafından kullanılan engelleyici olmayan bir komut kuyruğu gibi daha karmaşık mekanizmalarla yapabilirsiniz.
IXAudio2EngineCallback
IXAudio2EngineCallback sınıfı, XAudio2 altyapısında belirli olaylar gerçekleştiğinde istemciyi bilgilendiren yöntemler içerir. Bu yöntemler XAudio2 istemcisi tarafından uygulanmalıdır. XAudio2, IXAudio2::RegisterForCallbacks yöntemi kullanılarak istemci tarafından sağlanan arabirim işaretçisi aracılığıyla bu yöntemleri çağırır. Tüm bu yöntemler HRESULTyerine void döndürür.
IXAudio2VoiceCallback
IXAudio2VoiceCallback sınıfı, belirli bir XAudio2 kaynak sesinde belirli olaylar gerçekleştiğinde istemciyi bilgilendiren yöntemler içerir. XAudio2, IXAudio2::CreateSourceVoiceiçinde istemci tarafından sağlanan arabirim işaretçisi aracılığıyla bu yöntemleri çağırır. IXAudio2EngineCallbackgibi, bu yöntemler XAudio2 istemcisi tarafından uygulanmalıdır ve HRESULTyerine geçersiz döndürmelidir.
Daha önce belirtildiği gibi, bu geri çağırmaların istemci tarafından sağlanan uygulamalarının, tercihen bir milisaniye içinde mümkün olan en kısa sürede döndürülmesi çok önemlidir. Geri çağırmalar ses işleme iş parçacığında yürütülür ve geri çağırma dönene kadar tüm işlemler kesilir. Geri aramada gecikmeler kolayca ses sorununa neden olabilir.
İlgili konular