diff options
author | Miika Pekkarinen <miipekk@ihme.org> | 2006-01-27 16:25:44 +0000 |
---|---|---|
committer | Miika Pekkarinen <miipekk@ihme.org> | 2006-01-27 16:25:44 +0000 |
commit | a4f8d1c621ee1ad1e9649e2e84dddac3108d73b6 (patch) | |
tree | b68c7e30eccd593e0514061577cb411cfc82707d | |
parent | b7c29193f99537e4def128cc2dcf4d36edc5ac26 (diff) | |
download | rockbox-a4f8d1c621ee1ad1e9649e2e84dddac3108d73b6.tar.gz rockbox-a4f8d1c621ee1ad1e9649e2e84dddac3108d73b6.zip |
Don't use crossfader mix mode when skipping tracks manually.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8470 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/pcmbuf.c | 10 | ||||
-rw-r--r-- | apps/pcmbuf.h | 2 | ||||
-rw-r--r-- | apps/playback.c | 12 |
3 files changed, 14 insertions, 10 deletions
diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c index e21f735bbb..f184672bd1 100644 --- a/apps/pcmbuf.c +++ b/apps/pcmbuf.c | |||
@@ -233,7 +233,7 @@ bool pcmbuf_is_lowdata(void) | |||
233 | return false; | 233 | return false; |
234 | } | 234 | } |
235 | 235 | ||
236 | bool pcmbuf_crossfade_init(void) | 236 | bool pcmbuf_crossfade_init(bool manual_skip) |
237 | { | 237 | { |
238 | if (pcmbuf_size - audiobuffer_free < CHUNK_SIZE * 8 | 238 | if (pcmbuf_size - audiobuffer_free < CHUNK_SIZE * 8 |
239 | || !pcmbuf_is_crossfade_enabled() | 239 | || !pcmbuf_is_crossfade_enabled() |
@@ -244,8 +244,12 @@ bool pcmbuf_crossfade_init(void) | |||
244 | logf("pcmbuf_crossfade_init"); | 244 | logf("pcmbuf_crossfade_init"); |
245 | pcmbuf_boost(true); | 245 | pcmbuf_boost(true); |
246 | 246 | ||
247 | crossfade_mode = global_settings.crossfade_fade_out_mixmode | 247 | /* Don't enable mix mode when skipping tracks manually. */ |
248 | ? CFM_MIX : CFM_CROSSFADE; | 248 | if (manual_skip) |
249 | crossfade_mode = CFM_CROSSFADE; | ||
250 | else | ||
251 | crossfade_mode = global_settings.crossfade_fade_out_mixmode | ||
252 | ? CFM_MIX : CFM_CROSSFADE; | ||
249 | crossfade_init = true; | 253 | crossfade_init = true; |
250 | 254 | ||
251 | return true; | 255 | return true; |
diff --git a/apps/pcmbuf.h b/apps/pcmbuf.h index 7e7ecf1d75..afc62021aa 100644 --- a/apps/pcmbuf.h +++ b/apps/pcmbuf.h | |||
@@ -41,7 +41,7 @@ void pcmbuf_set_boost_mode(bool state); | |||
41 | bool pcmbuf_is_lowdata(void); | 41 | bool pcmbuf_is_lowdata(void); |
42 | void pcmbuf_flush_audio(void); | 42 | void pcmbuf_flush_audio(void); |
43 | void pcmbuf_play_start(void); | 43 | void pcmbuf_play_start(void); |
44 | bool pcmbuf_crossfade_init(void); | 44 | bool pcmbuf_crossfade_init(bool manual_skip); |
45 | void pcmbuf_add_event(void (*event_handler)(void)); | 45 | void pcmbuf_add_event(void (*event_handler)(void)); |
46 | void pcmbuf_set_position_callback(void (*callback)(int size)); | 46 | void pcmbuf_set_position_callback(void (*callback)(int size)); |
47 | unsigned int pcmbuf_get_latency(void); | 47 | unsigned int pcmbuf_get_latency(void); |
diff --git a/apps/playback.c b/apps/playback.c index c535e30c8a..3eda695b39 100644 --- a/apps/playback.c +++ b/apps/playback.c | |||
@@ -1510,14 +1510,14 @@ static void audio_update_trackinfo(void) | |||
1510 | /* Manual track change (always crossfade or flush audio). */ | 1510 | /* Manual track change (always crossfade or flush audio). */ |
1511 | if (new_track) | 1511 | if (new_track) |
1512 | { | 1512 | { |
1513 | pcmbuf_crossfade_init(); | 1513 | pcmbuf_crossfade_init(true); |
1514 | codec_track_changed(); | 1514 | codec_track_changed(); |
1515 | } | 1515 | } |
1516 | 1516 | ||
1517 | /* Automatic track change with crossfade. */ | 1517 | /* Automatic track change with crossfade. */ |
1518 | else if (pcmbuf_is_crossfade_enabled() && !pcmbuf_is_crossfade_active()) | 1518 | else if (pcmbuf_is_crossfade_enabled() && !pcmbuf_is_crossfade_active()) |
1519 | { | 1519 | { |
1520 | pcmbuf_crossfade_init(); | 1520 | pcmbuf_crossfade_init(false); |
1521 | codec_track_changed(); | 1521 | codec_track_changed(); |
1522 | } | 1522 | } |
1523 | 1523 | ||
@@ -1574,7 +1574,7 @@ static int skip_next_track(bool inside_codec_thread) | |||
1574 | stop_codec_flush(); | 1574 | stop_codec_flush(); |
1575 | } | 1575 | } |
1576 | else if (pcmbuf_is_crossfade_enabled()) | 1576 | else if (pcmbuf_is_crossfade_enabled()) |
1577 | pcmbuf_crossfade_init(); | 1577 | pcmbuf_crossfade_init(new_track != 0); |
1578 | 1578 | ||
1579 | queue_post(&audio_queue, Q_AUDIO_PLAY, 0); | 1579 | queue_post(&audio_queue, Q_AUDIO_PLAY, 0); |
1580 | return SKIP_OK_DISK; | 1580 | return SKIP_OK_DISK; |
@@ -1611,7 +1611,7 @@ static int skip_previous_track(bool inside_codec_thread) | |||
1611 | /* Stop playback. */ | 1611 | /* Stop playback. */ |
1612 | /* FIXME: Only stop playback if disk is not spinning! */ | 1612 | /* FIXME: Only stop playback if disk is not spinning! */ |
1613 | if (pcmbuf_is_crossfade_enabled()) | 1613 | if (pcmbuf_is_crossfade_enabled()) |
1614 | pcmbuf_crossfade_init(); | 1614 | pcmbuf_crossfade_init(true); |
1615 | else if (inside_codec_thread) | 1615 | else if (inside_codec_thread) |
1616 | pcmbuf_play_stop(); | 1616 | pcmbuf_play_stop(); |
1617 | else | 1617 | else |
@@ -1747,7 +1747,7 @@ static void initiate_track_change(int peek_index) | |||
1747 | /* Detect if disk is spinning or already loading. */ | 1747 | /* Detect if disk is spinning or already loading. */ |
1748 | if (filling || ci.reload_codec || !audio_codec_loaded) { | 1748 | if (filling || ci.reload_codec || !audio_codec_loaded) { |
1749 | if (pcmbuf_is_crossfade_enabled()) | 1749 | if (pcmbuf_is_crossfade_enabled()) |
1750 | pcmbuf_crossfade_init(); | 1750 | pcmbuf_crossfade_init(true); |
1751 | else | 1751 | else |
1752 | pcmbuf_play_stop(); | 1752 | pcmbuf_play_stop(); |
1753 | ci.stop_codec = true; | 1753 | ci.stop_codec = true; |
@@ -2158,7 +2158,7 @@ void audio_play(int offset) | |||
2158 | { | 2158 | { |
2159 | ci.stop_codec = true; | 2159 | ci.stop_codec = true; |
2160 | sleep(1); | 2160 | sleep(1); |
2161 | pcmbuf_crossfade_init(); | 2161 | pcmbuf_crossfade_init(true); |
2162 | } | 2162 | } |
2163 | else | 2163 | else |
2164 | { | 2164 | { |