Используйте android разделяемую память вместо разделяемой памяти POSIX - PullRequest
0 голосов
/ 04 февраля 2020

Android не поддерживает общую память Posix. Итак, я применил разделяемую память Android к библиотеке ALSA для функций dmix и dsn oop. Я ссылался на это https://github.com/pelya/android-shmem/blob/master/shmem.c. Функция dmix библиотеки ALSA с общей памятью Android работает хорошо, если я протестирую ее с помощью утилиты alsa_aplay (например, alsa_aplay -D asym_dmix xxx.wav). Я слышу чистый звук.

Но, когда приложение Musi c воспроизводит звук, я слышу шум. Я добавил сообщение в журнал до и после snd_pcm_writei (), чтобы проверить задержку. Обычно функция snd_pcm_writei () возвращается с очень небольшой задержкой. Это около нескольких миллисекунд. Но когда я мог слышать шум, задержки составляют несколько десятых миллисекунд или почти сто миллисекунд. Функция snd_pcm_writei () использует общую память Android, потому что для воспроизведения используется тип dmix. Я сомневаюсь, что аудиоданные блокируются во время записи в общую память Android. Но я не уверен, и проблема не в том, где. Любой, кто имеет подобный опыт или совет, пожалуйста, дайте мне знать.

...