write: Get rid of wn->chunk_bytes and wng->max_chunk_bytes.
[paraslash.git] / alsa_write.c
index 9f60d6d88aacbd21715f529d61c5bd3e23dd6cd4..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);
@@ -131,13 +127,14 @@ static int alsa_open(struct writer_node *w)
                        stop_threshold) < 0)
                return -E_STOP_THRESHOLD;
        if (snd_pcm_sw_params(pad->handle, swparams) < 0)
-               return -E_SW_PARAMS;
+               PARA_WARNING_LOG("unable to install sw params\n");
        pad->bytes_per_frame = snd_pcm_format_physical_width(FORMAT)
                * pad->channels / 8;
        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)
@@ -247,8 +244,6 @@ void alsa_write_init(struct writer *w)
        w->parse_config = alsa_parse_config;
        w->shutdown = NULL; /* nothing to do */
        w->help = (struct ggo_help) {
-               .purpose = alsa_write_args_info_purpose,
-               .usage = alsa_write_args_info_usage,
                .short_help = alsa_write_args_info_help,
                .detailed_help = alsa_write_args_info_detailed_help
        };