pa_usec_t watermark_dec_not_before;
pa_usec_t min_latency_ref;
+ pa_usec_t tsched_watermark_usec;
pa_memchunk memchunk;
if (u->tsched_watermark < u->min_wakeup)
u->tsched_watermark = u->min_wakeup;
+
+ u->tsched_watermark_usec = pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec);
}
static void increase_watermark(struct userdata *u) {
if (old_watermark != u->tsched_watermark) {
pa_log_info("Increasing wakeup watermark to %0.2f ms",
- (double) pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec) / PA_USEC_PER_MSEC);
+ (double) u->tsched_watermark_usec / PA_USEC_PER_MSEC);
return;
}
if (old_watermark != u->tsched_watermark)
pa_log_info("Decreasing wakeup watermark to %0.2f ms",
- (double) pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec) / PA_USEC_PER_MSEC);
+ (double) u->tsched_watermark_usec / PA_USEC_PER_MSEC);
/* We don't change the latency range*/
if (usec == (pa_usec_t) -1)
usec = pa_bytes_to_usec(u->hwbuf_size, &u->sink->sample_spec);
- wm = pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec);
+ wm = u->tsched_watermark_usec;
if (wm > usec)
wm = usec/2;
pa_usec_t underrun_sleep = pa_bytes_to_usec_round_up(input_underrun, &u->sink->sample_spec);
*sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
- process_usec = pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec);
+ process_usec = u->tsched_watermark_usec;
if (*sleep_usec > process_usec)
*sleep_usec -= process_usec;
pa_usec_t underrun_sleep = pa_bytes_to_usec_round_up(input_underrun, &u->sink->sample_spec);
*sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
- process_usec = pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec);
+ process_usec = u->tsched_watermark_usec;
if (*sleep_usec > process_usec)
*sleep_usec -= process_usec;
}
pa_log_info("Time scheduling watermark is %0.2fms",
- (double) pa_bytes_to_usec(u->tsched_watermark, ss) / PA_USEC_PER_MSEC);
+ (double) u->tsched_watermark_usec / PA_USEC_PER_MSEC);
}
/* Called from IO context */
(double) rtpoll_sleep / PA_USEC_PER_MSEC, (double) real_sleep / PA_USEC_PER_MSEC,
(double) ((int64_t) real_sleep - (int64_t) rtpoll_sleep) / PA_USEC_PER_MSEC);
#endif
- if (u->use_tsched && real_sleep > rtpoll_sleep + u->tsched_watermark)
- pa_log_info("Scheduling delay of %0.2fms > %0.2fms, you might want to investigate this to improve latency...",
+ if (u->use_tsched && real_sleep > rtpoll_sleep + u->tsched_watermark_usec)
+ pa_log_info("Scheduling delay of %0.2f ms > %0.2f ms, you might want to investigate this to improve latency...",
(double) (real_sleep - rtpoll_sleep) / PA_USEC_PER_MSEC,
- (double) (u->tsched_watermark) / PA_USEC_PER_MSEC);
+ (double) (u->tsched_watermark_usec) / PA_USEC_PER_MSEC);
}
if (u->sink->flags & PA_SINK_DEFERRED_VOLUME)
pa_usec_t watermark_dec_not_before;
pa_usec_t min_latency_ref;
+ pa_usec_t tsched_watermark_usec;
char *device_name; /* name of the PCM device */
char *control_device; /* name of the control device */
if (u->tsched_watermark < u->min_wakeup)
u->tsched_watermark = u->min_wakeup;
+
+ u->tsched_watermark_usec = pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec);
}
static void increase_watermark(struct userdata *u) {
if (old_watermark != u->tsched_watermark) {
pa_log_info("Increasing wakeup watermark to %0.2f ms",
- (double) pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec) / PA_USEC_PER_MSEC);
+ (double) u->tsched_watermark_usec / PA_USEC_PER_MSEC);
return;
}
if (old_watermark != u->tsched_watermark)
pa_log_info("Decreasing wakeup watermark to %0.2f ms",
- (double) pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec) / PA_USEC_PER_MSEC);
+ (double) u->tsched_watermark_usec / PA_USEC_PER_MSEC);
/* We don't change the latency range*/
if (usec == (pa_usec_t) -1)
usec = pa_bytes_to_usec(u->hwbuf_size, &u->source->sample_spec);
- wm = pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec);
+ wm = u->tsched_watermark_usec;
if (wm > usec)
wm = usec/2;
if (u->use_tsched) {
*sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
- process_usec = pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec);
+ process_usec = u->tsched_watermark_usec;
if (*sleep_usec > process_usec)
*sleep_usec -= process_usec;
if (u->use_tsched) {
*sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
- process_usec = pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec);
+ process_usec = u->tsched_watermark_usec;
if (*sleep_usec > process_usec)
*sleep_usec -= process_usec;
}
pa_log_info("Time scheduling watermark is %0.2fms",
- (double) pa_bytes_to_usec(u->tsched_watermark, ss) / PA_USEC_PER_MSEC);
+ (double) u->tsched_watermark_usec / PA_USEC_PER_MSEC);
}
/* Called from IO context */
(double) rtpoll_sleep / PA_USEC_PER_MSEC, (double) real_sleep / PA_USEC_PER_MSEC,
(double) ((int64_t) real_sleep - (int64_t) rtpoll_sleep) / PA_USEC_PER_MSEC);
#endif
- if (u->use_tsched && real_sleep > rtpoll_sleep + u->tsched_watermark)
- pa_log_info("Scheduling delay of %0.2fms, you might want to investigate this to improve latency...",
- (double) (real_sleep - rtpoll_sleep) / PA_USEC_PER_MSEC);
+ if (u->use_tsched && real_sleep > rtpoll_sleep + u->tsched_watermark_usec)
+ pa_log_info("Scheduling delay of %0.2f ms > %0.2f ms, you might want to investigate this to improve latency...",
+ (double) (real_sleep - rtpoll_sleep) / PA_USEC_PER_MSEC,
+ (double) (u->tsched_watermark_usec) / PA_USEC_PER_MSEC);
}
if (u->source->flags & PA_SOURCE_DEFERRED_VOLUME)