ALSA: открыть устройство PCM в общем режиме

Я хочу воспроизвести некоторые аудиоданные с помощью ALSA на устройстве PCM. В качестве примера я скачал этот пример и запустил его на своем ПК. Он отлично работает, когда никакой другой процесс в данный момент не использует звуковую карту. Но он ничего не воспроизводит, когда какой-то другой процесс использует аудиоустройство (например, медиаплеер, воспроизводящий песни) и показывает следующую ошибку -

Playback open error: Device or resource busy

Глядя на исходный код этого примера, я могу сказать, что snd_pcm_open в строке 882 вызывает эту ошибку. Он обнаруживает, что устройство занято, поскольку его в настоящее время использует другой процесс.

Я также попробовал обратный путь - сначала запустил пример, затем попытался начать песню. В этом случае медиаплеер остается в режиме ожидания, показывая «бездействует» рядом с индикатором выполнения (я использую Banshee). Я предполагаю, что snd_pcm_open получает исключительное право на ресурс устройства, так что никакой другой процесс не может его использовать.

Но я этого не хочу. Я хочу воспроизводить звук на аудиоустройстве без каких-либо исключительных прав, чтобы другие процессы на ПК могли использовать одно и то же устройство для вывода аудиоданных.

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

8
задан MD Sayem Ahmed 17 November 2011 в 14:25
поделиться