From c1d37fc841b5d334dc30fc8b70504b084f8e1fe2 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sun, 6 Mar 2022 00:58:58 +0000 Subject: [PATCH] dvd-sector-copy.c: Allow averaging `alpha' to be set as a parameter. --- dvd-sector-copy.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dvd-sector-copy.c b/dvd-sector-copy.c index bed3cf6..76dfa13 100644 --- a/dvd-sector-copy.c +++ b/dvd-sector-copy.c @@ -313,6 +313,8 @@ static void render_badblock_progress(struct progress_item *item, progress_shownotice(render, bg, 7); } +static double alpha = 0.1; + static void update_progress(secaddr pos) { struct timeval now; @@ -321,8 +323,7 @@ static void update_progress(secaddr pos) gettimeofday(&now, 0); t = tvdiff(&last_time, &now); -#define ALPHA 0.1 -#define BETA (1 - ALPHA) +#define BETA (1 - alpha) if (t) { g = wcount ? pow(BETA, t) : 0.0; f = (1 - g)/(1 - BETA); @@ -332,7 +333,6 @@ static void update_progress(secaddr pos) last_time = now; last_pos = pos; } -#undef ALPHA #undef BETA throbix++; if (!throbber[throbix]) throbix = 0; @@ -1035,6 +1035,8 @@ int main(int argc, char *argv[]) step_max = parse_int(&p, 1, SECLIMIT - 1, "step maximum"); else if (SKIP_PREFIX("retry")) max_retries = parse_int(&p, 0, INT_MAX, "retries"); + else if (SKIP_PREFIX("alpha")) + alpha = parse_float(&p, 0, 1, "average decay factor"); else if (SKIP_PREFIX("_badwait")) bad_block_delay = parse_float(&p, 0, DBL_MAX, "bad-block delay"); else if (SKIP_PREFIX("_blkwait")) -- 2.11.0