summaryrefslogtreecommitdiff
path: root/core/multimedia/opieplayer/libmad/timer.c
Side-by-side diff
Diffstat (limited to 'core/multimedia/opieplayer/libmad/timer.c') (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/libmad/timer.c66
1 files changed, 35 insertions, 31 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>
-# include <assert.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);
}