diff options
| author | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-22 16:46:27 +0000 |
|---|---|---|
| committer | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-22 16:46:27 +0000 |
| commit | 90161c92ddbccbdf9e28d43c75bb7e64ddfbecd0 (patch) | |
| tree | ac53454c122465d174ec6a47a56e72505d7b09b8 /apps/playback.c | |
| parent | 4f6375ca175b34623e5c737cd36dbd62aad58fd2 (diff) | |
| download | rockbox-90161c92ddbccbdf9e28d43c75bb7e64ddfbecd0.zip rockbox-90161c92ddbccbdf9e28d43c75bb7e64ddfbecd0.tar.gz rockbox-90161c92ddbccbdf9e28d43c75bb7e64ddfbecd0.tar.bz2 rockbox-90161c92ddbccbdf9e28d43c75bb7e64ddfbecd0.tar.xz | |
It's now possible to select the crossfading mode: "Off, Crossfade,
Mix". If set to mix, no fading is applied but tracks are mixed up.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7224 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/playback.c')
| -rw-r--r-- | apps/playback.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/playback.c b/apps/playback.c index 7aaff01..f502d82 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1175,7 +1175,8 @@ void audio_update_trackinfo(void) cur_ti->start_pos = 0; ci.taginfo_ready = (bool *)&cur_ti->taginfo_ready; if (pcmbuf_is_crossfade_enabled() && !pcmbuf_is_crossfade_active()) { - pcmbuf_crossfade_init(); + pcmbuf_crossfade_init(new_track ? CROSSFADE_MODE_CROSSFADE + : global_settings.crossfade); codec_track_changed(); } else { pcmbuf_add_event(codec_track_changed); @@ -1393,7 +1394,7 @@ void audio_thread(void) ci.stop_codec = true; ci.reload_codec = false; ci.seek_time = 0; - pcmbuf_crossfade_init(); + pcmbuf_crossfade_init(CROSSFADE_MODE_CROSSFADE); while (codec_loaded) yield(); audio_play_start((int)ev.data); @@ -1771,19 +1772,22 @@ void audio_set_buffer_margin(int setting) set_filebuf_watermark(buffer_margin); } -void audio_set_crossfade_amount(int seconds) +/* Set crossfade & PCM buffer length. */ +void audio_set_crossfade(int type) { long size; bool was_playing = playing; int offset = 0; + int lookup[] = {1, 2, 4, 6, 8, 10, 12, 14}; + int seconds = lookup[global_settings.crossfade_duration]; /* Store the track resume position */ if (playing) offset = cur_ti->id3.offset; - /* Multiply by two to get the real value (0s, 2s, 4s, ...) */ - seconds *= 2; - + if (type == CROSSFADE_MODE_OFF) + seconds = 0; + /* Buffer has to be at least 2s long. */ seconds += 2; logf("buf len: %d", seconds); |