summaryrefslogtreecommitdiff
path: root/apps/buffering.c
AgeCommit message (Collapse)Author
2008-02-12Notify the buffering thread when a handle is added, so it can go into ↵Nicolas Pennequin
filling mode. This is some sort of a replacement for the ATA idle callback. It will interrupt an ongoing buffering process (buffer_handle), but not for long enough to be a problem. Should fix a problem reported by Dave Hooper where inserting tracks into the playlist would flush the buffer and not refill it, sometimes causing the inserted tracks to be skipped. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16295 a1c6a512-1295-4272-9138-f99709370657
2008-01-08Fix FS#6215 (player crashes after trying to resume deleted music file). As ↵Nicolas Pennequin
mentioned in the lastest comment, the problem was in trying to resume at an offset larger than the size of the file following the one that was deleted. This revealed a crash in the buffering code, which gets a fix, but we also need to intervene earlier in the track loading so that the track that gets played will be from its start. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16028 a1c6a512-1295-4272-9138-f99709370657
2007-12-16Check that the pointer isn't NULL before dereferencing it, just to be safe ↵Nicolas Pennequin
and to allow using bufgetdata to know how much data is available. Also remove a few trailing spaces. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15940 a1c6a512-1295-4272-9138-f99709370657
2007-11-28Possibly save a few bytes when stripping the tags of the last allocated handleBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15844 a1c6a512-1295-4272-9138-f99709370657
2007-11-28Fix FS8069, because Nico_P made it easyBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15840 a1c6a512-1295-4272-9138-f99709370657
2007-11-26Checking for total free buffer space isn't correct. What we need to check is ↵Nicolas Pennequin
the space available for the particular handle we want to rebuffer. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15821 a1c6a512-1295-4272-9138-f99709370657
2007-11-26Buffering callbacks rework. There is now one callback for all the events ↵Nicolas Pennequin
that can occur. Callbacks are now registred only once instead of being removed after having been called. Fix FS#8092 by flushing the audio when a rebuffer is needed. Also add some comments here and there. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15816 a1c6a512-1295-4272-9138-f99709370657
2007-11-20Hopefully the last word on getting rid of yield_codecs loops (cut read chunk ↵Michael Sevakis
to 16kB). Sansa ata driver also didn't yield enough so buffering would starve other threads. Bump priority of audio thread to keep UI more responsive. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15724 a1c6a512-1295-4272-9138-f99709370657
2007-11-20Make threads responsible for explicit cancellation of their own boosted ↵Michael Sevakis
status. Sleeping and timeouts will no longer cancel it. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15709 a1c6a512-1295-4272-9138-f99709370657
2007-11-19Make the sim sleep between each file chunk, so that its buffering behaves ↵Nicolas Pennequin
more like that of a real target. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15694 a1c6a512-1295-4272-9138-f99709370657
2007-11-12The error checking for bitmap handling in bufopen was serioulsy broken, as ↵Nicolas Pennequin
loading a huge bitmap showed. Fix it and reorganise the code slightly. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15597 a1c6a512-1295-4272-9138-f99709370657
2007-11-11Really fix red this time.Nicolas Pennequin
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15576 a1c6a512-1295-4272-9138-f99709370657
2007-11-11Fix red on the iFP.Nicolas Pennequin
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15575 a1c6a512-1295-4272-9138-f99709370657
2007-11-11Album art support. Based on FS#3045, but heavily modified to adapt to MoB ↵Nicolas Pennequin
and for cleanness. The cover pictures are loaded from external bitmaps. JPEG and embedded art are not supported. The pictures will only be drawn on the main display. There is no resizing but it is possible to specify the WPS bitmap size in the bitmap names (e.g. cover.100x100.bmp). The bitmaps are stored in the main buffer and read directly from there. Currently, duplicate bitmaps will simply be present several times in the buffer, but this will be improved. To enable for a target, #define HAVE_ALBUMART in its config file. For more information, see the wiki page: http://www.rockbox.org/wiki/AlbumArt. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15572 a1c6a512-1295-4272-9138-f99709370657
2007-11-08No functional changeBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15542 a1c6a512-1295-4272-9138-f99709370657
2007-11-08Fix a bug introduced by r15533 where end-of-file wouldn't be detected correctly.Nicolas Pennequin
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15541 a1c6a512-1295-4272-9138-f99709370657
2007-11-08Thanks to the changes in prep_bufdata, bufgetdata can be simplified a bit.Nicolas Pennequin
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15537 a1c6a512-1295-4272-9138-f99709370657
2007-11-08Clean up a (nearly impossible) null check. Add a comment.Brandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15536 a1c6a512-1295-4272-9138-f99709370657
2007-11-08Change in function should be nearly zero, but change to proper naming and ↵Brandon Low
define use and allow a more liberal limit on bufgetdata to only ensure safety of wrapping, not the strict filechunk limit that I tried to impose earlier git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15535 a1c6a512-1295-4272-9138-f99709370657
2007-11-08Fix some bad where a handle is held across a sleep. We should probably ↵Brandon Low
audit this in other places as well. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15533 a1c6a512-1295-4272-9138-f99709370657
2007-11-08Fix the bug where MPC files would be skipped by disabling the check of the ↵Nicolas Pennequin
requested size against the default filechunk size in prep_bufdata when the caller is bufread. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15528 a1c6a512-1295-4272-9138-f99709370657
2007-11-07Fix a flaw in prep_bufdata() that would lead to all kinds of problems with ↵Nicolas Pennequin
codecs that used bufread (MPC is one). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15501 a1c6a512-1295-4272-9138-f99709370657
2007-11-06Fix thinko in last patch, shouldn't effect current buffering clients.Brandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15496 a1c6a512-1295-4272-9138-f99709370657
2007-11-06Pull the size range checking and disk request into a separate function that ↵Brandon Low
both bufread and bufgetdata can use. Do better range checking to ensure that we don't get 'stuck' in the calls and warn with a logf if requests are made for which we cannot guarantee satisfaction. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15495 a1c6a512-1295-4272-9138-f99709370657
2007-11-05This was (probably) committed by accident, remove it.Nicolas Pennequin
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15491 a1c6a512-1295-4272-9138-f99709370657
2007-11-05Don't yield twice in a rowBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15490 a1c6a512-1295-4272-9138-f99709370657
2007-11-05Types other than packet audio still need to yield while buffering.Nicolas Pennequin
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15489 a1c6a512-1295-4272-9138-f99709370657
2007-11-05Readd yield_codec, making it check for useful data through buffer_is_low. ↵Nicolas Pennequin
Fixes the PCM buffer underruns. Also move update_data_counters and make it static. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15487 a1c6a512-1295-4272-9138-f99709370657
2007-11-05This was a bad change on my part earlier. Do not immediately start ↵Brandon Low
buffering codecs when they are bufopened git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15486 a1c6a512-1295-4272-9138-f99709370657
2007-11-05Fix some logf warnings.Nicolas Pennequin
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15483 a1c6a512-1295-4272-9138-f99709370657
2007-11-05Create two separate ways for a handle buffer request to be sent. One is ↵Brandon Low
when the buffer has gotten low, in this case, we want to start a buffer fill. The other is when the buffer itself requests a buffer as part of a running fill. Obviously this is not a new fill start git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15480 a1c6a512-1295-4272-9138-f99709370657
2007-11-05When seeking foward off of the buffer, if it is a short seek don't rebuffer ↵Brandon Low
the whole track, just read enough to satisfy git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15479 a1c6a512-1295-4272-9138-f99709370657
2007-11-05Remove conf_filechunk, it should never have been a setting and its ↵Brandon Low
implementation doesn't do what it claims any way git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15478 a1c6a512-1295-4272-9138-f99709370657
2007-11-05Remove unused conf_preseek from buffering.c and all of its accountraments. ↵Brandon Low
This is _not_ a setting. This is a guessing tool used by either playback or buffering to serve its clients better. Use the REBUFFER_GUESS size in resume to help obviate pondlife's bug. This will also need to be used when FS8092 gets fixed correctly with a complete rebuffer for backward movements. It may also belong in buffering not playback, haven't decided for sure git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15475 a1c6a512-1295-4272-9138-f99709370657
2007-11-05Minor improvement in responsiveness to buffer_handle callsBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15473 a1c6a512-1295-4272-9138-f99709370657
2007-11-05logging improvementsBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15472 a1c6a512-1295-4272-9138-f99709370657
2007-11-05SHould fix FS#8074, is more better regardless thoughBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15466 a1c6a512-1295-4272-9138-f99709370657
2007-11-05Don't keep useless id3v2 or other leading tag data on the buffer, it could ↵Brandon Low
be large git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15465 a1c6a512-1295-4272-9138-f99709370657
2007-11-04make handle_id of zero valid, stop using memsets to clear tracks, should be ↵Brandon Low
no functional changes git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15462 a1c6a512-1295-4272-9138-f99709370657
2007-11-04More residuals from 8077, sanitize chunk and watermark settingsBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15452 a1c6a512-1295-4272-9138-f99709370657
2007-11-04More residuals from 8077 that should make buffering start up more smoothly ↵Brandon Low
and complete more completely git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15451 a1c6a512-1295-4272-9138-f99709370657
2007-11-04Tweak the way the data_counters are calculated to make it more friendly to ↵Brandon Low
the potential read-during-write, probably has very little impact on the compiled code git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15448 a1c6a512-1295-4272-9138-f99709370657
2007-11-04More try to fix 8077, BUF_USED is not a good way to determine if the buffer ↵Brandon Low
is healthy any more, we'll need a enw way if we need to resurrect yield_codec later git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15447 a1c6a512-1295-4272-9138-f99709370657
2007-11-04Disable the already spinning optimization until it is written correctlyBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15445 a1c6a512-1295-4272-9138-f99709370657
2007-11-03Make the use of signed int for buffer handles consistent and handle wrapping ↵Brandon Low
better. Number of handle_ids available is unchanged by this. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15442 a1c6a512-1295-4272-9138-f99709370657
2007-11-03Attempt to fix FS#8077... againBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15441 a1c6a512-1295-4272-9138-f99709370657
2007-11-03Revert recent changes that are brokenBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15439 a1c6a512-1295-4272-9138-f99709370657
2007-11-03Make handle id semantics more like file id. This may need to be revisited ↵Brandon Low
if we ever start storing long lived things on the buffer (if an item lives through 32k other items coming and going, there will be an id collision and things will break) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15437 a1c6a512-1295-4272-9138-f99709370657
2007-11-03Buffering consistency improvementsBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15436 a1c6a512-1295-4272-9138-f99709370657
2007-11-03Make atomic type work for even first track. Rework low buffer handling... ↵Brandon Low
uses a stateful variable because I'm a bitter old man and it works this way git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15425 a1c6a512-1295-4272-9138-f99709370657