|
10537 | Patches | Music playback | Very Low | Multifile Buffering and Wavpack hybrid support | 2009-08-17 | Bryan Jacobs | 2009-08-17 | 1 |
Task Description
The attached patch enables simultaneous buffering of multiple files in a minimally intrusive way. It also contains code to allow the playback of Wavpack hybrid files, both lossy and lossless. In the event that a Wavpack file is not a hybrid file, only original code paths are used. This patch will not affect users who do not use this file type.
How it works: A handle may now be marked as "chunky". If a handle is so marked, adding a new handle will NOT reserve space in the buffer for the remaining portion of the file. Instead only a small amount of space (currently 2*BUFFERING_DEFAULT_FILECHUNK) is reserved. Additional checking is also added to ensure that buffer_handle will not allow one handle to overflow into another; in the event that a handle's widx would cross into the next handle's header, the handle is "extended" by calling add_handle a second time and linking from the original via file_next. Thus, there are two paths to iterate from a "chunky" handle - the next handle in the buffer layout (h→next), or the next handle containing data from the same file (h→file_next).
Key new methods: extend_handle: used to create more space for a handle which is active but would overlap its successor if widx were advanced clean_handle: remove pieces of a handle marked as "invalid", but don't remove the whole handle (as close_handle does) bufopenchunky: as bufopen, but for a chunky handle finish_handle: reserves either some or all space for a handle in the buffer finish_chunky_handles: finishes all chunky handles
What works: - Playback of lossless hybrid mono and stereo files in the sim functions mostly as expected. Occasional segfaults may occur - these are probably a thread safety issue. Trying on a unicore target would be productive. - The functionality of any of rockbox other than hybrid wavpack files is not impaired - Playback on an iPod 5.5G works as well, but is not yet real-time (apparently the hard disk isn't fast enough to buffer both files and keep up with playback, so priority should be given to the .wv file to fix this) - Buffer space utilization is very efficient, the only waste is caused by the 300 bytes per struct memory_handle created. This could be minimized by only storing ridx, widx, and data in a minimal memory handle and copying the rest of the information to file_next as necessary (this is how open file descriptors are currently handled)
What doesn't work: - Seeking does not always work, although seeks not requiring a rebuffer are usually OK (even those which must cross into file_next!). Especially unlikely to work is backwards seeking. This is because the Wavpack codec uses approximate seeking, which is fine when you don't have to worry about only one file but falls apart when you need to have the same block in both the wv and wvc files. - Segmentation faults, especially at the end of very large hybrid files. These are almost all caused by the Wavpack codec in apps/codecs/libwavpack/words.c's response to reading extra 0 bytes. Wavpack does not check the validity of wvbits.ptr before reading from it! When combined with any error at all in the buffering code, or even any corruption in the input files, this leads to a segfault! There are also some issues in the original Rockbox buffering code. For example, in rebuffer_handle, h→next is used without first holding llist_mutex. This is a thread safety issue. On top of these, there's a bounds check I've missed somewhere in apps/buffering.c which can cause buffer corruption.
Most of the Wavpack decoding methods here were ported from those on http://wavpack.com with minor modifications. These files are under the GPL.
This patch contains commented printf statements as partial documentation and in case someone wishes to trace the flow of execution in the simulator.
|
|
10461 | Patches | Plugins | Very Low | Support for custom drawing of styled/scrolled text in p... | 2009-07-24 | Andrew Mahone | 2009-09-14 | 1 |
Task Description
Add support for two new scroll styles, STYLE_NODRAW and STYLE_CUSTOM, with STYLE_CUSTOM causing the draw to be done via a hook (set with lcd_set_style_hook). lcd_puts_stroll_style_offset also returns a struct scrollinfo pointer. This may be used in conjunction with STYLE_NODRAW to redraw the scrolling text in a plugin which draws other graphics to the same part of the screen, by drawing the text using the offset in the struct scrollinfo after the background graphics have been drawn. My latest patch from FS#4817 is required, as it consolidates styled text drawing in one function, making it easier to replace the normal draw with a call to the hook, and reducing the binsize impact of this feature as well.
Support for core text scrolling in PictureFlow plugin to follow .
|
|
10434 | Patches | Music playback | Very Low | Rudimentary support for codec-specific buffering | 2009-07-12 | Bryan Jacobs | 2009-07-12 | 1 |
Task Description
This patch adds does three related things:
- Adds *basic* support for seeking and buffering callbacks so different codecs may manage their buffer space differently - Extends a few buffering and metadata structures to store information on two files rather than one - Modifies the Wavpack codec to make use of these features to play back hybrid files with readable correction files losslessly.
This code should not in any way interfere with anything other than the situation where a Wavpack hybrid file is present AND its correction file is readable.
There are several things that need to be done before this patch may be committed: 1. Currently there are two ginormous linear buffers inside the Wavpack codec. They should be replaced with smaller dissimilarly-sized ring buffers. 2. The interspersal of primary and correction file chunks is currently 1/1/1/1. This should probably be more like 1/3/1/3 as that better matches the size rations of a .wv to its .wvc. 3. seek_wavpack needs to support seeking where rebuffering is required. 4. The wavpack hybrid decoding function needs to be modified to decode smaller chunks in a go so that the small ring buffers mentioned above won’t overflow. 5. Gracefully handle the end of a hybrid lossless file (currently it freezes the sim)
|
|
10333 | Patches | Remote | Very Low | iAudio M3 "SELECT" and "DONE" not working on remote in ... | 2009-06-14 | Richard Corden | 2009-06-14 | 1 |
Task Description
When adding text via the keyboard, neither the selection function nor the done function work using the remote play button. Pressing 'play' on the main unit however, does work and has the correct behaviour.
I checked the keymap-m3.c source and I noticed that unlike the other entires, the last entry for these options refers to the main unit buttons and not the remote:
{ ACTION_KBD_SELECT, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_PLAY }, { ACTION_KBD_DONE, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
I changed the entries to the following:
{ ACTION_KBD_SELECT, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY }, { ACTION_KBD_DONE, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
After rebuilding and installing this change onto my M3 the keybord now works when using the remote.
Attached is the patch file for this change.
|
|
10315 | Bugs | Bootloader | Very Low | ipod doesn't show connecting to PC | 2009-06-11 | Giles | 2009-06-11 | |
Task Description
Build 21245
I have ''Start Screen' set to 'Resume Playback'.
When connecting the Ipod (from OFF) to the PC the Ipod boots and USB mode starts but also playback (the play > sign is display on the title bar).
The Ipod is not shows and not mounted on the PC.
On disconnecting USB I get 'data abort' and have to hard reset.
|
|
10278 | Patches | Utils | Very Low | Update release building scripts to simplify releases | 2009-06-05 | Jonathan Gordon | 2009-06-05 | 1 |
Task Description
The aim of this patch is to make releases as simple as possible... i.e the end goal would be to have someone run “$ ~/rockbox/tools/release/release.sh 3.3” and that would do everything except feed the cat...
the first version just modifies bins.pl to accept a version number which eventually gets passed to the Makefile and used in the source to set the version string in the source to “3.x-rBLAAA”.
This also defines RBRELEASE which can be used in the source to do stuff, for example, remove the debug menu in releases (if we decide to do that...) (RELEASE is defined in speex so had to add the RB prefix...)
Also, this changes the way configure is run to use command line args instead of passing input to it which is Just Wrong (TM) :p
|
|
10117 | Patches | Music playback | Very Low | Behaviour of PREV/NEXT when "skip length" > 0 and "prev... | 2009-04-09 | Alexander Levin | 2009-04-09 | 3 |
Task Description
I put up the three patches (before they expire on pastebin.com) that correspond to the three proposals of how the behaviour of PREV/NEXT could/should be changed. Note that only the situation described in the “subject” of this task is considered and changed.
The IRC discussion is at http://www.rockbox.org/irc/log-20090406#21:35:42
The start of the discussion on the mail list is at http://www.rockbox.org/mail/archive/rockbox-dev-archive-2009-04/0057.shtml
|
|
10063 | Patches | Plugins | Very Low | Add fastforwad/rewind to Playback Control menu | 2009-03-27 | Teruaki Kawashima | 2009-03-27 | 1 |
Task Description
this is an attempt to implement the idea suggested in the forum (http://forums.rockbox.org/index.php?topic=20120.0). I take values from “skip length” setting for variable steps.
|
|
9906 | Patches | Font/charset | Very Low | 15-Adobe-Helvetica.bdf: invalid SWIDTH, DWIDTH for ETHI... | 2009-02-14 | Yoshihisa Uchida | 2009-12-15 | 1 |
Task Description
For 15-Adobe-Helvetica.bdf:
STARTCHAR ETHIOPIC SYLLABLE NO ENCODING 4758 SWIDTH 1520 0 DWIDTH 19 0
The above value of SWIDTH, DWIDTH is too larger than that of other Ethiopian characters (This character protrudes from bounding box).
I send this bug’s patch.
|
|
9802 | Patches | Manual | Very Low | Plugin API documentation v2 | 2009-01-15 | Maurus Cuelenaere | 2009-01-15 | 1 |
Task Description
This is v2 of the Rockbox plugin API documentation generator.
See the mailing list for more information ( http://www.rockbox.org/mail/archive/rockbox-dev-archive-2009-01/0040.shtml ).
An example of what the output looks like is available here: http://mcuelenaere.alwaysdata.net/rockbox_api_example_3/
|
|
9673 | Patches | Plugins | Very Low | Improve mpegplayer ( add pitch ) | 2008-12-19 | Sanggon, Lee | 2008-12-19 | 1 |
Task Description
I found FS#8521 (permanent pitch setting) can successfully combined with mpeg player. Add FS#8521 and some fix, we can use pitch function in mpeg player. This means, we can control mpeg play speed.
With FS#8894 (speed control without pitch change) can produce similar effect and more attractive, but FS#8894 have serious problem with gigabeat s30 and require more processer power and have lower sound quality.
This patch can patched with FS#8607 (mpegplayer playlist).
|
|
9628 | Bugs | Music playback | Very Low | Sound sometimes doesn't work on mr100 if booted without... | 2008-12-12 | Frank Gevaerts | 2008-12-12 | |
Task Description
Tested with r19410
If I boot with the headphones plugged in, sound always works (at least I didn’t have it fail yet). If I boot without headhones plugged in, and plug them in later, sound often doesn’t work. This may also depend on whether the player was turned off for a long time, whether the previous boot was USB mode, and whether the headphones were unplugged before or after shutting down.
|
|
9514 | Patches | Operating System/Drivers | Very Low | make simple list accept a viewport | 2008-10-30 | Jonathan Gordon | 2008-10-30 | 1 |
Task Description
this is part of a different patch which was changed to use the menu api instead of simplelist so im putting it up here incase anyone decides to make simplelist draw in a viewport.
The patch works (or did last time i tried it) but isnt commited because its not really needed just yet.
|
|
9295 | Patches | Battery/Charging | Very Low | Charger detection for iPod 2G (and 1G?) | 2008-08-18 | Mark Fawcus | 2008-08-18 | 1 |
Task Description
This patch adds detection of the charger connection. Not tested on a 1G, but should work if the ipodlinux GPIO documentation is correct.
NOTE: 'Charging' is not detected, just the presence of external power. See http://forums.rockbox.org/index.php?topic=18196.0 for forum topic.
|
|
9260 | Bugs | Applications | Very Low | r18234 - core + plugins shouldnt be calling opendir() d... | 2008-08-10 | Jonathan Gordon | 2008-08-10 | |
Task Description
Only filetree.c should be allowed to call opendir(), anything that needs to recursively scan directories should be calling ft_load() which can smartly open, scan and close a directory.
The problem with this is that the filename buffer could get corrupted easily if its misused.
as of r18234 the following is using opendir() in the core filetree.c:133: dir = opendir(c→currdir); ← not recursive filetree.c:257: dir = opendir(tempdir); ← in ft_load() so ok filetree.c:259: dir = opendir(c→currdir); ← “” “” “” misc.c:164: dir = opendir(pathlen ? buffer : “/”); misc.c:1059: dir = opendir(BOOTDIR); misc.c:1142: DIR* d = opendir(path); onplay.c:466: dir = opendir(dirname); onplay.c:817: srcdir = opendir(src); tagcache.c:4075: dir = opendir(dirname);
the tagcache and the onplay.c ones are dangerous… the 3 in misc.c are not recursive so safe.
the following are uses in plugins, havnt checked them so I only know for sure that stats, disktidy and properties are unsafe plugins/disktidy.c:203: dir = rb→opendir(name); plugins/disktidy.c:270: dir = rb→opendir(name); plugins/md5sum.c:78: dir = rb→opendir( path ); plugins/md5sum.c:113: DIR *dir = rb→opendir( newpath ); plugins/md5sum.c:209: dir = rb→opendir( arg ); plugins/properties.c:79: dir = rb→opendir(tstr); plugins/properties.c:151: dir = rb→opendir(dps→dirname); plugins/properties.c:276: dir = rb→opendir(str_dirname); plugins/random_folder_advance_config.c:70: dir = rb→opendir(fullpath); plugins/random_folder_advance_config.c:165: dir_check = rb→opendir(formatted_line); plugins/rockpaint.c:740: d = rb→opendir( bbuf ); plugins/rockpaint.c:754: d = rb→opendir( “/” ); plugins/rockpaint.c:915: d = rb→opendir( FONT_DIR “/” ); plugins/sokoban.c:925: if(!(dir = rb→opendir(dirname))) plugins/stats.c:139: dir = rb→opendir(fullpath); plugins/test_codec.c:763: dir = rb→opendir(dirpath); plugins/test_disk.c:356: dir = rb→opendir(testbasedir); plugins/test_disk.c:359: rb→splash(HZ, “opendir() failed.”); plugins/test_disk.c:421: if 1) == NULL) plugins/wavrecord.c:3774: if 2) == NULL)
so, The bad calls in the core should be changed to use ft_load, and the plugins should either get a new function in the lib to grab some ram and manage the whole thing, or maybe its safe to just call ft_load there also?
or alternatively, we can go on ignoring the issue.
|
|
9078 | Patches | Plugins | Very Low | Thinkfast - A plugin to measure your reaction speed | 2008-06-06 | Clément Pit--Claudel | 2008-06-06 | 1 |
Task Description
The purpose of the game is to press one of the four direction keys as fast as possible when randomly asked to do so. At the end of the game, min/max/average values are displayed.
|
|
9060 | Patches | Font/charset | Very Low | WenQuanYi Bitmap Song fonts | 2008-05-31 | William Poetra Yoga Hadisoeseno | 2008-05-31 | 14 |
Task Description
This font is part of the WenQuanYi Project at [1]. It’s in Chinese, but there’s an english page at [2]. This font is similar to the WenQuanYi Unibit font (FS#9059) and focuses mostly on ASCII and CJK, but I’m also posting this font for inclusion because this one has different point sizes, like for example the nimbus, Sazanami and ProFont fonts already included in Rockbox. With the different point sizes, especially lower point sizes, this font is great for small screens such as my iPod Nano.
I’m attaching some screenshots of this font under various point sizes and weights. I’ve also taken screenshots with the simulator to show how it would look like in Rockbox.
Additionally, this font is available from the original website at [3]. There is also an online README file at [4]. The source BDF files are available from the project’s SourceForge page at [5], and the BDF files I’m attaching come from the source package at [6].
According to the project[4], this font is a derivation of older free fonts and enhanced with bitmaps made by online users. As such, it is licensed under the GPLv2 with a font embedding exception[4]:
[quote] ** GPL v2 license with font embedding exception:
As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. [/quote]
It’s up to Rockbox developers whether to strip off this exception. Either way, the font is compatible with Rockbox’s license (GPLv2).
Links: [1] http://www.wenq.org/ [2] http://wqy.sourceforge.net/cgi-bin/enindex.cgi [3] http://www.wenq.org/index.cgi?BitmapSong [4] http://www.wenq.org/index.cgi?Hero_README [5] http://sourceforge.net/projects/wqy/ [6] http://downloads.sourceforge.net/wqy/wqy-bitmapfont-bdf-gb18030-0.9.9-0.tar.gz?modtime=1194227675&big_mirror=0
|
|
9059 | Patches | Font/charset | Very Low | WenQuanYi Unibit font | 2008-05-31 | William Poetra Yoga Hadisoeseno | 2008-05-31 | 3 |
Task Description
This font is part of the WenQuanYi Project at [1]. It’s in Chinese, but there’s an english page at [2].
I’m adding this font because: 1. Currently there is no good Chinese font for Rockbox. 2. The best Chinese font (unifont) has unevenly sized Chinese characters, while this font has uniformly sized Chinese characters.
The attachments contain screenshots of the simulator, to show how this font would look like on the iPod Nano. I’ve also attached a screenshot using the Unifont font to show the uneven sizes of Chinese characters, for comparison. I don’t know about other languages, but I’d think other CJK languages work better in this font as well, due to the merging of WenQuanYi Bitmap Song.
According to the project[3], this font is made by combining the GNU Unifont (GPL), WenQuanYi Bitmap Song (GPL) and Fixed-16×8 (Public Domain) fonts. The maintainer of GNU Unifont also acknowledges this fact at [4].
This font is licensed under the GPLv2 with a font embedding exception[3]:
[quote] ** GPL v2 license with font embedding exception:
As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. [/quote]
I don’t mind either way, but it would be up to Rockbox developers whether to strip off this exception. And either way, the font is compatible with Rockbox’s license (GPLv2).
The font I’m attaching is a modified version (and only the bdf); you can download the original version from [5]. My modification is:
— wqy-unibit.bdf.orig 2008-06-01 04:47:36.839752214 +0800 +++ wqy-unibit.bdf 2008-06-01 05:01:51.031748178 +0800 @@ -64,7 +64,7 @@ CHARSET_ENCODING “-1” CHARSET_COLLECTIONS “ASCII ISO8859-5 GB2312.1980 BIG5-0 KSC5601.1989-0 JISX0208.1997 ISO10646-1” ENDPROPERTIES -CHARS 46443 +CHARS 46444 STARTCHAR uni0000 ENCODING 0 SWIDTH 500 0
This is because convbdf will emit a warning “Warning: DWIDTH spec > max FONTBOUNDINGBOX” when converting the font. This is because there are actually 46444 STARTCHAR entries, but only 46443 glyphs – the character “mu” is encoded as 181 and 956, with the exact same glyph. The generated .fnt file is exactly the same with or without my modification.
Additionally, this font is quite big so it’s a bit big on the screen of the iPod Nano. But it would be great on larger screens. Please take a look at the screenshots in the attachments.
Links: [1] http://www.wenq.org/ [2] http://wqy.sourceforge.net/cgi-bin/enindex.cgi [3] http://www.wenq.org/index.cgi?Unibit_README [4] http://www.unifoundry.com/unifont.html [5] http://downloads.sourceforge.net/wqy/wqy-unibit-bdf-1.1.0-1.tar.gz?use_mirror=osdn
|
|
7180 | Patches | Plugins | Very Low | "Target" word game | 2007-05-17 | Will Robertson | 2007-05-17 | 1 |
Task Description
This is a rockbox version of the simple word game called “Target”. Rules: (stolen from The Age newspaper website) “See how many words of four letters or more can you make from the letters shown in the grids. In making a word, each letter must be used once only. The word must contain the centre letter and there must be at least one nine-letter word in the list. No plurals or verb forms ending with “s”; no words with initial capitals and no words with a hyphen or apostrophe are permitted. The first word of a phrase is permitted (eg inkjet in inkjet printer).”
Currently it only works on H300, iPod Photo and iPod 5g DAPs, but I plan to expand this to all bitmap targets soon enough. The games are either user selected or loaded from the file target_wordlist.dat, I’ve included 10 puzzles, but there are heaps more on The Age newpaper’s site (www.theage.com.au).
|