pcm: add pcm_start/stop() functions for streams

This is essential for streams such as loopback devices that
do not transfer data.
This commit is contained in:
Simon Wilson
2011-06-21 14:58:11 -07:00
parent bc03b62083
commit d6458e6f62
2 changed files with 23 additions and 0 deletions
+4
View File
@@ -97,6 +97,10 @@ unsigned int pcm_get_latency(struct pcm *pcm);
int pcm_write(struct pcm *pcm, void *data, unsigned int count);
int pcm_read(struct pcm *pcm, void *data, unsigned int count);
/* Start and stop a PCM channel that doesn't transfer data */
int pcm_start(struct pcm *pcm);
int pcm_stop(struct pcm *pcm);
/*
* MIXER API
+19
View File
@@ -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;
}