diff --git a/ChangeLog b/ChangeLog index 6ace931e75..6218e435dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-05-31 Wim Taymans + + * ext/alsa/gstalsasink.c: (set_hwparams), (gst_alsasink_open): + Get actual segment size and buffer size after opening + the device. + 2005-05-30 Wim Taymans * ext/ogg/gstoggdemux.c: (gst_ogg_demux_activate_chain), diff --git a/ext/alsa/gstalsasink.c b/ext/alsa/gstalsasink.c index 43cd41a809..637eac8046 100644 --- a/ext/alsa/gstalsasink.c +++ b/ext/alsa/gstalsasink.c @@ -206,20 +206,21 @@ set_hwparams (GstAlsaSink * alsa) CHECK (snd_pcm_hw_params_set_buffer_time_near (alsa->handle, params, &alsa->buffer_time, &dir), buffer_time); } - CHECK (snd_pcm_hw_params_get_buffer_size (params, &alsa->buffer_size), - buffer_size); - if (alsa->period_time != -1) { /* set the period time */ CHECK (snd_pcm_hw_params_set_period_time_near (alsa->handle, params, &alsa->period_time, &dir), period_time); } - CHECK (snd_pcm_hw_params_get_period_size (params, &alsa->period_size, &dir), - period_size); /* write the parameters to device */ CHECK (snd_pcm_hw_params (alsa->handle, params), set_hw_params); + CHECK (snd_pcm_hw_params_get_buffer_size (params, &alsa->buffer_size), + buffer_size); + + CHECK (snd_pcm_hw_params_get_period_size (params, &alsa->period_size, &dir), + period_size); + return 0; /* ERRORS */ @@ -437,9 +438,8 @@ gst_alsasink_open (GstAudioSink * asink, GstRingBufferSpec * spec) CHECK (set_hwparams (alsa), hw_params_failed); CHECK (set_swparams (alsa), sw_params_failed); - spec->bytes_per_sample = 4; - alsa->bytes_per_sample = 4; - spec->segsize = alsa->period_size * 4; + alsa->bytes_per_sample = spec->bytes_per_sample; + spec->segsize = alsa->period_size * spec->bytes_per_sample; spec->segtotal = alsa->buffer_size / alsa->period_size; spec->silence_sample[0] = 0; spec->silence_sample[1] = 0;