forked from len0rd/rockbox
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>
|
||||
id: LANG_ID3_ORDER
|
||||
desc: in playback settings screen
|
||||
desc: DEPRECATED
|
||||
user:
|
||||
<source>
|
||||
*: "ID3 Tag Priority"
|
||||
*: ""
|
||||
</source>
|
||||
<dest>
|
||||
*: "ID3 Tag Priority"
|
||||
*: ""
|
||||
</dest>
|
||||
<voice>
|
||||
*: "ID3 Tag Priority"
|
||||
*: ""
|
||||
</voice>
|
||||
</phrase>
|
||||
<phrase>
|
||||
id: LANG_ID3_V1_FIRST
|
||||
desc: in playback settings screen
|
||||
desc: DEPRECATED
|
||||
user:
|
||||
<source>
|
||||
*: "V1 then V2"
|
||||
*: ""
|
||||
</source>
|
||||
<dest>
|
||||
*: "V1 then V2"
|
||||
*: ""
|
||||
</dest>
|
||||
<voice>
|
||||
*: "Version 1 then version 2"
|
||||
*: ""
|
||||
</voice>
|
||||
</phrase>
|
||||
<phrase>
|
||||
id: LANG_ID3_V2_FIRST
|
||||
desc: in playback settings screen
|
||||
desc: DEPRECATED
|
||||
user:
|
||||
<source>
|
||||
*: "V2 then V1"
|
||||
*: ""
|
||||
</source>
|
||||
<dest>
|
||||
*: "V2 then V1"
|
||||
*: ""
|
||||
</dest>
|
||||
<voice>
|
||||
*: "Version 2 then version 1"
|
||||
*: ""
|
||||
</voice>
|
||||
</phrase>
|
||||
<phrase>
|
||||
|
|
|
@ -129,7 +129,6 @@ MENUITEM_SETTING(beep, &global_settings.beep ,NULL);
|
|||
#ifdef HAVE_SPDIF_POWER
|
||||
MENUITEM_SETTING(spdif_enable, &global_settings.spdif_enable, NULL);
|
||||
#endif
|
||||
MENUITEM_SETTING(id3_v1_first, &global_settings.id3_v1_first, NULL);
|
||||
MENUITEM_SETTING(next_folder, &global_settings.next_folder, NULL);
|
||||
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
|
||||
&spdif_enable,
|
||||
#endif
|
||||
&id3_v1_first, &next_folder, &audioscrobbler, &cuesheet
|
||||
&next_folder, &audioscrobbler, &cuesheet
|
||||
#ifdef HAVE_HEADPHONE_DETECTION
|
||||
,&unplug_menu
|
||||
#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
|
||||
* file that would prevent playback.
|
||||
*/
|
||||
bool get_metadata(struct mp3entry* id3, int fd, const char* trackname,
|
||||
bool v1first)
|
||||
bool get_metadata(struct mp3entry* id3, int fd, const char* trackname)
|
||||
{
|
||||
#if CONFIG_CODEC == SWCODEC
|
||||
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_L2:
|
||||
case AFMT_MPA_L3:
|
||||
if (!get_mp3_metadata(fd, id3, trackname, v1first))
|
||||
if (!get_mp3_metadata(fd, id3, trackname))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -23,8 +23,7 @@
|
|||
#include "playback.h"
|
||||
|
||||
unsigned int probe_file_format(const char *filename);
|
||||
bool get_metadata(struct mp3entry* id3, int fd, const char* trackname,
|
||||
bool v1first);
|
||||
bool get_metadata(struct mp3entry* id3, int fd, const char* trackname);
|
||||
|
||||
#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_preseek = 0; /* Codec pre-seek margin (A/C) FIXME */
|
||||
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
|
||||
static size_t high_watermark = 0; /* High watermark for rebuffer (A/V/other) */
|
||||
#endif
|
||||
|
@ -395,11 +394,6 @@ bool mp3_is_playing(void)
|
|||
return voice_is_playing;
|
||||
}
|
||||
|
||||
void mpeg_id3_options(bool _v1first)
|
||||
{
|
||||
v1first = _v1first;
|
||||
}
|
||||
|
||||
/* If voice could be swapped out - wait for it to return
|
||||
* 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. */
|
||||
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;
|
||||
if (start_play)
|
||||
|
@ -2886,7 +2880,7 @@ static bool audio_read_next_metadata(void)
|
|||
if (fd < 0)
|
||||
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 */
|
||||
if (status)
|
||||
{
|
||||
|
|
|
@ -573,7 +573,7 @@ struct plugin_api {
|
|||
#endif
|
||||
struct user_settings* global_settings;
|
||||
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,
|
||||
void (*progressfunc)(int));
|
||||
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);
|
||||
const char *(*get_codec_filename)(int cod_spec);
|
||||
bool (*get_metadata)(struct mp3entry* id3, int fd, const char* trackname,
|
||||
bool v1first);
|
||||
bool (*get_metadata)(struct mp3entry* id3, int fd, const char* trackname);
|
||||
#endif
|
||||
void (*led)(bool on);
|
||||
};
|
||||
|
|
|
@ -100,9 +100,9 @@ static bool file_properties(char* selected_file)
|
|||
#if (CONFIG_CODEC == SWCODEC)
|
||||
int fd = rb->open(selected_file, O_RDONLY);
|
||||
if (fd >= 0 &&
|
||||
rb->get_metadata(&id3, fd, selected_file, false))
|
||||
rb->get_metadata(&id3, fd, selected_file))
|
||||
#else
|
||||
if (!rb->mp3info(&id3, selected_file, false))
|
||||
if (!rb->mp3info(&id3, selected_file))
|
||||
#endif
|
||||
{
|
||||
rb->snprintf(str_artist, sizeof str_artist,
|
||||
|
|
|
@ -537,8 +537,7 @@ static enum plugin_status test_track(char* filename)
|
|||
/* Clear the id3 struct */
|
||||
rb->memset(&track.id3, 0, sizeof(struct mp3entry));
|
||||
|
||||
if (!rb->get_metadata(&(track.id3), fd, filename,
|
||||
rb->global_settings->id3_v1_first))
|
||||
if (!rb->get_metadata(&(track.id3), fd, filename))
|
||||
{
|
||||
log_text("Cannot read metadata",true);
|
||||
return PLUGIN_ERROR;
|
||||
|
|
|
@ -143,7 +143,7 @@ static bool vbr_fix(char *selected_file)
|
|||
|
||||
xingupdate(0);
|
||||
|
||||
rc = rb->mp3info(&entry, selected_file, false);
|
||||
rc = rb->mp3info(&entry, selected_file);
|
||||
if(rc < 0) {
|
||||
fileerror(rc);
|
||||
return true;
|
||||
|
|
|
@ -722,8 +722,6 @@ void settings_apply(void)
|
|||
#if (CONFIG_CODEC == MAS3507D) && !defined(SIMULATOR)
|
||||
dac_line_in(global_settings.line_in);
|
||||
#endif
|
||||
mpeg_id3_options(global_settings.id3_v1_first);
|
||||
|
||||
set_poweroff_timeout(global_settings.poweroff);
|
||||
|
||||
set_battery_capacity(global_settings.battery_capacity);
|
||||
|
|
|
@ -525,8 +525,6 @@ struct user_settings
|
|||
|
||||
bool line_in; /* false=off, true=active */
|
||||
|
||||
bool id3_v1_first; /* true = ID3V1 has prio over ID3V2 tag */
|
||||
|
||||
/* playlist viewer settings */
|
||||
bool playlist_viewer_icons; /* display icons 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,
|
||||
ID2P(LANG_SORT_ALPHA), ID2P(LANG_SORT_DATE),
|
||||
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
|
||||
/* recording */
|
||||
|
|
|
@ -1660,7 +1660,7 @@ static void add_tagcache(char *path)
|
|||
memset(&track, 0, sizeof(struct track_info));
|
||||
memset(&entry, 0, sizeof(struct temp_file_entry));
|
||||
memset(&tracknumfix, 0, sizeof(tracknumfix));
|
||||
ret = get_metadata(&(track.id3), fd, path, false);
|
||||
ret = get_metadata(&(track.id3), fd, path);
|
||||
close(fd);
|
||||
|
||||
if (!ret)
|
||||
|
|
|
@ -652,7 +652,7 @@ int talk_file(const char* filename, bool enqueue)
|
|||
if (p_thumbnail == NULL || size_for_thumbnail <= 0)
|
||||
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 */
|
||||
}
|
||||
|
|
|
@ -235,8 +235,8 @@ enum {
|
|||
ID3_VER_2_4
|
||||
};
|
||||
|
||||
bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool v1first);
|
||||
bool mp3info(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);
|
||||
char* id3_get_num_genre(const unsigned int genre_num);
|
||||
char* id3_get_codec(const struct mp3entry* id3);
|
||||
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 */
|
||||
void rec_tick(void);
|
||||
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_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.
|
||||
*
|
||||
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
|
||||
memset(entry, 0, sizeof(struct mp3entry));
|
||||
#endif
|
||||
|
@ -1180,10 +1178,7 @@ bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool
|
|||
entry->tracknum = 0;
|
||||
entry->discnum = 0;
|
||||
|
||||
if(v1first)
|
||||
v1found = setid3v1title(fd, entry);
|
||||
|
||||
if (!v1found && entry->id3v2len)
|
||||
if (entry->id3v2len)
|
||||
setid3v2title(fd, entry);
|
||||
int len = getsonglength(fd, entry);
|
||||
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 */
|
||||
entry->filesize -= entry->first_frame_offset;
|
||||
|
||||
/* only seek to end of file if no id3v2 tags were found,
|
||||
and we already haven't looked for a v1 tag */
|
||||
if (!v1first && !entry->id3v2len) {
|
||||
/* only seek to end of file if no id3v2 tags were found */
|
||||
if (!entry->id3v2len) {
|
||||
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! */
|
||||
bool mp3info(struct mp3entry *entry, const char *filename, bool v1first)
|
||||
bool mp3info(struct mp3entry *entry, const char *filename)
|
||||
{
|
||||
int fd;
|
||||
bool result;
|
||||
|
@ -1218,7 +1212,7 @@ bool mp3info(struct mp3entry *entry, const char *filename, bool v1first)
|
|||
if (fd < 0)
|
||||
return true;
|
||||
|
||||
result = !get_mp3_metadata(fd, entry, filename, v1first);
|
||||
result = !get_mp3_metadata(fd, entry, filename);
|
||||
|
||||
close(fd);
|
||||
|
||||
|
|
|
@ -127,8 +127,6 @@ static bool (*cuesheet_callback)(const char *filename) = NULL;
|
|||
static const char mpeg_thread_name[] = "mpeg";
|
||||
static unsigned int mpeg_errno;
|
||||
|
||||
static bool v1first = false;
|
||||
|
||||
static bool playing = false; /* We are playing an MP3 stream */
|
||||
static bool is_playing = false; /* We are (attempting to) playing MP3 files */
|
||||
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
|
||||
remember where in memory it starts */
|
||||
if(mp3info(&track->id3, filename, v1first))
|
||||
if(mp3info(&track->id3, filename))
|
||||
{
|
||||
DEBUGF("Bad mp3\n");
|
||||
return NULL;
|
||||
|
@ -2098,11 +2096,6 @@ static void mpeg_thread(void)
|
|||
}
|
||||
#endif /* !SIMULATOR */
|
||||
|
||||
void mpeg_id3_options(bool _v1first)
|
||||
{
|
||||
v1first = _v1first;
|
||||
}
|
||||
|
||||
struct mp3entry* audio_current_track()
|
||||
{
|
||||
#ifdef SIMULATOR
|
||||
|
@ -2707,7 +2700,7 @@ void audio_play(long offset)
|
|||
trackname = playlist_peek( steps );
|
||||
if (!trackname)
|
||||
break;
|
||||
if(mp3info(&taginfo, trackname, v1first)) {
|
||||
if(mp3info(&taginfo, trackname)) {
|
||||
/* bad mp3, move on */
|
||||
if(++steps > playlist_amount())
|
||||
break;
|
||||
|
@ -2793,7 +2786,7 @@ void audio_next(void)
|
|||
file = playlist_peek(steps);
|
||||
if(!file)
|
||||
break;
|
||||
if(mp3info(&taginfo, file, v1first)) {
|
||||
if(mp3info(&taginfo, file)) {
|
||||
if(++steps > playlist_amount())
|
||||
break;
|
||||
continue;
|
||||
|
@ -2822,7 +2815,7 @@ void audio_prev(void)
|
|||
file = playlist_peek(steps);
|
||||
if(!file)
|
||||
break;
|
||||
if(mp3info(&taginfo, file, v1first)) {
|
||||
if(mp3info(&taginfo, file)) {
|
||||
steps--;
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -218,9 +218,6 @@ related to audio playback.
|
|||
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
|
||||
of a directory. If \setting{Auto-Change Directory} is set to \setting{Yes},
|
||||
Rockbox will continue to the next directory. If
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue