我正在尝试通过这样做(在 Mac 上)使用 CoreAudio 的 MIDIPacketListAdd:
MIDIPacketListAdd(packetList, PACKETLIST_SIZE, currentPacket, mach_absolute_time, len, data);
我正在考虑在发送之前多次调用该方法,以便我的 packetList 中包含 > 1 个数据包。但是,当我这样做时,numPackets 永远不会增加,而我得到的是 packetList->packet[0] 和不断增加的 packet[0].data。
1)使用这种方法的正确方法是什么?我看过几个例子,包括“Learning Core Audio”中的一个——它们似乎都只发送一个数据包。
2) 如果我在 1 个数据包列表中打包多个数据包而不是多次发送 1 个数据包列表和 1 个数据包,是否有任何性能改进?
谢谢,感谢您对此的任何帮助。
后续编辑:这是我初始化数据包列表的方式
#define PACKETLIST_SIZE 512
- (void) initPacketList {
if (packetList) {
free(packetList);
packetList = NULL;
}
packetList = (MIDIPacketList *)malloc(PACKETLIST_SIZE * sizeof(char));
currentPacket = MIDIPacketListInit(packetList);
}
- (void) clearPacketList {
packetList->numPackets = 0;
currentPacket = MIDIPacketListInit(packetList);
}
- (void) addPacketToPacketList:(Byte*) data ofLength:(int) len {
NSLog(@"length %d", len);
//NSLog(@"%lld", mach_absolute_time());
currentPacket = MIDIPacketListAdd(packetList, PACKETLIST_SIZE, currentPacket, mach_absolute_time, len, data);
//if (!currentPacket) exit(1);
}