Commit graph

68 commits

Author SHA1 Message Date
Brandon Low
dcca586a9b Improve upon my hackity hack from before by separating audio into two types: that which may be large and can be streamed and that which is small and cannot be streamed. While modifying types, allow codecs to split across the buffer wrap and dig out/move around the code that reads a codec off of the buffer to facilitate that simple sounding change.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15408 a1c6a512-1295-4272-9138-f99709370657
2007-11-02 14:06:48 +00:00
Brandon Low
ff9cdb464a Temporary work around for the situation where a single codec request is for more data than a single file_chunk and that file gets stuck. This should be fixed differently as it could lead to unresponsive behavior from the buffering thread for the duration of a file load.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15390 a1c6a512-1295-4272-9138-f99709370657
2007-11-01 05:12:55 +00:00
Nicolas Pennequin
09bce70f17 Slight rework of the buffering logic:
* Don't rely only on ata_disk_is_active, and also do buffer filling after buffer handle requests. Should fix FS#8049.
* Shrink the handles at the last possible moment. This allows more seeking without rebuffering for long tracks and minimises buffer waste.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15377 a1c6a512-1295-4272-9138-f99709370657
2007-10-30 17:24:31 +00:00
Brandon Low
151b7c9038 Further improve the mistakes I made in add_handle (thanks Nico_P for not beating me with them)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15376 a1c6a512-1295-4272-9138-f99709370657
2007-10-30 15:09:52 +00:00
Nicolas Pennequin
4ff2f9f372 can_add_handle() can be removed, but its logic must remain: before adding a handle, we need to make sure the there'll be space left for the curent one to finish buffering. This should fix the audio dropout problems people were experiencing.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15374 a1c6a512-1295-4272-9138-f99709370657
2007-10-30 14:11:03 +00:00
Brandon Low
4649eecc79 Fix yellow, not sure how to properly specify this argument's nature so this is fine
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15363 a1c6a512-1295-4272-9138-f99709370657
2007-10-29 17:00:03 +00:00
Brandon Low
483dca99c4 Remove can_add_handle, its safety and benefit are both questionable. Make shrink_buffer a function to reduce code duplication. Change move_handle semantics so that the caller never loses track of the current position of h, even if the move fails.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15362 a1c6a512-1295-4272-9138-f99709370657
2007-10-29 16:48:16 +00:00
Nicolas Pennequin
d400e23e38 Prefix the error constants with ERR_
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15359 a1c6a512-1295-4272-9138-f99709370657
2007-10-29 14:15:59 +00:00
Brandon Low
4feab10a0c Improve move_handle's semantics. Shoudl have no functional impact
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15351 a1c6a512-1295-4272-9138-f99709370657
2007-10-28 20:18:59 +00:00
Brandon Low
94b133ad33 Comment improvements
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15350 a1c6a512-1295-4272-9138-f99709370657
2007-10-28 19:19:54 +00:00
Nicolas Pennequin
7807279eaf Add #defines for error values. Makes the code easier to read.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15348 a1c6a512-1295-4272-9138-f99709370657
2007-10-28 15:54:10 +00:00
Brandon Low
18c9aba4b4 Hopefully fix codec load and data abort problems by making add_handle and move_handle much better at wrapping the buffer smartly and not putting the wrong things on the wrap
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15330 a1c6a512-1295-4272-9138-f99709370657
2007-10-27 04:49:04 +00:00
Brandon Low
7104ad54d0 Whoops, that thread can't run until the linked list is initialized
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15329 a1c6a512-1295-4272-9138-f99709370657
2007-10-27 04:29:46 +00:00
Brandon Low
2c1e8283aa Create queue stuff before the thread that will use it
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15328 a1c6a512-1295-4272-9138-f99709370657
2007-10-27 04:19:17 +00:00
Brandon Low
14b6f437bb Make buffering initialization versus reset separate functions to avoid double initializing threads or mutexes more easily
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15327 a1c6a512-1295-4272-9138-f99709370657
2007-10-27 04:16:41 +00:00
Brandon Low
404c6fbdb2 Add some const keywords, improve some comments, add a safety check or two, should have no functional difference
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15326 a1c6a512-1295-4272-9138-f99709370657
2007-10-27 01:37:33 +00:00
Nicolas Pennequin
d08131a117 * Only call bufgetcodec once
* Fix/Improve some queue logf messages
* Complete buffering_init


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15325 a1c6a512-1295-4272-9138-f99709370657
2007-10-27 01:25:47 +00:00
Nicolas Pennequin
3e3c43c747 Finally commit Metadata on Buffer!
buffering.c and buffering.h implement the new buffering API. playback.c is translated to that API. For more information about the whole concept, see http://www.rockbox.org/wiki/MetadataOnBuffer.
There should be no major visible changes, but most existing bugs remain (though fixing them should be easier now that playback.c is a bit less complex) and there probably will be new ones. Please report any problem!
Next step is to adapt cuesheet support, which is partly disabled here, and of course fix as much bugs as possible.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15306 a1c6a512-1295-4272-9138-f99709370657
2007-10-25 21:27:45 +00:00