Commit graph

15366 commits

Author SHA1 Message Date
Avi Eisenberg
f723ca5805 Fixed bug where exiting textviewer after using up all the bookmarks caused that file unable to be read the next time.
Change-Id: I1924fe68c8528c03c4197f74a4f014edb0ac9f2a
2014-02-07 17:57:17 +01:00
Lorenzo Miori
e876f4df6d Samsung YP-R1 target port
This is the basic port to the new target Samsung
YP-R1, which runs on a similar platform as YP-R0.
Port is usable, although there are still
some optimizations that have to be done.

Change-Id: If83a8e386369e413581753780c159026d9e41f04
2014-02-05 09:56:21 +01:00
Thomas Martitz
0b7a90722a talk: On hwcodec disabling DMA interrupt is required during buflib move
Even though the DMA buffer itself does not move the ISR copies from a movable
buffer into the static commit buffer. To ensure this copying yields consistent
data it must not be interrupted by this ISR..

Also bump the commit buffer size to 2k, this should reduce the overhead
considerably because many clips are smaller than that (especially on
swcodec/speex).

Change-Id: I4e1ab83074f31fc91b51a58baa1df55ce659ac73
2014-02-03 12:43:05 +01:00
Thomas Martitz
10b3bc78f6 Fix warnings.
Change-Id: If3cbcd7557797684f1b7fea8e1bb134777680dee
2014-02-03 12:33:33 +01:00
Thomas Martitz
e5eb74592e talk/voice: Reduce the size of the commit buffer.
The voice engine can now request more voice data during decoding, it does
not require the entire clip to be available before start of decoding anymore.
Therefore the commit buffer does not need to hold an entire voice clip anymore,
and can be made greatly smaller.

Change-Id: I3eca9026448e725b9b8d0dae1efca0ad185371da
2014-02-02 19:40:39 +01:00
Thomas Martitz
af02a674c5 talk.c: The new cache management is good enough to use it for .talk clips as well.
This unifies the talk.c for all possible voice payload. .talk clips are placed
onto the same unified clip cache, along with normal clips. This allows for more
effecient memory usage.

The cache handling makes a slight difference between normal clips and .talk
ones: .talk clips can be cached multiple and are always freed first.The extra
logic to avoid loading multiple copies of .talks is not necessary because the
will be freed first anyway.

Change-Id: I88d056a0a613b129f5875f50fdb757b58bac0a42
2014-02-02 19:40:39 +01:00
Thomas Martitz
03f373c9cd talk.c: The new cache management is good enough to use it on all targets.
This unifies the talk.c for all targets. The only separation is left is
TALK_PROGRESSIVE_LOAD: When this is defined the talk buffer will not be
initially prefilled. This is useful for super slow storage or when the buffer
is not large enough to prefill it with useful clips (the prefill code could
be made smarter too).

The buffer size can be adjusted. By default lowmem uses 100k while
other targets load the entire file. The bigger the more clips can be cached
but with diminishing returns.

Change-Id: Ife38fb101c53093117e6638c40c65f7d177a31d4
2014-02-02 19:40:39 +01:00
Thomas Martitz
c46f9be10a talk: Smarter cache management for TALK_PARTIAL_LOAD.
Previously the clip cache of TALK_PARTIAL_LOAD reserved space N clips, each slot
was as big as the maximum sized clip which was necessary to replace clips
in-memory in MRU-style.

The cache management now uses buflib to allocate and free each clip, using the
clip's real size. This allows the clip cache to be much more compact, because
no space is wasted for the max. sized clip. This makes use of buflib's ability
to easily manage differently-sized memory chunks by moving them to make free
space.

As an example: for english.voice TALK_PARTIAL_LOAD allocated 288k in advance.
for just 64 clips. With this patch ~70 clips can be stored in a 100k buffer.
This, the memory usage is cut by 2/3 and almost optimal (there's still the
buflib per-alloc cookie overhead).

As a result the TALK_PARTIAL_LOAD buffer is restricted to 100k which still
allows for more clips than previously, on average.

Change-Id: I257654071e9a95770cd6db2c2765f020befce412
2014-02-02 19:40:39 +01:00
Thomas Martitz
dac40fdd60 talk: Add debug menu entry to view statistics about talk engine.
This engine includes voicefile, memory usage and cache
hits/misses for TALK_PARTIAL_LOAD.

Change-Id: I331981ddda39ea30c57b4b74504accb3c556c3b9
2014-02-02 19:40:39 +01:00
Thomas Martitz
57000b513b talk: Make talk_voice_required() local to talk.c
Change-Id: I3a04760d550efab7f011a917597ef29c039b05bd
2014-02-02 19:40:39 +01:00
Thomas Martitz
60dea95cad talk/hwcodec: Do always free the clip buffer in shrink_callback().
This is necessary because when voice is active audio is disabled. But only
audio was able to shrink it's buffer to let other memory allocs succeed.
talk needs to be able to do this too when it owns the audio buffer exclusively.

Change-Id: Idea8ab90da7169f977c0c766cccb42c4fe6d6e81
2014-02-02 19:40:39 +01:00
Thomas Martitz
428f069a1f talk: Remove superflous call to talk_init().
talk_init() is called by settings_apply() already which is called on boot.
Doing it again means loading the voicefile a second time which isn't necessary.

Change-Id: I4decd16401e63bf87338d3163c99d06d69fe3a3c
2014-02-02 19:40:38 +01:00
Dominik Riebeling
f63b42ad41 Correct the number of codepages on charcell.
63cfbe0 fixed the number of codepages for bitmap targets. The same issue is
present on charcell, so update the number for that as well, fixing UTF-8
missing in the list.

Change-Id: Ib5d3494ed3d80e839ae3f59ec0a4277e5aa9d6fd
2014-01-27 20:27:15 +01:00
Thomas Martitz
efc20ec164 talk: When no voice file is loaded don't even attempt to load the clip, it's hopeless.
Change-Id: I420155d7f01ca0ea301c0678ac7245d251d365b0
2014-01-27 10:05:48 +01:00
Thomas Martitz
543027564c hwcodec/talk.c: Give the thumbnail buffer regardless of the talk buffer policy.
When the policy is not set, it'll by default not give the clip buffer away.
Callers of core_alloc_maximum() suffer from this. However, the thumbnail
buffer can be easily freed when needed because nothing needs to be
reloaded from disk when it is reallocated (thumbnail clips are loaded on
demand, when in the file browser). Do this to give core_alloc_maximum() callers
a better chance to succeed with the default talk buffer policy.

Change-Id: I8c0da29c520612ca903f6c930bd7c74ae97eca3b
2014-01-26 19:14:47 +01:00
Purling Nayuki
946c348e5c Fix incorrect language string reference in eq_menu.c
In most of the translations strings with SYSFONT in title is
translated. This leads to displaying problem in (at least) graphical
equalizer due to the lack of non-latin character support in the
built-in font.

Change-Id: I0d27a5358e4eb539d4247c84975d8501d7668836
Reviewed-on: http://gerrit.rockbox.org/727
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2014-01-26 16:26:00 +01:00
Thomas Martitz
8142c68bd2 Fix red on monochrome.
Change-Id: Ice40c81d0d07f7ec2014697e4de446dcb956afe8
2014-01-22 17:31:24 +01:00
Thomas Martitz
6cb11764e0 skin_engine/backdrops: Have to reload default backdrops from setting when it changed.
When skins use the default backdrop (via %X(-) or no %X at all) and the setting
changes it needs to be reloaded, otherwise when changing themes the new theme
could show the backdrop from the previous theme. The same needs to be
done when re-selecting the same theme after USB because the backdrop file was
potentially overwritten.

Fixes FS#12892 and FS#12942.

Change-Id: Ic2d20740cc385fa99667ce8a71507dbda2efceaf
2014-01-22 16:58:58 +01:00
Thomas Martitz
6879af9784 rockbox: Improve button repeat handling.
Change-Id: I1259c43019c51828b2af73f312aee9cf399d57cf
2014-01-18 23:06:55 +01:00
Frank Gevaerts
63cfbe096b There are 15 codepages to choose from, not 14.
2d9c0bab added a codepage but didn't increase the number of choices
for the setting, so UTF8 dropped off the list.

Change-Id: I154032bddaabcb783212370a12b2e5cdea305302
2014-01-18 20:39:13 +01:00
Thomas Martitz
c448d7e79c rockboy: Fix button read method.
The old method simply polled the lastbtn variable in button.c. This approach
does not clear the button event queue which overflows as a result (panic
in the simulator). Use proper APIs to fix that and adopt the
method from the old read_scroll_wheel() function, which reads buttons until
the button queue is empty, for all targets.

Change-Id: Ibf198f6e597e7f51ab4ebcfcae4ebebbe8d7845c
2014-01-18 19:47:55 +01:00
Thomas Martitz
33f5fdeadf rockblox: Fix compilation under recent mingw-w64-gcc.
Change-Id: I703d967e9288e5c74556b54ad4f72ef2f6247083
2014-01-17 11:14:00 +01:00
Purling Nayuki
335d708c99 Fix chinese-trad translation
Change-Id: Ifccb5c17d165d18e5076fb7ebc1af3cda3e2f778
Reviewed-on: http://gerrit.rockbox.org/726
Reviewed-by: Frank Gevaerts <frank@gevaerts.be>
2014-01-16 11:26:03 +01:00
Marcin Bukat
7ab237b025 buflib: Add crc field protecting buflib cookie integrity
This should catch the case of buffer misuse which results
in corrupted cookie of next allocation. The check is performed
on move_block() so it may be a bit late.

