]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - alsa_write.c
alsa: Simplify alsa_open().
[paraslash.git] / alsa_write.c
index f016e6ff74aeb16dcc764d0b482764e347fd60b1..d65cfb4d01523db3f7479e62d8900de0dc3a2b1f 100644 (file)
@@ -62,7 +62,6 @@ static int alsa_open(struct writer_node *w)
        snd_pcm_sw_params_t *swparams;
        snd_pcm_uframes_t buffer_size, start_threshold, stop_threshold;
        int err;
-       snd_pcm_info_t *info;
        snd_pcm_uframes_t period_size;
        struct private_alsa_write_data *pad = para_calloc(sizeof(struct
                private_alsa_write_data));
@@ -79,13 +78,10 @@ static int alsa_open(struct writer_node *w)
                pad->channels = conf->channels_arg;
        PARA_INFO_LOG("%d channel(s), %dHz\n", pad->channels, pad->samplerate);
        w->private_data = pad;
-       snd_pcm_info_alloca(&info);
        err = snd_pcm_open(&pad->handle, conf->device_arg,
                SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK);
        if (err < 0)
                return -E_PCM_OPEN;
-       if ((err = snd_pcm_info(pad->handle, info)) < 0)
-               return -E_SND_PCM_INFO;
 
        snd_pcm_hw_params_alloca(&hwparams);
        snd_pcm_sw_params_alloca(&swparams);
@@ -137,6 +133,7 @@ static int alsa_open(struct writer_node *w)
        PARA_INFO_LOG("bytes per frame: %zu\n", pad->bytes_per_frame);
        if (snd_pcm_nonblock(pad->handle, 1))
                PARA_ERROR_LOG("failed to set nonblock mode\n");
+       tv_add(now, &(struct timeval ){0, 100 * 1000}, &pad->next_chunk);
        return period_size * pad->bytes_per_frame;
 }
 
@@ -181,8 +178,6 @@ static int alsa_write_post_select(__a_unused struct sched *s,
        if (ret == -EPIPE) {
                PARA_WARNING_LOG("EPIPE\n");
                snd_pcm_prepare(pad->handle);
-               /* try to write the same data again */
-               ret = snd_pcm_writei(pad->handle, data, frames);
                return 1;
        }
        if (ret < 0 && ret != -EAGAIN) {