В настоящее время я использую snd_pcm_writei для воспроизведения звукового файла, который ранее был загружен в массив коротких (16-битный формат PCM). Чтобы воспроизвести этот звук, я создаю буфер (короткий *), содержащий период (или фрагмент). Затем я использую время цикла для вызова snd_pcm_writei, который дает мне эту строку:Alsa api: как использовать mmap в c?
int err = snd_pcm_writei(handle, buffer, frames);
Это довольно просто, чтобы понять, как это работает, и все работает отлично, я могу услышать звук. Тем не менее, я хотел бы попытаться использовать mmap вместо writei, но я действительно не понимаю. Я столкнулся с отсутствием документации и ясных примеров. Может ли кто-нибудь объяснить, как mmap работает с alsa, и как преобразовать мой код в то, что использует mmap? В принципе, я все равно хотел бы воспроизвести то, что находится в моем массиве, используя буфер (так что массив короткий, размер которого равен одному периоду). Благодарю.
Что вы ожидаете получить от использования mmap? –
Первая причина в том, что мне любопытно, и я хотел бы понять разницу и уметь заставить ее работать. Я также надеюсь, что это может уменьшить задержку (наглядный более короткий буфер), но я не уверен, что это будет так ...? – Spin