Commit graph

681 commits

Author SHA1 Message Date
Michael Sevakis
d6f2a54654 Make sure initial menu item is voiced at startup. Voice thread must wait for the audio thread to finish initializing hardware. A known issue at speex commit time (perhaps only by myself ;). The behavioral refinement time begins.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15682 a1c6a512-1295-4272-9138-f99709370657
2007-11-19 11:59:52 +00:00
Michael Sevakis
99617d71ba Make speex the new voice format for SWCODEC targets (non-Archos). Remove codec swapping and build speex voice decoding directly into the core binary.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15668 a1c6a512-1295-4272-9138-f99709370657
2007-11-18 17:12:19 +00:00
Nicolas Pennequin
9446226276 Erase lasttrack_id3 when end-of-playlist is reached. Fixes FS#8148.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15659 a1c6a512-1295-4272-9138-f99709370657
2007-11-18 13:41:04 +00:00
Brandon Low
d1c6d53962 I'm a retard, this is definitely more correct
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15627 a1c6a512-1295-4272-9138-f99709370657
2007-11-14 22:34:32 +00:00
Brandon Low
02467cffa0 Might fix FS#8158, I was unable to reproduce so no guarantee.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15626 a1c6a512-1295-4272-9138-f99709370657
2007-11-14 22:29:26 +00:00
Nicolas Pennequin
4963925767 Fix another NULL pointer dereference crash.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15591 a1c6a512-1295-4272-9138-f99709370657
2007-11-12 00:17:55 +00:00
Nicolas Pennequin
e71bc67d94 Fix an issue that appeared in r15577, where skipping back to a track that has no audio data left, but still has its metadata and album art, would fail. The fix is to also clear the filesize member (as it should have been previously) to force a rebuffer when skipping back. To prevent the album art bitmap from flashing on the back skip, the whole track info struct is cleared when the track isn't needed anymore, i.e. after the PCM track change.
Also a slightly unrelated but trivial change: only load album art if it's not already loaded.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15588 a1c6a512-1295-4272-9138-f99709370657
2007-11-11 21:27:18 +00:00
Nicolas Pennequin
95db8f8022 Load the album art before the codec because find_albumart would yield to the codec, which would start requesting data before the audio handle is ready.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15584 a1c6a512-1295-4272-9138-f99709370657
2007-11-11 20:09:13 +00:00
Nicolas Pennequin
496027d8bb * Make the album art be updated on PCM track change, not codec track change (changes in audio_current_aa_hid).
* On codec track change, if not all the audio data is present, only get rid of the audio data and not all the track's handles. This will prevent alum art from disappearing on codec track change after resuming playback (changes in audio_check_new_track).
* Add audio_finalise_track_change() to handle what happens after the PCM track change (no functional change here).
* Add some comments about how the track transition works.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15577 a1c6a512-1295-4272-9138-f99709370657
2007-11-11 15:50:52 +00:00
Nicolas Pennequin
cf37f4c079 Fix red.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15573 a1c6a512-1295-4272-9138-f99709370657
2007-11-11 12:52:07 +00:00
Nicolas Pennequin
9d4bed7ff0 Album art support. Based on FS#3045, but heavily modified to adapt to MoB 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-11 12:29:37 +00:00
Nicolas Pennequin
a677678e31 Fix a possible NULL pointer dereference I introduced in r15503 by making an unwise assumption. This would cause crashes on track skip in certain (very unlikely, I think) situations.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15557 a1c6a512-1295-4272-9138-f99709370657
2007-11-10 18:22:55 +00:00
Nicolas Pennequin
941600f121 Remove nexttrack_id3 and instead use the metadata present on the buffer.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15540 a1c6a512-1295-4272-9138-f99709370657
2007-11-08 17:27:43 +00:00
Nicolas Pennequin
12d479fd3e Store the metadata of the first unbuffered track in a static struct so that it gets displayed in the next track info while playing the last buffered track.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15539 a1c6a512-1295-4272-9138-f99709370657
2007-11-08 16:52:29 +00:00
Nicolas Pennequin
fbdc0e6b57 Fix warning.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15504 a1c6a512-1295-4272-9138-f99709370657
2007-11-07 01:10:53 +00:00
Nicolas Pennequin
5f7d21dfa0 Fix tracks always being cleared on skip (reported by dionoea). The problem was that skipping the ID3 info from the beginning caused the offset to always be nonzero.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15503 a1c6a512-1295-4272-9138-f99709370657
2007-11-07 00:59:42 +00:00
Brandon Low
405380e57f Don't keep resetting to default watermark during buffering, only do it once at play start
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15485 a1c6a512-1295-4272-9138-f99709370657
2007-11-05 18:54:22 +00:00
Nicolas Pennequin
aef008b061 Set all track handles to -1 on audio init to avoid calling bufclose(0) on all of them on the first playback stop. This also revealed a bug in audio_release_tracks where it wouldn't release all the tracks because the wrong #define value was used.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15484 a1c6a512-1295-4272-9138-f99709370657
2007-11-05 18:46:25 +00:00
Nicolas Pennequin
6631e36fa7 Fix some logf warnings.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15483 a1c6a512-1295-4272-9138-f99709370657
2007-11-05 18:19:38 +00:00
Brandon Low
3379440a4b Remove conf_filechunk, it should never have been a setting and its 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-05 17:48:21 +00:00
Brandon Low
1df1e7b0c7 Remove unused conf_preseek from buffering.c and all of its accountraments. 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-05 16:02:12 +00:00
Brandon Low
d02b5c744e 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
2007-11-05 01:56:12 +00:00
Brandon Low
31c1164c49 make handle_id of zero valid, stop using memsets to clear tracks, should be no functional changes
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15462 a1c6a512-1295-4272-9138-f99709370657
2007-11-04 19:01:02 +00:00
Brandon Low
f906498786 OTher part of previous
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15450 a1c6a512-1295-4272-9138-f99709370657
2007-11-04 05:36:35 +00:00
Brandon Low
e8fa7f94b0 More attempt to fix 8077
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15449 a1c6a512-1295-4272-9138-f99709370657
2007-11-04 05:33:06 +00:00
Brandon Low
0c97493a88 This part was good, bring it back
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15440 a1c6a512-1295-4272-9138-f99709370657
2007-11-03 21:55:24 +00:00
Brandon Low
c2e1cc1e39 Revert recent changes that are broken
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15439 a1c6a512-1295-4272-9138-f99709370657
2007-11-03 21:48:08 +00:00
Brandon Low
acb3e9af22 Make handle id semantics more like file id. This may need to be revisited 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-03 21:13:15 +00:00
Brandon Low
86919f4609 Misc. buffering related playback tweaks
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15435 a1c6a512-1295-4272-9138-f99709370657
2007-11-03 17:55:29 +00:00
Brandon Low
11a3661d73 Make atomic type work for even first track. Rework low buffer handling... 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
2007-11-03 06:21:32 +00:00
Michael Sevakis
4bce3ad98a Use the correct event state constants.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15423 a1c6a512-1295-4272-9138-f99709370657
2007-11-03 05:14:09 +00:00
Brandon Low
9c3c6f9c82 Logf when a file is loaded atomic not packet
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15420 a1c6a512-1295-4272-9138-f99709370657
2007-11-03 04:30:43 +00:00
Brandon Low
9a114614d5 Comments and a fix to possibly get more out of backward skipping without rebuffering
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15413 a1c6a512-1295-4272-9138-f99709370657
2007-11-03 02:53:57 +00:00
Nicolas Pennequin
b838a62adf Make bufread and bufgetdata blocking. They now return when enough data is available or when EOF is reached. This improves the API and removes the need for several duplicate waiting loops.
Also fix a few logfqueue messages.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15412 a1c6a512-1295-4272-9138-f99709370657
2007-11-02 19:13:03 +00:00
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
Nicolas Pennequin
7f79564abc Accept FS#8053 by Bertrik Sikken: playback.c and mpeg.c simplification by removal of last_track argument in track_(un)buffer callback.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15384 a1c6a512-1295-4272-9138-f99709370657
2007-10-31 13:43:50 +00:00
Nicolas Pennequin
9d05e50c6e Fix a file descriptor leak that happened with large directories of small files with some invalid ones.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15379 a1c6a512-1295-4272-9138-f99709370657
2007-10-30 18:01:49 +00:00
Brandon Low
7030279dd2 Fix a logf warning
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15375 a1c6a512-1295-4272-9138-f99709370657
2007-10-30 15:09:16 +00:00
Nicolas Pennequin
be6e85dc59 Revert r15360: It didn't completely fix the problem and it's a bit dirty. A better solution has to be found.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15373 a1c6a512-1295-4272-9138-f99709370657
2007-10-30 13:19:04 +00:00
Nicolas Pennequin
30d3d36513 Invalidate prevtrack_id3 on all track skips to prevent next track info from being displaying for a split second after skipping to the previous track.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15361 a1c6a512-1295-4272-9138-f99709370657
2007-10-29 15:10:54 +00:00
Nicolas Pennequin
aecca6693f Update "elapsed" and "offset" in the mp3entries on the main buffer in the corresponding codec callbacks.
This should fix FS#8040.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15360 a1c6a512-1295-4272-9138-f99709370657
2007-10-29 15:10:30 +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
Steve Bavin
c985903084 Oops, sucky workaround wasn't meant to be committed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15357 a1c6a512-1295-4272-9138-f99709370657
2007-10-29 13:57:29 +00:00
Steve Bavin
7707f7fac9 Tiny bit of code policing: remove unneeded variable and spaces at end-of-line.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15356 a1c6a512-1295-4272-9138-f99709370657
2007-10-29 13:55:34 +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
Nicolas Pennequin
1839edf64a Add queue_peek to the kernel (written by Mike Sevakis), and use it to improve upon my previous commit.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15336 a1c6a512-1295-4272-9138-f99709370657
2007-10-27 18:08:18 +00:00
Nicolas Pennequin
41add08c5e Prevent the audio queue from getting flooded with fill buffer messages.
The low buffer callback is registred by  instead of the function it calls to prevent a loop.
audio_check_new_track() also makes more sense because that's where tracks are made useless by a skip.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15335 a1c6a512-1295-4272-9138-f99709370657
2007-10-27 15:35:51 +00:00
Michael Sevakis
3c1d2069dd Make voice and codec queues private so they don't receive system messages. The audio thread controls them just fine. Important so codec stack-stealing plugins don't crash when system events are broadcast. Simpler too.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15333 a1c6a512-1295-4272-9138-f99709370657
2007-10-27 12:11:45 +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
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