2013-03-15 15 views
5

AudioUnitAddRenderNotify aracılığıyla, ses çıkışını hoparlörlere gönderen aktif RemoteIO birimine bir geri dönüş geri çağrısı eklemek istiyorum. Gerçek RemoteIO örnek değişkenine erişimim yok, ancak uygulamada bir liste ses birimleri almak ve RemoteIO birimini bu şekilde bulmak istiyorum. Bu mümkün mü?Şu anda uygulamadaki tüm RemoteIO ses ünitelerini listelemek mümkün mü?

+0

İlginç soru - Örnek değişkenine erişiminiz yok mu? Statik bir kütüphanede veya bir şeyde mi oluşturuluyor? –

+0

Ayrıca bir çözüm bilmek de merak ediyor. Benim özel durumumda, Unity3d'nin erişemediğim temeldeki fmod uygulaması tarafından ele alınmaktadır. –

+0

OpenAL'in çıktısını almaya çalışıyor musunuz? –

cevap

1

Eğer AUGraph acces kazanabilir o zaman bu mümkündür. AUGraph documentation'a göre size yardımcı olacak birkaç yöntem var.

AUGraphGetNodeCount - Eğer remoteIO birimini almak ve ekleyebilirsiniz doğru düğüm vardı sonra bir düğüm

hakkında bilgi almak için - bir grafik AUGraphGetIndNode düğüm sayısını elde etmek için - bir endeksli düğümü AUGraphNodeInfo olsun geri aramanız. AUGraph'a erişim kazanmak aslında asıl sorun.

+1

Güzel bahşiş, teşekkürler! Bu, muhtemelen herkesin cevabına yaklaştığı kadar yakın olacak – kevlar

+0

Teşekkürler. AUGraph'a ulaşmanın bir yolunu buldunuz, nasıl yaptığınızı duymak isterim, izin verdiğine göre 'kutsal bir kefir'. Çıkışı kaydetmek veya fantastik olabilecek efektler eklemek için openAL'e erişim. –

0

Yalnızca bir RemoteIO var. Ben asla "yaratmak" için değilken bir işaretçi almaya çalıştım. Böyle bir şey denemek niye, bu RemoteIO size bir işaretçi almalısınız:

OSStatus status; 
AudioComponentInstance audioUnit; 

    // Describe audio component 
AudioComponentDescription desc; 
desc.componentType = kAudioUnitType_Output; 
desc.componentSubType = kAudioUnitSubType_RemoteIO; 
desc.componentFlags = 0; 
desc.componentFlagsMask = 0; 
desc.componentManufacturer = kAudioUnitManufacturer_Apple; 

// Get component 
AudioComponent outputComponent = AudioComponentFindNext(NULL, &desc); 

// Get audio units 
status = AudioComponentInstanceNew(outputComponent, &audioUnit); 
checkStatus(status); 
+0

Cevabınız için teşekkürler. Önerdiğiniz şeyi yapmak, bir RemoteIO ses ünitesinin * yeni * örneğini başlatacaktır. – kevlar

+0

hmmm yea test ettikten sonra Daha önce bir tane yaratılmıştı. Bunu yapmak, tekrar yaratılan yumruğa bir işaretçi döndürmeyi umuyordum: Komik olan şey, sonuç kodunun 0 değerini döndürmesidir, ancak outInstance herhangi bir şeye işaret etmemekte, bu yüzden işe yaramaz. –

+1

Aynı uygulamada çalışan birden fazla AUGraph olabileceğine eminim –