AUGraphGetNodeInteractions returns iphone 5c 上没有交互
AUGraphGetNodeInteractions returns no interactions on iphone 5c
我用
AUNodeInteraction interaction;
UInt32 ioNumInteractions;
AUGraphGetNodeInteractions(graph,
node,
&ioNumInteractions,
&interaction));
在所有设备上(iphone 5s、6、6s、7)它returns交互和连接节点,但在iphone 5c和ipad迷你它returns 无交互(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)
您应该将 ioNumInteractions 设置为您希望 AUGraphGetNodeInteractions 设置为 return 的最大交互次数。您可以使用 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 returned 0 交互。 AUGraphGetNodeInteractions 的本质是它 return 不会超过 ioNumInteractions 交互,所以如果你传递一个像 2893040 这样的垃圾值(因为你没有初始化 ioNumInteractions)它仍然会 return 只是一个或它有两个连接。
我用
AUNodeInteraction interaction;
UInt32 ioNumInteractions;
AUGraphGetNodeInteractions(graph,
node,
&ioNumInteractions,
&interaction));
在所有设备上(iphone 5s、6、6s、7)它returns交互和连接节点,但在iphone 5c和ipad迷你它returns 无交互(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)
您应该将 ioNumInteractions 设置为您希望 AUGraphGetNodeInteractions 设置为 return 的最大交互次数。您可以使用 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 returned 0 交互。 AUGraphGetNodeInteractions 的本质是它 return 不会超过 ioNumInteractions 交互,所以如果你传递一个像 2893040 这样的垃圾值(因为你没有初始化 ioNumInteractions)它仍然会 return 只是一个或它有两个连接。