Compare commits

...
Sign in to create a new pull request.

40 commits

Author SHA1 Message Date
Frank Gevaerts
3113637050 Pass VERSION to *all* make invocations in release scripts
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31165 a1c6a512-1295-4272-9138-f99709370657
2011-12-07 17:58:28 +00:00
Frank Gevaerts
6cc5e6f9ac Set version to 3.10 in preparation for the release
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31164 a1c6a512-1295-4272-9138-f99709370657
2011-12-07 17:42:05 +00:00
Thomas Martitz
6d06435c40 Fix for "FS#12430 - FM presets tags aren't dynamic in status bar."
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31163 a1c6a512-1295-4272-9138-f99709370657
2011-12-07 14:59:16 +00:00
Boris Gjenero
0be9570bd0 In 3.10 branch, fix FS#12423 - Rockbox access to /.rockbox/fonts after usb_enable(true)
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31160 a1c6a512-1295-4272-9138-f99709370657
2011-12-06 17:03:20 +00:00
Frank Gevaerts
69d432f598 Merge Italian and Latvian from trunk
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31146 a1c6a512-1295-4272-9138-f99709370657
2011-12-04 21:03:54 +00:00
Frank Gevaerts
51b2db366a Backport r31140: Reduce stack allocation for remote screendump. The screendump filename is generated and known, so we don't need MAX_PATH.
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31141 a1c6a512-1295-4272-9138-f99709370657
2011-12-04 17:18:52 +00:00
Frank Gevaerts
0711dd10ac Add 1K to the usb stack to prevent overflow in screendump mode
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31139 a1c6a512-1295-4272-9138-f99709370657
2011-12-04 17:04:57 +00:00
Thomas Jarosch
689285bd8e Backport r31124 - Remove redundant assigment to "dummy" variable
It was probably in there to silence a gcc warning
about unused variable "dummy".

Detected by cppcheck.

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31126 a1c6a512-1295-4272-9138-f99709370657
2011-12-03 17:18:12 +00:00
Thomas Jarosch
dbcd21f3b5 Backport r30964 - Fix copy'n'paste bug in skin engine
cppcheckout reported:
[apps/gui/skin_engine/skin_tokens.c:1553] -> [apps/gui/skin_engine/skin_tokens.c:1553]: (style) Same expression on both sides of '||'.

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31123 a1c6a512-1295-4272-9138-f99709370657
2011-12-03 16:55:04 +00:00
Thomas Jarosch
3e58faddf7 Backport r30935 - Fix format string
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31122 a1c6a512-1295-4272-9138-f99709370657
2011-12-03 16:50:24 +00:00
Michael Chicoine
df1b8ed8b6 Backport r31083 - playlist handling: revert part of r30177.
loading a .m3u from the filebrowser now just runs it like it used to, selecting a playlist from inside the catalogue viewer opens it instead.


git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31110 a1c6a512-1295-4272-9138-f99709370657
2011-12-02 16:41:36 +00:00
Michael Chicoine
8f96be4857 Backport r31107 - Fix FS #11675 : LED resistor calculator does not wait for keypress.
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31109 a1c6a512-1295-4272-9138-f99709370657
2011-12-02 15:34:50 +00:00
Michael Chicoine
a1d34210c6 Backport r31096 - Text viewer plugin: Fix info viewport font not being set to user selected font
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31097 a1c6a512-1295-4272-9138-f99709370657
2011-11-30 03:12:48 +00:00
Andree Buschmann
ede7568173 Migrate manual's change within r31094 to v3.10: encrypted ADX is not supported.
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31095 a1c6a512-1295-4272-9138-f99709370657
2011-11-29 20:46:50 +00:00
Andree Buschmann
9e76f00927 Bring r31091 to v3.10: Make embedded cover art for APEv2 more flexible. This fixes an issue with foobar-tagged files as reported in the forums.
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31092 a1c6a512-1295-4272-9138-f99709370657
2011-11-29 18:43:29 +00:00
Andree Buschmann
0f25b560b2 Update 'WPS tag' and 'file format' sections to trunk.
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31085 a1c6a512-1295-4272-9138-f99709370657
2011-11-28 19:06:43 +00:00
Frank Gevaerts
8412981baf Bump versions for 3.10RC
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31077 a1c6a512-1295-4272-9138-f99709370657
2011-11-27 15:44:46 +00:00
Frank Gevaerts
5bc2945fde Backport r31075 to avoid freezes on invalid font ids
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31076 a1c6a512-1295-4272-9138-f99709370657
2011-11-27 15:39:33 +00:00
Frank Gevaerts
cc16c1070a Free a handle when we try to load a backdrop file which doesnt exist or cant be loaded (backport of r31070)
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31072 a1c6a512-1295-4272-9138-f99709370657
2011-11-27 15:01:56 +00:00
Andree Buschmann
e7467639dc Integrate r31051 to v3.10. Fixes mpc distortions on Coldfire when using GCC 4.5.2
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31055 a1c6a512-1295-4272-9138-f99709370657
2011-11-25 19:49:46 +00:00
Thomas Martitz
58fd6d90c3 fix up font_cache/LRU boundry errors from r30763
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31051 a1c6a512-1295-4272-9138-f99709370657
2011-11-25 17:22:01 +00:00
Thomas Martitz
962ef6b4a2 Update some missed pointers when moving the dircache allocation
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31047 a1c6a512-1295-4272-9138-f99709370657
2011-11-23 20:03:16 +00:00
Thomas Martitz
88325e44a0 Update french translation
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31046 a1c6a512-1295-4272-9138-f99709370657
2011-11-23 19:41:32 +00:00
Thomas Martitz
ae2822dcbb Undo some of r31021. The translation site seems to have problems with double quotes in translations.
Re-add the double quotes, except where around button names, so the translators can sort this out.

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31024 a1c6a512-1295-4272-9138-f99709370657
2011-11-17 21:58:10 +00:00
Thomas Martitz
231a0ede1d Croatian translation update
Flyspray: FS#12332
Author: Ante Maretic

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31022 a1c6a512-1295-4272-9138-f99709370657
2011-11-17 21:30:56 +00:00
Thomas Martitz
7dd15b13a3 Brazilian Portuguese translation update
Flyspray: FS#12341
Author: Kessia Pinheiro

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31020 a1c6a512-1295-4272-9138-f99709370657
2011-11-17 21:26:21 +00:00
Thomas Martitz
52d1616e5a French translation update
Flyspray: FS#12372
Author: Olivier Kaloudoff

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31017 a1c6a512-1295-4272-9138-f99709370657
2011-11-17 21:21:37 +00:00
Thomas Martitz
1342706583 Bulgarian translation update
Flyspray: FS#12379
Author: Vencislav Atanasov

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31016 a1c6a512-1295-4272-9138-f99709370657
2011-11-17 21:16:42 +00:00
Thomas Martitz
1fee9620b7 Updated Russian translation
FS: FS#12382
Author: Desu Rozen


Conflicts:

	docs/CREDITS

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31014 a1c6a512-1295-4272-9138-f99709370657
2011-11-17 21:10:23 +00:00
Thomas Martitz
565905ae33 skin engine: Fix %if() when comparing against a number.
If the tag being checked returns a number as a string (i.e %pv) but doesnt set the intval try to convert the string to a number so the comparisson operators work

Conflicts:

	apps/gui/skin_engine/skin_tokens.c

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31008 a1c6a512-1295-4272-9138-f99709370657
2011-11-17 18:08:20 +00:00
Thomas Martitz
8026a172d9 Buflib: Make shrinking and buflib_available() smarter.
* shrinking now considers freespace just before the alloc-to-be-shrinked,
  that means less (or sometimes none at all) is taken from the audio buffer.
* core_available() now searches for the best free space, instead of simply the end,
  i.e. it will not return 0 if the audio buffer is allocated and there's free space
  before it. It also runs a compaction to ensure maximum contiguous memory.

audio_buffer_available() is also enhanced. It now considers the 256K reserve buffer,
and returns free buflib space instead if the audio buffer is short.

This all fixes the root problem of FS#12344 (Sansa Clip+: PANIC occurred when
dircache is enabled), that alloced from the audio buffer, even if it was very
short and buflib had many more available as free space before it.

git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31007 a1c6a512-1295-4272-9138-f99709370657
2011-11-17 17:57:28 +00:00
Michael Chicoine
576bc15733 FS#12383 - slovak language update by Peter Lecky
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@31005 a1c6a512-1295-4272-9138-f99709370657
2011-11-17 17:00:05 +00:00
Michael Sparmann
a93061630c Fix failed merge of r30953 to 3.10 branch. The ipodnano2g/ipod6g targets should compile again.
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@30963 a1c6a512-1295-4272-9138-f99709370657
2011-11-11 10:20:39 +00:00
Dominik Riebeling
6a3f0a87b8 Backport r30959 to 3.10 branch: Create features.tex without intermediate file.
Using features.tex as intermediate file for creating features.tex is a bit
confusing, and there is no real need for using an intermediate file. Change
some hardcoded output files while at it.



git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@30960 a1c6a512-1295-4272-9138-f99709370657
2011-11-10 20:14:07 +00:00
Michael Chicoine
f07b4602bf Correct saved config setting for Line Padding in Lists - fixes FS#12377
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@30956 a1c6a512-1295-4272-9138-f99709370657
2011-11-10 12:26:19 +00:00
Michael Sparmann
247cb149dd Rework FS#12310 fix (r30906) for better readability. No functional change.
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@30954 a1c6a512-1295-4272-9138-f99709370657
2011-11-10 10:37:05 +00:00
Michael Sparmann
8735bb0afc Revert r30905 for Nano2G on 3.10 release branch. This has not been tested sufficiently on this target.
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@30952 a1c6a512-1295-4272-9138-f99709370657
2011-11-10 10:24:23 +00:00
Peter D'Hoye
58cc71b3e9 update Dutch langfile for 3.10
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@30946 a1c6a512-1295-4272-9138-f99709370657
2011-11-09 20:46:55 +00:00
Michael Chicoine
66ecd9e85d FS#12365 - Czech language update by Marek Salaba
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@30929 a1c6a512-1295-4272-9138-f99709370657
2011-11-07 23:57:07 +00:00
Jonathan Gordon
beb68e9018 Branch for release 3.10
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_10@30927 a1c6a512-1295-4272-9138-f99709370657
2011-11-07 11:36:15 +00:00
42 changed files with 1631 additions and 237 deletions

View file

