dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Rockbox mail archive

Subject: Re: Fast forward and reverse
Date: 2002-05-28

That sounds like a very good solution, and much simpler than what I had in

I think the next logical step then is to make sure we read enough data when
rewinding. Currently it seems that the Archos only gets about 2 seconds of
the already-played song to replay; this should be increased to a larger
amount, IMO. That way repeated rewinds will not need separate disk reads
to function.

I leave it to you to determine the optimum amount of data to read from the
disk should that be necessary. It seems to me that the entire 2mb should
not be filled - I know for myself, trying to learn a guitar/bass riff,
sometimes I go over the same space dozens (hundreds?) of times, so I
wouldn't want to have to read the disk each time I went over that space.

Oh, that reminds me... has anyone requested a 1/2x, 1/4x, etc., playback
speed yet? I'd love to be able to play a song at 1/4 or 1/16 speed without
pitch modulation. I don't know what's required for that, but it would be


                    Björn Stenberg
                    <> To:
                    Sent by: cc:
                    owner-rockbox_at_co Subject: Re: Fast forward and reverse
                    05/28/2002 09:23
                    Please respond
                    to rockbox

> Perhaps a portion of the cache can be reserved for already-played
> material? They have a 2mb cache, correct? I would speculate that
> reserving 0.5mb would be more than enough for most people, about 30
> seconds for going backwards.

The downside to this approach is that we will then have 30 seconds less
buffer for normal playback, resulting in shorter battery life.

I think the simplest method will probably suffice. Currently we keep one
play and one read pointer in the mp3 buffer. That is, one pointer for
where the playback is currently and one for where the end of read data is:

        Read pointer Play pointer
          | |
Start End

When rewinding, we will be able to reuse all data to the left of "play",
all the way back to "read". This amount will vary depending on when the
last disk read was performed. If done very recently, the play pointer will
be very close to the read pointer:

        Read Play
          | |
Start End

In this case, we can only rewind a little before having to read data from

This way, we don't have to design a special system for rewinding. We just
use what we already have, but still get a better result than the Archos


Page was last modified "Jan 10 2012" The Rockbox Crew