AUGraphGetNodeInteractions在iphone 5c上不返回任何交互

时间:2016-12-09 04:45:07

标签: objective-c audiounit ipad-mini

我用

AUNodeInteraction interaction;
UInt32 ioNumInteractions;    

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

在所有设备(iphone 5s,6,6s,7)上,它返回交互和连接的节点,但在iphone 5c和ipad mini上,它不返回任何交互(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)

1 个答案:

答案 0 :(得分:2)

您应该将ioNumInteractions设置为您希望AUGraphGetNodeInteractions返回的最大交互次数。您可以使用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");
    }
}

我认为在5c上,ioNumInteractions最终仅以偶然的方式得到值0,因此AUGraphGetNodeInteractions返回了0次交互。 AUGraphGetNodeInteractions的本质是它只会返回ioNumInteractions交互,所以如果你传递一个像2893040这样的垃圾值(因为你没有初始化ioNumInteractions),它仍然会返回它所拥有的一个或两个连接。 / p>