выборок в секунду на аудиовходе iphone - PullRequest
0 голосов
/ 03 января 2012

Прочитав так много о remoteIO для iphone и буферов, я написал код и получил аудио образцы.

, но я не могу понять что-то о размере буфера.

Я знаю, что каждый раз, когда буфер заполнен, вызывается функция обратного вызова.размер буфера составляет 2 байта, 16 бит.что я не знаю, так это то, что частота, с которой вызывается обратный вызов для получения этих 16 бит.

каким-то образом, когда я выхожу из буфера, у меня получается только 2500 выборок в 7 секунд, что означает около 400 выборок в секунду.что слишком плохо!.

что я делаю не так?ИЛИ что я здесь не понимаю?

мой код здесь из другого моего сообщения: ошибка в аудио-коде устройства -remoteIO для iphone

Ответы [ 3 ]

2 голосов
/ 03 января 2012

Проблема в том, что NSLog слишком медленный по сравнению с частотой дискретизации звука, и, таким образом, блокирует обратный вызов аудио от вызова достаточно часто.Таким образом, вы теряете почти все образцы.Возьмите все NSLogs из звукового обратного вызова и просто увеличьте счетчик, чтобы посчитать ваши выборки.

Если вы хотите что-то сделать с NSLog, выясните, как это сделать вне звукового обратного вызова.* Ваш образец кода, кажется, запрашивает 44100 выборок в секунду от аудиоустройства.Проверьте возвращаемое значение ошибки, чтобы убедиться.

Кроме того, число выборок в буфере не включает strlen ().

0 голосов
/ 03 января 2012

Возможно, вы получите не один сэмпл, а массив сэмплов, т. Е. Аудиобуфер, содержащий, возможно, 128 сэмплов (~ 400 * 128 = 44100) и, возможно, несколько каналов (в зависимости от вашей конфигурации).

0 голосов
/ 03 января 2012

Может быть, это просто логирование с частотой 400 Гц, и звук в порядке?

Если я правильно понимаю, у вас нет проблем со слухом, это означает, что частота звука достаточна.На частоте 400 Гц у вас будет псевдоним для всех диапазонов более 200 Гц, что очень мало (мы можем слышать до 20 кГц), что означает, что ваш звук будет сильно искажен.См. теорема Найквиста .

...