




Я считаю, что для Mono нет никаких привязок. Вы можете посмотреть на привязки Python ALSA и привязки Mono D-BUS и попытаться создать свои собственные.
Однако, вероятно, вам было бы лучше и проще просто использовать GStreamer. Привязки Mono GStreamer разработаны и хорошо работают.
Не знаю - я даже не могу найти никакой информации о том, что такое «буфер чехарда». Привязки - это термин, используемый для того, чтобы сделать библиотеку, написанную на одном языке, доступной для другого языка. Если вам нужна только небольшая часть API, вы можете попробовать P / Invoke. mono-project.com/Interop_with_Native_Libraries
Спасибо за ссылку для взаимодействия. Это то, что я хочу сделать, но я не знаю, как это сделать конкретно с помощью ALSA.
Leapfrog использует два чередующихся буфера для воспроизведения файла WAV. Они загружаются с первым и вторым фрагментами из файла, а затем помещаются в очередь в буфер воспроизведения. Когда первая сделана, вторая начинает играть; первая перезагружается с 3-м блоком и ставится в очередь и так далее.
Техника чехарда позволяет воспроизводить большой файл без необходимости сразу загружать его в память целиком.
Это звучит как довольно распространенная техника воспроизведения, пусть даже на низком уровне. GStreamer поддерживает это легко - он используется в медиаплеере Banshee. Вы можете использовать приведенный там код в качестве примера использования GStreamer в C#.
Кроме того, нет определенного метода для вызова функций ALSA - вам нужно будет просмотреть документацию ALSA, решить, какие функции вы хотите вызвать, и добавить их в C#, используя код в опубликованной мной ссылке.
Собираюсь взглянуть на GStreamer - спасибо за ссылки и код.
«Привязки» в моно похожи на использование PInvoke в .NET? Мне нужно использовать лишь очень небольшое подмножество функциональности ALSA. Можно ли использовать GStreamer для создания системы буферного воспроизведения чехарда?