Как получить буферы данных PCM из выходных буферов MediaCodec?

Я хочу декодировать mp3-файл в pcm или wav-данные. (Приложение для Android: API 20)

я использую этот подход для декодирования данных из mp3, но на родной платформе с C ++.

После декодирования я знаю, что из декодера заполнены выходные буферизованные данные в формате «звук / сырье».
Эти буферизованные данные хранятся в uint8_t *, поэтому это массив uint8_t (byte) (значения от 0 до 255).

Как я могу преобразовать эти массивы в формат PCM или WAV, если это возможно?

0

Решение

Все аудиодекодеры в настоящее время возвращают 16-битный звук PCM, так что просто uint8_t* в int16_t*, что позволяет считывать образцы PCM. Если у вас есть size байты данных, вы можете прочитать size/2 образцы из int16_t* указатель. Вы также можете проверить AMEDIAFORMAT_KEY_CHANNEL_COUNT из выходного формата — если у вас есть size/2 Всего образцов у вас будет size/(2*channels) кортежи семплов для каждого канала.

1

Другие решения


По вопросам рекламы [email protected]