There is buflib_check_valid() provided which checks the
integrity of all cookies for given context.
On DEBUG build with --sdl-thread this check is carried out
for core_ctx on every context switch to catch problems earlier.

Change-Id: I999d4576084592394e3dbd3bdf0f32935ff5f601
Reviewed-on: http://gerrit.rockbox.org/711
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2014-01-16 10:17:39 +01:00
Marcin Bukat
7f5dce4116 ipods: fix DEBUG builds
iap-core.h defines LOGF_ENABLE unconditionally but hexstring()
helper function was not compiled if logf support was not
selected in configure. The regular builds worked by accident
because logf() lines where discarded by preprocessor.

Change-Id: Id76af478e7c760d81168ebf9bf3eb973a679987c
2014-01-16 08:19:27 +01:00
Thomas Martitz
47f648fd92 Fix Player warning.
Change-Id: I43989c92935710b36b68891a637db2e2cafb0401
2014-01-16 00:44:06 +01:00
Thomas Martitz
aa4c2a53f3 usb screen: Crop logo to the UI viewport dimensions.
If the UI viewport is too small only the most top/left parts of the logo will
be displayed. This goes one step further than bac85f2.

Change-Id: I832b0e787e57e3b102a9c097cf1cccd7d4ad92d9
2014-01-16 00:28:18 +01:00
Thomas Martitz
a6483344f6 usb screen: Push the usb screen onto the activity stack. This enables %cs tag support for it.
Change-Id: Icecb72007aa3aba501c702e1aa65c801fcbc3857
2014-01-16 00:26:45 +01:00
Thomas Martitz
98591a2815 menus: Stop scrolling before entering the USB screen or remnants of the previous list could appear on it.
Change-Id: I2753c239ef787e0a6af64c3d9c5bdeb26326a9d0
2014-01-16 00:25:40 +01:00
Thomas Martitz
a969e1f456 usb: Do not disable themes in the USB screen.
Fonts can now be assumed (by the code) to be available during USB. Make
use of this fact in the USB screen and don't disable the skins.

Change-Id: I525359aae16660604e8fe89addc0bdf97a3fafc1
2014-01-15 23:37:39 +01:00
Thomas Martitz
84c7d6133b tagtree: Use strnatcasecmp() for the database browser too.
Even though you can insert leading zeros that makes ascii sort work for
numbers, sometimes the leading zeros don't suffice. In order to always
sort numerically strnatcasecmp() is needed.

With the default tagnavi.config this affects albums with discnum > 9
or tracnums > 99. This FS#12888.

Change-Id: Ie265c86eaf6dd07b6beda9e5eef25eb81eef8fd4
2014-01-15 23:18:35 +01:00
Thomas Martitz
4f5b13077e Fix Player
Change-Id: Ie489f91f78a9bdbded9b4ce09c74602dbca3934b
2014-01-15 22:56:39 +01:00
Thomas Martitz
5007bd64c3 Fix checkwps.
Change-Id: Ic10df965d55939b4d5ff5105f83a08a097877910
2014-01-15 22:40:18 +01:00
Thomas Martitz
2eb873cea6 skins: Update SBS when changing activities.
When changing activities (those that are indicated via %cs skin tag), the sbs
needs to be updated, so that the UI viewport can be applied before that
activity draws its UI.

Fixes FS#12804. I hope this commit doesn't have bad side effects.

Change-Id: If45654e356749f5f27991430dbd1da6f23e6f802
2014-01-15 18:57:46 +01:00
Thomas Martitz
644d9eab6c radio: Fix crash with radioart after skipping some stations
Change-Id: I5dbf60598f9b0b7d56272b6736726c1e6bc2295c
2014-01-15 14:48:55 +01:00
Thomas Martitz
d0d9f868f6 FMS: Load/update the skin at last, when fully initialzed, so that it can display the right content from the beginning.
Change-Id: I15a708d34912c0749f2497baabf90d26deaaf5df
2014-01-14 22:45:04 +01:00
Szymon Dziok
bac85f2cb4 Always check, if the USB logo for remotes overrides their physical size.
This fixes displaying of the main USB screen on m:robe 100. A remote for
this particular target has no native remote USB logo and it uses a larger
one. However it's a good idea to perform this check always IMHO.

Change-Id: I56ceb2316c551269be011b60271d8da11cb8b073
2014-01-13 21:46:57 +01:00
Frank Gevaerts
72367f458e Don't try to set default_val in volume_limit_is_changed().
We don't use the default_val anywhere, so there's no need to try
to use it in a buggy and null pointer dereferencing way here.

Change-Id: Ie60dbab7647056e2bf457cb5dcc5b60012ea1651
2014-01-13 15:26:13 +01:00
PurlingNayuki
f0bec023d9 Implement volume limiter feature
Add a "volume limit" parameter to the configuration file. The maximum
value of volume setting in sound menu will be limited to the same as
volume limit. Also each time when setvol() is excuted, Rockbox will
check if the global_settings.volume value larger than
global_settings.volume_limit. If larger, take the value of volume_limit
instead. The volume_limit argument shares the same maximum and minimum values
with volume argument, while taking the maximum volume as its default value.

Change-Id: I8ca9bc6ea6e617b48fc346aae5f2a0a1d259ae36
Reviewed-on: http://gerrit.rockbox.org/697
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
2014-01-13 11:32:03 +01:00
Thomas Martitz
4e1c690ea7 skin_engine: Stricter checking for x, y, width, height for bar tags.
Every theme that doesn't parse anymore now has broken values. I hope it's not
too many of them.

Change-Id: I6f52e55dc9197d0919f854240723a88f99c0b7da
2014-01-12 23:13:45 +01:00
Thomas Martitz
d243e7e7fe fuze+: Fix pitchscreen keymap.
Like on other targets, left/right should change by 2% only temporarily.
In timestretch mode fast speed change was not available.

Fixes FS#12900.

Change-Id: I8819c2ae7266bc09565b5ef13055985acf483f98
2014-01-12 21:42:00 +01:00
Thomas Martitz
09e655f89d put_line(): Add another check against possible buffer overflow (see 193911a).
Change-Id: Idc6637cc42afe612375dab3acac8495278f68f0a
2014-01-12 19:19:05 +01:00
Thomas Martitz
193911af76 put_line(): Fix buffer overflow.
At the end of the format string it wrote a last byte (or inline string) past
the end of the lcd boundaries, potentially overwriting unrelated memory. It
now makes sure it won't exceed the viewport's width.

Change-Id: Id4cfce918e8b070b7fc3c7d33f389f7a171963ff
2014-01-12 17:37:16 +01:00
Thomas Martitz
3ae73433ab skin_engine: New param "noborder" for the bar tags.
By specifying this param the bar will not have a border/box. Instead
the inner part that fills up is maximized on the bar area.

Note that this only affects bars using foreground and background colors,
not those constructed with images.

