From d6458e6f62ea7d09a82f78f509df58c452358ae8 Mon Sep 17 00:00:00 2001 From: Simon Wilson Date: Tue, 21 Jun 2011 14:58:11 -0700 Subject: pcm: add pcm_start/stop() functions for streams This is essential for streams such as loopback devices that do not transfer data. --- pcm.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'pcm.c') diff --git a/pcm.c b/pcm.c index adc0495..3ba51ba 100644 --- a/pcm.c +++ b/pcm.c @@ -350,3 +350,22 @@ int pcm_is_ready(struct pcm *pcm) { return pcm->fd >= 0; } + +int pcm_start(struct pcm *pcm) +{ + if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_PREPARE) < 0) + return oops(pcm, errno, "cannot prepare channel"); + if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_START) < 0) + return oops(pcm, errno, "cannot start channel"); + + return 0; +} + +int pcm_stop(struct pcm *pcm) +{ + if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_DROP) < 0) + return oops(pcm, errno, "cannot stop channel"); + + return 0; +} + -- cgit v1.2.3