1
0
Fork 0
forked from len0rd/rockbox

Accept FS#5344 by Mike Schmitt. Add a "shuffle and track skip" option to

crossfade.
Bumps config versino, so SAVE SETTINGS before updating.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11811 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jonathan Gordon 2006-12-19 01:26:37 +00:00
parent 89990b0ca8
commit 3bceded793
6 changed files with 45 additions and 9 deletions

View file

@ -10372,3 +10372,18 @@
*: "Properties"
</voice>
</phrase>
<phrase>
id: LANG_SHUFFLE_TRACKSKIP
desc: in settings_menu
user:
<source>
*: "Shuffle and Track Skip"
</source>
<dest>
*: "Shuffle and Track Skip"
</dest>
<voice>
*: "Shuffle and Track Skip"
</voice>
</phrase>
<phrase>

View file

@ -1819,10 +1819,27 @@ static void codec_track_skip_done(bool was_manual)
}
/* Automatic track change w/crossfade, if not in "Track Skip Only" mode. */
else if (pcmbuf_is_crossfade_enabled() && !pcmbuf_is_crossfade_active()
&& global_settings.crossfade != 2)
&& global_settings.crossfade != CROSSFADE_ENABLE_TRACKSKIP )
{
pcmbuf_crossfade_init(false);
codec_track_changed();
if ( global_settings.crossfade
== CROSSFADE_ENABLE_SHUFFLE_AND_TRACKSKIP )
{
if (global_settings.playlist_shuffle) /* shuffle mode is on, so crossfade: */
{
pcmbuf_crossfade_init(false);
codec_track_changed();
}
else /* shuffle mode is off, so do a gapless track change */
{
pcmbuf_set_position_callback(codec_pcmbuf_position_callback); /* Gapless playback */
pcmbuf_set_event_handler(codec_pcmbuf_track_changed_callback); /* copied from below */
}
}
else /* normal crossfade: */
{
pcmbuf_crossfade_init(false);
codec_track_changed();
}
}
/* Gapless playback. */
else

View file

@ -100,7 +100,7 @@ const char rec_base_directory[] = REC_BASE_DIR;
#include "eq_menu.h"
#endif
#define CONFIG_BLOCK_VERSION 57
#define CONFIG_BLOCK_VERSION 58
#define CONFIG_BLOCK_SIZE 512
#define RTC_BLOCK_SIZE 44
@ -581,7 +581,7 @@ static const struct bit_entry hd_bits[] =
{1, S_O(replaygain_noclip), false, "replaygain noclip", off_on },
{8 | SIGNED, S_O(replaygain_preamp), 0, "replaygain preamp", NULL },
{2, S_O(beep), 0, "beep", "off,weak,moderate,strong" },
{2, S_O(crossfade), 0, "crossfade", "off,shuffle,track skip,always"},
{3, S_O(crossfade), 0, "crossfade", "off,shuffle,track skip,shuffle and track skip,always"},
{3, S_O(crossfade_fade_in_delay), 0, "crossfade fade in delay", NULL},
{3, S_O(crossfade_fade_out_delay), 0, "crossfade fade out delay", NULL},
{4, S_O(crossfade_fade_in_duration), 0, "crossfade fade in duration", NULL},

View file

@ -87,8 +87,10 @@
#define TRIG_DURATION_COUNT 13
extern const char * const trig_durations[TRIG_DURATION_COUNT];
#define CROSSFADE_ENABLE_SHUFFLE 1
#define CROSSFADE_ENABLE_ALWAYS 2
#define CROSSFADE_ENABLE_SHUFFLE 1
#define CROSSFADE_ENABLE_TRACKSKIP 2
#define CROSSFADE_ENABLE_SHUFFLE_AND_TRACKSKIP 3
#define CROSSFADE_ENABLE_ALWAYS 4
#define FOLDER_ADVANCE_OFF 0
#define FOLDER_ADVANCE_NEXT 1
@ -144,7 +146,7 @@ struct user_settings
bool superbass; /* true/false */
#if CONFIG_CODEC == SWCODEC
int crossfade; /* Enable crossfade (0=off,1=shuffle,2=always) */
int crossfade; /* Enable crossfade (0=off,1=shuffle,2=trackskip,3=shuff&trackskip,4=always) */
int crossfade_fade_in_delay; /* Fade in delay (0-15s) */
int crossfade_fade_out_delay; /* Fade out delay (0-15s) */
int crossfade_fade_in_duration; /* Fade in duration (0-15s) */

View file

@ -1514,13 +1514,14 @@ static bool crossfade(void)
{ STR(LANG_OFF) },
{ STR(LANG_SHUFFLE) },
{ STR(LANG_TRACKSKIP) },
{ STR(LANG_SHUFFLE_TRACKSKIP) },
{ STR(LANG_ALWAYS) },
};
bool ret;
ret=set_option( str(LANG_CROSSFADE_ENABLE),
&global_settings.crossfade, INT, names, 4, NULL);
&global_settings.crossfade, INT, names, 5, NULL);
audio_set_crossfade(global_settings.crossfade);
return ret;
}

View file

@ -255,3 +255,4 @@ Stephane Doyon
Robert Carboneau
Ye Wei
Bryan Childs
Mike Schmitt