OpenSL, проигрывая разные аудиоклипы одновременно с android ndk?

Я хочу использовать родной Android ndk и OpenSL ES для воспроизведения нескольких звуков одновременно. Я взглянул на пример нативного звука в ndk, но не смог понять, как его обобщить, чтобы я мог воспроизводить разные аудиоклипы, возможно, одновременно. Большинство примеров, которые мне удалось найти в Интернете с помощью последних примерно 50 попыток поиска, которые я предпринял с помощью Google, часто, кажется, зависят от дополнительного кода, такого как сторонняя библиотека, написаны на Java (я в поисках собственного решения), или, кажется, просто не рассчитаны на одновременную обработку нескольких звуков.

Если есть какая-то разница в том, как к этому подойти, для каждого звука, который я хочу воспроизвести, у меня уже есть некоторые необработанные данные pcm (little-endian) в памяти, которые готовы для воспроизведения, и для каждого из них я знаю его частоту дискретизации, бит на выборку (8 или 16) и количество каналов (1 или 2).

Любая помощь, которую может предложить каждый, будет принята с благодарностью. Заранее спасибо.

1 ответ

Решение

Вы можете создать несколько простых буферов очереди аудиоплееров. У вас должен быть механизм, чтобы узнать, когда очередь закончила играть, чтобы вы могли использовать бесплатные из пула. Вы можете использовать механизм обратного вызова, чтобы сделать это. Пример native-audio охватывает этот обратный вызов.

Другие вопросы по тегам