Rockbox

IDTask TypeCategoryPrioritySummaryOpenedOpened by  descLast Edited
10537PatchesMusic playbackVery LowMultifile Buffering and Wavpack hybrid support2009-08-17Bryan Jacobs2009-08-171 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.

10461PatchesPluginsVery LowSupport for custom drawing of styled/scrolled text in p...2009-07-24Andrew Mahone2009-09-141 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 .

10434PatchesMusic playbackVery LowRudimentary support for codec-specific buffering2009-07-12Bryan Jacobs2009-07-121 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)

10333PatchesRemoteVery LowiAudio M3 "SELECT" and "DONE" not working on remote in ...2009-06-14Richard Corden2009-06-141 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.

10315BugsBootloaderVery Low ipod doesn't show connecting to PC2009-06-11Giles2009-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.

10278PatchesUtilsVery LowUpdate release building scripts to simplify releases2009-06-05Jonathan Gordon2009-06-051 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

10117PatchesMusic playbackVery LowBehaviour of PREV/NEXT when "skip length" > 0 and "prev...2009-04-09Alexander Levin2009-04-093 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

10063PatchesPluginsVery LowAdd fastforwad/rewind to Playback Control menu2009-03-27Teruaki Kawashima2009-03-271 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.

9906PatchesFont/charsetVery Low15-Adobe-Helvetica.bdf: invalid SWIDTH, DWIDTH for ETHI...2009-02-14Yoshihisa Uchida2009-12-151 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.

9802PatchesManualVery LowPlugin API documentation v22009-01-15Maurus Cuelenaere2009-01-151 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/

9673PatchesPluginsVery LowImprove mpegplayer ( add pitch )2008-12-19Sanggon, Lee2008-12-191 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).

9628BugsMusic playbackVery LowSound sometimes doesn't work on mr100 if booted without...2008-12-12Frank Gevaerts2008-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.

9514PatchesOperating System/DriversVery Lowmake simple list accept a viewport2008-10-30Jonathan Gordon2008-10-301 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.

9295PatchesBattery/ChargingVery LowCharger detection for iPod 2G (and 1G?)2008-08-18Mark Fawcus2008-08-181 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.

9260BugsApplicationsVery Lowr18234 - core + plugins shouldnt be calling opendir() d...2008-08-10Jonathan Gordon2008-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.

1) dir = rb→opendir(testbasedir
2) dir = rb→opendir(recbasedir
9078PatchesPluginsVery LowThinkfast - A plugin to measure your reaction speed2008-06-06Clément Pit--Claudel2008-06-061 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.

9060PatchesFont/charsetVery LowWenQuanYi Bitmap Song fonts2008-05-31William Poetra Yoga Hadisoeseno2008-05-3114 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

9059PatchesFont/charsetVery LowWenQuanYi Unibit font2008-05-31William Poetra Yoga Hadisoeseno2008-05-313 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

7180PatchesPluginsVery Low"Target" word game2007-05-17Will Robertson2007-05-171 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).

Showing tasks 651 - 669 of 669 Page 14 of 14<<First - 10 - 11 - 12 - 13 - 14

Available keyboard shortcuts

Tasklist

Task Details

Task Editing