Чтение данных аудио буфера с AudioQueue

Я пытаюсь прочитать аудиоданные через AudioQueue. Когда я это сделаю, я смогу убедиться, что битовая глубина файла составляет 16 бит. Но когда я получаю фактические данные выборки, я вижу только значения от -128 до 128. Но я также вижу подозрительно выглядящие чередующиеся данные, что позволяет мне быть уверенным, что я просто не читаю данные правильно.

Итак, для начала я могу убедиться, что исходный файл является 44100-битным монофоническим WAV-файлом.

Мой буфер распределяется таким образом:

char *buffer= NULL;
buffer = malloc(BUFFER_SIZE);
assert(buffer);

Все соответствующие значения установлены и используются в:

AudioFileReadPackets(inAudioFile,false,&bytesRead,NULL,packetNum,&numPackets,buffer);       

В качестве теста, чтобы увидеть полученные данные, я запускаю:

for(int i=0;i<BUFFER_SIZE;i++){
  NSLog(@"%i", buffer[i]);
}

Теперь я знаю, что мой исходный файл достигает максимума повсюду, но значения, которые я вижу, только максимальные при -128 и 128. Поскольку это 16-битный файл, я бы ожидал, что вместо этого значения будут от -32768 до 32768.

Кроме того, в данных, похоже, есть две закономерности. Вот пример возвращаемых данных:

70
-13
31
-11
-118
-9
-15
-7
116
-4
31
-1
28
1
84
2
-123
3
-97
4
110
5
54
6
126

Теперь взгляните на каждый второй ряд, начиная со второго: -13. Видите, как оно увеличивается, не равномерно, а хотя бы плавно? Строки с нечетными номерами нигде не расположены вблизи этого сглаживания.

Моей первой мыслью было бы, что это чередующиеся стереоданные, но нет, это только один канал, поэтому не должно быть чередования, верно?

Мое лучшее предположение состоит в том, что я просто неправильно читаю данные, поэтому данные выборки охватывают два результата. Есть идеи, как правильно читать?

Спасибо, что прочитали весь вопрос, и за любые идеи, которые вы можете предложить.

Ответы на вопрос(1)

Ваш ответ на вопрос