2016-12-09 2 views
1

IAUGraphGetNodeInteractions liefern keine Wechselwirkungen auf Iphone 5C

AUNodeInteraction interaction; 
UInt32 ioNumInteractions;  

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

auf allen Geräten verwenden (iphone 5S, 6, 6s, 7) es gibt Interaktion und verbundene Knoten, sondern auf iphone 5c und IPAD mini es liefert keine Wechselwirkungen (ioNumInteractions = 0).

Vielleicht ist der Grund eine 32-Bit-CPU. Irgendwelche Ideen, wie man das Problem löst?

CAShow (Grafik):

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

können Sie zeigen, wie Sie das Diagramm einrichten? –

+0

CAShow (Grafik) hinzugefügt; Ich verwende ein einfaches Beispiel mit den Knoten kAudioUnitSubType_AudioFilePlayer und kAudioUnitSubType_RemoteIO. – Dmitrii

Antwort

2

Sie sollen ioNumInteractions auf die maximale Anzahl von Interaktionen setzen Sie AUGraphGetNodeInteractions zurückkehren möchten. Sie können die tatsächliche Anzahl mithilfe von AUGraphCountNodeInteractions abrufen. Dann müssen Sie ein Array initialisieren, das groß genug ist, um das Ergebnis zu speichern.

Hier ist ein Beispiel:

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

Jetzt ioNumInteractions eine Zählung hat. Verwenden Sie dies, um das Array zu erstellen, das die Interaktionen enthält.

AUNodeInteraction interactions[ioNumInteractions]; 

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

AUGraphGetNodeInteractions setzt auch hier ioNumInteractions. Dann iteriere durch das Array von Interaktionen.

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"); 
    } 
} 

Ich denke, dass auf den 5c ioNumInteractions mit einem Wert von 0 allein durch Zufall gelandet, so AUGraphGetNodeInteractions 0 Wechselwirkungen zurückgeführt. Die Art von AUGraphGetNodeInteractions ist, dass es nicht mehr als ioNumInteractions-Interaktionen zurückgibt. Wenn Sie also einen Wert wie 2893040 übergeben (weil Sie ioNumInteractions nicht initialisiert haben), gibt es immer nur die eine oder zwei Verbindungen zurück.

+0

Vielen Dank, Dave! – Dmitrii

Verwandte Themen