diff --git a/src/plugins/pulse/ao_pulse.c b/src/plugins/pulse/ao_pulse.c index 2d10d57..6780830 100644 --- a/src/plugins/pulse/ao_pulse.c +++ b/src/plugins/pulse/ao_pulse.c @@ -41,7 +41,7 @@ #include #include -#define AO_PULSE_BUFFER_TIME 20000 +#define AO_PULSE_BUFFER_TIME 20 /* Unfortunately libao doesn't allow "const" for these structures... */ static char * ao_pulse_options[] = { @@ -73,7 +73,7 @@ typedef struct ao_pulse_internal { struct pa_simple *simple; char *server, *sink, *client_name; pa_usec_t static_delay; - pa_usec_t buffer_time; + int buffer_time; } ao_pulse_internal; /* Yes, this is very ugly, but required nonetheless... */ @@ -174,8 +174,8 @@ int ao_plugin_set_option(ao_device *device, const char *key, const char *value) } else if (!strcmp(key, "client_name")) { free(internal->client_name); internal->client_name = strdup(value); - }else if (!strcmp(key, "buffer_time")){ - internal->buffer_time = atoi(value) * 1000; + } else if (!strcmp(key, "buffer_time")) { + internal->buffer_time = atoi(value); } return 1; @@ -256,12 +256,10 @@ int ao_plugin_open(ao_device *device, ao_sample_format *format) { } /* buffering attributes */ - battr.prebuf = battr.minreq = battr.fragsize = -1; + battr.prebuf = battr.minreq = battr.fragsize = battr.maxlength = -1; - battr.tlength = (int)(internal->buffer_time * format->rate) / 1000000 * - ((format->bits+7)/8) * device->output_channels; - battr.minreq = battr.tlength/4; - battr.maxlength = battr.tlength+battr.minreq; + battr.tlength = internal->buffer_time * format->rate / 1000 * + (format->bits / 8) * device->output_channels; internal->simple = pa_simple_new(internal->server, t, PA_STREAM_PLAYBACK, internal->sink, t2, &ss,