From: Arun Raghavan <git@xxxxxxxxxxxxxxxx> This only works in the single-format case (i.e. we know the format up-front and we're not negotiating). --- src/pulse/stream.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) Adequately compile-tested and run this time. :/ diff --git a/src/pulse/stream.c b/src/pulse/stream.c index af2a9b3..9ec23eb 100644 --- a/src/pulse/stream.c +++ b/src/pulse/stream.c @@ -987,12 +987,20 @@ static void patch_buffer_attr(pa_stream *s, pa_buffer_attr *attr, pa_stream_flag if ((e = getenv("PULSE_LATENCY_MSEC"))) { uint32_t ms; + pa_sample_spec ss; + + pa_sample_spec_init(&ss); + + if (pa_sample_spec_valid(&s->sample_spec)) + ss = s->sample_spec; + else if (s->n_formats == 1) + pa_format_info_to_sample_spec(s->req_formats[0], &ss, NULL); if (pa_atou(e, &ms) < 0 || ms <= 0) pa_log_debug("Failed to parse $PULSE_LATENCY_MSEC: %s", e); else { attr->maxlength = (uint32_t) -1; - attr->tlength = pa_usec_to_bytes(ms * PA_USEC_PER_MSEC, &s->sample_spec); + attr->tlength = pa_usec_to_bytes(ms * PA_USEC_PER_MSEC, &ss); attr->minreq = (uint32_t) -1; attr->prebuf = (uint32_t) -1; attr->fragsize = attr->tlength; -- 2.4.2