RenderSharedEventDriven
Bu örnek uygulama, kullanıcı tarafından belirtilen bir çıkış cihazına ses verilerini işlemek için Çekirdek Ses API'lerini kullanır. Bu örnekte, paylaşılan modda bir işleme istemcisi için olay temelli arabelleğe alma gösterilmektedir. Paylaşılan mod akışı için istemci uç nokta arabelleği ses altyapısıyla paylaşır.
Bu konu aşağıdaki bölümleri içerir.
- Açıklama
- Gereksinimleri
- Örnek İndirme
- Örnek Oluşturma
- Örnek Çalıştırmayı
- İlgili konular
Açıklama
Bu örnekte aşağıdaki özellikler gösterilmektedir.
- multimedya cihaz numaralandırması ve seçimi için MMDevice API .
- Akış yönetimi işlemleri için WASAPI.
Gereksinim -leri
Ürün | Sürüm |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
Örneği İndirme
Bu örnek aşağıdaki konumlarda kullanılabilir.
Yer | Yol/URL |
---|---|
Windows SDK | \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderSharedEventDriven\... |
Örneği Oluşturma
RenderSharedEventDriven örneğini oluşturmak için aşağıdaki adımları kullanın:
- Windows SDK için CMD kabuğunu açın ve RenderSharedEventDriven örnek dizinine geçin.
- WasAPIRenderSharedEventDriven projesini Visual Studio penceresinde açmak için RenderSharedEventDriven dizininde
start WASAPIRenderSharedEventDriven.sln
komutunu çalıştırın. - Pencerenin içinden Hata Ayıklama veya Sürüm çözümü yapılandırmasını seçin, menü çubuğundan Derleme menüsünü seçin ve Derleme seçeneğini belirleyin. VISUAL Studio'yu SDK için CMD kabuğundan açmazsanız, Visual Studio'nın SDK derleme ortamına erişimi olmaz. Bu durumda, WASAPIRenderSharedEventDriven.vcproj proje dosyasında kullanılan MSSdk ortam değişkenini açıkça ayarlamadığınız sürece örnek derlenmez.
Örneği Çalıştırma
Tanıtım uygulamasını başarıyla oluşturursanız, WASAPIRenderSharedEventDriven.exeyürütülebilir bir dosya oluşturulur. Çalıştırmak için, komut penceresine WASAPIRenderSharedEventDriven
yazın ve ardından gerekli veya isteğe bağlı bağımsız değişkenler yazın. Aşağıdaki örnek, varsayılan multimedya cihazında kayıttan yürütme süresini belirterek örneğin nasıl çalıştırılacağını gösterir.
WASAPIRenderSharedEventDriven.exe -d 20 -multimedia
Aşağıdaki tabloda bağımsız değişkenler gösterilmektedir.
Tartışma | Açıklama |
---|---|
-? | Yardım gösterir. |
-h | Yardım gösterir. |
-f | Hz.'de sinüs dalga frekansı. |
-l | Milisaniye cinsinden ses işleme gecikme süresi. |
-d | Saniye cinsinden sinüs dalgası süresi. |
-m | MMCSS kullanımını devre dışı bırakır. |
-konsol | Varsayılan konsol cihazını kullanın. |
-Iletişim | Varsayılan iletişim cihazını kullanın. |
-multimedya | Varsayılan multimedya cihazını kullanın. |
-bitiş noktası | Anahtar değerinde belirtilen uç nokta tanımlayıcısını kullanın. |
Uygulama bağımsız değişkenler olmadan çalıştırılırsa, kullanılabilir cihazları numaralandırır ve kullanıcıdan işleme oturumu için bir cihaz seçmesini ister. Kullanıcı bir cihaz belirtdikten sonra uygulama 440 Hz'de 10 saniye boyunca sinüs dalgasını işler. Bu değerler, -f ve -d anahtar değerleri belirtilerek değiştirilebilir.
RenderSharedEventDriven, olay temelli arabelleğe alma işlemini gösterir. Örnek şunların nasıl yapılacağını gösterir:
- IAudioClient::Initializeçağrısında AUDCLNT_STREAMFLAGS_EVENTCALLBACK bayrağını ayarlayarak bir ses istemcisi örneği oluşturun, özel kullanım modunda çalışacak şekilde yapılandırın ve olay temelli arabelleğe almayı etkinleştirin.
- IAudioClient::SetEventHandle yöntemini çağırarak sisteme bir olay tanıtıcısı sağlayarak istemciyi işlenmeye hazır örneklerle ilişkilendirin.
- Ses altyapısından örneklere yönelik bir işleme iş parçacığı oluşturun.
- Örneklerin işlenip işlenemeyeceğini belirlemek için cihaz uç noktasının karma biçimini denetleyin. Cihaz karma biçimini desteklemiyorsa, veriler PCM'ye dönüştürülür.
- Akış değiştirme işlemini işleme.
İşleme oturumu başladıktan ve akış başladıktan sonra ses altyapısı, istemcinin işlemesi için her arabellek hazır olduğunda istemciyi bilgilendirmek için sağlanan olay tanıtıcısına sinyal gönderir. Ses verileri zamanlayıcı temelli bir döngüde de işlenebilir. Bu mod, RenderSharedTimerDriven örneğinde gösterilmiştir.
Akışı işleme hakkında daha fazla bilgi için bkz. Akışİşleme.
İlgili konular
-
Temel Ses API'lerini kullanan SDK Örnekleri