summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2005-12-15 18:44:59 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2005-12-15 18:44:59 +0000
commit07fd5d9534501ff594bc8cc6b260a41e790a7154 (patch)
tree2d7baf59f35f6eb4c153d3580216162d5522f5b2
parent6d89649c42d6923a9213d5682e6c2269e6da72a7 (diff)
downloadrockbox-07fd5d9534501ff594bc8cc6b260a41e790a7154.zip
rockbox-07fd5d9534501ff594bc8cc6b260a41e790a7154.tar.gz
rockbox-07fd5d9534501ff594bc8cc6b260a41e790a7154.tar.bz2
rockbox-07fd5d9534501ff594bc8cc6b260a41e790a7154.tar.xz
Fixed a division by zero problem with simulator when crossfade is
disabled. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8245 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/pcmbuf.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c
index 474d09e..4277dca 100644
--- a/apps/pcmbuf.c
+++ b/apps/pcmbuf.c
@@ -442,7 +442,9 @@ static void crossfade_start(void)
break ;
case CFM_FLUSH:
- crossfade_rem = bytesleft /2;
+ crossfade_rem = (bytesleft - CHUNK_SIZE) /2;
+ crossfade_fade_in_rem = 0;
+ crossfade_fade_in_amount = 0;
break ;
}
@@ -537,9 +539,12 @@ int crossfade(short *buf, const short *buf2, int length)
crossfade_rem -= size;
if (crossfade_rem <= 0)
{
- size_insert = MAX(0, MIN(crossfade_fade_in_rem, length - size));
- fade_insert(&buf2[size], size_insert*2);
- crossfade_fade_in_rem -= size_insert;
+ if (crossfade_fade_in_rem > 0 && crossfade_fade_in_amount > 0)
+ {
+ size_insert = MAX(0, MIN(crossfade_fade_in_rem, length - size));
+ fade_insert(&buf2[size], size_insert*2);
+ crossfade_fade_in_rem -= size_insert;
+ }
if (crossfade_fade_in_rem <= 0)
crossfade_active = false;