diff options
| author | Brandon Low <lostlogic@rockbox.org> | 2007-11-05 01:56:12 +0000 |
|---|---|---|
| committer | Brandon Low <lostlogic@rockbox.org> | 2007-11-05 01:56:12 +0000 |
| commit | d02b5c744e39ea87980f75ad172aaaf0fcb29252 (patch) | |
| tree | 0e4ce0b6bbba1ab3f7158a742a6a97d5766c7465 | |
| parent | 6be390f21091ac3438d4ddb7935d985f2e4286ab (diff) | |
| download | rockbox-d02b5c744e39ea87980f75ad172aaaf0fcb29252.zip rockbox-d02b5c744e39ea87980f75ad172aaaf0fcb29252.tar.gz rockbox-d02b5c744e39ea87980f75ad172aaaf0fcb29252.tar.bz2 rockbox-d02b5c744e39ea87980f75ad172aaaf0fcb29252.tar.xz | |
Don't keep useless id3v2 or other leading tag data on the buffer, it could be large
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15465 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/buffering.c | 8 | ||||
| -rw-r--r-- | apps/codecs/mpa.c | 3 | ||||
| -rw-r--r-- | apps/codecs/shorten.c | 3 | ||||
| -rw-r--r-- | apps/playback.c | 5 |
4 files changed, 10 insertions, 9 deletions
diff --git a/apps/buffering.c b/apps/buffering.c index 9c8d107..072517f 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -563,12 +563,12 @@ static bool buffer_handle(int handle_id) /* This would read into the next handle, this is broken */ if (h->next && RINGBUF_ADD_CROSS(h->widx, copy_n, (unsigned)((void *)h->next - (void *)buffer)) > 0) { - logf("Handle allocation short"); /* Try to recover by truncating this file */ - int overlap = RINGBUF_ADD_CROSS(h->widx, copy_n, + copy_n = RINGBUF_ADD_CROSS(h->widx, copy_n, (unsigned)((void *)h->next - (void *)buffer)); - h->filerem -= overlap; - h->filesize -= overlap; + h->filerem -= copy_n; + h->filesize -= copy_n; + logf("buf alloc short %ld",copy_n); if (h->filerem) continue; else diff --git a/apps/codecs/mpa.c b/apps/codecs/mpa.c index 6d98677..113c81b 100644 --- a/apps/codecs/mpa.c +++ b/apps/codecs/mpa.c @@ -95,8 +95,7 @@ next_track: current_frequency = ci->id3->frequency; codec_set_replaygain(ci->id3); - ci->request_buffer(&size, ci->id3->first_frame_offset); - ci->advance_buffer(size); + ci->seek_buffer(ci->id3->first_frame_offset); if (ci->id3->lead_trim >= 0 && ci->id3->tail_trim >= 0) { stop_skip = ci->id3->tail_trim - mpeg_latency[ci->id3->layer]; diff --git a/apps/codecs/shorten.c b/apps/codecs/shorten.c index 4b80367..fdc8142 100644 --- a/apps/codecs/shorten.c +++ b/apps/codecs/shorten.c @@ -68,8 +68,7 @@ next_track: /* Skip id3v2 tags */ if (ci->id3->first_frame_offset) { - buf = ci->request_buffer(&bytesleft, ci->id3->first_frame_offset); - ci->advance_buffer(ci->id3->first_frame_offset); + ci->seek_buffer(ci->id3->first_frame_offset); } /* Read the shorten & wave headers */ diff --git a/apps/playback.c b/apps/playback.c index 5132bd6..650a69b 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1803,7 +1803,7 @@ static bool codec_request_next_track_callback(void) /* Seek to the beginning of the new track because if the struct mp3entry was buffered, "elapsed" might not be zero (if the track has been played already but not unbuffered) */ - codec_seek_buffer_callback(0); + codec_seek_buffer_callback(curtrack_id3.first_frame_offset); /* Check if the next codec is the same file. */ if (prev_codectype == get_codec_base_type(curtrack_id3.codectype)) @@ -2441,6 +2441,9 @@ static bool audio_load_track(int offset, bool start_play) logf("alt:%s", trackname); + if (!file_offset && track_id3->first_frame_offset) + file_offset = track_id3->first_frame_offset; + tracks[track_widx].audio_hid = bufopen(trackname, file_offset, type); if (tracks[track_widx].audio_hid < 0) |