Если я открываю аудиофайл с расширенными службами аудиофайлов, используя следующий формат данных клиента ...
AudioStreamBasicDescription audioFormat;
memset(&audioFormat, 0, sizeof(audioFormat));
audioFormat.mSampleRate = 44100.0;
audioFormat.mFormatID = kAudioFormatLinearPCM;
audioFormat.mFormatFlags = kAudioFormatFlagIsBigEndian |
kAudioFormatFlagIsSignedInteger |
kAudioFormatFlagIsPacked;
audioFormat.mBytesPerPacket = 4;
audioFormat.mFramesPerPacket = 1;
audioFormat.mChannelsPerFrame = 2;
audioFormat.mBytesPerFrame = 4;
audioFormat.mBitsPerChannel = 16;
И настроить AudioBufferList следующим образом ....
AudioBufferList bufferList;
bufferList.mNumberBuffers = 1;
bufferList.mBuffers[0].mDataByteSize = bufferSize;
bufferList.mBuffers[0].mNumberChannels = audioFormat.mChannelsPerFrame;
bufferList.mBuffers[0].mData = buffer; //malloc(sizeof(UInt8) * 1024 * audioFormat.mBytesPerPacket)
Как же тогда данные располагаются в mData? Если я переберу данные вот так
for (int i = 0; i < frameCount; i++) {
UInt8 somePieceOfAudioData = buffer[i];
}
тогда что такое SomePieceOfAudioData.
Это образец или кадр (левый и правый каналы вместе)? Если это образец, то для какого канала это образец? Если, например, это сэмпл с правого канала, будет ли буфер [i + 1] сэмплом для левого канала?
Есть идеи, ссылки? Спасибо!