Android AudioTrack использует автоматическую буферизацию? - PullRequest
0 голосов
/ 14 мая 2018

Когда вы создаете новый AudioTrack, вы устанавливаете размер буфера.Затем вы write() получаете аудиоданные в аудиопоток, указывая его длину.

В моем случае getMinBufferSize() дает мне 8192 B, а мой звук 22050 B.

Так же, как и AudioTrack буферизует этот звук автоматически или я должен разделить мои short[] для аудиоданных на куски, каждый из которых равен размеру буфера?

(Или, в последнем случае, просто изменив offsetInShorts и sizeInShortsпараметры write() для динамической подачи соответствующих частей звуковых данных на дорожку?)

Спасибо.

1 Ответ

0 голосов
/ 14 мая 2018

Учитывая, что я просто записываю весь звук сразу в AudioTrack и у меня до сих пор не было проблем с этим, я бы сказал, да, есть какая-то магия автоматического заполнения буфера.

Копание глубже, вызовы записи AudioTrack в итоге вызывают AudioFlinger :: PlaybackThread :: OutputTrack :: write , который, кажется, записывает в первый незаполненный буфер, а затем продолжает запись в новые буферы если есть больше данных.

...