[pulseaudio-discuss] Alternative smoother implementation
Arun Raghavan
arun at arunraghavan.net
Fri Feb 17 13:23:11 UTC 2017
On Fri, 17 Feb 2017, at 02:34 PM, Georg Chini wrote:
> Hi,
>
> to get even better latency stability of module-loopback, I am still
> working on an alternative
> smoother implementation. I am at the point where I have created a set of
> functions similar
> to the original implementation:
>
>
> /* Create new smoother */
> pa_smoother_2* pa_smoother_2_new(pa_usec_t window, size_t frame_size,
> uint32_t rate);
> /* Free the smoother */
> void pa_smoother_2_free(pa_smoother_2* s);
> /* Reset the smoother */
> void pa_smoother_2_reset(pa_smoother_2 *s);
>
> /* Add a new data point and re-calculate time conversion factor */
> void pa_smoother_2_put(pa_smoother_2 *s, pa_usec_t time_stamp, int64_t
> byte_count);
>
> /* Calculate the current latency. For a source, the sign must be inverted
> */
> int64_t pa_smoother_2_get_delay(pa_smoother_2 *s, pa_usec_t time_stamp,
> size_t byte_count);
> /* Convert a time interval from sound card time to system time */
> pa_usec_t pa_smoother_2_get(pa_smoother_2 *s, pa_usec_t time_stamp);
> /* Convert system time to sound card time */
> pa_usec_t pa_smoother_2_translate(pa_smoother_2 *s, pa_usec_t
> time_difference);
>
> /* Enable USB hack */
> void pa_smoother_2_usb_hack_enable(pa_smoother_2 *s, bool enable,
> pa_usec_t offset);
> /* Set user time offset */
> void pa_smoother_2_set_time_offset(pa_smoother_2 *s, pa_usec_t offset);
>
>
> My question is how I should integrate this with the current code. I see
> two possibilities:
> - Replace the old smoother wherever it is used
> - Add a parameter to daemon.conf (use-alternative-smoother) so that you
> can choose
> between the two implementations.
> Probably the second option is preferable. What do you think? Any better
> idea?
Is there a way to characterise/test how the implementations compare?
Maybe a compile-time/#ifdef selection is sufficient as a first pass, and
then we can figure out how to proceed. I'd imagine we just want one
implementation and not have the complexity of maintaining two.
-- Arun
More information about the pulseaudio-discuss
mailing list