Change-Id: Ib8dd49ecbaf9e16b96de840f5f365871b73d4fa4
2014-01-12 15:22:29 +01:00
Thomas Martitz
6e882b43b6 put_line(): Do not lock up if the scroll engine runs out of lines.
Allocate MAX_LINES+1 because at the time get_line_desc() is called
the scroll engine did not yet determine that it ran out of lines
(because puts_scroll_func() wasn't called yet. Therefore we can
run out of lines before setting the used field. By allocating
one item more we can survive that point and set used to false
if the scroll engine runs out of lines.

Change-Id: I7a9af1bce256c6e07d254f096bd5865fa7cf2cee
2014-01-12 12:12:13 +01:00
Thomas Martitz
c0a02c98c1 touchscreen/skin_engine: The touchregion handler didn't handle that vertical bars are bottom-up by default
Change-Id: I4e7fc451c7ba318acb110c587bff4306c393e09f
2014-01-12 11:02:02 +01:00
Thomas Martitz
0a0d61e777 Fix remote warnings and charcell reds, and remove minor left-over tuff.
Change-Id: I10987ea9fcad94d502afd4ae4a80ab9022c75d2e
2014-01-12 01:50:21 +01:00
Thomas Martitz
488a1b983e put_line/scrolling: Make the scroll engine inform custom scrollers about start/stop of scrolling.
With the new lcd_putsxy_scroll_func() code can register custom scroll functions
(put_line() makes use of that). In order for the custom scroller to be able
to properly manage its userdata pointer (set via struct scrollinfo::userdata)
the scroll engine must inform the scroller about start and stop of scrolling.

To inform about start the lcd_scroll_* functions now return true when
the line will scroll. To inform about stop the scroll engine calls into the
scroller one last time, with the text set to NULL.

put_line() can use this to release the userdata registered per scrolling line
so that it can be recycled.

This fixes that some scrolling lines became glitchy after some time because
the userdata was recycled too early.

Change-Id: Iff0a6ce2a4f9ae2bada1b8e62f4f5950224942a9
2014-01-12 01:34:06 +01:00
Thomas Martitz
2a471c9e84 cuesheet: Fix another possible buffer overflow with long filenames.
Change-Id: I9d8fa8fcb0a872f688664c53881fde93f2de9436
2014-01-11 18:24:48 +01:00
Thomas Martitz
fe08ac4c2f cuesheet: Fix possible buffer overflow with long filenames.
Change-Id: I49fe6da35057895d3c5a08a8723afe41eef7afe8
2014-01-11 18:01:22 +01:00
Konstantin Kudakov
8c286b4686 cuesheet: Search for /path/to/music.mp3.cue as well if all fails.
Change-Id: If58ea7c7b94de54f6d9b014f069807bb88c6a147
2014-01-11 16:29:00 +01:00
Thomas Martitz
5d37d2579a icons: When loading mono icons keep them in mono format.
This enables monochrome icons them to work with the invert line selector.

Change-Id: Ic3e9219e93b4879166a10180e6067446a84a62bf
2014-01-11 14:19:43 +01:00
Thomas Martitz
ce8aef737c bmp loader: Fix loading of monochrome/greyscale BMPs with newer headers.
The code expected the color table at offset 54 (14+size of BITMAPINFOHEADER),
which was after the BITMAPINFOHEADER header. However, newer BITMAPINFOHEADER
versions exist which have more fields before the color table. Fix this by
explicitely seeking to the color table.

Change-Id: If1dfc77e7485e5a9e0bc0e7f577152da9358bd71
2014-01-11 14:19:43 +01:00
Thomas Martitz
fe73d75e74 playlist_viewer: Reset icon callback after leaving the playlist viewer settings.
This fixes that the playlist viewer still shows the icons after changing
the playlist viewer specific show_icons value until re-opened.

Change-Id: I42f287bcf02b27f0255dc157560c2e6575307eb6
2014-01-11 10:49:45 +01:00
Thomas Martitz
2d4bf62032 playlist_viewer: Resurrect playlist viewer settings submenu in the playlist viewer context menu.
This was lost in 97a4c1ef (svn r30177) for unkown reason but the manual still
mentions this item, so I assume it was an accident. It doesn't hurt anyway.

Fixes FS#12930.

Change-Id: I2f5cd81913ec7bb911d1117e50c010a5c1b89b52
2014-01-11 10:46:37 +01:00
Thomas Martitz
d4d3f3c494 skin engine: Fix FS#12884.
The %Vf and %Vb tags change the colors for the rest of the viewport. This
requires the rest of the vp to be redrawn when they change due to a conditional.
The previous code did this redraw in all cases (conditional or not) which
led to visible blinking.

Change-Id: Ie59dfc6fe8ed76485a2a2bd7caf1315f1944c227
2014-01-10 21:54:06 +01:00
Thomas Martitz
99f3f77ee8 skin_engine: Pass string to put_line() via $t because they can be very large.
Change-Id: I02d6bf492bb42e173a7b436427e3cc3560d80183
2014-01-09 23:28:33 +01:00
Thomas Martitz
7ba2d0160b put_line(): Limit and truncate inline strings to MAX_PATH+32.
Because inline strings have to be copied (to escape '$') the local buffer
can be exhaused. The code didn't check for this. The buffer is increased
to handle filenames plus some extra chars but truncates to avoid overflow.

If you have longer strings please pass them via $t tag, in which case
put_line() imposes no additional length-limitation.

Change-Id: I0ca20adbe72f6d44cb442f34d665c16b12cbbaeb
2014-01-09 23:17:38 +01:00
Thomas Martitz
3be3a40138 put_line: Be more careful with changing fg and bg colors.
put_line() needs to change fore- and background colors if required by
the line style. This should really only be done if required, and be undone
as to not compromise subsequent lines. This fixes %Vf and %Vb skin tags.

Change-Id: I85e5a0d1d64aa9eb76a891d9ce1de1320274a69a
2014-01-09 17:42:47 +01:00
Thomas Martitz
124e9c1cb6 Fix put_line via multiscreen API on remotes. Stupid me.
Change-Id: Id75dfd6ab3957dd27cb7db6f8776f754d85c19b4
2014-01-08 10:45:00 +01:00
Thomas Martitz
81be2016bb Fix Player red and icons on mono displays.
Change-Id: Ib8adcb4c70f2dd3ddd25da8f0606f48926dfd89e
2014-01-07 23:39:37 +01:00
Thomas Martitz
4f5894de52 Bump plugin API and ABI for put_line and struct viewport related changes.
Change-Id: I891e3c612ec0fb27e393561dababfc5ef7eb6e46
2014-01-07 23:02:52 +01:00
Thomas Martitz
e766e6d9f3 reversi: Update viewport initialization to new member fields.
Change-Id: I37f77e4ad5abf04006dd6ee2a82de115ef204e3a
2014-01-07 23:01:07 +01:00
Thomas Martitz
10a2e6738d Oops, pasted to the wrong place.
Change-Id: Icb07ddd04171699e997eca171bf8756b5fd9f024
2014-01-07 22:46:45 +01:00
Thomas Martitz
0e6d86e4fe Fix a few reds and yellows.
Change-Id: I9ad2aca494f2ea3ca5453082ec5491ec031f9ae5
2014-01-07 22:41:00 +01:00
Thomas Martitz
d146970ca1 lcd/grey: Enable viewport fg_pattern and bg_pattern for all bitmap targets.
Greylib performed a horrible hack and stored fg and bg patterns in other
struct viewport fields. One of them was just removed. So instead of
this hack simply enable the *_pattern fields for mono targets as well,
so that greylib can use them normally.

Change-Id: Ib0842ebcc97f5bf9d9382b4471903afa2f96f39f
2014-01-07 22:14:41 +01:00
Thomas Martitz
e1c7b3b8f7 lcd-16bit: Remove {lss,lse,lst}_pattern fields from struct viewport.
These where used for line styling during scrolling, which is now done in apps/,
The  viewport struct doesn't need to record these anymore.

Change-Id: I810d9dcb2644b00a798c6e75acab69c74a78e77f
2014-01-07 14:13:48 +01:00
Thomas Martitz
36e469db8b lcd-common: Remove direct style (line decorations) from lcd-puts* functions.
This logic is moved into apps (put_line()) which can better handle line
decorations with respect to scrolling, mulitline and other complications.

Firmware doesn't need this. The remaining drawing function know only one style,
that is foreground on background/backdrop (changing drawmode is still supported).

Change-Id: I707060edc388a7d723a7d09b0cf5cbda6ec56708
2014-01-07 14:13:48 +01:00
Thomas Martitz
4978094480 lcd-common: Remove support for custom line heights from viewport.
Since scrolling is now pixel-based this is not necessary anymore. custom line
height is handled by put_line() but can also possible to implement with
lcd_puts_scroll_func().

Change-Id: Iee9b12bf99afac93d95d2a1a6f5d5b4db237b21c
2014-01-07 14:13:48 +01:00
Thomas Martitz
9a4686b563 lcd-common/scroll_engine: Remove unused functions lcd_puts_style_xyoffset() and lcd_puts_scroll_style_xyoffset().
With this functions removed there is no exported function in firmware left
that draws line decorations. Also no function supports specifying an y-offset
anymore (was used for pixel accurate positioning of otherwise strictly line-based
API calls).

Both should be handled in apps/ now.

Change-Id: Iba4b28ccc6e686c7db63e34b51ad4badae983fce
2014-01-07 14:13:48 +01:00
Thomas Martitz
775ebe4ff6 lcd-common/scroll_engine: Remove unused functions lcd_puts_scroll_style().
Change-Id: Ia4f943b3738ab6e66b0e3f1507c629b36d7eba94
2014-01-07 14:13:48 +01:00
Thomas Martitz
7cd07290e6 lcd-common: Remove unused function lcd_puts_style_offset().
Change-Id: I24da23d132f933fe647416dc58e8f50879715423
2014-01-07 14:13:48 +01:00
Thomas Martitz
1e324aac36 lcd-common: Remove unused function lcd_puts_style().
Change-Id: Id2c64c116f79b8e61a7af49b9072b3e884ffb455
2014-01-07 14:13:48 +01:00
Thomas Martitz
8f64625888 lcd-common: Remove unused function lcd_puts_offset().
Change-Id: I39749bf3db915e5a8ddb6e6f25eb201ea0aaf981
2014-01-07 14:13:48 +01:00
Thomas Martitz
a422604435 lcd-common/scroll_engine: Remove unused functions lcd_puts_scroll_offset() and lcd_puts_scroll_style_offset().
Change-Id: Ia84ae88020d06a1cb634942ab5e635fd5d10ac66
2014-01-07 14:13:48 +01:00
Thomas Martitz
2ef9aa51f3 test_gfx: Add benchmark for put_line().
Change-Id: I94cd5cec5ce169a4ddb60fcb3c09e2ffb50a3401
2014-01-07 14:13:41 +01:00
Thomas Martitz
5aa5a923f3 splitedit: Adapt put_line().
This plugin had a (broken) poor-mans list implementation which can be
better achieved through put_line().

Change-Id: I4ba92ba3a01b84a273b3f0a5d067b24c622ddc9e
2014-01-07 14:13:40 +01:00
Thomas Martitz
91ef65306b skin_engine: Adapt put_line().
This allows for code unification and removal of a workaround (STYLE_XY_PIXELS).

Change-Id: Ie92d377414cad943cdb06976af10b4f315f32710
2014-01-07 14:13:40 +01:00
Thomas Martitz
eec89a90ff lists: Adapt put_line().
This enables removing large portions of code, simplifiyng the drawing routine.
All of the removed code is functionaltiy now available through put_line().

Change-Id: Ib8e61772134189a8c3c6d22345c0b45e912bea76
2014-01-07 14:13:40 +01:00
Thomas Martitz
5d6974641b Introduce put_line().
This function is a fully-fletched, high-level pixel-based line printer, that
combines functionality of several firmware and list functions. It can
draw spacing, icons and text in a single call, in any order and each multiple
times. It can also apply line decorations at the same time.

It features printf-like semantics by accepting a format string that contain
format tags as well as inline text.

It's accessible directly, but also through the multi-screen api for plugins.

Change-Id: I70f5a77bbf4b0252521f2e47ead377b9d6d29b54
2014-01-07 14:13:17 +01:00
Thomas Martitz
5752d029fd icons: Provide accessors to the icon format (mono or native).
This is needed by the upcoming put_line() api to apply different drawmodes
depending on the format.

Change-Id: I626a7369a6e75c9c46af1ca5e4f1a9d401899b68
2014-01-07 11:49:53 +01:00
Thomas Martitz
bc9a45b05f icons: Remove automatic left padding if x == 0.
Since x is viewport-relative the icon isn't necessarily placed at the physical
display boundaries so that the padding isn't always useful. In fact it does
more harm if one wants to place an icon exactly at 0 of a (non-default)
viewport.

Calling code looks still mostly fine. I've only modified list drawer to include
the padding in the call-site.

Change-Id: I6b16b3d4377c3553234667b79837adde10e0edf2
2014-01-07 11:36:00 +01:00
Thomas Martitz
76476751d7 lcd-charcell: Correct get_icon_width() stub, everything is 1 char wide.
Change-Id: I2a76c306be8f11827cb8d1f12641d710f49274aa
2014-01-07 11:36:00 +01:00
Thomas Martitz
acee675a5e lcd-charcell: Add set_drawmode() wrapper to multi-screen API.
Change-Id: Idb6477aca8b19cb346ba2c2f5b91074e4679b0dd
2014-01-07 11:36:00 +01:00
Thomas Martitz
77836e5736 lcd-16bit: Introduce lcd_gradient_fillrect_part().
It is similar to lcd_gradient_fillrect(), except that it only draws a part
of the complete gradient. This can be used to draw only the bottom half
of a full gradient.

Change-Id: Ib47cc5237f6966e35ba07988bddbb00fd97adf96
2014-01-07 11:36:00 +01:00
Thomas Martitz
6630958533 lcd-common/scroll_engine: Introduce lcd_putsxy_scroll_func().
This function supports installing a custom scroll callback. This will be
called when the scrollengine redraws the line. It allows to draw extended
styles (or anything your can possible imagine) along with the text.

It is also strictly pixel-based, the first pixel-based function that supports
scrolling.

Change-Id: I57f81ac7b3d08b877aea4cb8afa882f175ebcdfc
2014-01-07 11:36:00 +01:00
Thomas Martitz
2f4a94189d bmp.c: Undo debug stuff that got in by accident.
Change-Id: Ic37658ab8d81405e28a4097d38785900fd0951cd
2014-01-05 19:37:48 +01:00
Thomas Martitz
281d1fadb3 Do not include kernel.h in system.h.
system.h doesn't need it on its own and this change makes it less
dependant on Rockbox internals.

Change-Id: I4e1e4108a52a7b599627a829204eb82b392fc6d6
2014-01-05 19:35:23 +01:00
Thomas Martitz
dd7b141736 apps/bitmaps: Replace pseudo-native default icons with mono ones.
The old icons looked exactly like the mono version, and all >1 bpp drivers
support rendering mono bitmaps. Therefore a mono bitmap can be used which
requires less ram.

This affects only the builtin icons, not the ones used by cabbiev2.

Change-Id: I3b02b5b04fe8b4bcc69e83310871254d336b648a
2014-01-05 19:35:23 +01:00
PurlingNayuki
7602f10423 Fix Chinese translation and missing "Attack Time" string
Change-Id: Ia4ae29bfe8739da93369a497a55680c7d445f730
Reviewed-on: http://gerrit.rockbox.org/700
Reviewed-by: Purling Nayuki <cyq.yzfl@gmail.com>
Tested: Purling Nayuki <cyq.yzfl@gmail.com>
Reviewed-by: Bertrik Sikken <bertrik@sikken.nl>
2014-01-05 15:47:34 +01:00
Thomas Martitz
042d8bf9eb Revert "Fix data abort introduced by ef92ed4a."
This reverts commit 61a096499b.

The original issue was caused by a new structure member which caused
bmp_args::buf to be unaligned for 2-byte reads. Enforcing that alignment
should be the faster fix. Aligning to cache (while at it) should
improve bmp loading times even more.

Change-Id: I58a2caaf08c0ce46e2fb9666de628a30a36ea5f4
2014-01-05 01:19:44 +01:00
Frank Gevaerts
61a096499b Fix data abort introduced by ef92ed4a.
Change-Id: I3e1bf2434238835d2d2b8f5f2a8f44b0df97b33d
2014-01-04 22:15:02 +01:00
Jonathan Gordon
124c969f49 Fix build error
Change-Id: I32e06cc41c70e225622c87539feaca5f92131065
2013-12-30 23:35:23 +11:00
Jonathan Gordon
00b3fd2a66 skin_engine: unload skin backdrops when the skins are reset
Hopefully this will fix various skin related bugs which happen
on usb plug/unplug!

Change-Id: Ie1d8378fca38dae02e42ed02a68bdb3663651b4d
2013-12-29 18:00:38 +11:00
Thomas Martitz
a56837b46d recording: Fix sloppy return value check. This caused an OOM panic.
Change-Id: I30bbc5623d81ad7cbbee52a439fb5909af2761b7
2013-12-24 10:20:13 +01:00
Thomas Martitz
5827e41904 hwcodec: core_alloc_maximum() returned 0 bytes if talk.c controls the audio buffer.
On hwcodec talk.c has the entire audio buffer (not just parts of it), therefore
it must give up everything and cannot count on core_alloc_maximum() to return
the remaining space. This is equivalent to it was handled before 22e802e.

You could probaby do smarter and shrink for example the .talk clip buffer
but is it really worth it?

Change-Id: Idc3431c59fb41b05338559c615093358c5d8ed9b
2013-12-24 01:16:10 +01:00
Thomas Martitz
10d71bb910 Fix more reds.
Change-Id: I13e9a0398efe0dab222f2a9c4f5d9295570e4dfd
2013-12-23 13:02:59 +01:00
Thomas Martitz
a4d1849e24 Fix yellow.
Change-Id: Ib46e4d0896de4227a508abf5806c00ec3d59db51
2013-12-23 12:54:36 +01:00
Thomas Martitz
ee7c13514e hwcodec: Need to grab audio buffer before recording.
This was missed in 22e802e because I didn't realize that hwcodec doesn't
compile pcm_record.c.

Change-Id: I48cd4c2beec0a3d01caf06f2a2ced98be22a3673
2013-12-23 12:53:06 +01:00
Thomas Martitz
ec6258f936 fix some reds.
Change-Id: Iecb1305dbd1519434e0f476d2199e728b96091f9
2013-12-23 12:35:52 +01:00
Thomas Martitz
22e802e800 playback,talk: Share audiobuffer via core_alloc_maximum().
This fixes the radioart crash that was the result of buffering.c working
on a freed buffer at the same time as buflib (radioart uses buffering.c for the
images). With this change the buffer is owned by buflib exclusively so this
cannot happen.

As a result, audio_get_buffer() doesn't exist anymore. Callers should call
core_alloc_maximum() directly. This buffer needs to be protected as usual
against movement if necessary (previously it was not protected at all which
cased the radioart crash), To get most of it they can adjust the willingness of
the talk engine to give its buffer away (at the expense of disabling voice
interface) with the new talk_buffer_set_policy() function.

Change-Id: I52123012208d04967876a304451d634e2bef3a33
2013-12-23 12:17:38 +01:00
Thomas Martitz
9f878b105d Fix errors introduced by a62bd92.
Change-Id: I3f65ca5347d08e1b77196c73ccb3a0951f14c850
2013-12-22 21:05:54 +01:00
Thomas Martitz
a62bd9282e Fix warning and re-order code a bit.
Change-Id: I1d733b3d0bd17cc541218f9a2b7712712ad314dd
2013-12-22 20:15:03 +01:00
Thomas Martitz
ef92ed4a6a Support GIMP bmp files.
Change-Id: I7380ceeaf696b67e1641d24e7b932e3d74770932
2013-12-22 19:55:55 +01:00
Ryan Billing
d0918b98fa DSP Compressor: Sidechain, Exponential Atk/Rls
This is an improvement to the current compressor which I have added
to my own Sansa Fuze V2 build.  I am submitting here in case others
find it interesting.

Features added to the existing compressor:
Attack, Look-ahead, Sidechain Filtering.
Exponential attack and release characteristic response.

Benefits from adding missing features:
Attack:
Preserve perceived "brightness" of tone by letting onset transients
come through at a higher level than the rest of the compressed program
material.

Look-ahead:
With Attack comes clipping on the leading several cycles of a transient
onset.  With look-ahead function, this can be pre-emptively mitigated with
a slower gain change (less distortion).  Look-ahead limiting is implemented
to prevent clipping while keeping gain change ramp to an interval near 3ms
instead of instant attack.

The existing compressor implementation distorts the leading edge of a
transient by causing instant gain change, resulting in log() distortion.
This sounds "woofy" to me.

Exponential Attack/Release:
eMore natural sounding.  On attack, this is a true straight line of 10dB per
attack interval.  Release is a little different, however, sounds natural as
an analog compressor.

Sidechain Filtering:
Mild high-pass filter reduces response to low frequency onsets.  For example,
a hard kick drum is less likely to make the whole of the program material
appear to fade in and out.  Combined with a moderate attack time, such a
transient will ride through with minimal audible artifact.

Overall these changes make dynamic music sound more "open", more natural.  The
goal of a compressor is to make dyanamic music sound louder without necessarily
sounding as though it has been compressed.  I believe these changes come closer to this goal.

Enjoy.  If not, I am enjoying it

Change-Id: I664eace546c364b815b4dc9ed4a72849231a0eb2
Reviewed-on: http://gerrit.rockbox.org/626
Tested: Purling Nayuki <cyq.yzfl@gmail.com>
Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
2013-12-15 22:24:08 +01:00
Andrew Ryabinin
5b5f0755d6 Introduce IHIFI760/960 targets.
Change-Id: Ie36e48742c0ed9aa3fd6f49aa034a11d2492327c
2013-12-16 00:45:18 +04:00
Thomas Martitz
ed5b853c18 Fix more reds.
Change-Id: Ie62386a8f3e9986381f96eb83abb69bfc42b42e1
2013-12-15 00:47:21 +01:00
Thomas Martitz
1fc19042f7 Bump plugin api and sort.
Change-Id: I8b8ab58abbd40726326b8b47bd6bbb07580b5ce4
2013-12-14 23:15:45 +01:00
Thomas Martitz
50eb528bc1 scroll_engine: Major rework to support pixel-based scrolling and scroll callbacks.
Much of the scrolling work is moved from lcd-bitmap-common to lcd-scroll.c,
a small scroll callback routine remains. This callback can potentially be
overridden by more extensive scrollers.

The callback also gets fed with pixel-based scrolling information, which
finally removes the strict line-based nature of the scroll engine. Along with
this is the change from scroll_stop_viewport_line() to scroll_stop_viewport_rect()
which works on a pixel-based rectangle instead of lines.

The ultimate goal is to move most of the scroll work to apps, which can
much better decide which line decorations to apply etc. This work is laying
the ground work.

Change-Id: I3b2885cf7d8696ddd9253d5a9a73318d3d42831a
2013-12-14 23:11:31 +01:00
Thomas Martitz
1c5d0b41ee scroll_engine: Rename scroll_stop* functions to be more consistent with the lcd api.
Change-Id: I8ada10b96bfb628cca0331689e8b936ae47c7e1c
2013-12-14 23:11:30 +01:00
Lorenzo Miori
1deab73980 Initial commit for the YP-Z5 port
The port uses the imx233 soc, it's a STMP3650 based Samsung player

Change-Id: I50b6d7e77fd292fab5ed26de87853cd5aaf9eaa4
Reviewed-on: http://gerrit.rockbox.org/490
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-12-02 20:48:21 +01:00
Amaury Pouly
193753aa1f Introduce volume_{present,removable} and fix invalid calls in apps/
The code was trying to probe for volume presence by calling drive layer
with volume index. It is a miracle it get unnoticed so far. Introduce
proper volume probing using the vol->drive map in the disk layer.

Change-Id: I463a5bcc8170f007cad049536094207d2ba3c6fc
Reviewed-on: http://gerrit.rockbox.org/669
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-11-20 21:34:04 +01:00
Amaury Pouly
262479173b sonynwz: rework keymap based on lebellium's work and enable volume in list
Change-Id: Ieb015e78d1c0aa74c61591e442bfdf5f883f3811
2013-11-20 13:40:16 +00:00
Benjamin Brown
8b06039541 Fix typo in apps/plugins/lib/pluginlib_actions.c
BUTOTN_REL should be BUTTON_REL

Change-Id: I5b4aaeb87f31c5c0779656651b074512e22bcc4e
Reviewed-on: http://gerrit.rockbox.org/663
Reviewed-by: Benjamin Brown <foolshperson@gmail.com>
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
2013-11-17 21:27:18 +01:00
Amaury Pouly
e387a746d2 sonynwz: add pluginlib keymap
Change-Id: I7753fb8d9a5f9e2e95dfaa03ce8d2469ae0bd74a
2013-11-14 16:44:16 +00:00
Amaury Pouly
42452d0fbd sonynwz: add battery_bench keymap
Change-Id: I7be9131356b8655f2dbb90f203b44b2225257450
2013-11-14 16:43:56 +00:00
Ralf Ertzinger
b170c73f92 Updated IAP commands.
Originally written and uploaded by Lalufu (Ralf Ertzinger) in Feb 2012.
They have been condensed into a single patch and some further additions
by Andy Potter.

Currently includes Authentication V2 support from iPod to Accessory,
RF/BlueTooth transmitter support, selecting a playlist and selecting a
track from the current playlist. Does not support uploading Album Art
or podcasts. Has been tested on the following iPods,
4th Gen Grayscale, 4th Gen Color/Photo, Mini 2nd Gen, Nano 1st Gen and
Video 5.5Gen.

Change-Id: Ie8fc098361844132f0228ecbe3c48da948726f5e
Co-Authored by: Andy Potter <liveboxandy@gmail.com>
Reviewed-on: http://gerrit.rockbox.org/533
Reviewed-by: Frank Gevaerts <frank@gevaerts.be>
2013-11-10 18:41:24 +01:00
Andrew Ryabinin
500b137308 playback: Fix build with LOGF_ENABLE.
Change-Id: I01154d4a9441f44852748c910c267419f7f4149e
2013-11-10 15:36:18 +04:00
Amaury Pouly
d3bc64833c Initial commit for the Creative ZEN Mozaic
Change-Id: Ib65aad9f5de37e514047955cad7ca40dc0af4f74
2013-10-22 00:34:44 +02:00
Amaury Pouly
b1a6a24ed7 debug_menu: add tea5760uk tuner debug info
Change-Id: I18ee5374a312335498777713c20f5de9014dacf3
2013-10-21 23:50:55 +02:00
Amaury Pouly
7ba802b1b4 Add missing keymap
Change-Id: Ica8738905e7666f4e76621a84fa9ee18c7c2ac6e
2013-09-25 16:48:56 +02:00
Amaury Pouly
9392d036c4 Initial commit for the sony NWZ-E360 and NWZ-E370
Change-Id: I52d21e136a98eaf481615d641795cf7ecf325465
2013-09-25 14:31:39 +02:00
Amaury Pouly
f67d9bd14f apps: factor depth3d capability in features.txt
Currently the 3 possible sources for this setting are: imx233, wm8750, wm8978

Change-Id: I4f2b23dbe203f2b357a264b77f801c7b4c28bdee
2013-09-25 14:31:39 +02:00
Jean-Louis Biasini
c40a8219ac fuze+/keymaps: Add action_std_cancel to bookmark and recording screen
This fix FS#12902 and prevent same bug in bookmark screen.
thanks to Julian67 for reporting

Change-Id: Ifd2a383fd0f24aa3e242a8c72668de85526f0a70
Reviewed-on: http://gerrit.rockbox.org/622
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-09-20 10:56:38 +02:00
Jean-Louis Biasini
4f3f639c73 fuze+/keymaps: define Cancel over Menu in EQ context
This fix FS#12895, Menu has no effect in EQ context anyway...

Change-Id: I31f8e1fdfea1479efd75cb411125e08eafade403
Reviewed-on: http://gerrit.rockbox.org/620
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-09-18 12:40:47 +02:00
Jonathan Gordon
acf3af4ae3 radio: fix FS#12747
Change-Id: I57448a29d986cca0535c47c0ebfa2f4f3846a936
Reviewed-on: http://gerrit.rockbox.org/614
Reviewed-by: Dominik Riebeling <Dominik.Riebeling@gmail.com>
Tested-by: Dominik Riebeling <Dominik.Riebeling@gmail.com>
2013-09-09 18:22:07 +02:00
Jean-Louis Biasini
df6eb82f51 touch devices: Disable touch on softlock.
Target that have a touchpad/touchscreen should disable it while
being locked (In order to avoid LCD to drain battery power due to
"key locked" constant reporting messages. If they a have a keylock
button this was already handled at driver level. If not (e.g. fuze+),
they will have to implement a switch at driver level that action.c
can operate on softlock.
This patch does the following for any target having a touchpad
or a touchscreen and no HAS_BUTTON_HOLD (ie any softlock target)
1) it implements the code to call button_enable_touch(bool en) in
action.c.
2) button_enable_touch is implemented in button.c and call
either touchpad_enable or touchscreen_enable
3) those two function are implemented respectively in touchscreen.c
and a new touchpad.c file. They provide a generic way to silents touch's
device and call a function at driver level where target specific code
can be implemented if possible/needed (for power saving for instance).
Those function name are touchpad_enable_device and touchscreen_enable_device
4) we implement an empty function at driver level of targets that need it
to have them still being able to compiled.

