Воспроизведение потока ADPCM на iOS (MS IMA 0x11)
Я использую AudioUnit / RemoteIO API для воспроизведения потокового аудио. Другие форматы, такие как a-law и u-law, работают нормально.
Вот пример того, как я настраиваю формат a-law:
audioFormat.mSampleRate = format->nSamplesPerSec;
audioFormat.mFormatID = kAudioFormatALaw;
audioFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
audioFormat.mFramesPerPacket = 1;
audioFormat.mChannelsPerFrame = format->nChannels;
audioFormat.mBitsPerChannel = format->wBitsPerSample;
audioFormat.mBytesPerFrame = (format->wBitsPerSample * format->nChannels) / 8;
audioFormat.mBytesPerPacket = audioFormat.mBytesPerFrame * audioFormat.mFramesPerPacket;
Формат, с которым я пытаюсь работать - это MS ADPCM, описанный здесь.
Из того, что я понимаю, в этом случае мне нужно как-то рассчитать количество кадров на пакет. Единственной дополнительной информацией, которую я имею, является поле nBlockAlign, которое мультимедийная вики описывает как "размер блока данных, закодированных в IMA".
Я в недоумении с этим.
Как рассчитывается количество кадров в пакете? Включает ли он размер блока из nBlockAlign?
Я вижу kAudioFormatDVIIntelIMA и kAudioFormatAppleIMA4 в списке форматов. Поддерживает ли iOS этот тип ADPCM?