Diffstat (limited to 'core/multimedia/opieplayer/libmad/timer.c') (more/less context) (show whitespace changes)
-rw-r--r-- | core/multimedia/opieplayer/libmad/timer.c | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/core/multimedia/opieplayer/libmad/timer.c b/core/multimedia/opieplayer/libmad/timer.c index b30680c..299fe0b 100644 --- a/core/multimedia/opieplayer/libmad/timer.c +++ b/core/multimedia/opieplayer/libmad/timer.c @@ -1,3 +1,3 @@ /* - * mad - MPEG audio decoder + * libmad - MPEG audio decoder library * Copyright (C) 2000-2001 Robert Leslie @@ -28,3 +28,6 @@ # include <stdio.h> + +# ifdef HAVE_ASSERT_H # include <assert.h> +# endif @@ -152,18 +155,16 @@ unsigned long scale_rational(unsigned long numer, unsigned long denom, * NAME: timer->set() - * DESCRIPTION: set timer to specific value + * DESCRIPTION: set timer to specific (positive) value */ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, - unsigned long fraction, unsigned long fracparts) + unsigned long numer, unsigned long denom) { timer->seconds = seconds; - - if (fraction == 0) - fracparts = 0; - else if (fracparts == 0) { - fracparts = fraction; - fraction = 1; + if (numer >= denom && denom > 0) { + timer->seconds += numer / denom; + numer %= denom; } - switch (fracparts) { + switch (denom) { case 0: + case 1: timer->fraction = 0; @@ -172,3 +173,7 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case MAD_TIMER_RESOLUTION: - timer->fraction = fraction; + timer->fraction = numer; + break; + + case 1000: + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 1000); break; @@ -176,3 +181,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case 8000: - timer->fraction = fraction * (MAD_TIMER_RESOLUTION / 8000); + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 8000); break; @@ -180,3 +185,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case 11025: - timer->fraction = fraction * (MAD_TIMER_RESOLUTION / 11025); + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 11025); break; @@ -184,3 +189,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case 12000: - timer->fraction = fraction * (MAD_TIMER_RESOLUTION / 12000); + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 12000); break; @@ -188,3 +193,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case 16000: - timer->fraction = fraction * (MAD_TIMER_RESOLUTION / 16000); + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 16000); break; @@ -192,3 +197,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case 22050: - timer->fraction = fraction * (MAD_TIMER_RESOLUTION / 22050); + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 22050); break; @@ -196,3 +201,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case 24000: - timer->fraction = fraction * (MAD_TIMER_RESOLUTION / 24000); + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 24000); break; @@ -200,3 +205,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case 32000: - timer->fraction = fraction * (MAD_TIMER_RESOLUTION / 32000); + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 32000); break; @@ -204,3 +209,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case 44100: - timer->fraction = fraction * (MAD_TIMER_RESOLUTION / 44100); + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 44100); break; @@ -208,3 +213,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, case 48000: - timer->fraction = fraction * (MAD_TIMER_RESOLUTION / 48000); + timer->fraction = numer * (MAD_TIMER_RESOLUTION / 48000); break; @@ -212,4 +217,3 @@ void mad_timer_set(mad_timer_t *timer, unsigned long seconds, default: - timer->fraction = - scale_rational(fraction, fracparts, MAD_TIMER_RESOLUTION); + timer->fraction = scale_rational(numer, denom, MAD_TIMER_RESOLUTION); break; @@ -245,4 +249,4 @@ void mad_timer_multiply(mad_timer_t *timer, signed long scalar) if (scalar < 0) { - mad_timer_negate(timer); factor = -scalar; + mad_timer_negate(timer); } @@ -319,3 +323,3 @@ signed long mad_timer_count(mad_timer_t timer, enum mad_units units) */ -unsigned long mad_timer_fraction(mad_timer_t timer, unsigned long fracparts) +unsigned long mad_timer_fraction(mad_timer_t timer, unsigned long denom) { @@ -323,3 +327,3 @@ unsigned long mad_timer_fraction(mad_timer_t timer, unsigned long fracparts) - switch (fracparts) { + switch (denom) { case 0: @@ -331,3 +335,3 @@ unsigned long mad_timer_fraction(mad_timer_t timer, unsigned long fracparts) default: - return scale_rational(timer.fraction, MAD_TIMER_RESOLUTION, fracparts); + return scale_rational(timer.fraction, MAD_TIMER_RESOLUTION, denom); } @@ -379,8 +383,8 @@ void mad_timer_string(mad_timer_t timer, { - unsigned long fracparts; + unsigned long denom; - fracparts = MAD_TIMER_RESOLUTION / fracunits; + denom = MAD_TIMER_RESOLUTION / fracunits; - frac = timer.fraction / fracparts; - sub = scale_rational(timer.fraction % fracparts, fracparts, subparts); + frac = timer.fraction / denom; + sub = scale_rational(timer.fraction % denom, denom, subparts); } |