Change-Id: I9ead78a25bd33466a8533f5b9f259b395cb5ce49
Reviewed-on: http://gerrit.rockbox.org/569
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-09-05 20:02:07 +02:00
Jean-Louis Biasini
ef2dd06d5e fuze+/keymaps: Implement the ACTION_STD_MENU
ACTION_STD_MENU seems to be an important keymaps. We map it to
BUTTON_BACK and keep cancel on the BUTTON_LEFT

Change-Id: Iea4a1e4671faee376ad4200b08ca82c2d00d1ff9
Reviewed-on: http://gerrit.rockbox.org/571
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-09-05 20:01:33 +02:00
Amaury Pouly
74761b70ac zenxfi2: use sensible keymap and simulator keys
Change-Id: Icd718b34924e1d228bbd6662617152646ef0c3a5
2013-08-28 13:06:46 +02:00
Marcin Bukat
a2a2e14e0d lua: Switch memory allocator from dl to tlsf
Instead of providing yet another memory allocator implementation
use tlsf and simply link tlsf library.

Another small improvement is to *grow* memory pool by grabbing
audiobuffer instead of just switching to use audiobuf exclusively.
Tested with simple lua 'memory eater' script.

This patch extends tlsf lib slightly. You can provide
void *get_new_area(size_t * size) function which will override
weak dummy implementation provided in lib itself. This allows to
automaticaly initialize memory pool as well as grow memory
pool if needed (for example grab audiobuffer when pluginbuffer
is exhaused).

