write: Get rid of wn->chunk_bytes and wng->max_chunk_bytes.
[paraslash.git] / alsa_write.c
index b10d5c62faa910dc92757e4ce77afc818c0a676a..dfd2421d3f6ddc51eefd6aa5db98098f11389f01 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,7 +133,8 @@ 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");
-       return period_size * pad->bytes_per_frame;
+       tv_add(now, &(struct timeval ){0, 100 * 1000}, &pad->next_chunk);
+       return 1;
 }
 
 static int alsa_write_pre_select(struct sched *s, struct writer_node *wn)