From 0b4c7ad4befa8195568ee74c1e0f6695689e9585 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Fri, 24 Feb 2012 15:51:49 -0600 Subject: [PATCH] hairplay: various small code cleanups --- hairtunes.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hairtunes.c b/hairtunes.c index ba6687af..181dd031 100644 --- a/hairtunes.c +++ b/hairtunes.c @@ -551,11 +551,11 @@ static int init_rtp(void) { static inline short dithered_vol(short sample) { static short rand_a, rand_b; long out; - rand_b = rand_a; - rand_a = rand() & 0xffff; out = (long)sample * fix_volume; if (fix_volume < 0x10000) { + rand_b = rand_a; + rand_a = rand() & 0xffff; out += rand_a; out -= rand_b; } @@ -616,6 +616,7 @@ static void bf_est_reset(short fill) { bf_est_err = bf_last_err = 0; desired_fill = fill_count = 0; } + static void bf_est_update(short fill) { if (fill_count < 1000) { desired_fill += (double)fill/1000.0; @@ -629,12 +630,14 @@ static void bf_est_update(short fill) { double buf_delta = fill - desired_fill; bf_est_err = biquad_filt(&bf_err_lpf, buf_delta); double err_deriv = biquad_filt(&bf_err_deriv_lpf, bf_est_err - bf_last_err); + double adj_error = CONTROL_A * bf_est_err; - bf_est_drift = biquad_filt(&bf_drift_lpf, CONTROL_B*(bf_est_err*CONTROL_A + err_deriv) + bf_est_drift); + bf_est_drift = biquad_filt(&bf_drift_lpf, CONTROL_B*(adj_error + err_deriv) + bf_est_drift); if (debug) - fprintf(stderr, "bf %d err %f drift %f desiring %f ed %f estd %f\r", fill, bf_est_err, bf_est_drift, desired_fill, err_deriv, err_deriv + CONTROL_A*bf_est_err); - bf_playback_rate = 1.0 + CONTROL_A*bf_est_err + bf_est_drift; + fprintf(stderr, "bf %d err %f drift %f desiring %f ed %f estd %f\n", + fill, bf_est_err, bf_est_drift, desired_fill, err_deriv, err_deriv + adj_error); + bf_playback_rate = 1.0 + adj_error + bf_est_drift; bf_last_err = bf_est_err; } @@ -672,7 +675,8 @@ static short *buffer_get_frame(void) { buf_fill = ab_write - ab_read; bf_est_update(buf_fill); - // check if t+16, t+32, t+64, t+128, ... (START_FILL / 2) packets have arrived... last-chance resend + // check if t+16, t+32, t+64, t+128, ... (START_FILL / 2) + // packets have arrived... last-chance resend if (!ab_buffering) { for (i = 16; i < (START_FILL / 2); i = (i * 2)) { next = ab_read + i;