Change-Id: I841af6b6b5bbbf546c14cbf139a7723fbb982f1b
2013-08-26 09:42:47 +02:00
Nils Wallménius
b2e80edd16 Change CODECFLAGS to a "simply-expanded" var to give the individual
codec makefiles larger freedom in what they can do to it.
Use this in libopus to prepend the libopus searchpaths to
CODECFLAGS so that its internal config.h will be picked up before
our global one. This avoids having to do a s/config.h/opus_config.h/
when syncing which will be handy soon.

Change-Id: I018d729aa0c8300fa3149f22a5a8c5668b339dfa
Reviewed-on: http://gerrit.rockbox.org/496
Reviewed-by: Nils Wallménius <nils@rockbox.org>
2013-08-23 18:34:30 +02:00
Amaury Pouly
fbc4ef7822 zenxfi2: rework keymap to add softlock
Map power button to soft key lock in WPS and radio screen, also
correct fallback of WPS.

Change-Id: If257e4b4f9f37848ba9f81dc2e8b52f020d4cde0
2013-08-23 00:30:40 +02:00
Michael Sevakis
a56f1ca1ed Cleanup MV/MD macros a little.
When using variadic macros there's no need for IF_MD2/IF_MV2 to deal
with function parameters. IF_MD/IF_MV are enough.

