MIDIPacketList, numPackets всегда 1

Я обрабатываю Midi на iPad, и все работает нормально, я могу регистрировать все, что приходит, и все работает, как ожидалось. Однако, пытаясь получить длинные сообщения (например, Sysex), я могу получить только один пакет с максимальным размером 256 байт и ничего после.

Используя код, предоставленный Apple:

MIDIPacket *packet = &packetList->packet[0];
for (int i = 0; i > packetList->numPackets; ++i) {
    // ...
    packet = MIDIPacketNext (packet);
}

packetList-> numPackets is всегда 1. Когда я получаю первое сообщение, никакие другие методы обратного вызова не вызываются до тех пор, пока не будет отправлено «новое» сообщение sysex. Я не думаю, что мой метод обработки MIDI будет вызываться с полным списком пакетов (который потенциально может быть любого размера). Я бы подумал, что получу данные в виде потока. Это правильно?

Покопавшись, я смог найти только следующее: http://lists.apple.com/archives/coreaudio-api/2010/May/msg00189.html , который упоминает то же самое, но это не сильно помогло. Я понимаю, что мне, вероятно, нужно реализовать буферизацию, но я даже не вижу ничего, кроме первых 256 байтов, поэтому не знаю, с чего начать.

5
задан Domestic Cat 28 December 2010 в 12:28
поделиться