これを行うことで CoreAudio の MIDIPacketListAdd を使用しようとしています (Mac の場合):
MIDIPacketListAdd(packetList, PACKETLIST_SIZE, currentPacket, mach_absolute_time, len, data);
メソッドを送信する前に複数回呼び出して、packetListに1つ以上のパケットが含まれるようにすることを考えていました。ただし、これを行うと、numPackets が増加することはなく、packetList->packet[0] が増加し続け、packet[0].data が増加します。
1) この方法を使用する正しい方法は何ですか? 「Learning Core Audio」の例を含め、いくつかの例を見てきましたが、それらはすべて 1 つのパケットだけを送信しているようです。
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);
}