Throw in IF_MD_DRV/ID_MV_VOL that return the parameter if MD/MV, or 0
if not.

Change-Id: I7605e6039f3be19cb47110c84dcb3c5516f2c3eb
2013-08-17 12:18:22 -04:00
Amaury Pouly
c13f21a4d5 Fix logdisk
The code was broken in a subtle but crucial way: storage idle
callbacks are oneshot so after the first flush everything would
stay in the buffer forever and would never be written to the disk
thus resulting into many events being lost. This changed correctly
registers the idle callback each time the buffer is not empty.
Note that the idle storage code checks if a callback
has is in the queue already so we don't register twice.

Change-Id: Ifdf331d4b757e05b8a6902bf5926cbc7689f5109
2013-08-16 21:59:16 +02:00
Lorenzo Miori
c01a728c5a Cube plugin fix
This small patch aims to fix a trivial
problem: when exiting the "cube" plugin
in a hosted environment (at least on YP-R0)
this caused the whole program, and consequently
also the player, to be turned off.
I don't know why the exit() function was
used here...

Change-Id: I7b58d4ca5c01c230f2c53204b51ec553c5fe1287
Reviewed-on: http://gerrit.rockbox.org/321
Reviewed-by: Bertrik Sikken <bertrik@sikken.nl>
2013-08-12 10:35:48 +02:00
Jean-Louis Biasini
f285a0f28b [ONDAV VX777][simulator] fix missing keymaps in test_touchscreen
Missing  TOUCHSCREEN_QUIT and TOUCHSCREEN_TOGGLE define

Change-Id: I3b9b3a1afc8e95ae95ca73ee9c31057d6e72098d
Reviewed-on: http://gerrit.rockbox.org/531
Reviewed-by: Frank Gevaerts <frank@gevaerts.be>
2013-07-29 19:07:19 +02:00
Tiago Medeiros
4596f51c90 FS#12882 - Updated translation for PT-PT
Signed-off-by: Bertrik Sikken <bertrik@sikken.nl>

Change-Id: I473e2c53f7333b94fbda7786cbb506732466eb1c
2013-07-18 20:57:21 +02:00
Jean-Louis Biasini
a9f20862a7 [Fuze+][Keymaps] Application and viewer keymaps update
Last core update for keymaps and manual. Manual is now 100% complete

Change-Id: I9ad33206ecea41a88cba7a355da911fa7ab0455d
Reviewed-on: http://gerrit.rockbox.org/521
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-07-18 20:24:06 +02:00
Jean-Louis Biasini
5ba7e2ca72 [Fuze+][Keymaps] keymaps for radio and recorder update
1) Now that recording is working a few keymaps update are required.
2) also implement the radio.c file so that fm dedicated keymaps
works.
3) implement some missing fm keymaps
4) manual updated accordingly

Change-Id: I40be3e245853ccb9ed7a5bc5a76fe4ed90772272
Reviewed-on: http://gerrit.rockbox.org/513
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-07-16 15:06:31 +02:00
Jean-Louis Biasini
43e52e34ed [Fuze+][lang] keymaps hint update
A few keymaps hint were wrong, this correct them:
- database/filemanager on cancelling songs insertion
- alarm clock
- set alarm

Change-Id: Ifb50a9452c208a7d5c28bdac96c825030b943c25
Reviewed-on: http://gerrit.rockbox.org/508
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-07-16 15:00:02 +02:00
Jean-Louis Biasini
a8cea3b71c Add an alternative analogic touchpad sensitivity setting
Set an alternative touchpad sensitivity setting if
the 3 following variables are defined:
DEFAULT_TOUCHPAD_SENSITIVITY_SETTING
MIN_TOUCHPAD_SENSITIVITY_SETTING
MAX_TOUCHPAD_SENSITIVITY_SETTING
aside from the usual:
HAVE_TOUCHPAD
HAVE_TOUCHPAD_SENSITIVITY_SETTING

In such a case the setting will allow the user to set a precise
value within the defined range unstead of the boolean choice
HIGH/NORMAL

Change-Id: Iba8140285317077381191e494df0d3f6ab556872
Reviewed-on: http://gerrit.rockbox.org/123
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-07-15 09:22:32 +02:00
Jean-Louis Biasini
3dd5e983db Add FM softlock to the FM Ondio.
This change activate the newly implemented fm softlock (thanks to
Pamaury) on the FM Ondio target. Thanks to Lebellium for testing.

Change-Id: I903f05be892e7537a34ba40bc0f3c65541a497a4
Reviewed-on: http://gerrit.rockbox.org/498
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-07-13 12:33:45 +02:00
Michael Sevakis
023f6b6efd Get rid of some superfluous single-purpose functions in playback.
* Remove explicit tracking of elapsed time of previous track.
* Remove function to obtain auto skip flag.
* Most playback events now carry the extra information instead and
  pass 'struct track_event *' for data.
* Tweak scrobbler to use PLAYBACK_EVENT_TRACK_FINISH, which makes
  it cleaner and removes the struct mp3entry.

Change-Id: I500d2abb4056a32646496efc3617406e36811ec5
2013-07-13 00:08:51 -04:00
Michael Sevakis
ffa8626b0c Fix whitespace in files for following commit.
Change-Id: I4adb8a152e9b99fcd26d95da7334d7d0cbe2a036
2013-07-12 21:39:06 -04:00
Michael Sevakis
1329cc29de Fix .ncbss from possibly overlapping .ncdata in plugins/codecs.
(Take #2)

If .bss wasn't large enough, and .ncdata was empty, .ncbss would be
at an address overlapping the alignment-padded end of .ncdata and
and linking would fail with an overlap error.

Adds plugin load end address that accounts for IRAM going past
the final .bss sections, making IRAM overlay compatible. load_code
could also use this instead of the file size.

The .lds becomes a bit more straightforward and explicit when
assigning addresses.

Change-Id: Id0c33f257710e97ece2c831e0feaaa32c1a14e05
2013-07-11 04:32:23 -04:00
Michael Sevakis
2948cb42ae Revert "Fix .ncbss from possibly overlapping .ncdata in plugins/codecs."
This reverts commit 5c2ad2fd36.

The .ncbss bug is still showing up. Will try again shortly.
2013-07-11 00:28:39 -04:00
Michael Sevakis
5c2ad2fd36 Fix .ncbss from possibly overlapping .ncdata in plugins/codecs.
If .bss wasn't large enough, and .ncdata was empty, .ncbss would be
at an address overlapping the alignment-padded end of .ncdata and
and linking would fail with an overlap error.

There also should no longer be an issue that needs special correction
with iramcopy and empty .bss. The .maps look good in that case.

Change-Id: I02bf73a0acef2c0c04b5d135ecf4e18fb97ee339
2013-07-10 22:37:17 -04:00
Roman
1fa3f5906e Swap over a position of cursor while reaching the end of filename in keyboard
In sansa clip + with virtual keyboard you can write/rename a stuff and move
your cursor in the filename field. But while your cursor reaches the end/start
of filename it just blocks the movement of cursor and beeps if you enabled the
"Voice Menu" feature. This patch swaps over cursor to the start/end of filename
instead of just blocking movement.

Change-Id: I37450df062df60ef4c0d747c13e448d0adbde05b
Reviewed-on: http://gerrit.rockbox.org/503
Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
2013-07-09 18:43:10 +02:00
Michael Sevakis
5f0692b98c SWCODEC recording: Boost CPU frequency before doing flush on stop
If CPU is not boosted for some reason already, then the stop flush
can take longer than it really ought to.

Change-Id: I0572cc83067749e9945b3eb825f976db21d914f9
2013-07-09 07:36:22 -04:00
Michael Sevakis
f9e47c6886 19b289a somehow missed one last LANG_RECORDING_FREQUENCY.
Did grep fail me?

Change-Id: Id8254aa542d57204e265ef06829b4e034f032137
2013-07-06 17:37:08 -04:00
Michael Sevakis
19b289a1b9 Reuse frequency string from recording for playback frequency.
Update all .lang files and change the id from LANG_RECORDING_FREQUENCY
to LANG_FREQUENCY. Also update description and target.

It will throw things off for targets without recording but that do
have 48KHz, possibly older iPods. I'm not sure what else it might be
off hand. Regenerate voice files and replace .lang files in that case.

Change-Id: I9ab396ecfcca9206054bde34aa2cc23b505dabff
2013-07-06 17:14:02 -04:00
Lorenzo Miori
228372c38d Bugfix: (un)locking state message(s) did not disappear
after unlocking the device while being into FM
radio screen. This patch restores expected behaviour by
forcing screen refresh when receiving the proper event.

Change-Id: Ibe0864ab78619ddf235912d06a2efe3203b5042a
Reviewed-on: http://gerrit.rockbox.org/505
Reviewed-by: Lorenzo Miori <memorys60@gmail.com>
Tested-by: Lorenzo Miori <memorys60@gmail.com>
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2013-07-06 14:21:36 +02:00
Lorenzo Miori
8fcce9653f Samsung YP-R0: small patch to enable support to new keylock-in-FM feature.
Change-Id: I965550753bdd65ef4b02ef24e44e0faad2c74289
Reviewed-on: http://gerrit.rockbox.org/504
Reviewed-by: Lorenzo Miori <memorys60@gmail.com>
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2013-07-06 12:38:41 +02:00
Michael Sevakis
91ff99c2ad ...and mixer_set/get_frequency is SWCODEC only! :-)
Change-Id: I6badf687ef330abf79f2e1a809d8b2f93ba4e911
2013-07-05 22:54:02 -04:00
Michael Sevakis
74f90bdb18 Oops, two test plugins were left in apps/plugins/SOURCES.
Change-Id: I1df74c535a8c054223e8687e7c28bc6a130070d0
2013-07-05 22:32:56 -04:00
Michael Sevakis
d37bf24d90 Enable setting of global output samplerate on certain targets.
Replaces the NATIVE_FREQUENCY constant with a configurable frequency.