@ -56,50 +56,64 @@
#define MPC_SHR_RND(X, Y) ((X+(1<<(Y-1)))>>Y)
#if defined(CPU_COLDFIRE)
/* Calculate: result = (X*Y)>>14 */
#define MPC_MULTIPLY(X,Y) \
({ \
MPC_SAMPLE_FORMAT t1; \
MPC_SAMPLE_FORMAT t2; \
asm volatile ( \
"mac.l %[x],%[y],%%acc0\n\t" /* multiply */ \
"mulu.l %[y],%[x] \n\t" /* get lower half, avoid emac stall */ \
"movclr.l %%acc0,%[t1] \n\t" /* get higher half */ \
"moveq.l #17,%[t2] \n\t" \
"asl.l %[t2],%[t1] \n\t" /* hi <<= 17, plus one free */ \
"moveq.l #14,%[t2] \n\t" \
"lsr.l %[t2],%[x] \n\t" /* (unsigned)lo >>= 14 */ \
"or.l %[x],%[t1] \n" /* combine result */ \
: [t1]"=&d"(t1), [t2]"=&d"(t2) \
: [x]"d"((X)), [y] "d"((Y))); \
t1; \
})
#if defined(CPU_COLDFIRE)
/* Calculate: result = (X*Y)>>Z */
#define MPC_MULTIPLY_EX(X,Y,Z) \
({ \
MPC_SAMPLE_FORMAT t1; \
MPC_SAMPLE_FORMAT t2; \
asm volatile ( \
"mac.l %[x],%[y],%%acc0\n\t" /* multiply */ \
"mulu.l %[y],%[x] \n\t" /* get lower half, avoid emac stall */ \
"movclr.l %%acc0,%[t1] \n\t" /* get higher half */ \
"moveq.l #31,%[t2] \n\t" \
"sub.l %[sh],%[t2] \n\t" /* t2 = 31 - shift */ \
"ble.s 1f \n\t" \
"asl.l %[t2],%[t1] \n\t" /* hi <<= 31 - shift */ \
"lsr.l %[sh],%[x] \n\t" /* (unsigned)lo >>= shift */ \
"or.l %[x],%[t1] \n\t" /* combine result */ \
"bra.s 2f \n\t" \
"1: \n\t" \
"neg.l %[t2] \n\t" /* t2 = shift - 31 */ \
"asr.l %[t2],%[t1] \n\t" /* hi >>= t2 */ \
"2: \n" \
: [t1]"=&d"(t1), [t2]"=&d"(t2) \
: [x] "d"((X)), [y] "d"((Y)), [sh]"d"((Z))); \
t1; \
})
#define MPC_MULTIPLY(X,Y) mpc_multiply((X), (Y))
#define MPC_MULTIPLY_EX(X,Y,Z) mpc_multiply_ex((X), (Y), (Z))
static inline MPC_SAMPLE_FORMAT mpc_multiply(MPC_SAMPLE_FORMAT x,
MPC_SAMPLE_FORMAT y)
{
MPC_SAMPLE_FORMAT t1, t2;
asm volatile (
"mac.l %[x],%[y],%%acc0\n" /* multiply */
"mulu.l %[y],%[x] \n" /* get lower half, avoid emac stall */
"movclr.l %%acc0,%[t1] \n" /* get higher half */
"moveq.l #17,%[t2] \n"
"asl.l %[t2],%[t1] \n" /* hi <<= 17, plus one free */
"moveq.l #14,%[t2] \n"
"lsr.l %[t2],%[x] \n" /* (unsigned)lo >>= 14 */
"or.l %[x],%[t1] \n" /* combine result */
: /* outputs */
[t1]"=&d"(t1),
[t2]"=&d"(t2),
[x] "+d" (x)
: /* inputs */
[y] "d" (y)
);
return t1;
}
static inline MPC_SAMPLE_FORMAT mpc_multiply_ex(MPC_SAMPLE_FORMAT x,
MPC_SAMPLE_FORMAT y,
unsigned shift)
{
MPC_SAMPLE_FORMAT t1, t2;
asm volatile (
"mac.l %[x],%[y],%%acc0\n" /* multiply */
"mulu.l %[y],%[x] \n" /* get lower half, avoid emac stall */
"movclr.l %%acc0,%[t1] \n" /* get higher half */
"moveq.l #31,%[t2] \n"
"sub.l %[sh],%[t2] \n" /* t2 = 31 - shift */
"ble.s 1f \n"
"asl.l %[t2],%[t1] \n" /* hi <<= 31 - shift */
"lsr.l %[sh],%[x] \n" /* (unsigned)lo >>= shift */
"or.l %[x],%[t1] \n" /* combine result */
"bra.s 2f \n"
"1: \n"
"neg.l %[t2] \n" /* t2 = shift - 31 */
"asr.l %[t2],%[t1] \n" /* hi >>= t2 */
"2: \n"
: /* outputs */
[t1]"=&d"(t1),
[t2]"=&d"(t2),
[x] "+d" (x)
: /* inputs */
[y] "d" (y),
[sh]"d" (shift)
);
return t1;
}
#elif defined(CPU_ARM)
/* Calculate: result = (X*Y)>>14 */
#define MPC_MULTIPLY(X,Y) \

View file

@ -44,7 +44,6 @@
#include "filetree.h"
#include "misc.h"
#include "strnatcmp.h"
#include "playlist_viewer.h"
#ifdef HAVE_LCD_BITMAP
#include "keyboard.h"
#endif
@ -461,8 +460,13 @@ int ft_enter(struct tree_context* c)
switch ( file_attr & FILE_ATTR_MASK ) {
case FILE_ATTR_M3U:
if (!bookmark_autoload(buf))
playlist_viewer_ex(buf);
play = ft_play_playlist(buf, c->currdir, file->name);
if (play)
{
start_index = 0;
}
break;
case FILE_ATTR_AUDIO:

View file

@ -156,7 +156,11 @@ bool skin_backdrops_preload(void)
screens[screen].backdrop_load(filename, backdrops[i].buffer);
handle_being_loaded = -1;
if (!backdrops[i].loaded)
{
core_free(backdrops[i].buflib_handle);
retval = false;
backdrops[i].buflib_handle = -1;
}
}
else
retval = false;

View file

