Я пытаюсь читать аудиоданные через AudioQueue. Когда я это сделаю, я могу проверить, что битовая глубина файла 16 бит. Но когда я получаю фактические данные образца, я вижу только значения от -128 до 128. Но я также вижу подозрительные просматриваемые чередующиеся данные, что делает меня уверенным, что я просто не читаю данные правильно.Чтение данных аудио буфера с помощью AudioQueue
Итак, для начала я могу проверить, что исходный файл - это 44100, 16-битный, моно-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 в nd 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. Посмотрите, как это увеличивается, не равномерно, но, по крайней мере, гладко? Строки с нечетным номером нигде не близки к этой гладкой.
Моя первая мысль состояла в том, что это чередующиеся стереоданные, но нет, это только один канал, поэтому не должно быть чередования, не так ли?
Мое лучшее предположение, что я просто читаю данные некорректно, поэтому данные образца растягиваются на два возврата. Любая идея, как правильно ее прочитать?
Спасибо за то, что вы прочитали весь вопрос, и для любого понимания, которое вы можете предложить.
Еще раз спасибо Peter! –