The user may select 48000Hz if the hardware supports it. The default is
still 44100Hz and the minimum is 44100Hz. The setting is located in the
playback settings, under "Frequency".

"Frequency" was duplicated in english.lang for now to avoid having to
fix every .lang file for the moment and throwing everything out of sync
because of the new play_frequency feature in features.txt. The next
cleanup should combine it with the one included for recording and
generalize the ID label.

If the hardware doesn't support 48000Hz, no setting will be available.

On particular hardware where very high rates are practical and desireable,
the upper bound can be extended by patching.

The PCM mixer can be configured to play at the full hardware frequency
range. The DSP core can configure to the hardware minimum up to the
maximum playback setting (some buffers must be reserved according to
the maximum rate).

If only 44100Hz is supported or possible on a given target for playback,
using the DSP and mixer at other samperates is possible if the hardware
offers them.

Change-Id: I6023cf0c0baa8bc6292b6919b4dd3618a6a25622
Reviewed-on: http://gerrit.rockbox.org/479
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2013-07-06 04:22:04 +02:00
Michael Sevakis
bb87590e05 Temporarily disable keyclick in recording screen.
Those who have keyclick enabled and are really eagar to record upon
boot can get the samplerate messed up because who gets to set the sample
rate last (recording or mixer) is not currently deterministic.

Change-Id: Icc43ed789cf23f928ca49657cb146445b0c558cb
2013-06-30 20:14:06 -04:00
Michael Sevakis
9b990bdab1 SWCODEC Audio: Add some INIT_ATTR's to get a few bytes back.
Change-Id: Ie7b04ecf3b3535e0ed45a6e0e8d81af89e38378e
2013-06-29 22:29:23 -04:00
Michael Sevakis
89b05af496 Fix whitespace
Change-Id: I2072c355f05b6e709a5c179512bc2b71756163a5
2013-06-29 22:29:03 -04:00
Michael Sevakis
59abdb5190 Fix strlcpy warnings in 4888131.
Change-Id: Ibd355ee1cf39d1a4b07def94634f0316468bf727
2013-06-29 19:27:21 -04:00
Michael Sevakis
4888131972 Update software recording engine to latest codec interface.
Basically, just give it a good rewrite.

Software codec recording can be implemented in a more straightforward
and simple manner and made more robust through the better codec
control now available.

Encoded audio buffer uses a packed format instead of fixed-size
chunks and uses smaller data headers leading to more efficient usage.
The greatest benefit is with a VBR format like wavpack which needs
to request a maximum size but only actually ends up committing part
of that request.

No guard buffers are used for either PCM or encoded audio. PCM is
read into the codec's provided buffer and mono conversion done at
that time in the core if required. Any highly-specialized sample
conversion is still done within the codec itself, such as 32-bit
(wavpack) or interleaved mono (mp3).

There is no longer a separate filename array. All metadata goes
onto the main encoded audio buffer, eliminating any predermined
file limit on the buffer as well as not wasting the space for
unused path queue slots.

The core and codec interface is less awkward and a bit more sensible.
Some less useful interface features were removed. Threads are kept
on narrow code paths ie. the audio thread never calls encoding
functions and the codec thread never calls file functions as before.

Codecs no longer call file functions directly. Writes are buffered
in the core and data written to storage in larger chunks to speed up
flushing of data. In fact, codecs are no longer aware of the stream
being a file at all and have no access to the fd.

SPDIF frequency detection no longer requires a restart of recording
or plugging the source before entering the screen. It will poll
for changes and update when stopped or prerecording (which does
discard now-invalid prerecorded data).

I've seen to it that writing a proper header on full disk works
when the format makes it reasonably practical to do so. Other cases
may have incorrect data sizes but sample info will be in tact. File
left that way may play anyway.

mp3_enc.codec acquires the ability to write 'Info' headers with LAME
tags to make it gapless (bonus).

Change-Id: I670685166d5eb32ef58ef317f50b8af766ceb653
Reviewed-on: http://gerrit.rockbox.org/493
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2013-06-30 00:40:27 +02:00
Michael Sevakis
a9ea1a4269 Fix some whitespace in files changed in following commit.
Change-Id: Ie3f43e43076e0dcae9a10f1b0b9e4698b398acee
Reviewed-on: http://gerrit.rockbox.org/492
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2013-06-30 00:40:09 +02:00
Amaury Pouly
bc3a079522 clip+/zip: add FMS soft lock action
Change-Id: Iba5cb8b29ad06080d04105d6f9ef2c62e81d4f36
Reviewed-on: http://gerrit.rockbox.org/491
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-06-29 11:39:35 +02:00
Michael Sevakis
662f7576bf Fix a bug in pcmbuf.c when doing offset with modulus.
Causes the track change to go in the wrong buffer (and even be missed
by playback) if the current descriptor for the write index is descriptor
0 because the offset used is "-1" upon track change.

Got nailed by implicit conversion of the % operator dividend to unsigned.

Change-Id: I32538db801ac9d790c8b1b5bd041b09ad4b64d2e
2013-06-28 02:17:58 -04:00
Michael Sevakis
363f96b95b Fix whitespace for next commit
Change-Id: I8773ff7275372882321ebf2e66462781735cddc6
2013-06-28 02:17:17 -04:00
Thomas Martitz
be5fadff94 skin_engine: Fix crash on skin_reset (e.g. on language change).
Change-Id: Ie2da1a1ba9d2dad76e2f1c45abd907c3ede4f56c
2013-06-23 20:55:46 +02:00
Frank Gevaerts
abb7d1dcfe plugin_midi: expand gustable[] to 128 entries
The code assumes that gustable[] has 128 entries, while it
only had 120. Since the entries follow a simple pattern (they
seem to be note frequencies, so each entry is the previous one
multiplied by the 2^(1/12)), expanding the table is the simple
fix.

Change-Id: If5b5a50378afd3206c9d550227dd9aac8e355c96
2013-06-16 18:33:57 +02:00
Frank Gevaerts
d4061a46d8 Silence some (harmless) warnings.
Change-Id: I8d1278b8cfaa376d2ad5a99dd552dc980c66e1da
2013-06-16 18:23:18 +02:00
Rafaël Carré
ab56afefc1 test_mem: silence -Wunused-but-set-variable warning
Change-Id: I4a14c8b0cf1a8c822166ce01087b31c06722d8ae
2013-06-13 18:56:23 +02:00
Amaury Pouly
3f4eeb850e Enable key lock in radio screen
Change-Id: I75efbf1077359e4218ad33f4c1d885b24c0b7b01
Reviewed-on: http://gerrit.rockbox.org/421
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2013-06-10 15:19:45 +02:00
Max Zerzouri
575cb63a92 Fix rockblox instadrop behaviour
Prevents the player from moving an instadropped block (could happen
before the next game tick when using left/right buttons anticipatorily).