@ -732,10 +732,14 @@ static const char* NOINLINE get_lif_token_value(struct gui_wps *gwps,
{
int a = lif->num_options;
int b;
bool number_set = true;
const char* out_text = get_token_value(gwps, lif->token, offset,
buf, buf_size, &a);
if (a == -1 && lif->token->type != SKIN_TOKEN_VOLUME)
{
a = (out_text && *out_text) ? 1 : 0;
number_set = false;
}
switch (lif->operand.type)
{
case STRING:
@ -745,6 +749,9 @@ static const char* NOINLINE get_lif_token_value(struct gui_wps *gwps,
b = 0;
break;
case INTEGER:
if (!number_set && out_text && *out_text >= '0' && *out_text <= '9')
a = atoi(out_text);
/* fall through */
case DECIMAL:
b = lif->operand.data.number;
break;
@ -1550,7 +1557,7 @@ const char *get_token_value(struct gui_wps *gwps,
}
}
/* Special handlng for filenames because we dont want to show the prefix */
if ((s->flags&F_T_MASK) == F_T_UCHARPTR ||
if ((s->flags&F_T_MASK) == F_T_CHARPTR ||
(s->flags&F_T_MASK) == F_T_UCHARPTR)
{
if (s->filename_setting->prefix)

View file

@ -250,10 +250,6 @@ void gui_usb_screen_run(bool early_usb)
touchscreen_set_mode(TOUCHSCREEN_BUTTON);
#endif
#ifndef SIMULATOR
usb_acknowledge(SYS_USB_CONNECTED_ACK);
#endif
#ifdef USB_ENABLE_HID
usb_hid = global_settings.usb_hid;
usb_keypad_mode = global_settings.usb_keypad_mode;
@ -285,6 +281,10 @@ void gui_usb_screen_run(bool early_usb)
#endif
}
#ifndef SIMULATOR
usb_acknowledge(SYS_USB_CONNECTED_ACK);
#endif
while (1)
{
usb_screens_draw(usb_screen_vps_ar);

View file

@ -18,6 +18,7 @@
# - ventsi84 at thecrayer.com
# - Nicolay Jordanov
# - Hristo Kovachev
# - Vencislav Atanasov
<phrase>
id: LANG_SET_BOOL_YES
desc: bool true representation
@ -11968,15 +11969,15 @@
user: core
<source>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement"
</source>
<dest>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D усилване"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3D ефект"
</dest>
<voice>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D усилване"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3D ефект"
</voice>
</phrase>
<phrase>
@ -12718,3 +12719,93 @@
*: "Отваряй файловия браузър тук"
</voice>
</phrase>
<phrase>
id: LANG_USB_SKIP_FIRST_DRIVE
desc: in settings_menu
user: core
<source>
*: none
multidrive_usb: "USB Hide Internal Drive"
</source>
<dest>
*: none
multidrive_usb: "Скрий вграденото USB устройство"
</dest>
<voice>
*: none
multidrive_usb: "Скрий вграденото USB устройство"
</voice>
</phrase>
<phrase>
id: LANG_LIST_LINE_PADDING
desc: list padding, in display settings
user: core
<source>
*: none
touchscreen: "Line Padding in Lists"
</source>
<dest>
*: none
touchscreen: "Допълване на реда в списъци"
</dest>
<voice>
*: none
touchscreen: "Допълване на реда в списъци"
</voice>
</phrase>
<phrase>
id: LANG_AUTOMATIC
desc: generic automatic
user: core
<source>
*: "Automatic"
</source>
<dest>
*: "Автоматично"
</dest>
<voice>
*: "Автоматично"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Отмени таймер"
</dest>
<voice>
*: "Отмени таймер"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
user: core
<source>
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Време на таймера по подразбиране"
</dest>
<voice>
*: "Време на таймера по подразбиране"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_ON_POWER_UP
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Стартирай таймера при включване"
</dest>
<voice>
*: "Стартирай таймера при включване"
</voice>
</phrase>

View file

@ -4352,10 +4352,10 @@
*: "Sleep Timer"
</source>
<dest>
*: "Časovač usnutí"
*: "Časovač vypnutí"
</dest>
<voice>
*: "Časovač usnutí"
*: "Časovač vypnutí"
</voice>
</phrase>
<phrase>
@ -12382,15 +12382,15 @@
user: core
<source>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement"
</source>
<dest>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D vylepšení"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D vylepšení"
</dest>
<voice>
*: none
gigabeats,mpiohd200,mpiohd300: "TŘIDÉ vylepšení"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "TŘIDÉ vylepšení"
</voice>
</phrase>
<phrase>
@ -12730,3 +12730,93 @@
*: "Uložit změny?"
</voice>
</phrase>
<phrase>
id: LANG_USB_SKIP_FIRST_DRIVE
desc: in settings_menu
user: core
<source>
*: none
multidrive_usb: "USB Hide Internal Drive"
</source>
<dest>
*: none
multidrive_usb: "Skrýt interni disk přes USB"
</dest>
<voice>
*: none
multidrive_usb: "Skrýt interni disk přes ÚESBÉ"
</voice>
</phrase>
<phrase>
id: LANG_LIST_LINE_PADDING
desc: list padding, in display settings
user: core
<source>
*: none
touchscreen: "Line Padding in Lists"
</source>
<dest>
*: none
touchscreen: "Vyplnění řádky v seznamech"
</dest>
<voice>
*: none
touchscreen: "Vyplnění řádky v seznamech"
</voice>
</phrase>
<phrase>
id: LANG_AUTOMATIC
desc: generic automatic
user: core
<source>
*: "Automatic"
</source>
<dest>
*: "Automaticky"
</dest>
<voice>
*: "Automatycky"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Zrušit časovač vypnutí"
</dest>
<voice>
*: "Zrušit časovač vypnutí"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
user: core
<source>
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Výchozí doba časovače vypnutí"
</dest>
<voice>
*: "Výchozí doba časovače vypnutí"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_ON_POWER_UP
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Aktivovat časovač vypnutí při startu přehrávače"
</dest>
<voice>
*: "Aktivovat časovač vypnutí při startu přehrávače"
</voice>
</phrase>

View file

@ -31,6 +31,7 @@
# - Nicolas Pennequin
# - Clément Pit-Claudel
# - Michaël Burtin
# - Olivier Kaloudoff
#
# Original comments below:
#
@ -445,7 +446,7 @@
</phrase>
<phrase>
id: LANG_PLAYLISTS
desc: in the main menu and file view setting
desc: in the file view setting
user: core
<source>
*: "Playlists"
@ -6487,7 +6488,7 @@
</phrase>
<phrase>
id: LANG_CATALOG
desc: in onplay menu
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
@ -12406,15 +12407,15 @@
user: core
<source>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement"
</source>
<dest>
*: none
gigabeats,mpiohd200,mpiohd300: "Amélioration 3-D"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "Amélioration 3D"
</dest>
<voice>
*: none
gigabeats,mpiohd200,mpiohd300: "Amélioration 3-D"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "Amélioration 3D"
</voice>
</phrase>
<phrase>
@ -12684,7 +12685,6 @@
*: "Dans répertoire personnalisé seulement"
</voice>
</phrase>
<phrase>
<phrase>
id: LANG_PAUSE_REWIND
desc: Seconds to rewind when rewind on pause is enabled.
@ -12699,3 +12699,149 @@
*: "Rembobiner lors de la mise en pause"
</voice>
</phrase>
<phrase>
id: LANG_CURRENT_PLAYLIST
desc: Used when you need to say playlist, also voiced
user: core
<source>
*: "Current Playlist"
</source>
<dest>
*: "Liste de lecture courante"
</dest>
<voice>
*: "Liste de lecture courante"
</voice>
</phrase>
<phrase>
id: LANG_USB_SKIP_FIRST_DRIVE
desc: in settings_menu
user: core
<source>
*: none
multidrive_usb: "USB Hide Internal Drive"
</source>
<dest>
*: none
multidrive_usb: "Cacher le disque USB interne"
</dest>
<voice>
*: none
multidrive_usb: "Cacher le disque USB interne"
</voice>
</phrase>
<phrase>
id: LANG_SET_AS_PLAYLISTCAT_DIR
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
</source>
<dest>
*: "Sélectionner comme répertoire des catalogues de listes de lecture"
</dest>
<voice>
*: "Sélectionner comme répertoire des catalogues de listes de lecture"
</voice>
</phrase>
<phrase>
id: LANG_LIST_LINE_PADDING
desc: list padding, in display settings
user: core
<source>
*: none
touchscreen: "Line Padding in Lists"
</source>
<dest>
*: none
touchscreen: "Remplissage vertical des lignes des listes"
</dest>
<voice>
*: none
touchscreen: "Remplissage vertical des lignes des listes"
</voice>
</phrase>
<phrase>
id: LANG_SAVE_CHANGES
desc: When you try to exit screens to confirm save
user: core
<source>
*: "Save Changes?"
</source>
<dest>
*: "Enregistrer les changements ?"
</dest>
<voice>
*: "Enregistrer les changements ?"
</voice>
</phrase>
<phrase>
id: LANG_AUTOMATIC
desc: generic automatic
user: core
<source>
*: "Automatic"
</source>
<dest>
*: "Automatique"
</dest>
<voice>
*: "Automatique"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Annuler la minuterie d'arrêt"
</dest>
<voice>
*: "Annuler la minuterie d'arrêt"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
user: core
<source>
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Durée par défault de la minuterie d'arrêt"
</dest>
<voice>
*: "Durée par défault de la minuterie d'arrêt"
</voice>
</phrase>
<phrase>
id: LANG_RESET_PLAYLISTCAT_DIR
desc:
user: core
<source>
*: "Reset Playlist Catalogue Directory"
</source>
<dest>
*: "RAZ du répertoire des catalogues de listes de lecture"
</dest>
<voice>
*: "RAZ du répertoire des catalogues de listes de lecture"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_ON_POWER_UP
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Lancer la minuterie d'arrêt au démarrage"
</dest>
<voice>
*: "Lancer la minuterie d'arrêt au démarrage"
</voice>
</phrase>

View file

@ -417,7 +417,7 @@
</phrase>
<phrase>
id: LANG_PLAYLISTS
desc: in the main menu and file view setting
desc: in the file view setting
user: core
<source>
*: "Playlists"
@ -1984,19 +1984,16 @@
</phrase>
<phrase>
id: LANG_HEADPHONE_UNPLUG_RW
desc: in pause_phones_menu.
desc: deprecated
user: core
<source>
*: none
headphone_detection: "Duration to Rewind"
*: ""
</source>
<dest>
*: none
headphone_detection: "Vrijeme za premotati"
*: ""
</dest>
<voice>
*: none
headphone_detection: "Vrijeme za premotati"
*: ""
</voice>
</phrase>
<phrase>
@ -6460,7 +6457,7 @@
</phrase>
<phrase>
id: LANG_CATALOG
desc: in onplay menu
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
@ -7905,8 +7902,6 @@
*: "Vrijeme"
</voice>
</phrase>
/* TODO: cleanup LANG_USB_CHARGING unless HAVE_USB_CHARGING_ENABLE defined,
* the selector should probably be usb_charging_enable_enable as well. */
<phrase>
id: LANG_USB_CHARGING
desc: in Battery menu
@ -7982,10 +7977,10 @@
</source>
<dest>
*: none
recording: "Disk je pun. Pritisnite "OFF" za nastavak."
iriverh100,iriverh120,iriverh300: "Disk je pun. Pritisnite "STOP" za nastavak."
iaudiom5,iaudiox5: "Disk je pun. Pritisnite "POWER" za nastavak."
sansae200*,sansac200*,vibe500: "Disk je pun. Pritisnite "PREV" za nastavak."
recording: "Disk je pun. Pritisnite OFF za nastavak."
iriverh100,iriverh120,iriverh300: "Disk je pun. Pritisnite STOP za nastavak."
iaudiom5,iaudiox5: "Disk je pun. Pritisnite POWER za nastavak."
sansae200*,sansac200*,vibe500: "Disk je pun. Pritisnite PREV za nastavak."
</dest>
<voice>
*: none
@ -8019,7 +8014,7 @@
</source>
<dest>
*: none
soft_shutdown: "Pritisnite "OFF" za gašenje"
soft_shutdown: "Pritisnite OFF za gašenje"
</dest>
<voice>
*: none
@ -10420,15 +10415,15 @@
user: core
<source>
*: none
ipodvideo: "Bass Cutoff"
ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Bass Cutoff"
</source>
<dest>
*: none
ipodvideo: "Odsijecanje basa"
ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Odsijecanje basa"
</dest>
<voice>
*: none
ipodvideo: "Odsijecanje basa"
ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Odsijecanje basa"
</voice>
</phrase>
<phrase>
@ -10437,15 +10432,15 @@
user: core
<source>
*: none
ipodvideo: "Treble Cutoff"
ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Treble Cutoff"
</source>
<dest>
*: none
ipodvideo: "Odsijecanje treblea"
ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Odsijecanje treblea"
</dest>
<voice>
*: none
ipodvideo: "Odsijecanje treblea"
ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Odsijecanje treblea"
</voice>
</phrase>
<phrase>
@ -12381,15 +12376,15 @@
user: core
<source>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement"
</source>
<dest>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D poboljšanje"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D poboljšanje"
</dest>
<voice>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D poboljšanje"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D poboljšanje"
</voice>
</phrase>
<phrase>
@ -12617,3 +12612,132 @@
*: ""
</voice>
</phrase>
<phrase>
id: LANG_CURRENT_PLAYLIST
desc: Used when you need to say playlist, also voiced
user: core
<source>
*: "Current Playlist"
</source>
<dest>
*: "Trenutni popis izvođenja"
</dest>
<voice>
*: "Trenutni popis izvođenja"
</voice>
</phrase>
<phrase>
id: LANG_AUTORESUME
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
</source>
<dest>
*: "Automatsko nastavljanje"
</dest>
<voice>
*: "Automatsko nastavljanje"
</voice>
</phrase>
<phrase>
id: LANG_AUTORESUME_AUTOMATIC
desc: resume on automatic track change
user: core
<source>
*: "Resume on automatic track change"
</source>
<dest>
*: "Nastavi na automatsku promjenu pjesme"
</dest>
<voice>
*: "Nastavi na automatsku promjenu pjesme"
</voice>
</phrase>
<phrase>
id: LANG_USB_SKIP_FIRST_DRIVE
desc: in settings_menu
user: core
<source>
*: none
multidrive_usb: "USB Hide Internal Drive"
</source>
<dest>
*: none
multidrive_usb: "USB skrivanje unutrašnjeg uređaja"
</dest>
<voice>
*: none
multidrive_usb: "USB skrivanje unutrašnjeg uređaja"
</voice>
</phrase>
<phrase>
id: LANG_SET_AS_PLAYLISTCAT_DIR
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
</source>
<dest>
*: "Postavi kao direktorij kataloga popisa izvođenja"
</dest>
<voice>
*: "Postavi kao direktorij kataloga popisa izvođenja"
</voice>
</phrase>
<phrase>
id: LANG_SAVE_CHANGES
desc: When you try to exit screens to confirm save
user: core
<source>
*: "Save Changes?"
</source>
<dest>
*: "Spremiti promjene?"
</dest>
<voice>
*: "Spremiti promjene?"
</voice>
</phrase>
<phrase>
id: LANG_PAUSE_REWIND
desc: Seconds to rewind when rewind on pause is enabled.
user: core
<source>
*: "Rewind on Pause"
</source>
<dest>
*: "Premotaj natrag pri stanci"
</dest>
<voice>
*: "Premotaj natrag pri stanci"
</voice>
</phrase>
<phrase>
id: LANG_RESET_PLAYLISTCAT_DIR
desc:
user: core
<source>
*: "Reset Playlist Catalogue Directory"
</source>
<dest>
*: "Vrati uobičajeni direktorij kataloga popisa izvođenja"
</dest>
<voice>
*: "Vrati uobičajeni direktorij kataloga popisa izvođenja"
</voice>
</phrase>
<phrase>
id: LANG_AUTORESUME_CUSTOM
desc: enable customization of resume on automatic track change
user: core
<source>
*: "In custom directories only"
</source>
<dest>
*: "Samo u prilagođenim direktorijima"
</dest>
<voice>
*: "Samo u prilagođenim direktorijima"
</voice>
</phrase>

View file

@ -419,7 +419,10 @@
</phrase>
<phrase>
id: LANG_PLAYLISTS
desc: in the main menu and file view setting
### The 'desc' field differs from the english!
### the previously used desc is commented below:
### desc: in the main menu and file view setting
desc: in the file view setting
user: core
<source>
*: "Playlists"
@ -6461,7 +6464,10 @@ desc: deprecated
</phrase>
<phrase>
id: LANG_CATALOG
desc: in onplay menu
### The 'desc' field differs from the english!
### the previously used desc is commented below:
### desc: in onplay menu
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
@ -12381,8 +12387,12 @@ desc: deprecated
desc: in sound_menu, amount of 3D enhancement effect
user: core
<source>
### The <source> section differs from the english!
### the previously used one is commented below:
### *: none
### gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement"
</source>
<dest>
*: none
@ -12730,3 +12740,97 @@ desc: deprecated
*: "Salva Modifiche?"
</voice>
</phrase>
<phrase>
id: LANG_USB_SKIP_FIRST_DRIVE
desc: in settings_menu
user: core
<source>
*: none
multidrive_usb: "USB Hide Internal Drive"
</source>
<dest>
*: none
multidrive_usb: "Nascondi Drive interno USB"
</dest>
<voice>
*: none
multidrive_usb: "Nascondi Drive interno USB"
</voice>
</phrase>
<phrase>
id: LANG_LIST_LINE_PADDING
desc: list padding, in display settings
user: core
<source>
*: none
touchscreen: "Line Padding in Lists"
</source>
<dest>
*: none
touchscreen: "Padding Linea in Elenchi"
</dest>
<voice>
*: none
touchscreen: "Padding Linea in Elenchi"
</voice>
</phrase>
<phrase>
id: LANG_AUTOMATIC
desc: generic automatic
user: core
<source>
*: "Automatic"
</source>
<dest>
*: "Automatico"
</dest>
<voice>
*: "Automatico"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
user: core
<source>
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Durata Default Tempo Spegnimento"
</dest>
<voice>
*: "Durata Default Tempo Spegnimento"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_ON_POWER_UP
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Avvio Tempo Spegnimento All'accensione"
</dest>
<voice>
*: "Avvio Tempo Spegnimento All'accensione"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Annulla Tempo Spegnimento"
</dest>
<voice>
*: "Annulla Tempo Spegnimento"
</voice>
</phrase>
### LANG_SHORTCUTS: The phrase is not used. Skipped
### LANG_KEYCLICK_SOFTWARE: The phrase is not used. Skipped
### LANG_KEYCLICK_HARDWARE: The phrase is not used. Skipped
### LANG_GLYPHS: The phrase is not used. Skipped

View file

@ -12366,15 +12366,15 @@
user: core
<source>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement"
</source>
<dest>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Paplašinājums"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Paplašinājums"
</dest>
<voice>
*: none
gigabeats,mpiohd200,mpiohd300: "triis dimensiju paplashinaajums"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "triis dimensiju paplashinaajums"
</voice>
</phrase>
<phrase>
@ -12748,3 +12748,80 @@
histogram: "vizualizaacijas intervaals"
</voice>
</phrase>
### LANG_GLYPHS: The phrase is not used. Skipped
### LANG_KEYCLICK_HARDWARE: The phrase is not used. Skipped
### LANG_KEYCLICK_SOFTWARE: The phrase is not used. Skipped
<phrase>
id: LANG_LIST_LINE_PADDING
desc: list padding, in display settings
user: core
<source>
*: none
touchscreen: "Line Padding in Lists"
</source>
<dest>
*: none
touchscreen: "Līnijas Izplešana Sarakstos"
</dest>
<voice>
*: none
touchscreen: "liinijas izpleshana sarakstos"
</voice>
</phrase>
<phrase>
id: LANG_AUTOMATIC
desc: generic automatic
user: core
<source>
*: "Automatic"
</source>
<dest>
*: "Automātiski"
</dest>
<voice>
*: "automaatiski"
</voice>
</phrase>
### LANG_SHORTCUTS: The phrase is not used. Skipped
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Izslēgt Izslēgšanos"
</dest>
<voice>
*: "izsleegt izsleegshanos"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
user: core
<source>
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Noklusētais Izslēgšanās Laiks"
</dest>
<voice>
*: "nokluseetais izsleegshanaas laiks"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_ON_POWER_UP
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Sākt Izslēgšanas Laiku Ieslēdzot"
</dest>
<voice>
*: "saakt izsleegshanas laika atskaiti iesleedzot"
</voice>
</phrase>

View file

@ -12750,3 +12750,76 @@
*: "Speellijst catalogus map terugzetten"
</voice>
</phrase>
<phrase>
id: LANG_LIST_LINE_PADDING
desc: list padding, in display settings
user: core
<source>
*: none
touchscreen: "Line Padding in Lists"
</source>
<dest>
*: none
touchscreen: "Lijn spatiëring in lijsten"
</dest>
<voice>
*: none
touchscreen: "Lijn spatiëring in lijsten"
</voice>
</phrase>
<phrase>
id: LANG_AUTOMATIC
desc: generic automatic
user: core
<source>
*: "Automatic"
</source>
<dest>
*: "Automatisch"
</dest>
<voice>
*: "Automatisch"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Annuleer slaap klok"
</dest>
<voice>
*: "Annuleer slaap klok"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
user: core
<source>
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Standaard slaap klok duur"
</dest>
<voice>
*: "Standaard slaap klok duur"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_ON_POWER_UP
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Start slaap klok bij opstarten"
</dest>
<voice>
*: "Start slaap klok bij opstarten"
</voice>
</phrase>

View file

@ -16,6 +16,8 @@
#
# Brazilian Portuguese language file, translated by:
# - Adilson V. Xavier
# - Kessia Pinheiro
<phrase>
id: LANG_SET_BOOL_YES
desc: bool true representation
@ -417,7 +419,7 @@
</phrase>
<phrase>
id: LANG_PLAYLISTS
desc: in the main menu and file view setting
desc: in the file view setting
user: core
<source>
*: "Playlists"
@ -1984,19 +1986,16 @@
</phrase>
<phrase>
id: LANG_HEADPHONE_UNPLUG_RW
desc: in pause_phones_menu.
desc: deprecated
user: core
<source>
*: none
headphone_detection: "Duration to Rewind"
*: ""
</source>
<dest>
*: none
headphone_detection: "Duração de Rebobinagem"
*: ""
</dest>
<voice>
*: none
headphone_detection: "Duração de Rebobinagem"
*: ""
</voice>
</phrase>
<phrase>
@ -2237,6 +2236,7 @@
iaudiox5,iaudiom5,gigabeat*,mrobe100: "Building database... %d found (LEFT to return)"
iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Building database... %d found (PREV to return)"
gogearsa9200: "Building database... %d found (REW to return)"
archosplayer: "Building DB %d found"
</source>
<dest>
*: "Construindo Base de Dados... %d encontrados (OFF para retornar)"
@ -2245,6 +2245,7 @@
iaudiox5,iaudiom5,gigabeat*,mrobe100: "Construindo Base de Dados... %d encontrados (LEFT para retornar)"
iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Construindo Base de Dados... %d encontrados (PREV para retornar)"
gogearsa9200: "Construindo Base de Dados... %d encontrados (REW para retornar)"
archosplayer: "Construindo BD %d encontrado"
</dest>
<voice>
*: "entradas encontradas para a base de dados"
@ -3976,7 +3977,7 @@
rtc: "OFF = Revert"
mrobe500: "POWER = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
ipod*,sansac200*: "MENU = Revert"
ipod*,sansac200*,mpiohd300: "MENU = Revert"
iaudiox5,iaudiom5: "RECORD = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
gigabeatfx: "POWER = Revert"
@ -3990,7 +3991,7 @@
rtc: "OFF = Reverter"
mrobe500: "POWER = Reverter"
iriverh100,iriverh120,iriverh300: "STOP = Reverter"
ipod*,sansac200*: "MENU = Reverter"
ipod*,sansac200*,mpiohd300: "MENU = Reverter"
iaudiox5,iaudiom5: "RECORD = Reverter"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Reverter"
gigabeatfx: "POWER = Reverter"
@ -4001,7 +4002,6 @@
</dest>
<voice>
*: none
rtc,iriverh100,iriverh120,iriverh300,ipod*,sansae200*,sansac200*,iaudiox5,iaudiom5,iriverh10,iriverh10_5gb,gigabeat*,mrobe100,gogearsa9200: ""
</voice>
</phrase>
<phrase>
@ -6460,7 +6460,7 @@
</phrase>
<phrase>
id: LANG_CATALOG
desc: in onplay menu
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
@ -12379,15 +12379,15 @@
user: core
<source>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement"
</source>
<dest>
*: none
gigabeats,mpiohd200,mpiohd300: "Realce 3D"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "Efeito 3D"
</dest>
<voice>
*: none
gigabeats,mpiohd200,mpiohd300: "Realce 3-D"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "Efeito 3D"
</voice>
</phrase>
<phrase>
@ -12542,3 +12542,278 @@
*: "Tamanho do Arquivo"
</voice>
</phrase>
<phrase>
id: LANG_CURRENT_PLAYLIST
desc: Used when you need to say playlist, also voiced
user: core
<source>
*: "Current Playlist"
</source>
<dest>
*: "Playlist Atual"
</dest>
<voice>
*: "Playlist Atual"
</voice>
</phrase>
<phrase>
id: LANG_AUTORESUME
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
</source>
<dest>
*: "Resumo Automático"
</dest>
<voice>
*: "Resumo Automático"
</voice>
</phrase>
<phrase>
id: LANG_AUTORESUME_AUTOMATIC
desc: resume on automatic track change
user: core
<source>
*: "Resume on automatic track change"
</source>
<dest>
*: "Resumir na mudança automática de faixa"
</dest>
<voice>
*: "Resumir na mudança automática de faixa"
</voice>
</phrase>
<phrase>
id: LANG_USB_SKIP_FIRST_DRIVE
desc: in settings_menu
user: core
<source>
*: none
multidrive_usb: "USB Hide Internal Drive"
</source>
<dest>
*: none
multidrive_usb: "Ocultar Drive USB Interno"
</dest>
<voice>
*: none
multidrive_usb: "Ocultar Drive USB Interno"
</voice>
</phrase>
<phrase>
id: LANG_SET_AS_PLAYLISTCAT_DIR
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
</source>
<dest>
*: "Definir como Diretório do Catálogo de Playlist"
</dest>
<voice>
*: "Definir como Diretório do Catálogo de Playlist"
</voice>
</phrase>
<phrase>
id: LANG_LIST_LINE_PADDING
desc: list padding, in display settings
user: core
<source>
*: none
touchscreen: "Line Padding in Lists"
</source>
<dest>
*: none
touchscreen: "Preenchimento de Linha das Listas"
</dest>
<voice>
*: none
touchscreen: "Preenchimento de Linha das Listas"
</voice>
</phrase>
<phrase>
id: LANG_SAVE_CHANGES
desc: When you try to exit screens to confirm save
user: core
<source>
*: "Save Changes?"
</source>
<dest>
*: "Salvar Mudanças?"
</dest>
<voice>
*: "Salvar Mudanças?"
</voice>
</phrase>
<phrase>
id: LANG_PAUSE_REWIND
desc: Seconds to rewind when rewind on pause is enabled.
user: core
<source>
*: "Rewind on Pause"
</source>
<dest>
*: "Voltar depois de Pausar"
</dest>
<voice>
*: "Voltar depois de Pausar"
</voice>
</phrase>
<phrase>
id: LANG_AUTOMATIC
desc: generic automatic
user: core
<source>
*: "Automatic"
</source>
<dest>
*: "Automático"
</dest>
<voice>
*: "Automático"
</voice>
</phrase>
<phrase>
id: LANG_AUTORESUME_ENABLE_YES
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Cancelar Desligamento Automático"
</dest>
<voice>
*: "Cancelar Desligamento Automático"
</voice>
</phrase>
<phrase>
id: LANG_RESET_START_DIR
desc: reset the browser start directory
user: core
<source>
*: "Start File Browser at /"
</source>
<dest>
*: "Começar o Navegador de Arquivos na Raiz /"
</dest>
<voice>
*: "Começar o Navegador de Arquivos na Raiz /"
</voice>
</phrase>
<phrase>
id: LANG_FM_RSSI
desc: Signal strength of a received FM station
user: core
<source>
*: none
radio: "Signal strength:"
</source>
<dest>
*: none
radio: "Força do Sinal:"
</dest>
<voice>
*: none
radio: "Força do Sinal:"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
user: core
<source>
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Tempo para o Desligamento Automático"
</dest>
<voice>
*: "Tempo para o Desligamento Automático"
</voice>
</phrase>
<phrase>
id: LANG_AUTORESUME_ENABLE
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_RESET_PLAYLISTCAT_DIR
desc:
user: core
<source>
*: "Reset Playlist Catalogue Directory"
</source>
<dest>
*: "Reiniciar o Diretório do Catálogo de Playlist"
</dest>
<voice>
*: "Reiniciar o Diretório do Catálogo de Playlist"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_ON_POWER_UP
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Iniciar o Desligamento Automático na Inicialização"
</dest>
<voice>
*: "Iniciar o Desligamento Automático na Inicialização"
</voice>
</phrase>
<phrase>
id: LANG_AUTORESUME_CUSTOM
desc: enable customization of resume on automatic track change
user: core
<source>
*: "In custom directories only"
</source>
<dest>
*: "Apenas em diretórios customizados"
</dest>
<voice>
*: "Apenas em diretórios customizados"
</voice>
</phrase>
<phrase>
id: LANG_SET_AS_START_DIR
desc: used in the onplay menu to set a starting browser dir
user: core
<source>
*: "Start File Browser Here"
</source>
<dest>
*: "Iniciar Navegador de Arquivos Aqui"
</dest>
<voice>
*: "Iniciar Navegador de Arquivos Aqui"
</voice>
</phrase>

View file

@ -25,6 +25,7 @@
# - Alexander Levin
# - Anton Veretenenko
# - Simon Zhukovsky
# - Desu Rozen
<phrase>
id: LANG_SET_BOOL_YES
desc: bool true representation
@ -7468,6 +7469,7 @@
iaudiox5,iaudiom5,gigabeat*,mrobe100: "Building database... %d found (LEFT to return)"
iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Building database... %d found (PREV to return)"
gogearsa9200: "Building database... %d found (REW to return)"
archosplayer: "Building DB %d found"
</source>
<dest>
*: "Построение базы... %d найдено (ВЫКЛ. для отмены)"
@ -7476,6 +7478,7 @@
iaudiox5,iaudiom5,gigabeat*,mrobe100: "Построение базы... %d найдено (ВЛЕВО для отмены)"
iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Построение базы... %d найдено (ПРЕД. для отмены)"
gogearsa9200: "Построение базы... %d найдено (РЕВЕРС. для отмены)"
archosplayer: "Построение БД... %d найдено"
</dest>
<voice>
*: "найдено записей в базе"
@ -9015,7 +9018,7 @@
</phrase>
<phrase>
id: LANG_CATALOG
desc: in onplay menu
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
@ -9291,19 +9294,16 @@
</phrase>
<phrase>
id: LANG_HEADPHONE_UNPLUG_RW
desc: in pause_phones_menu.
desc: deprecated
user: core
<source>
*: none
headphone_detection: "Duration to Rewind"
*: ""
</source>
<dest>
*: none
headphone_detection: "Продолжительность перемотки"
*: ""
</dest>
<voice>
*: none
headphone_detection: "Продолжительность перемотки"
*: ""
</voice>
</phrase>
<phrase>
@ -10173,7 +10173,7 @@
</phrase>
<phrase>
id: LANG_PLAYLISTS
desc: in the main menu and file view setting
desc: in the file view setting
user: core
<source>
*: "Playlists"
@ -12025,15 +12025,15 @@
user: core
<source>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement"
</source>
<dest>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D расширения"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D улучшайзер"
</dest>
<voice>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D расширения"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D улучшайзер"
</voice>
</phrase>
<phrase>
@ -12665,3 +12665,163 @@
*: "Только в заданных папках"
</voice>
</phrase>
<phrase>
id: LANG_CURRENT_PLAYLIST
desc: Used when you need to say playlist, also voiced
user: core
<source>
*: "Current Playlist"
</source>
<dest>
*: "Текущий список"
</dest>
<voice>
*: "Текущий список"
</voice>
</phrase>
<phrase>
id: LANG_USB_SKIP_FIRST_DRIVE
desc: in settings_menu
user: core
<source>
*: none
multidrive_usb: "USB Hide Internal Drive"
</source>
<dest>
*: none
multidrive_usb: "USB Скрыть внутренний диск"
</dest>
<voice>
*: none
multidrive_usb: "USB Скрыть внутренний диск"
</voice>
</phrase>
<phrase>
id: LANG_SET_AS_PLAYLISTCAT_DIR
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
</source>
<dest>
*: "Установить как папку каталога списков"
</dest>
<voice>
*: "Установить как папку каталога списков"
</voice>
</phrase>
<phrase>
id: LANG_LIST_LINE_PADDING
desc: list padding, in display settings
user: core
<source>
*: none
touchscreen: "Line Padding in Lists"
</source>
<dest>
*: none
touchscreen: "Отступ в списках"
</dest>
<voice>
*: none
touchscreen: "Отступ в списках"
</voice>
</phrase>
<phrase>
id: LANG_SAVE_CHANGES
desc: When you try to exit screens to confirm save
user: core
<source>
*: "Save Changes?"
</source>
<dest>
*: "Сохранить изменения?"
</dest>
<voice>
*: "Сохранить изменения?"
</voice>
</phrase>
<phrase>
id: LANG_PAUSE_REWIND
desc: Seconds to rewind when rewind on pause is enabled.
user: core
<source>
*: "Rewind on Pause"
</source>
<dest>
*: "Перемотка назад на Паузе"
</dest>
<voice>
*: "Перемотка назад на Паузе"
</voice>
</phrase>
<phrase>
id: LANG_AUTOMATIC
desc: generic automatic
user: core
<source>
*: "Automatic"
</source>
<dest>
*: "Автоматич."
</dest>
<voice>
*: "Автоматич."
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Отменить таймер сна"
</dest>
<voice>
*: "Отменить таймер сна"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
user: core
<source>
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Продолжительность таймера сна по-умолчанию"
</dest>
<voice>
*: "Продолжительность таймера сна по-умолчанию"
</voice>
</phrase>
<phrase>
id: LANG_RESET_PLAYLISTCAT_DIR
desc:
user: core
<source>
*: "Reset Playlist Catalogue Directory"
</source>
<dest>
*: "Сбросить папку каталога списков"
</dest>
<voice>
*: "Сбросить папку каталога списков"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_ON_POWER_UP
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Запускать таймер сна при загрузке"
</dest>
<voice>
*: "Запускать таймер сна при загрузке"
</voice>
</phrase>

View file

@ -12341,15 +12341,15 @@
user: core
<source>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement"
</source>
<dest>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Vylepšenie"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Rozšírenie"
</dest>
<voice>
*: none
gigabeats,mpiohd200,mpiohd300: "3-D Vylepšenie"
gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3D rozšírenie"
</voice>
</phrase>
<phrase>
@ -12672,10 +12672,10 @@
</phrase>
<phrase>
id: LANG_SET_AS_PLAYLISTCAT_DIR
desc: used in the onplay menu to set a playlist catalog dir
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalog Directory"
*: "Set As Playlist Catalogue Directory"
</source>
<dest>
*: "Nastaviť Ako Priečinok Katalógu Plejlistov"
@ -12717,7 +12717,7 @@
desc:
user: core
<source>
*: "Reset Playlist Catalog Directory"
*: "Reset Playlist Catalogue Directory"
</source>
<dest>
*: "Resetovať Priečinok Katalógu Plejlistov"
@ -12726,3 +12726,93 @@
*: "Resetovať Priečinok Katalógu Plejlistov"
</voice>
</phrase>
<phrase>
id: LANG_USB_SKIP_FIRST_DRIVE
desc: in settings_menu
user: core
<source>
*: none
multidrive_usb: "USB Hide Internal Drive"
</source>
<dest>
*: none
multidrive_usb: "USB Skryť Interný Disk"
</dest>
<voice>
*: none
multidrive_usb: "USB Skryť Interný Disk"
</voice>
</phrase>
<phrase>
id: LANG_LIST_LINE_PADDING
desc: list padding, in display settings
user: core
<source>
*: none
touchscreen: "Line Padding in Lists"
</source>
<dest>
*: none
touchscreen: "Zarovnanie Riadka v Zoznamoch"
</dest>
<voice>
*: none
touchscreen: "Zarovnanie Riadka v Zoznamoch"
</voice>
</phrase>
<phrase>
id: LANG_AUTOMATIC
desc: generic automatic
user: core
<source>
*: "Automatic"
</source>
<dest>
*: "Automaticky"
</dest>
<voice>
*: "Automaticky"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Zrušiť Časovač Spánku"
</dest>
<voice>
*: "Zrušiť Časovač Spánku"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
user: core
<source>
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Predvolené Trvanie Pre Časovač Spánku"
</dest>
<voice>
*: "Predvolené Trvanie Pre Časovač Spánku"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_ON_POWER_UP
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Aktivovať Časovač Spánku Po Zapnutí"
</dest>
<voice>
*: "Aktivovať Časovač Spánku Po Zapnutí"
</voice>
</phrase>

View file

@ -182,7 +182,7 @@ static const char* info_getname(int selected_item, void *data,
case INFO_BUFFER: /* buffer */
{
long kib = audio_buffer_available() / 1024; /* to KiB */
long kib = audio_buffer_size() / 1024; /* to KiB */
output_dyn_value(s1, sizeof(s1), kib, kbyte_units, true);
snprintf(buffer, buffer_len, "%s %s", str(LANG_BUFFER_STAT), s1);
}
@ -272,7 +272,7 @@ static int info_speak_item(int selected_item, void * data)
case INFO_BUFFER: /* buffer */
{
talk_id(LANG_BUFFER_STAT, false);
long kib = audio_buffer_available() / 1024; /* to KiB */
long kib = audio_buffer_size() / 1024; /* to KiB */
output_dyn_value(NULL, 0, kib, kbyte_units, true);
break;
}

View file

@ -142,13 +142,14 @@ bool read_ape_tags(int fd, struct mp3entry* id3)
return false;
}
/* Gather the album art format from the pseudo file name. */
/* Gather the album art format from the pseudo file name's ending. */
strcpy(name, name + strlen(name) - 4);
id3->albumart.type = AA_TYPE_UNKNOWN;
if (strcasecmp(name, "cover art (front).jpg") == 0)
if (strcasecmp(name, ".jpg") == 0)
{
id3->albumart.type = AA_TYPE_JPG;
}
else if (strcasecmp(name, "cover art (front).png") == 0)
else if (strcasecmp(name, ".png") == 0)
{
id3->albumart.type = AA_TYPE_PNG;
}

View file

@ -382,8 +382,8 @@ static int mem_maxlen;
static int mem_getbyte(int dummy, unsigned char *c)
{
dummy = dummy;
(void)dummy;
*c = mem_buf[mem_pos++];
if(mem_pos >= mem_buflen)
mem_pos = 0;

View file

@ -151,7 +151,7 @@ static bool paused; /* playback is paused */
static int audiobuf_handle; /* handle to the audio buffer */
static char* mpeg_audiobuf; /* poiunter to the audio buffer */
static long audiobuflen; /* length of the audio buffer */
#define AUDIO_BUFFER_RESERVE (256*1024)
#ifdef SIMULATOR
static char mpeg_stack[DEFAULT_STACK_SIZE];
static struct mp3entry taginfo;
@ -515,9 +515,16 @@ static void audio_reset_buffer_noalloc(void* buf, size_t bufsize);
/* Buffer must not move. */
static int shrink_callback(int handle, unsigned hints, void* start, size_t old_size)
{
long offset = audio_current_track()->offset;
bool playing = (audio_status() & AUDIO_STATUS_PLAY) == AUDIO_STATUS_PLAY;
ssize_t extradata_size = old_size - audiobuflen;
/* check what buflib requests */
size_t wanted_size = (hints & BUFLIB_SHRINK_SIZE_MASK);
ssize_t size = (ssize_t)old_size - wanted_size;
/* keep at least 256K for the buffering */
if ((size - extradata_size) < AUDIO_BUFFER_RESERVE)
return BUFLIB_CB_CANNOT_SHRINK;
/* TODO: Do it without stopping playback, if possible */
bool playing = (audio_status() & AUDIO_STATUS_PLAY) == AUDIO_STATUS_PLAY;
long offset = audio_current_track()->offset;
/* don't call audio_hard_stop() as it frees this handle */
if (thread_self() == audio_thread_id)
{ /* inline case MPEG_STOP (audio_stop()) response
@ -528,9 +535,6 @@ static int shrink_callback(int handle, unsigned hints, void* start, size_t old_s
audio_stop();
talk_buffer_steal(); /* we obtain control over the buffer */
/* we should be free to change the buffer now */
size_t wanted_size = (hints & BUFLIB_SHRINK_SIZE_MASK);
ssize_t size = (ssize_t)old_size - wanted_size;
switch (hints & BUFLIB_SHRINK_POS_MASK)
{
case BUFLIB_SHRINK_POS_BACK:
@ -2742,11 +2746,20 @@ void audio_set_recording_options(struct audio_recording_options *options)
#endif /* SIMULATOR */
#endif /* CONFIG_CODEC == MAS3587F */
size_t audio_buffer_available(void)
size_t audio_buffer_size(void)
{
if (audiobuf_handle > 0)
return audiobuflen;
return core_available();
return 0;
}
size_t audio_buffer_available(void)
{
size_t size = 0;
size_t core_size = core_available();
if (audiobuf_handle > 0)
return audiobuflen - AUDIO_BUFFER_RESERVE - 128;
return MAX(core_size, size);
}
static void audio_reset_buffer_noalloc(void* buf, size_t bufsize)

View file

@ -733,13 +733,24 @@ static void scratch_mem_init(void *mem)
}
static int audiobuf_handle;
#define AUDIO_BUFFER_RESERVE (256*1024)
static size_t filebuflen;
size_t audio_buffer_size(void)
{
if (audiobuf_handle > 0)
return filebuflen - AUDIO_BUFFER_RESERVE;
return 0;
}
size_t audio_buffer_available(void)
{
if (audiobuf_handle > 0) /* if allocated return what we got */
return filebuflen;
return core_available();
size_t size = 0;
size_t core_size = core_available();
if (audiobuf_handle > 0) /* if allocated return what we can give */
size = filebuflen - AUDIO_BUFFER_RESERVE - 128;
return MAX(core_size, size);
}
/* Set up the audio buffer for playback
@ -840,7 +851,7 @@ static int shrink_callback(int handle, unsigned hints, void* start, size_t old_s
size_t wanted_size = (hints & BUFLIB_SHRINK_SIZE_MASK);
ssize_t size = (ssize_t)old_size - wanted_size;
/* keep at least 256K for the buffering */
if ((size - extradata_size) < 256*1024)
if ((size - extradata_size) < AUDIO_BUFFER_RESERVE)
return BUFLIB_CB_CANNOT_SHRINK;

View file

@ -760,7 +760,7 @@ static void led_resistance_calc(void)
rb->lcd_update();
button_press = rb->button_get(true);
while ((button_press = rb->button_get(true)) & BUTTON_REL);
switch(button_press) {
case PLA_SELECT:
break;

View file

@ -277,12 +277,12 @@ void tv_set_layout(bool show_scrollbar)
vertical_scrollbar.w = scrollbar_width;
vertical_scrollbar.h = footer.y - vertical_scrollbar.y - scrollbar_height;
vp_info.font = preferences->font_id;
vp_text = vp_info;
vp_text.x += horizontal_scrollbar.x;
vp_text.y += vertical_scrollbar.y;
vp_text.width = horizontal_scrollbar.w;
vp_text.height = vertical_scrollbar.h;
vp_text.font = preferences->font_id;
#else
(void) show_scrollbar;

View file

@ -761,6 +761,8 @@ void radio_screen(void)
#endif
FOR_NB_SCREENS(i)
skin_update(FM_SCREEN, i, update_type);
if (update_type == (int)SKIN_REFRESH_ALL)
skin_request_full_update(CUSTOM_STATUSBAR);
}
}
update_type = 0;

View file

@ -775,7 +775,7 @@ const struct settings_list settings[] = {
NULL, NULL, NULL),
#ifdef HAVE_TOUCHSCREEN
TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, list_line_padding, LANG_LIST_LINE_PADDING,
-1, "list padding", "off,auto", UNIT_PIXEL, list_pad_formatter,
-1, "list padding", "auto,off", UNIT_PIXEL, list_pad_formatter,
list_pad_getlang, NULL, 16,
-1,0,2,4,6,8,10,12,16,20,24,28,32,38,44,50),
#endif

View file

@ -605,6 +605,9 @@ Michael Goerner
Richard Brittain
Andrew Ryabinin
Maksim Postolati
Desu Rozen
Olivier Kaloudoff
Kessia Pinheiro
The libmad team
The wavpack team

View file

@ -89,6 +89,7 @@
#define BDEBUGF(...) do { } while(0)
#endif
#define IS_MOVABLE(a) (!a[2].ops || a[2].ops->move_callback)
static union buflib_data* find_first_free(struct buflib_context *ctx);
static union buflib_data* find_block_before(struct buflib_context *ctx,
union buflib_data* block,
@ -198,7 +199,7 @@ move_block(struct buflib_context* ctx, union buflib_data* block, int shift)
char* new_start;
union buflib_data *new_block, *tmp = block[1].handle;
struct buflib_callbacks *ops = block[2].ops;
if (ops && !ops->move_callback)
if (!IS_MOVABLE(block))
return false;
int handle = ctx->handle_table - tmp;
@ -312,8 +313,10 @@ buflib_compact_and_shrink(struct buflib_context *ctx, unsigned shrink_hints)
result = buflib_compact(ctx);
if (!result)
{
union buflib_data* this;
for(this = ctx->buf_start; this < ctx->alloc_end; this += abs(this->val))
union buflib_data *this, *before;
for(this = ctx->buf_start, before = this;
this < ctx->alloc_end;
before = this, this += abs(this->val))
{
if (this->val > 0 && this[2].ops
&& this[2].ops->shrink_callback)
@ -322,6 +325,20 @@ buflib_compact_and_shrink(struct buflib_context *ctx, unsigned shrink_hints)
int handle = ctx->handle_table - this[1].handle;
char* data = this[1].handle->alloc;
bool last = (this+this->val) == ctx->alloc_end;
unsigned pos_hints = shrink_hints & BUFLIB_SHRINK_POS_MASK;
/* adjust what we ask for if there's free space in the front
* this isn't too unlikely assuming this block is
* shrinkable but not movable */
if (pos_hints == BUFLIB_SHRINK_POS_FRONT
&& before != this && before->val < 0)
{
size_t free_space = (-before->val) * sizeof(union buflib_data);
size_t wanted = shrink_hints & BUFLIB_SHRINK_SIZE_MASK;
if (wanted < free_space) /* no shrink needed? */
continue;
wanted -= free_space;
shrink_hints = pos_hints | wanted;
}
ret = this[2].ops->shrink_callback(handle, shrink_hints,
data, (char*)(this+this->val)-data);
result |= (ret == BUFLIB_CB_OK);
@ -598,9 +615,8 @@ buflib_free(struct buflib_context *ctx, int handle_num)
return 0; /* unconditionally */
}
/* Return the maximum allocatable memory in bytes */
size_t
buflib_available(struct buflib_context* ctx)
static size_t
free_space_at_end(struct buflib_context* ctx)
{
/* subtract 5 elements for
* val, handle, name_len, ops and the handle table entry*/
@ -615,6 +631,46 @@ buflib_available(struct buflib_context* ctx)
return 0;
}
/* Return the maximum allocatable memory in bytes */
size_t
buflib_available(struct buflib_context* ctx)
{
union buflib_data *this;
size_t free_space = 0, max_free_space = 0;
/* make sure buffer is as contiguous as possible */
if (!ctx->compact)
buflib_compact(ctx);
/* now look if there's free in holes */
for(this = find_first_free(ctx); this < ctx->alloc_end; this += abs(this->val))
{
if (this->val < 0)
{
free_space += -this->val;
continue;
}
/* an unmovable section resets the count as free space
* can't be contigous */
if (!IS_MOVABLE(this))
{
if (max_free_space < free_space)
max_free_space = free_space;
free_space = 0;
}
}
/* select the best */
max_free_space = MAX(max_free_space, free_space);
max_free_space *= sizeof(union buflib_data);
max_free_space = MAX(max_free_space, free_space_at_end(ctx));
if (max_free_space > 0)
return max_free_space;
else
return 0;
}
/*
* Allocate all available (as returned by buflib_available()) memory and return
* a handle to it

View file

@ -150,26 +150,28 @@ static int move_callback(int handle, void* current, void* new)
if (dont_move)
return BUFLIB_CB_CANNOT_MOVE;
#define UPDATE(x) if (x) { x = PTR_ADD(x, diff); }
/* relocate the cache */
ptrdiff_t diff = new - current;
for(unsigned i = 0; i < entry_count; i++)
{
if (dircache_root[i].d_name)
dircache_root[i].d_name += diff;
if (dircache_root[i].next_char)
dircache_root[i].next_char += diff;
if (dircache_root[i].up_char)
dircache_root[i].up_char += diff;
if (dircache_root[i].down_char)
dircache_root[i].down_char += diff;
UPDATE(dircache_root[i].d_name);
UPDATE(dircache_root[i].next_char);
UPDATE(dircache_root[i].up_char);
UPDATE(dircache_root[i].down_char);
}
dircache_root = new;
UPDATE(d_names_start);
UPDATE(d_names_end);
UPDATE(dot);
UPDATE(dotdot);
d_names_start += diff;
d_names_end += diff;
dot += diff;
dotdot += diff;
for(unsigned i = 0; i < MAX_OPEN_FILES; i++)
UPDATE(fd_bindings[i]);
#ifdef HAVE_MULTIVOLUME
UPDATE(append_position);
#endif
return BUFLIB_CB_OK;
}

View file

@ -58,6 +58,10 @@ void audio_resume(void);
void audio_next(void);
void audio_prev(void);
int audio_status(void);
/* size of the audio buffer */
size_t audio_buffer_size(void);
/* size of the buffer available for allocating memory from the audio buffer using core_*()
* returns core_available() if audio buffer is not allocated yet */
size_t audio_buffer_available(void);
void audio_ff_rewind(long newpos);
void audio_flush_and_reload_tracks(void);

View file

@ -127,7 +127,7 @@ static void lock_font_handle(int handle, bool lock)
void font_lock(int font_id, bool lock)
{
if( font_id == FONT_SYSFIXED )
if( font_id < 0 || font_id >= MAXFONTS )
return;
if( buflib_allocations[font_id] >= 0 )
lock_font_handle(buflib_allocations[font_id], lock);
@ -484,6 +484,8 @@ static int alloc_and_init(int font_idx, const char* name, size_t size)
const char* font_filename(int font_id)
{
if ( font_id < 0 || font_id >= MAXFONTS )
return NULL;
int handle = buflib_allocations[font_id];
if (handle > 0)
return core_get_name(handle);
@ -578,7 +580,7 @@ int font_load(const char *path)
void font_unload(int font_id)
{
if ( font_id == FONT_SYSFIXED )
if ( font_id < 0 || font_id >= MAXFONTS )
return;
int handle = buflib_allocations[font_id];
if ( handle < 0 )

View file

@ -78,13 +78,14 @@ void font_cache_create(
************************************************************************/
static int search(struct font_cache* fcache,
unsigned short char_code,
int size,
int *p_insertion_point )
{
struct font_cache_entry *p;
int left, right, mid=-1, c;
left = 0;
right = fcache->_size - 1;
right = size;
/* go for a lucky guess */
mid = char_code +
fcache->_prev_result - fcache->_prev_char_code;
@ -115,6 +116,7 @@ static int search(struct font_cache* fcache,
while (left <= right);
/* not found */
p = lru_data(&fcache->_lru, fcache->_index[mid]);
*p_insertion_point = mid;
return 0;
}
@ -131,29 +133,45 @@ struct font_cache_entry* font_cache_get(
int insertion_point;
int index_to_replace;
if( search(fcache, char_code, &insertion_point))
/* check bounds */
p = lru_data(&fcache->_lru, fcache->_index[0]);
if( char_code < p->_char_code )
insertion_point = -1;
else
{
short lru_handle = fcache->_index[insertion_point];
p = lru_data(&fcache->_lru, lru_handle);
if (p->_char_code == char_code)
p = lru_data(&fcache->_lru, fcache->_index[fcache->_capacity - 1]);
if( char_code > p->_char_code )
{
lru_touch(&fcache->_lru, lru_handle);
return lru_data(&fcache->_lru, lru_handle);
insertion_point = fcache->_capacity - 1;
}
else
{
if( search(fcache, char_code, fcache->_size - 1, &insertion_point))
{
short lru_handle = fcache->_index[insertion_point];
p = lru_data(&fcache->_lru, lru_handle);
if (p->_char_code == char_code)
{
lru_touch(&fcache->_lru, lru_handle);
return lru_data(&fcache->_lru, lru_handle);
}
}
else
{
p = lru_data(&fcache->_lru,
fcache->_index[insertion_point+1]);
if ( char_code > p->_char_code )
insertion_point++;
}
}
}
else /* not found */
{
p = lru_data(&fcache->_lru,
fcache->_index[insertion_point+1]);
if ( char_code > p->_char_code )
insertion_point++;
}
/* not found */
/* find index to replace */
short lru_handle_to_replace = fcache->_lru._head;
p = lru_data(&fcache->_lru, lru_handle_to_replace);
search(fcache, p->_char_code, &index_to_replace);
search(fcache, p->_char_code, fcache->_size - 1, &index_to_replace);
if (insertion_point < index_to_replace)
{
/* shift memory up */

View file

@ -283,7 +283,7 @@ static const unsigned char rbmpheader[] =
void remote_screen_dump(void)
{
int fd, y;
char filename[MAX_PATH];
char filename[32];
fb_remote_data *src;
#if LCD_REMOTE_DEPTH == 1

View file

@ -48,10 +48,18 @@ struct ep_type
} ;
static struct ep_type endpoints[USB_NUM_ENDPOINTS];
static union
/* USB control requests may be up to 64 bytes in size.
Even though we never use anything more than the 8 header bytes,
we are required to accept request packets of up to 64 bytes size.
Provide buffer space for these additional payload bytes so that
e.g. write descriptor requests (which are rejected by us, but the
payload is transferred anyway) do not cause memory corruption.
Fixes FS#12310. -- Michael Sparmann (theseven) */
static struct
{
unsigned char data[64];
struct usb_ctrlrequest req;
struct usb_ctrlrequest header; /* 8 bytes */
unsigned char payload[64 - sizeof(struct usb_ctrlrequest)];
} ctrlreq USB_DEVBSS_ATTR;
int usb_drv_port_speed(void)
@ -74,7 +82,7 @@ static void reset_endpoints(int reinit)
DOEPCTL0 = 0x8000; /* EP0 OUT ACTIVE */
DOEPTSIZ0 = 0x20080040; /* EP0 OUT Transfer Size:
64 Bytes, 1 Packet, 1 Setup Packet */
DOEPDMA0 = &ctrlreq.data;
DOEPDMA0 = &ctrlreq;
DOEPCTL0 |= 0x84000000; /* EP0 OUT ENABLE CLEARNAK */
if (reinit)
{
@ -136,8 +144,19 @@ void usb_drv_release_endpoint(int ep)
static void usb_reset(void)
{
#if CONFIG_CPU==S5L8701
volatile int i;
DCTL = 0x802; /* Soft Disconnect */
OPHYPWR = 0; /* PHY: Power up */
OPHYUNK1 = 1;
OPHYUNK2 = 0xE3F;
OPHYCLK = SYNOPSYSOTG_CLOCK;
ORSTCON = 1; /* PHY: Assert Software Reset */
for (i = 0; i < 50; i++);
ORSTCON = 0; /* PHY: Deassert Software Reset */
OPHYUNK3 = 0x600;
#else
DCTL = 0x802; /* Soft Disconnect */
OPHYPWR = 0; /* PHY: Power up */
udelay(10);
OPHYUNK1 = 1;
@ -148,6 +167,7 @@ static void usb_reset(void)
OPHYUNK3 = 0x600;
OPHYCLK = SYNOPSYSOTG_CLOCK;
udelay(400);
#endif
GRSTCTL = 1; /* OTG: Assert Software Reset */
while (GRSTCTL & 1); /* Wait for OTG to ack reset */
@ -247,14 +267,14 @@ void INT_USB_FUNC(void)
invalidate_dcache();
if (i == 0)
{
if (ctrlreq.req.bRequest == 5)
if (ctrlreq.header.bRequest == 5)
{
/* Already set the new address here,
before passing the packet to the core.
See below (usb_drv_set_address) for details. */
DCFG = (DCFG & ~0x7F0) | (ctrlreq.req.wValue << 4);
DCFG = (DCFG & ~0x7F0) | (ctrlreq.header.wValue << 4);
}
usb_core_control_request(&ctrlreq.req);
usb_core_control_request(&ctrlreq.header);
}
else panicf("USB: SETUP done on OUT EP%d!?", i);
}
@ -262,7 +282,7 @@ void INT_USB_FUNC(void)
if (!i)
{
DOEPTSIZ0 = 0x20080040;
DOEPDMA0 = &ctrlreq.data;
DOEPDMA0 = &ctrlreq;
DOEPCTL0 |= 0x84000000;
}
DOEPINT(i) = epints;
@ -399,11 +419,9 @@ void usb_drv_exit(void)
{
DCTL = 0x802; /* Soft Disconnect */
OPHYPWR = 0xF; /* PHY: Power down */
udelay(10);
ORSTCON = 7; /* Put the PHY into reset (needed to get current down) */
udelay(10);
ORSTCON = 1; /* Put the PHY into reset (needed to get current down) */
PCGCCTL = 1; /* Shut down PHY clock */
OPHYPWR = 0xF; /* PHY: Power down */
#if CONFIG_CPU==S5L8701
PWRCON |= 0x4000;

View file

@ -72,7 +72,7 @@ static int usb_mmc_countdown = 0;
/* Make sure there's enough stack space for screendump */
#ifdef USB_FULL_INIT
static long usb_stack[(DEFAULT_STACK_SIZE + DUMP_BMP_LINESIZE)/sizeof(long)];
static long usb_stack[(DEFAULT_STACK_SIZE + DUMP_BMP_LINESIZE + 0x400)/sizeof(long)];
static const char usb_thread_name[] = "usb";
static unsigned int usb_thread_entry = 0;
static bool usb_monitor_enabled = false;

View file

@ -109,7 +109,7 @@ int main(int argc, char* argv[])
// sanity check
if (uiSize > sizeof(aImage) - uiStart || uiSize < 40000)
{
printf("Error: Impossible image size &d bytes.\n", uiSize);
printf("Error: Impossible image size %d bytes.\n", uiSize);
exit(3);
}

View file

@ -38,26 +38,27 @@ manual-prep: objdir-check rockbox.tex $(OBJDIR)/CREDITS.tex $(OBJDIR)/version.te
$(OBJDIR)/$(MANFILE).tex:
@echo "creating $(notdir $@)"
$(SILENT)printf "\\\\newcommand{\\\\platform}{${MANUALDEV}}\n" > $(OBJDIR)/$(MANFILE).tex
$(SILENT)printf "\\\\newcommand{\\\\buildversion}{$(VERSION)}\n" >> $(OBJDIR)/$(MANFILE).tex
$(SILENT)printf "\\\\input{rockbox.tex}\n" >> $(OBJDIR)/$(MANFILE).tex
$(SILENT)printf "\\\\newcommand{\\\\platform}{${MANUALDEV}}\n" > $@
$(SILENT)printf "\\\\newcommand{\\\\buildversion}{$(VERSION)}\n" >> $@
$(SILENT)printf "\\\\input{rockbox.tex}\n" >> $@
$(OBJDIR)/CREDITS.tex: $(DOCSDIR)/CREDITS
@echo "processing $(notdir $^)"
$(SILENT)perl credits.pl < $(DOCSDIR)/CREDITS > $(OBJDIR)/CREDITS.tex
$(SILENT)perl credits.pl < $(DOCSDIR)/CREDITS > $@
$(OBJDIR)/version.tex:
@echo "creating $(notdir $@)"
$(SILENT)printf "%s%%" $(VERSION) > $(OBJDIR)/version.tex
$(SILENT)printf "%s%%" $(VERSION) > $@
$(OBJDIR)/features.tex: $(ROOTDIR)/apps/features.txt
@echo "processing $(notdir $^)"
$(SILENT)mkdir -p `dirname $@`
$(SILENT)cat $< | $(HOSTCC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) \
$(TARGET) $(DEFINES) $(EXTRA_DEFINES) -E -P -imacros "config.h" -imacros "button.h" - | \
grep -v "^\#" | grep -v "^$$" > $@; \
for f in `cat $(OBJDIR)/features`; do feat="$$feat\\n\\\\edef\\\\UseOption{\\\\UseOption,$$f}" ; done ; \
printf "$$feat" >$(OBJDIR)/features.tex
$(SILENT) for f in \
$$(cat $< | $(HOSTCC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) \
$(TARGET) $(DEFINES) $(EXTRA_DEFINES) -E -P -imacros "config.h" \
-imacros "button.h" - | grep -v "^\#" | grep -v "^$$"); \
do feat="$$feat\\n\\\\edef\\\\UseOption{\\\\UseOption,$$f}"; done ; \
printf "$$feat" > $@
manual-pdf: objdir-check features manual-prep rockbox.tex
$(SILENT)$(MAKE) -C $(OBJDIR) buildmanual

View file

@ -114,7 +114,7 @@
& Supports downmixing for playback of 5.1 streams in stereo\\
ADX
& \fname{.adx}
& \\
& Encrypted ADX is not supported.\\
Advanced Audio Coding
& \fname{.m4a}, \fname{.m4b}, \fname{.mp4}, \fname{.rm}, \fname{.ra}, \fname{.rmvb}
\nopt{clipv1,c200v2}{
@ -328,6 +328,7 @@
\end{rbtabular}
\subsection{Featureset for generic metadata tags}
\label{ref:featureset_for_generic_metadata_tags}
\begin{rbtabular}{0.80\textwidth}{lXXXXX}%
{\textbf{Feature} & \textbf{ID3} & \textbf{APE} & \textbf{Vorbis} &
\textbf{MP4} & \textbf{ASF}}{}{}

View file

@ -126,11 +126,13 @@ show the information for the next song to be played.
\config{\%fc} & File Codec (e.g. ``MP3'' or ``FLAC'').
This tag can also be used in a conditional tag:
\config{\%?fc<mp1|mp2|mp3|aiff|wav|ogg|\newline
flac|mpc|a52|wavpack|alac|aac|shn|sid|adx|nsf|\newline
speex|spc|ape|wma|mod|sap|unknown>}.
The codec order is as follows: MP1, MP2, MP3, AIFF, WAV,
Ogg Vorbis (OGG), FLAC, MPC, AC3, WavPack (WV), ALAC, AAC,
Shorten (SHN), SID, ADX, NSF, Speex, SPC, APE, WMA, MOD, SAP.\\
flac|mpcsv7|a52|wavpack|alac|aac|shn|sid|adx|nsf|\newline
speex|spc|ape|wma|wmpapro|mod|sap|realaudiocook|\newline
realaudioaac|realaudioac3|realaudioatrac3|cmc|\newline
cm3|cmr|cms|dmc|dlt|mpt|mpd|rmt|tmc|tm8|tm2|\newline
omaatrac3|smaf|au|vox|wave64|tta|wmavoice|mpcsv8|\newline
aache|ay|gbs|hes|sgc|vgm|kss|unknown>}.
The codec order is as shown above.\\
\config{\%ff} & File Frequency (in Hz)\\
\config{\%fk} & File Frequency (in kHz)\\
\config{\%fm} & File Name\\
@ -422,8 +424,9 @@ theme}. For this feature to work, there are a few requirements.
\subsection{Limitations}
Rockbox supports embedded album art only for formats that use ID3v2 tags, such
as MP3. It additionally supports loading images located on the \disk{}.
Rockbox supports embedded album art only for some specific formats, see
\reference{ref:featureset_for_generic_metadata_tags} for full details. It additionally supports
loading images located on the \disk{}.
The image files must be in either BMP or JPEG format, while embedded album art
is currently limited to JPEG. Rockbox does not support
RLE-compressed BMP files, nor does it support progressive and multi-scan

View file

@ -1,8 +1,8 @@
$publicrelease="3.9.1";
$manualrelease="3.9.1";
$voicerelease="3.9.1";
$releasedate="September 3, 2011";
$releasenotes="/wiki/ReleaseNotes391";
$publicrelease="3.10";
$manualrelease="3.10";
$voicerelease="3.10";
$releasedate="December 4, 2011";
$releasenotes="/wiki/ReleaseNotes310";
%builds = (
'archosav300' => {

View file

@ -1,5 +1,5 @@
#!/usr/bin/perl
$version="3.5RC";
$version="3.10";
require "tools/builds.pm";
@ -117,13 +117,13 @@ sub buildit {
`make VERSION=$version`;
print "Run 'make zip'\n" if($verbose);
`make zip`;
`make zip VERSION=$version`;
print "Run 'make mapzip'\n" if($verbose);
`make mapzip`;
`make mapzip VERSION=$version`;
print "Run 'make elfzip'\n" if($verbose);
`make elfzip`;
`make elfzip VERSION=$version`;
}
sub buildfonts {

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl
$version="3.0";
$version="3.10";
require "tools/builds.pm";
@ -65,10 +65,10 @@ sub buildit {
`$c`;
print "Run 'make'\n" if($verbose);
`make manual 2>/dev/null`;
`make manual VERSION=$version 2>/dev/null`;
print "Run 'make manual-zip'\n" if($verbose);
`make manual-zip 2>/dev/null`;
`make manual-zip VERSION=$version 2>/dev/null`;
}
# run make in tools first to make sure they're up-to-date

View file

@ -1,6 +1,6 @@
#!/bin/sh
version="3.0"
version="3.10"
srcdir=.
tempdir=rockbox-temp

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl
$version="3.0";
$version="3.10";
require "tools/builds.pm";
@ -62,7 +62,7 @@ sub buildit {
`$c`;
print "Run 'make voice'\n" if($verbose);
print `make voice 2>/dev/null`;
print `make voice VERSION=$version 2>/dev/null`;
}
# run make in tools first to make sure they're up-to-date