2016-12-09 9 views
1

には相互作用が、私はすべてのデバイスでAUGraphGetNodeInteractions戻るiPhone 5C

AUNodeInteraction interaction; 
UInt32 ioNumInteractions;  

AUGraphGetNodeInteractions(graph, 
          node, 
          &ioNumInteractions, 
          &interaction)); 

使用(iPhoneの5S、6、6Sを、7)は、相互作用と接続されたノードを返しますが、iPhoneの5CとiPadミニ上にそれが相互作用を返しません(ioNumInteractions = 0)。

おそらく理由は32ビットのCPUです。 問題を解決する方法はありますか?

CAShow(グラフ):

Member Nodes: 
    node 1: 'augn' 'afpl' 'appl', instance 0x6000000323c0 O I 
    node 2: 'auou' 'rioc' 'appl', instance 0x600000032460 O I 
    Connections: 
    node 1 bus 0 => node 2 bus 0 [ 2 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved] 
    CurrentState: 
    mLastUpdateError=0, eventsToProcess=F, isInitialized=T, isRunning=T (1) 
+0

グラフの設定方法を表示できますか? –

+0

CAShow(グラフ)を追加しました。 私は、kAudioUnitSubType_AudioFilePlayerとkAudioUnitSubType_RemoteIOノードで簡単な例を使用します。 – Dmitrii

答えて

2

あなたはAUGraphGetNodeInteractionsを返すようにしたいの相互作用の最大数にioNumInteractionsを設定することになっています。 AUGraphCountNodeInteractionsを使用して実際のカウントを取得できます。次に、結果を保持するのに十分な大きさの配列を初期化する必要があります。

はここに例を示します

UInt32 ioNumInteractions = 0; 
AUGraphCountNodeInteractions(graph, node, & ioNumInteractions); 

今ioNumInteractionsカウントを持っています。これを使用して、対話を保持する配列を作成します。

AUNodeInteraction interactions[ioNumInteractions]; 

AUGraphGetNodeInteractions(graph, 
          node, 
          &ioNumInteractions, 
          interactions); 

AUGraphGetNodeInteractionsもioNumInteractionsを設定します。その後、相互作用の配列を反復処理します。

for (int i = 0; i < ioNumInteractions; i++) { 
    AUNodeInteraction interaction = interactions[i]; 
    if (interaction.nodeInteractionType == kAUNodeInteraction_Connection) { 
     processConnection(interaction.nodeInteraction.connection); 
     printf("connection\n"); 
    } 
    else if (interaction.nodeInteractionType == kAUNodeInteraction_InputCallback){ 
     processCallback(interaction.nodeInteraction.inputCallback); 
     printf("inputCallback\n"); 
    } 
} 

私はAUGraphGetNodeInteractionsが0の相互作用を返したように、図5c ioNumInteractionsに、偶然だけで0の値になってしまったと思います。 AUGraphGetNodeInteractionsの性質は、ioNumInteractions以上の相互作用を返さないということです。ioNumInteractionsを初期化しなかったため、2893040のようなガベージ値を渡すと、それはまだ1つまたは2つの接続を返します。

+0

ありがとう、デイブ! – Dmitrii

関連する問題