forked from len0rd/rockbox
Now next track info is always available.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6994 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
349f39a7f4
commit
f46c9f204c
1 changed files with 38 additions and 4 deletions
|
|
@ -783,6 +783,33 @@ bool loadcodec(const char *trackname, bool start_play)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool read_next_metadata(void)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
char *trackname;
|
||||||
|
int next_track;
|
||||||
|
int status;
|
||||||
|
|
||||||
|
trackname = playlist_peek(last_peek_offset);
|
||||||
|
if (!trackname)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
fd = open(trackname, O_RDONLY);
|
||||||
|
if (fd < 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
next_track = track_ridx + 1;
|
||||||
|
if (next_track >= MAX_TRACK)
|
||||||
|
next_track -= MAX_TRACK;
|
||||||
|
|
||||||
|
/* Start buffer refilling also because we need to spin-up the disk. */
|
||||||
|
filling = true;
|
||||||
|
status = get_metadata(&tracks[next_track],fd,trackname,v1first);
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
bool audio_load_track(int offset, bool start_play, int peek_offset)
|
bool audio_load_track(int offset, bool start_play, int peek_offset)
|
||||||
{
|
{
|
||||||
char *trackname;
|
char *trackname;
|
||||||
|
|
@ -838,10 +865,12 @@ bool audio_load_track(int offset, bool start_play, int peek_offset)
|
||||||
tracks[track_widx].start_pos = 0;
|
tracks[track_widx].start_pos = 0;
|
||||||
|
|
||||||
//logf("%s", trackname);
|
//logf("%s", trackname);
|
||||||
|
|
||||||
if (!get_metadata(&tracks[track_widx],fd,trackname,v1first)) {
|
if (!tracks[track_widx].taginfo_ready) {
|
||||||
close(fd);
|
if (!get_metadata(&tracks[track_widx],fd,trackname,v1first)) {
|
||||||
return false;
|
close(fd);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Starting playback from an offset is only support in MPA at the moment */
|
/* Starting playback from an offset is only support in MPA at the moment */
|
||||||
|
|
@ -1068,10 +1097,14 @@ void audio_check_buffer(void)
|
||||||
if (audio_load_track(0, false, last_peek_offset)) {
|
if (audio_load_track(0, false, last_peek_offset)) {
|
||||||
last_peek_offset++;
|
last_peek_offset++;
|
||||||
} else if (tracks[track_widx].filerem == 0 || fill_bytesleft == 0) {
|
} else if (tracks[track_widx].filerem == 0 || fill_bytesleft == 0) {
|
||||||
|
if (track_count <= 1)
|
||||||
|
read_next_metadata();
|
||||||
|
|
||||||
generate_postbuffer_events();
|
generate_postbuffer_events();
|
||||||
filling = false;
|
filling = false;
|
||||||
conf_bufferlimit = 0;
|
conf_bufferlimit = 0;
|
||||||
pcm_set_boost_mode(false);
|
pcm_set_boost_mode(false);
|
||||||
|
|
||||||
if (playing)
|
if (playing)
|
||||||
ata_sleep();
|
ata_sleep();
|
||||||
}
|
}
|
||||||
|
|
@ -1243,6 +1276,7 @@ void audio_invalidate_tracks(void)
|
||||||
buf_widx = buf_ridx + cur_ti->available;
|
buf_widx = buf_ridx + cur_ti->available;
|
||||||
if (buf_widx >= codecbuflen)
|
if (buf_widx >= codecbuflen)
|
||||||
buf_widx -= codecbuflen;
|
buf_widx -= codecbuflen;
|
||||||
|
read_next_metadata();
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_thread(void)
|
void audio_thread(void)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue