Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Rockbox mail archive

Subject: Re: Track change silence
From: Hardeep Sidhu (hardeeps_at_pobox.com)
Date: 2002-08-22


The patch below fixes this bug. The problem occurred when selecting the next track
just as it was being loaded into the buffer. The patch also fixes the bug where
the first few seconds of the next track were repeated if it was already loaded in
memory.

-Hardeep

Index: firmware//mpeg.c
===================================================================
RCS file: /cvsroot/rockbox/firmware/mpeg.c,v
retrieving revision 1.98
diff -u -b -r1.98 mpeg.c
--- firmware//mpeg.c 21 Aug 2002 17:38:56 -0000 1.98
+++ firmware//mpeg.c 22 Aug 2002 03:06:16 -0000
@@ -790,23 +790,33 @@

                 /* is next track in ram? */
                 if ( num_tracks_in_memory() > 1 ) {
- int track_offset = (tag_read_idx+1) & MAX_ID3_TAGS_MASK;
- mp3buf_read = id3tags[track_offset]->mempos;
+ int unplayed_space_left, unswapped_space_left;
+
+ track_change();
+ mp3buf_read = id3tags[tag_read_idx]->mempos;
                     init_dma();
                     last_dma_tick = current_tick;

+ unplayed_space_left = get_unplayed_space();
+ unswapped_space_left = mp3buf_write - mp3buf_swapwrite;
+ if (unswapped_space_left < 0)
+ unswapped_space_left += mp3buflen;
+
                     /* should we start reading more data? */
- if(!filling && (get_unplayed_space() < MPEG_LOW_WATER)) {
+ if(!filling && (unplayed_space_left < MPEG_LOW_WATER)) {
                         filling = true;
                         queue_post(&mpeg_queue, MPEG_NEED_DATA, 0);
                         play_pending = true;
+ } else if(unswapped_space_left &&
+ unswapped_space_left > unplayed_space_left) {
+ /* Stop swapping the data from the previous file */
+ mp3buf_swapwrite = mp3buf_read;
+ play_pending = true;
                     } else {
                         playing = true;
                         if (!paused)
                             start_dma();
                     }
-
- track_change();
                 }
                 else {
                     reset_mp3_buffer();

----- Original Message -----
From: "Stuart Tedford" <stuart.tedford_at_piresearch.co.uk>
To: <rockbox_at_cool.haxx.se>
Sent: Wednesday, August 21, 2002 12:53 AM
Subject: RE: Track change silence

> I've also had this bug on my AJR20 using recent cvs builds, very rarely
> though.
>
> The time appears to pass normally during this bug.
>
> I haven't waited long enough to hear the sound return - maybe next time. I
> just press previous track then next track again and it is fine.
>
> Stu.
>
> > -----Original Message-----
> > From: Linus Nielsen Feltzing [mailto:linus_at_haxx.se]
> > Sent: 21 August 2002 08:14
> > To: rockbox_at_cool.haxx.se
> > Subject: Re: Track change silence
> >
> >
> > On Wed, 21 Aug 2002 07:20:21 +0200, Guy Devos wrote:
> > > > I've noticed that too. I've got a Player. It's interesting, huh?
> >
> > A question: does the time pass normally? Or does the seconds tick
> > faster than normal in the time display?
> >
> > /Linus
> >
> > --
> > Linus Nielsen Feltzing, linus_at_haxx.se on 2002-08-21
> >
> >
>



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