mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-21 05:57:39 -04:00
Remove the ID3 tag version priority setting on the grounds of it being pretty pointless. ID3v2 tags are superior to ID3v1 tags, and needs less seeking around to find.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14750 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
547cffb90b
commit
294ec1d110
19 changed files with 38 additions and 73 deletions
|
@ -2040,44 +2040,44 @@
|
||||||
</phrase>
|
</phrase>
|
||||||
<phrase>
|
<phrase>
|
||||||
id: LANG_ID3_ORDER
|
id: LANG_ID3_ORDER
|
||||||
desc: in playback settings screen
|
desc: DEPRECATED
|
||||||
user:
|
user:
|
||||||
<source>
|
<source>
|
||||||
*: "ID3 Tag Priority"
|
*: ""
|
||||||
</source>
|
</source>
|
||||||
<dest>
|
<dest>
|
||||||
*: "ID3 Tag Priority"
|
*: ""
|
||||||
</dest>
|
</dest>
|
||||||
<voice>
|
<voice>
|
||||||
*: "ID3 Tag Priority"
|
*: ""
|
||||||
</voice>
|
</voice>
|
||||||
</phrase>
|
</phrase>
|
||||||
<phrase>
|
<phrase>
|
||||||
id: LANG_ID3_V1_FIRST
|
id: LANG_ID3_V1_FIRST
|
||||||
desc: in playback settings screen
|
desc: DEPRECATED
|
||||||
user:
|
user:
|
||||||
<source>
|
<source>
|
||||||
*: "V1 then V2"
|
*: ""
|
||||||
</source>
|
</source>
|
||||||
<dest>
|
<dest>
|
||||||
*: "V1 then V2"
|
*: ""
|
||||||
</dest>
|
</dest>
|
||||||
<voice>
|
<voice>
|
||||||
*: "Version 1 then version 2"
|
*: ""
|
||||||
</voice>
|
</voice>
|
||||||
</phrase>
|
</phrase>
|
||||||
<phrase>
|
<phrase>
|
||||||
id: LANG_ID3_V2_FIRST
|
id: LANG_ID3_V2_FIRST
|
||||||
desc: in playback settings screen
|
desc: DEPRECATED
|
||||||
user:
|
user:
|
||||||
<source>
|
<source>
|
||||||
*: "V2 then V1"
|
*: ""
|
||||||
</source>
|
</source>
|
||||||
<dest>
|
<dest>
|
||||||
*: "V2 then V1"
|
*: ""
|
||||||
</dest>
|
</dest>
|
||||||
<voice>
|
<voice>
|
||||||
*: "Version 2 then version 1"
|
*: ""
|
||||||
</voice>
|
</voice>
|
||||||
</phrase>
|
</phrase>
|
||||||
<phrase>
|
<phrase>
|
||||||
|
|
|
@ -129,7 +129,6 @@ MENUITEM_SETTING(beep, &global_settings.beep ,NULL);
|
||||||
#ifdef HAVE_SPDIF_POWER
|
#ifdef HAVE_SPDIF_POWER
|
||||||
MENUITEM_SETTING(spdif_enable, &global_settings.spdif_enable, NULL);
|
MENUITEM_SETTING(spdif_enable, &global_settings.spdif_enable, NULL);
|
||||||
#endif
|
#endif
|
||||||
MENUITEM_SETTING(id3_v1_first, &global_settings.id3_v1_first, NULL);
|
|
||||||
MENUITEM_SETTING(next_folder, &global_settings.next_folder, NULL);
|
MENUITEM_SETTING(next_folder, &global_settings.next_folder, NULL);
|
||||||
int audioscrobbler_callback(int action,const struct menu_item_ex *this_item)
|
int audioscrobbler_callback(int action,const struct menu_item_ex *this_item)
|
||||||
{
|
{
|
||||||
|
@ -187,7 +186,7 @@ MAKE_MENU(playback_menu_item,ID2P(LANG_PLAYBACK),0,
|
||||||
#ifdef HAVE_SPDIF_POWER
|
#ifdef HAVE_SPDIF_POWER
|
||||||
&spdif_enable,
|
&spdif_enable,
|
||||||
#endif
|
#endif
|
||||||
&id3_v1_first, &next_folder, &audioscrobbler, &cuesheet
|
&next_folder, &audioscrobbler, &cuesheet
|
||||||
#ifdef HAVE_HEADPHONE_DETECTION
|
#ifdef HAVE_HEADPHONE_DETECTION
|
||||||
,&unplug_menu
|
,&unplug_menu
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -93,8 +93,7 @@ unsigned int probe_file_format(const char *filename)
|
||||||
/* Get metadata for track - return false if parsing showed problems with the
|
/* Get metadata for track - return false if parsing showed problems with the
|
||||||
* file that would prevent playback.
|
* file that would prevent playback.
|
||||||
*/
|
*/
|
||||||
bool get_metadata(struct mp3entry* id3, int fd, const char* trackname,
|
bool get_metadata(struct mp3entry* id3, int fd, const char* trackname)
|
||||||
bool v1first)
|
|
||||||
{
|
{
|
||||||
#if CONFIG_CODEC == SWCODEC
|
#if CONFIG_CODEC == SWCODEC
|
||||||
unsigned char* buf;
|
unsigned char* buf;
|
||||||
|
@ -111,7 +110,7 @@ bool get_metadata(struct mp3entry* id3, int fd, const char* trackname,
|
||||||
case AFMT_MPA_L1:
|
case AFMT_MPA_L1:
|
||||||
case AFMT_MPA_L2:
|
case AFMT_MPA_L2:
|
||||||
case AFMT_MPA_L3:
|
case AFMT_MPA_L3:
|
||||||
if (!get_mp3_metadata(fd, id3, trackname, v1first))
|
if (!get_mp3_metadata(fd, id3, trackname))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,7 @@
|
||||||
#include "playback.h"
|
#include "playback.h"
|
||||||
|
|
||||||
unsigned int probe_file_format(const char *filename);
|
unsigned int probe_file_format(const char *filename);
|
||||||
bool get_metadata(struct mp3entry* id3, int fd, const char* trackname,
|
bool get_metadata(struct mp3entry* id3, int fd, const char* trackname);
|
||||||
bool v1first);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -263,7 +263,6 @@ static size_t conf_watermark = 0; /* Level to trigger filebuf fill (A/C) FIXME *
|
||||||
static size_t conf_filechunk = 0; /* Largest chunk the codec accepts (A/C) FIXME */
|
static size_t conf_filechunk = 0; /* Largest chunk the codec accepts (A/C) FIXME */
|
||||||
static size_t conf_preseek = 0; /* Codec pre-seek margin (A/C) FIXME */
|
static size_t conf_preseek = 0; /* Codec pre-seek margin (A/C) FIXME */
|
||||||
static size_t buffer_margin = 0; /* Buffer margin aka anti-skip buffer (A/C-) */
|
static size_t buffer_margin = 0; /* Buffer margin aka anti-skip buffer (A/C-) */
|
||||||
static bool v1first = false; /* ID3 data control, true if V1 then V2 (A) */
|
|
||||||
#if MEM > 8
|
#if MEM > 8
|
||||||
static size_t high_watermark = 0; /* High watermark for rebuffer (A/V/other) */
|
static size_t high_watermark = 0; /* High watermark for rebuffer (A/V/other) */
|
||||||
#endif
|
#endif
|
||||||
|
@ -395,11 +394,6 @@ bool mp3_is_playing(void)
|
||||||
return voice_is_playing;
|
return voice_is_playing;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mpeg_id3_options(bool _v1first)
|
|
||||||
{
|
|
||||||
v1first = _v1first;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If voice could be swapped out - wait for it to return
|
/* If voice could be swapped out - wait for it to return
|
||||||
* Used by buffer claming functions.
|
* Used by buffer claming functions.
|
||||||
*/
|
*/
|
||||||
|
@ -2744,7 +2738,7 @@ static bool audio_load_track(int offset, bool start_play, bool rebuffer)
|
||||||
/* Get track metadata if we don't already have it. */
|
/* Get track metadata if we don't already have it. */
|
||||||
if (!tracks[track_widx].taginfo_ready)
|
if (!tracks[track_widx].taginfo_ready)
|
||||||
{
|
{
|
||||||
if (get_metadata(&(tracks[track_widx].id3),current_fd,trackname,v1first))
|
if (get_metadata(&(tracks[track_widx].id3),current_fd,trackname))
|
||||||
{
|
{
|
||||||
tracks[track_widx].taginfo_ready = true;
|
tracks[track_widx].taginfo_ready = true;
|
||||||
if (start_play)
|
if (start_play)
|
||||||
|
@ -2886,7 +2880,7 @@ static bool audio_read_next_metadata(void)
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
status = get_metadata(&(tracks[next_idx].id3),fd,trackname,v1first);
|
status = get_metadata(&(tracks[next_idx].id3),fd,trackname);
|
||||||
/* Preload the glyphs in the tags */
|
/* Preload the glyphs in the tags */
|
||||||
if (status)
|
if (status)
|
||||||
{
|
{
|
||||||
|
|
|
@ -573,7 +573,7 @@ struct plugin_api {
|
||||||
#endif
|
#endif
|
||||||
struct user_settings* global_settings;
|
struct user_settings* global_settings;
|
||||||
struct system_status *global_status;
|
struct system_status *global_status;
|
||||||
bool (*mp3info)(struct mp3entry *entry, const char *filename, bool v1first);
|
bool (*mp3info)(struct mp3entry *entry, const char *filename);
|
||||||
int (*count_mp3_frames)(int fd, int startpos, int filesize,
|
int (*count_mp3_frames)(int fd, int startpos, int filesize,
|
||||||
void (*progressfunc)(int));
|
void (*progressfunc)(int));
|
||||||
int (*create_xing_header)(int fd, long startpos, long filesize,
|
int (*create_xing_header)(int fd, long startpos, long filesize,
|
||||||
|
@ -620,8 +620,7 @@ struct plugin_api {
|
||||||
|
|
||||||
int (*codec_load_file)(const char* codec, struct codec_api *api);
|
int (*codec_load_file)(const char* codec, struct codec_api *api);
|
||||||
const char *(*get_codec_filename)(int cod_spec);
|
const char *(*get_codec_filename)(int cod_spec);
|
||||||
bool (*get_metadata)(struct mp3entry* id3, int fd, const char* trackname,
|
bool (*get_metadata)(struct mp3entry* id3, int fd, const char* trackname);
|
||||||
bool v1first);
|
|
||||||
#endif
|
#endif
|
||||||
void (*led)(bool on);
|
void (*led)(bool on);
|
||||||
};
|
};
|
||||||
|
|
|
@ -100,9 +100,9 @@ static bool file_properties(char* selected_file)
|
||||||
#if (CONFIG_CODEC == SWCODEC)
|
#if (CONFIG_CODEC == SWCODEC)
|
||||||
int fd = rb->open(selected_file, O_RDONLY);
|
int fd = rb->open(selected_file, O_RDONLY);
|
||||||
if (fd >= 0 &&
|
if (fd >= 0 &&
|
||||||
rb->get_metadata(&id3, fd, selected_file, false))
|
rb->get_metadata(&id3, fd, selected_file))
|
||||||
#else
|
#else
|
||||||
if (!rb->mp3info(&id3, selected_file, false))
|
if (!rb->mp3info(&id3, selected_file))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
rb->snprintf(str_artist, sizeof str_artist,
|
rb->snprintf(str_artist, sizeof str_artist,
|
||||||
|
|
|
@ -537,8 +537,7 @@ static enum plugin_status test_track(char* filename)
|
||||||
/* Clear the id3 struct */
|
/* Clear the id3 struct */
|
||||||
rb->memset(&track.id3, 0, sizeof(struct mp3entry));
|
rb->memset(&track.id3, 0, sizeof(struct mp3entry));
|
||||||
|
|
||||||
if (!rb->get_metadata(&(track.id3), fd, filename,
|
if (!rb->get_metadata(&(track.id3), fd, filename))
|
||||||
rb->global_settings->id3_v1_first))
|
|
||||||
{
|
{
|
||||||
log_text("Cannot read metadata",true);
|
log_text("Cannot read metadata",true);
|
||||||
return PLUGIN_ERROR;
|
return PLUGIN_ERROR;
|
||||||
|
|
|
@ -143,7 +143,7 @@ static bool vbr_fix(char *selected_file)
|
||||||
|
|
||||||
xingupdate(0);
|
xingupdate(0);
|
||||||
|
|
||||||
rc = rb->mp3info(&entry, selected_file, false);
|
rc = rb->mp3info(&entry, selected_file);
|
||||||
if(rc < 0) {
|
if(rc < 0) {
|
||||||
fileerror(rc);
|
fileerror(rc);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -722,8 +722,6 @@ void settings_apply(void)
|
||||||
#if (CONFIG_CODEC == MAS3507D) && !defined(SIMULATOR)
|
#if (CONFIG_CODEC == MAS3507D) && !defined(SIMULATOR)
|
||||||
dac_line_in(global_settings.line_in);
|
dac_line_in(global_settings.line_in);
|
||||||
#endif
|
#endif
|
||||||
mpeg_id3_options(global_settings.id3_v1_first);
|
|
||||||
|
|
||||||
set_poweroff_timeout(global_settings.poweroff);
|
set_poweroff_timeout(global_settings.poweroff);
|
||||||
|
|
||||||
set_battery_capacity(global_settings.battery_capacity);
|
set_battery_capacity(global_settings.battery_capacity);
|
||||||
|
|
|
@ -525,8 +525,6 @@ struct user_settings
|
||||||
|
|
||||||
bool line_in; /* false=off, true=active */
|
bool line_in; /* false=off, true=active */
|
||||||
|
|
||||||
bool id3_v1_first; /* true = ID3V1 has prio over ID3V2 tag */
|
|
||||||
|
|
||||||
/* playlist viewer settings */
|
/* playlist viewer settings */
|
||||||
bool playlist_viewer_icons; /* display icons on viewer */
|
bool playlist_viewer_icons; /* display icons on viewer */
|
||||||
bool playlist_viewer_indices; /* display playlist indices on viewer */
|
bool playlist_viewer_indices; /* display playlist indices on viewer */
|
||||||
|
|
|
@ -757,9 +757,6 @@ const struct settings_list settings[] = {
|
||||||
"sort dirs", "alpha,oldest,newest", NULL, 3,
|
"sort dirs", "alpha,oldest,newest", NULL, 3,
|
||||||
ID2P(LANG_SORT_ALPHA), ID2P(LANG_SORT_DATE),
|
ID2P(LANG_SORT_ALPHA), ID2P(LANG_SORT_DATE),
|
||||||
ID2P(LANG_SORT_DATE_REVERSE)),
|
ID2P(LANG_SORT_DATE_REVERSE)),
|
||||||
BOOL_SETTING(0, id3_v1_first, LANG_ID3_ORDER, false,
|
|
||||||
"id3 tag priority", "v2-v1,v1-v2",
|
|
||||||
LANG_ID3_V1_FIRST, LANG_ID3_V2_FIRST, mpeg_id3_options),
|
|
||||||
|
|
||||||
#ifdef HAVE_RECORDING
|
#ifdef HAVE_RECORDING
|
||||||
/* recording */
|
/* recording */
|
||||||
|
|
|
@ -1660,7 +1660,7 @@ static void add_tagcache(char *path)
|
||||||
memset(&track, 0, sizeof(struct track_info));
|
memset(&track, 0, sizeof(struct track_info));
|
||||||
memset(&entry, 0, sizeof(struct temp_file_entry));
|
memset(&entry, 0, sizeof(struct temp_file_entry));
|
||||||
memset(&tracknumfix, 0, sizeof(tracknumfix));
|
memset(&tracknumfix, 0, sizeof(tracknumfix));
|
||||||
ret = get_metadata(&(track.id3), fd, path, false);
|
ret = get_metadata(&(track.id3), fd, path);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
|
|
|
@ -652,7 +652,7 @@ int talk_file(const char* filename, bool enqueue)
|
||||||
if (p_thumbnail == NULL || size_for_thumbnail <= 0)
|
if (p_thumbnail == NULL || size_for_thumbnail <= 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if(mp3info(&info, filename, false)) /* use this to find real start */
|
if(mp3info(&info, filename)) /* use this to find real start */
|
||||||
{
|
{
|
||||||
return 0; /* failed to open, or invalid */
|
return 0; /* failed to open, or invalid */
|
||||||
}
|
}
|
||||||
|
|
|
@ -235,8 +235,8 @@ enum {
|
||||||
ID3_VER_2_4
|
ID3_VER_2_4
|
||||||
};
|
};
|
||||||
|
|
||||||
bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool v1first);
|
bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename);
|
||||||
bool mp3info(struct mp3entry *entry, const char *filename, bool v1first);
|
bool mp3info(struct mp3entry *entry, const char *filename);
|
||||||
char* id3_get_num_genre(const unsigned int genre_num);
|
char* id3_get_num_genre(const unsigned int genre_num);
|
||||||
char* id3_get_codec(const struct mp3entry* id3);
|
char* id3_get_codec(const struct mp3entry* id3);
|
||||||
int getid3v2len(int fd);
|
int getid3v2len(int fd);
|
||||||
|
|
|
@ -55,7 +55,6 @@ unsigned long mpeg_get_last_header(void);
|
||||||
/* in order to keep the recording here, I have to expose this */
|
/* in order to keep the recording here, I have to expose this */
|
||||||
void rec_tick(void);
|
void rec_tick(void);
|
||||||
void playback_tick(void); /* FixMe: get rid of this, use mp3_get_playtime() */
|
void playback_tick(void); /* FixMe: get rid of this, use mp3_get_playtime() */
|
||||||
void mpeg_id3_options(bool _v1first);
|
|
||||||
|
|
||||||
void audio_set_track_changed_event(void (*handler)(struct mp3entry *id3));
|
void audio_set_track_changed_event(void (*handler)(struct mp3entry *id3));
|
||||||
void audio_set_track_buffer_event(void (*handler)(struct mp3entry *id3,
|
void audio_set_track_buffer_event(void (*handler)(struct mp3entry *id3,
|
||||||
|
|
|
@ -1164,10 +1164,8 @@ static int getsonglength(int fd, struct mp3entry *entry)
|
||||||
* about an MP3 file and updates it's entry accordingly.
|
* about an MP3 file and updates it's entry accordingly.
|
||||||
*
|
*
|
||||||
Note, that this returns true for successful, false for error! */
|
Note, that this returns true for successful, false for error! */
|
||||||
bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool v1first)
|
bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename)
|
||||||
{
|
{
|
||||||
int v1found = false;
|
|
||||||
|
|
||||||
#if CONFIG_CODEC != SWCODEC
|
#if CONFIG_CODEC != SWCODEC
|
||||||
memset(entry, 0, sizeof(struct mp3entry));
|
memset(entry, 0, sizeof(struct mp3entry));
|
||||||
#endif
|
#endif
|
||||||
|
@ -1180,10 +1178,7 @@ bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool
|
||||||
entry->tracknum = 0;
|
entry->tracknum = 0;
|
||||||
entry->discnum = 0;
|
entry->discnum = 0;
|
||||||
|
|
||||||
if(v1first)
|
if (entry->id3v2len)
|
||||||
v1found = setid3v1title(fd, entry);
|
|
||||||
|
|
||||||
if (!v1found && entry->id3v2len)
|
|
||||||
setid3v2title(fd, entry);
|
setid3v2title(fd, entry);
|
||||||
int len = getsonglength(fd, entry);
|
int len = getsonglength(fd, entry);
|
||||||
if (len < 0)
|
if (len < 0)
|
||||||
|
@ -1194,9 +1189,8 @@ bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool
|
||||||
the true size of the MP3 stream */
|
the true size of the MP3 stream */
|
||||||
entry->filesize -= entry->first_frame_offset;
|
entry->filesize -= entry->first_frame_offset;
|
||||||
|
|
||||||
/* only seek to end of file if no id3v2 tags were found,
|
/* only seek to end of file if no id3v2 tags were found */
|
||||||
and we already haven't looked for a v1 tag */
|
if (!entry->id3v2len) {
|
||||||
if (!v1first && !entry->id3v2len) {
|
|
||||||
setid3v1title(fd, entry);
|
setid3v1title(fd, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1209,7 +1203,7 @@ bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note, that this returns false for successful, true for error! */
|
/* Note, that this returns false for successful, true for error! */
|
||||||
bool mp3info(struct mp3entry *entry, const char *filename, bool v1first)
|
bool mp3info(struct mp3entry *entry, const char *filename)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
bool result;
|
bool result;
|
||||||
|
@ -1218,7 +1212,7 @@ bool mp3info(struct mp3entry *entry, const char *filename, bool v1first)
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
result = !get_mp3_metadata(fd, entry, filename, v1first);
|
result = !get_mp3_metadata(fd, entry, filename);
|
||||||
|
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
|
|
|
@ -127,8 +127,6 @@ static bool (*cuesheet_callback)(const char *filename) = NULL;
|
||||||
static const char mpeg_thread_name[] = "mpeg";
|
static const char mpeg_thread_name[] = "mpeg";
|
||||||
static unsigned int mpeg_errno;
|
static unsigned int mpeg_errno;
|
||||||
|
|
||||||
static bool v1first = false;
|
|
||||||
|
|
||||||
static bool playing = false; /* We are playing an MP3 stream */
|
static bool playing = false; /* We are playing an MP3 stream */
|
||||||
static bool is_playing = false; /* We are (attempting to) playing MP3 files */
|
static bool is_playing = false; /* We are (attempting to) playing MP3 files */
|
||||||
static bool paused; /* playback is paused */
|
static bool paused; /* playback is paused */
|
||||||
|
@ -922,7 +920,7 @@ static struct trackdata *add_track_to_tag_list(const char *filename)
|
||||||
|
|
||||||
/* grab id3 tag of new file and
|
/* grab id3 tag of new file and
|
||||||
remember where in memory it starts */
|
remember where in memory it starts */
|
||||||
if(mp3info(&track->id3, filename, v1first))
|
if(mp3info(&track->id3, filename))
|
||||||
{
|
{
|
||||||
DEBUGF("Bad mp3\n");
|
DEBUGF("Bad mp3\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -2098,11 +2096,6 @@ static void mpeg_thread(void)
|
||||||
}
|
}
|
||||||
#endif /* !SIMULATOR */
|
#endif /* !SIMULATOR */
|
||||||
|
|
||||||
void mpeg_id3_options(bool _v1first)
|
|
||||||
{
|
|
||||||
v1first = _v1first;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct mp3entry* audio_current_track()
|
struct mp3entry* audio_current_track()
|
||||||
{
|
{
|
||||||
#ifdef SIMULATOR
|
#ifdef SIMULATOR
|
||||||
|
@ -2707,7 +2700,7 @@ void audio_play(long offset)
|
||||||
trackname = playlist_peek( steps );
|
trackname = playlist_peek( steps );
|
||||||
if (!trackname)
|
if (!trackname)
|
||||||
break;
|
break;
|
||||||
if(mp3info(&taginfo, trackname, v1first)) {
|
if(mp3info(&taginfo, trackname)) {
|
||||||
/* bad mp3, move on */
|
/* bad mp3, move on */
|
||||||
if(++steps > playlist_amount())
|
if(++steps > playlist_amount())
|
||||||
break;
|
break;
|
||||||
|
@ -2793,7 +2786,7 @@ void audio_next(void)
|
||||||
file = playlist_peek(steps);
|
file = playlist_peek(steps);
|
||||||
if(!file)
|
if(!file)
|
||||||
break;
|
break;
|
||||||
if(mp3info(&taginfo, file, v1first)) {
|
if(mp3info(&taginfo, file)) {
|
||||||
if(++steps > playlist_amount())
|
if(++steps > playlist_amount())
|
||||||
break;
|
break;
|
||||||
continue;
|
continue;
|
||||||
|
@ -2822,7 +2815,7 @@ void audio_prev(void)
|
||||||
file = playlist_peek(steps);
|
file = playlist_peek(steps);
|
||||||
if(!file)
|
if(!file)
|
||||||
break;
|
break;
|
||||||
if(mp3info(&taginfo, file, v1first)) {
|
if(mp3info(&taginfo, file)) {
|
||||||
steps--;
|
steps--;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -218,9 +218,6 @@ related to audio playback.
|
||||||
set to \setting{Off}.
|
set to \setting{Off}.
|
||||||
}
|
}
|
||||||
|
|
||||||
\item[ID3 Tag Priority.] Select which version of ID3 tag to use if both are
|
|
||||||
present.
|
|
||||||
|
|
||||||
\item[Auto-Change Directory. ]Control what Rockbox does when it reaches the end
|
\item[Auto-Change Directory. ]Control what Rockbox does when it reaches the end
|
||||||
of a directory. If \setting{Auto-Change Directory} is set to \setting{Yes},
|
of a directory. If \setting{Auto-Change Directory} is set to \setting{Yes},
|
||||||
Rockbox will continue to the next directory. If
|
Rockbox will continue to the next directory. If
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue