Расчет буфера в AudioHardwareALSA :: getInputBufferSize (...) - PullRequest
1 голос
/ 17 марта 2011

Я смотрю на функцию getInputBufferSize (...) в AudioHardwareALSA.cpp, и она возвращает жестко закодированное значение 320. Мой вопрос: как рассчитывается это значение?

Я сделал некоторые предварительные-cals, но все же есть некоторые вопросы.


sample_rate = 8000
format = S16_LE = 2 bytes/sample
period_time = 10000 us (guessing)
buffer_size = 2 * period_size
period_size = period_time * bytes/sec
buffer_size = 2 * (0.01 * sample_rate * 2) = 320 bytes.

Я не могу найти period_time в коде, поэтому один вопрос: где он определен или это просто грубый расчет?

Я также пытаюсь добавить еще несколько частот дискретизации, т.е. 16000 и 32000 (позже, может быть, больше).Как правильно рассчитать минимальный размер буфера?Всегда ли задержка составляет 10 мс для всех частот дискретизации?

Любая помощь приветствуется.

1 Ответ

1 голос
/ 19 сентября 2011

Я полагаю, что Google реализовал кодирование NB-AMR для начала.позже они добавили поддержку AAC.В случае NB-AMR размер кадра составляет 320 байтов.Возможно, вы знаете, что для NB-AMR: частота дискретизации = 8000 выборок / сек. Длительность кадра = 20мс. Размер выборки = 2 байта. Каналы = моно. Таким образом, каждый кадр содержит 8000 выборок / сек.каналы = 320 байт

Для AAC эти параметры отличаются и, следовательно, размер кадра

...