* \param pcm PCM handle
* \param frames wanted skip in frames
* \return a positive number for actual skip otherwise a negative error code
+ * \retval 0 means no action
*/
#ifndef DOXYGEN
snd_pcm_sframes_t INTERNAL(snd_pcm_forward)(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
params.format = SND_PCM_FORMAT_S16;
params.rate = 48000;
params.channels = 2;
- params.period_time = 125000; /* 0.125 seconds */
+ params.period_time = -1;
params.buffer_time = -1;
bsize = psize = -1;
params.periods = 3;
if (err < 0)
return err;
+ /* set a reasonable default */
+ if (psize == -1 && params.period_time == -1)
+ params.period_time = 125000; /* 0.125 seconds */
+
/* sorry, limited features */
if (params.format != SND_PCM_FORMAT_S16 &&
params.format != SND_PCM_FORMAT_S32) {
params.format = SND_PCM_FORMAT_S16;
params.rate = 48000;
params.channels = 2;
- params.period_time = 125000; /* 0.125 seconds */
+ params.period_time = -1;
params.buffer_time = -1;
bsize = psize = -1;
params.periods = 3;
if (err < 0)
return err;
+ /* set a reasonable default */
+ if (psize == -1 && params.period_time == -1)
+ params.period_time = 125000; /* 0.125 seconds */
+
params.period_size = psize;
params.buffer_size = bsize;
err = snd_pcm_dshare_open(pcmp, name, ipc_key, ipc_perm, ¶ms, bindings, slowptr, root, sconf, stream, mode);
params.format = SND_PCM_FORMAT_S16;
params.rate = 48000;
params.channels = 2;
- params.period_time = 125000; /* 0.125 seconds */
+ params.period_time = -1;
params.buffer_time = -1;
bsize = psize = -1;
params.periods = 3;
if (err < 0)
return err;
+ /* set a reasonable default */
+ if (psize == -1 && params.period_time == -1)
+ params.period_time = 125000; /* 0.125 seconds */
+
params.period_size = psize;
params.buffer_size = bsize;
err = snd_pcm_dsnoop_open(pcmp, name, ipc_key, ipc_perm, ¶ms, bindings, slowptr, root, sconf, stream, mode);