Change-Id: Id62168842d8458f864a2e05c5d236f054bf54f65
Reviewed-on: http://gerrit.rockbox.org/473
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2013-06-09 21:44:01 +02:00
Thomas Martitz
4263f67e4b Fix warning (move variable into #ifdef section).
Change-Id: Ic6ba4b786eef00eab7f20abd5fbf2bcb8977993a
2013-06-09 21:08:49 +02:00
Thomas Martitz
770fadddd6 Fix reds (this code needs #ifdef HAVE_ALBUMART)
Change-Id: Ia50cd846d5451b0cb5cf3a6f8097ea9fe3b3c60a
2013-06-09 21:01:47 +02:00
Thomas Martitz
836cf14860 Fix multiple problems in radioart.c
The code was pretty broken with regard to the handle management of radio art
images, e.g. passing the wrong data to bufopen().

Change-Id: I3480f40bce81af05d14dbf045a78485c857fb261
2013-06-09 17:44:11 +02:00
Thomas Martitz
58b4e71d32 skin_engine: Fix albumart logic on skin reloading.
This logic checks whether the skin's albumart dimensions differ from the
previous skin to force rebuffering if necessary. This was broken since
a while as the necessary information was reset.

Change-Id: I3b9f3a819c6af202af8ad66c13742f704ce45ab1
Reviewed-on: http://gerrit.rockbox.org/476
Tested-by: Thomas Martitz <kugel@rockbox.org>
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2013-06-09 17:39:08 +02:00
Boris Gjenero
15fa7f866f Fix color of files with no extension.
Based on all other references, unknown_file.color is a color, not an
index into custom_colors[]. Previously, custom_colors[-1] was returned
for files without an extension, accessing outside array boundaries
and making files without an extension black, which is hard to see.

Change-Id: Ia0883aba929582324b767df7828a36a84c0b36b9
2013-06-05 18:35:09 -04:00
Michael Sevakis
98c34d8723 Argh, move a comment to the (now) proper location. :)
Change-Id: I13847b99d9aeaa05efa5b22a8e4842f193f01a3c
2013-05-31 19:01:24 -04:00
Michael Sevakis
e62cb56644 Have voice fire an event when it starts and stops playing.
Further decouples voice_thread.c from other playback areas. Also allows
other audio sources, such as FM radio, to be attenuated when voice is
playing by implementing a callback.

Defined as another playback event rather than a new event class:
PLAYBACK_EVENT_VOICE_PLAYING

Change-Id: I2e3e218be6cd6bebbf39e7883a8c0e4ed42b62bb
2013-05-31 18:45:51 -04:00
Michael Sevakis
1b4135ec0d Should use HAVE_RECORDING, not AUDIO_HAVE_RECORDING in playback.c
SIM should work like target, sort of, when recording is initialized.

Change-Id: I12314bb98cec53d574f4b25984ef803b2c038a96
2013-05-31 06:24:06 -04:00
Michael Sevakis
92f1ecfc7b Just init audio thread event with Q_NULL instead of SYS_TIMEOUT.
What was I thinking? Anyway, it's a little nicer and it's reserved so
shouldn't end up as a case value anywhere.

Change-Id: If745c24951518608e3f4fc51f7419ef07d7cf2ac
2013-05-31 05:17:11 -04:00
Michael Sevakis
344b9d0986 Some corrections after 5857c44.
Playback needs to receive a couple of settings-related messages even
when not playing.

Put the message reply back where it was when loading an encoder for
recording.

Change-Id: I8cc80f46e42a0afd119991d698510e1ebef38ead
2013-05-31 04:13:39 -04:00
Michael Sevakis
5857c44017 Refactor audio thread to run both recording and playback.
Eliminates the pcmrec thread and keeps playback and recording engine
operation mutually-exclusive.

audio_thread.c contains the audio thread which branches to the
correct engine depending upon the request. It also handles the main
audio initialization.

Moves pcm_init into main.c just before dsp_init because I don't want
that one in audio_init in the new file.

(Also makes revision df6e1bc pointless ;)

Change-Id: Ifc1db24404e6d8dd9ac42d9f4dfbc207aa9a26e1
2013-05-31 03:20:35 -04:00
Michael Sevakis
df6e1bcce5 pcm_record: Track initialization state
It should not access audio hardware and change settings unless it has
been initialized first and given control of it.

Change-Id: I5004602d7caa604ded751f6838b792d1ff24b3fb
2013-05-30 18:42:59 -04:00
Andrew Ryabinin
0519f7e5ab Add DAC's oversampling filter roll-off selection to sound settings.
Change-Id: I1258ba50dd9308f49d97965562f3a423c9bfb785
2013-05-24 11:18:16 +04:00
Michael Sevakis
6e211ab3ac Remove dsp_callback because DSP is now library code, not app code.
Yep, nope, not necessary anymore. Just call functions directly.

Change-Id: I21dc35f8d674c2a9c8379b7cebd5613c1f05b5eb
2013-05-23 14:25:37 -04:00
Michael Sevakis
39946a56d8 Fix CPU boosting in test_codec.
Boost only for tests and unboost immediately afterwards. It was leaving
the CPU boosted after exiting.

Change-Id: I010c4b975bd27e8990dc057ddd244dab233411ca
2013-05-21 22:19:57 -04:00
Andrew Ryabinin
fa4e1baa83 Introduce HiFi E.T MA9 port.
Change-Id: I79aadc958fd5222f26f91ed127f8c6fb2c465dc2
2013-05-06 14:09:24 +04:00
Michael Sevakis
3fd25dcbed Purge the usage of DSP_SWITCH_FREQUENCY.
DSP_SWITCH_FREQUENCY has been deprecated and the same enumerated value
as DSP_SET_FREQUENCY since major DSP revisions were committed. This
task should have been performed much earlier but, oh well, do it now.

Change-Id: I3f30d651b894136a07c7e17f78fc16a7d98631ff
2013-05-05 00:48:40 -04:00
Frank Gevaerts
aa801b5e0f European Portuguese update by Tiago Roque Medeiros
Change-Id: Ifab5276fa746d7c989913428a30d408987ee23f4
2013-04-29 21:13:58 +02:00
Michael Sevakis
95e23defb0 Make fixepoint.c as a shared library (libfixedpoint.a).
Change-Id: Icc10d6e85f890c432f191233a4d64e09f00be43d
Reviewed-on: http://gerrit.rockbox.org/456
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2013-04-26 00:11:04 +02:00
Michael Sevakis
e61e9c61d0 Do some cleanup, adjustment and a couple fixes to recent sound changes.
* SOUND_x enum can be generated by audiohw_settings.h along with settings
entries and sound_val2phys.

* VOLUME_MIN and VOLUME_MAX are no longer necessary within sound.c. If
you need them, they are for target-defined purposes.

* Fix up SDL volume implementation in sdl.c. Move sim volume calculation
code to pcm-sdl.c.

* Min trigger tresholds were based upon VOLUME_MIN for some reason.
These setting have nothing to do with playback volume. Since it is no
longer present, set these at -89dB which is the minimum peak meter
sensitivity setting.

* Fix an oversight in wm8758.c. I forgot to add the dB->register
conversion to audiohw_set_volume.

Change-Id: Ie1df33f1793eee75e6793f16bc7bddd16edb7f75
2013-04-22 20:38:17 -04:00
Marcin Bukat
62cb84a57c imageviewer: fix animated gifs handling
If disposal method is set to BACKGROUND one would expect that
canvas should be restored to global background color. That is
what gif standard suggests. Most (all?) decoders however treat
this as reseting canvas to transparency or fixed, decoder
specific background color. Virtually all gifs are prepared with
this in mind so to not break them we can't follow standard here.

Change-Id: I90ca712bba89d4190771eb5320eabda353d3e2bb
2013-04-18 09:42:48 +02:00
Michael Sevakis
540e5d103f Forget about fixedpoint.c in any HWCODEC bin.
It bloats to much just for one simple use. Just use a simple function
for shifting sound setting decimal places.

Change-Id: I1a7d37cce6ada3c6e6600dc0d301f354ffeff231
2013-04-15 16:11:28 -04:00
Michael Sevakis
5261b19bdf Still at it for 0c7b787. Might be done now.
Change-Id: Idf45731dc6554954747f6036dc6dfcd4b63981a1
2013-04-15 14:58:00 -04:00
Michael Sevakis
0c7b787398 Straighten out the mad twisted state of sound.c and related areas.
This is going right in since it's long overdue. If anything is goofed,
drop me a line or just tweak it yourself if you know what's wrong. :-)

Make HW/SW codec interface more uniform when emulating HW functionality
on SWCODEC for functions such as "audiohw_set_pitch". The firmware-to-
DSP plumbing is in firmware/drivers/audiohw-swcodec.c. "sound_XXX"
APIs are all in sound.c with none in DSP code any longer.

Reduce number of settings definitions needed by each codec by providing
defaults for common ones like balance, channels and SW tone controls.

Remove need for separate SIM code and tables and add virtual codec header
for hosted targets.

Change-Id: I3f23702bca054fc9bda40f49824ce681bb7f777b
2013-04-15 12:02:05 -04:00
Thomas Martitz
fd9e256890 Use equivalent puts_scroll() call.
Change-Id: I09e5046f153a276fa6eb047e040b8f752e73d03c
2013-04-14 18:04:46 +02:00
Amaury Pouly
a924df8d6d rk27xx: implement radio support
Change-Id: I59d3905e9b2a3df8aa235e424c7a6e0eff6d73e9
Reviewed-on: http://gerrit.rockbox.org/427
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
Tested-by: Marcin Bukat <marcin.bukat@gmail.com>
2013-04-11 11:18:23 +02:00
Michael Sevakis
f49e750531 Move fixedpoint.h to be accessible in /firmware.
Will need it soon enough.

Combine the contents of all the various fixedpoint.h files.
Not moving fixedpoint.c for now since I'm not sure where it
should be and it causes some dependency issues.

Change-Id: Ideacbca2ca78f9158c2b114b113c274f68e908d5
2013-04-10 13:28:35 -04:00
Michael Sevakis
f5b7134f59 Consolidate identical fixedpoint exp and ln functions.
grey_core.c and fixedpoint.c each had their own copies. grey_core.c
can use the ones fixedpoint.c. fixedpoint.c gets the more complete and
optimized version of fp_16exp from grey_core.c.

Change-Id: I43ee3add60796b06ed12012fbbd91815d64675a6
2013-04-09 19:07:35 -04:00
Richard Quirk
dcba74155e bookmark: add cancelling of autoload bookmark
When autoload bookmark is set to "Ask", navigate to a file with
bookmarks in that directory. Select the file and the bookmark list
appears. Even if you chose to cancel, the track started prior to this
patch.

Change-Id: I453999a9bc20faae97f9cf2080ef613c602ad8e1
Reviewed-on: http://gerrit.rockbox.org/416
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
2013-04-06 11:35:36 +02:00