Commit graph

1155 commits

Author SHA1 Message Date
Solomon Peachy
5d1185774c plugins: Remove audio_master_sampr_list from the plugin API
From what I can tell it has _never_ been used.

Change-Id: I08f3860f04add35859e82b8e94abfa9789a45026
2026-03-03 21:31:58 -05:00
Solomon Peachy
ea570c5728 pcm: Make more of the low-level PCM API private
* pcm_play_data
 * pcm_play_stop
 * pcm_play_stop_int
 * pcm_is_playing
 * pcm_set_frequency
 * pcm_get_frequency
 * pcm_apply_settings

Now, the only user of these functions are the mixer and recording layers
that provide a higher-level API to plugins and the main [playback]
application.

Outside of the PCM core, pcm_apply_settings() was only used immediately
following a call to mixer_set_frequency(), so the latter function
now always calls the former.

Change-Id: I61c3144dc156b9de9b7963160b525c6d10c6ad4b
2026-03-03 13:09:21 -05:00
mojyack
dfa33c246b pcm: introduce pcm_sink
move target-specific pcm operations into builtin_pcm_sink.
in subsequent commits, another pcm_sink is added, and it becomes
possible to switch between them.

Change-Id: I8f8b9661e01d6e6472f34224ddc3760856778457
2026-03-02 10:09:11 +09:00
yegor chernyshov
c86fd2318d added setting to retain file browser directory on reboots WIP
I added the setting keep_directory which automatically updates
the last directory visited and restores it on next boot

--added manual entry

Change-Id: I0ffe6531d591d693806ce0bf56fe22b99e3315e9
2026-03-01 15:05:09 -05:00
Solomon Peachy
4209170cb7 utf8proc: Add utf8proc for normalizing UTF-8 strings
Due to the unicode data tables, this is a pretty large library,
adding ~340K to the binary size (ie a 50% increase on some targets)

Note that nothing in-tree actually _uses_ utf8proc yet.  The plan:

 1) In the metadata parser, fully normalize+compose all strings.
 2) When looking up font glyphs, if we do not find an exact
    match for the codepoint, try to decompose and render the result.
 3) Normalize all filenames as we read them, ie before we store them
    in lists or compare filenames/pathnames.
 4) Use utf8proc for casefolding-aware sorting (on native devices)

Change-Id: I2252cee3e7891d12ff37867231aa2c20353f857b
2026-03-01 08:26:00 -05:00
Solomon Peachy
017dd72ff3 plugins: Convert all plugins to using mixer API for playback
pcm_play_data -> mixer_channel_play_data
pcm_set_frequeny -> mixer_set_frequency
pcm_play_stop -> audio_stop at startup / mixer_channel_stop at shutdown
pcm_is_playing -> mixer_channel_status

All of these have been removed from the plugin API.  Updated API docs to
clarify role of audio_stop() vs mixer_channel_stop()

Todo:  get rid of pcm_play_[un]lock().

Change-Id: I8800c131b51f064ee923a4c6e42aa405d33851fc
2026-02-22 08:15:14 -05:00
Lourenço Soares
0b3a5ab1e6 plugin lrcplayer: Added manual scrolling feature
lrcplayer currently automatically scrolls the lyrics for you, as it assumes that there is sync information in the lyrics. In the case where there aren't (like for ID3V2 USLT tags), the plugin will automatically assume timestamps and will scroll automatically.
This commit adds an option in the Display Menu to allow automatic scrolling to be disabled. When disabled, you can scroll the lyrics using the volume keys (like you would on the iPod's OS).

Change-Id: I87ef27fd2b84c97374bdfd0e47f4c00ddb4bc85e
2026-02-19 16:10:14 -05:00
Ingmar Steen
7327d9fb6c Implement set block count (CMD23) for x1000 target.
I have a 1TB SD card that gets filesystem corruption when writing large
amounts of data when using Rockbox in USB storage mode. The card doesn't show
this behaviour when using the original firmware or when using an external SD
card writer.

This is on an Aigo Eros Q device. Same brand 512GB card does not exhibit this
behaviour.

Whether this specific SD card explicitly requires CMD23 or if there's a
problem with the controller's timing of auto-CMD12 in combination with this
card is currently unknown, but implementing it does solve the problem.

This change request implements CMD23 by first probing if SBC is supported by
the SD card and then using it instead of AUTO_CMD12.

Change-Id: Ib2dc8e179b0fab98ca59c348061cb7d5850884dd
2026-02-10 07:43:47 -05:00
Aidan MacDonald
34525a18dc plugins: drop audio_hard_stop() from plugin API
Commit 01f96e40a7 ("mpegplayer: remove IRAM save/restore hack")
removed the only user.

Change-Id: Ia6281159387ab984906443f047b849614d92ef9e
2026-02-02 16:27:25 -05:00
mojyack
1951c17e0b pass event data to usb_acknowledge
add second argument to usb_acknowledge.
it can be used for more appropriate connection tracking that does not
rely on timeout in the future.

Change-Id: I8a44366b7c7a1f944524c4ba8ecd6d9673746a65
2026-01-26 19:47:09 -05:00
Christian Soffke
f0d99391de plugins: random folder advance: misc improvements
fixes:
- traverse_dir was called recursively using two
  MAX_PATH local buffers => possible stack overflow
- The import function inserted additional, incorrect,
  entries when the whole line buffer was filled
- "Dirs not found" message overlapped number
  of folders when generating folder list
- Final number of scanned folders wasn't displayed
- Wouldn't stop inserting when maximum number
  of files in playlist was already reached
- Prevent buffer overflow when importing
- Don't write to fd after opening failed
- Use whole buffer with read_line, instead
  of subtracting 1. Remove hard coded sizes
- CRs don't need to be removed in import function
  (already handled by read_line)

features:
- Use insert context for *much* faster insertion
  of large # of folders, and nicer progress display
- Use UI viewport
- Add progress indicator when saving or loading
- Display number of folders in edit list title
- Go back to plugin's main menu from edit list
- Only ask to save changes if list is dirty
- Warn before erasing modified playlist
- Flag successfully created playlist as modified
- Make folder scan wait for dircache
- Shorten menu item names
- Put "Play Shuffled" menu item first
- Remember selection when returning from submenus
- Go to WPS after ACTION_TREE_WPS
- Exit menu when pressing Back
- Perform an initial scan, if no data file exists
  yet, when "Play Shuffled" or "Edit" is selected

Change-Id: I7df76f8fb8387888ce491d8b74b01b481e9997d3
2026-01-16 16:49:38 +01:00
Arin Kim
41d5ca3c48 skin: add new %pP tag (playlist progress as percentage)
This new tag returns the position in the playlist as a percent. The main usecase for this is to use it as a bar tag, allowing themes to visually present playlist progress.

Change-Id: I0eb001e7458d97b8a0db39f3980d9c283bc8806b
2026-01-13 16:59:00 -05:00
Nyx Guan
b9089640a3 Add Nyx Guan to CREDITS
Change-Id: I23245e46c3ab0173da513a483724ce51819fdaca
2026-01-10 21:31:49 -05:00
Aidan MacDonald
d791d26b6b apps: remove lc_open_from_mem() from plugin API
No plugin uses it and it doesn't work on hosted targets,
which limits its utility.

Change-Id: I5f29eec4dd11ffceb7be3e4d26e536483058055f
2026-01-05 13:42:23 -05:00
mojyack
eccce5b267 docs: add myself to CREDITS and COMMITTERS
Change-Id: I8d4d29a9bdd7d6eb75d4240e6aebc026aa959e2b
2026-01-03 13:30:08 -05:00
Petr Mikhalicin
6f7d70797e plugin api: Add audio_pre_ff_rewind to plugin's API
According to wps code audio_pre_ff_rewind function should be called
before any rewinding. It stops playback and automatically resumes it
after audio_ff_rewind call

So, let's add audio_pre_ff_rewind to plugin's API

Lua scipts were tested:
```lua
-- has issue with rewinding
rb.audio("ff_rewind", 0)
```

```lua
-- no issue with rewinding
rb.audio("pre_ff_rewind")
rb.audio("ff_rewind", 0)
```

Change-Id: I2ad6b9c396760b2086bc0a28633a1c80c3512739
2025-12-29 19:58:26 +05:00
Marc Aarts
1183b1ab1b Rockbox for the HiBy R3 Pro II/R1
Original author Melissa Autumn (https://codeberg.org/oopsallnaps/rockbox-hibyos) with contributions from Marc Aarts.

Adaptation to Rockbox standards by Marc Aarts

Change-Id: I09e5af7ba0a75c648e4b9fd424badc2d3665c943
2025-12-27 15:44:54 -05:00
Petr Mikhalicin
eee6c31b4a plugin otp: Stop freezing display when generate OTP
Sometimes OTP code expires soon and we can't use it. So, We have to
wait for new one. And it's really anoying, when devide stucking at this
time

Change-Id: Ic5e0105b6c051ad2ec2a2421068867be2e497683
2025-12-27 12:08:16 -05:00
Solomon Peachy
a2e63fca59 FS#13721: Updated French Translation (Matthieu BACHELIER)
Change-Id: Id49928589f68ff5d77a830c76823a4e21d952360
2025-12-21 17:54:55 -05:00
Solomon Peachy
e3dc4bf2d3 FS#13701: Updated Russian translation (Ivan Romaniuk-Mikhailovsky)
Most changes are for consistent capitalization

Change-Id: I5ebc3656450ee8ddf07c5a7fed0c1463b9825b9b
2025-11-23 20:21:06 -05:00
Dana Conrad
c533222851 usbaudio: send through dsp (new)
Does not seem to affect UI usability, but allowable DSP loads will vary
based on device and playback sample rate.

To-Do (someday):
- Add dedicated DSP channel
- How to apply DSP settings to above new channel? (UI)
- How to lock out timestretch from being enabled?

Change-Id: Ia24d1055340354e2c32e6008e7e2b03a8e88867d
2025-11-15 07:38:19 -05:00
Solomon Peachy
619ed7eef0 docs: update MAINTAINERS
Mostly adding myself in several new places where I've done meaningful
recent work.

Change-Id: I86b071b0fafef163ba4c45bbee032d8ead0dccfc
2025-11-08 08:28:45 -05:00
Solomon Peachy
fdf5065d2f FS#13679: Updates for Hungarian Translation (Gyúróczki Norbert)
Change-Id: I5c14fd72651a98665ceddbcba74bfc82278187d5
2025-11-04 16:57:09 -05:00
Solomon Peachy
ebe611ddd4 credits: Work around the failures when building the manual.
U+1EA1 (ạ) in Vietnamese text

Change-Id: Ibefa4e93d33778f70e8ccc273af0a07e6cef6059
2025-10-20 16:40:46 -04:00
Solomon Peachy
900b362f4c Minor mechanical corrections to Vietnamese translation
Change-Id: Id60524eef3f3bb89ca1bee4df76aa260987d513a
2025-10-20 09:13:35 -04:00
Cameron Peck
bfcd8270c9 Add arcsin, arccos and arctan to calculator
Change-Id: I9aaded58718ae410239678abe6cf6196286bc7f8
2025-10-14 17:05:14 +01:00
Solomon Peachy
a2c10f6189 unicode: Support characters beyond the first unicode plane
We used 16-bit variables to store the 'character code' everywhere but
this won't let us represent anything beyond U+FFFF.

This patch changes those variables to a custom type that can be 32 or 16
bits depending on the build, and adjusts numerous internal APIs and
datastructures to match.  This includes:

 * utf8decode() and friends
 * font manipulation, caching, rendering, and generation
 * on-screen keyboard
 * FAT filesystem (parsing and generating utf16 LFNs)
 * WIN32 simulator platform code

Note that this patch doesn't _enable_ >16bit unicode support; a followup
patch will turn that on for appropriate targets.

Appears to work on:

  * hosted linux, native, linux simulator in both 16/32-bit modes.

Needs testing on:

  * windows and macos simulator (16bit+32bit)

Change-Id: Iba111b27d2433019b6bff937cf1ebd2c4353a0e8
2025-09-12 09:24:30 -04:00
Solomon Peachy
6f7dbc2153 FS#13661: Major Spanish translation update (Sergio Delgado)
* Added some missing strings and updated some others that made no sense
   (were literal/poor translations).
 * More usage of music-relevant terms.
 * This translation fits a standard-internationally spoken Spanish,
   supported with the use of DLE (Spanish language dictionary) of RAE
   (Real Spanish Academmy)

Change-Id: Ie891520bcafe1e880e25dd42ce81393b1f10840d
2025-08-31 21:31:04 -04:00
Solomon Peachy
84504c7471 Revert "internals: Support characters beyond the first unicode plane (WIP)"
This reverts commit d05c59f35b.
2025-08-20 16:09:49 -04:00
Solomon Peachy
d05c59f35b internals: Support characters beyond the first unicode plane (WIP)
We used 16-bit variables to store the 'character code' everywhere but
this won't let us represent anything beyond U+FFFF.

This patch changes those variables to a custom type that can be 32 or 16
bits depending on the build, and adjusts numerous internal APIs and
datastructures to match.  This includes:

 * utf8decode() and friends
 * on-screen keyboard
 * font manipulation, caching, rendering, and generation
 * VFAT code parses and generates utf16 dirents
 * WIN32 simulator reads and writes utf16 filenames

Note that this patch doesn't _enable_ >16bit unicode support; a followup
patch will turn that on for appropriate targets.

Known bugs:

  * Native players in 32-bit unicode mode generate mangled filename
    entries if they include UTF16 surrogate codepoints.  Root cause
    is unclear, and may reside in core dircache code.

Needs testing on:

 * windows simulator (16bit+32bit)

Change-Id: I193a00fe2a11a4181ddc82df2d71be52bf00b6e6
2025-08-20 16:08:43 -04:00
Hairo R. Carela
48392bab94 New port: Anbernic RG Nano
A bit of context, this device is a clone of the FunKey-S with a different form factor, hardware is mostly identical, the relevant difference is it has audio out (via usb-c, adapter to 3.5mm is included), this is the reason why the FunKey-SDK is needed for bulding.

This port is based on the old SDL 1.2 code because the device doesn't have SDL2 support. Alongside what was supported in the SDL 1.2 builds this port supports battery level, charging status and backlight control.

Change-Id: I7fcb85be62748644b667c0efebabf59d6e9c5ade
2025-07-29 21:01:53 -04:00
Solomon Peachy
336d42c72b FS#13618: Updated German translation (Yannic Schmidt)
Change-Id: Ic3585574ebfd4a5757c326da174ca6376d8b0e30
2025-05-04 07:14:05 -04:00
Solomon Peachy
232e5b4daf FS#13611: Major update to Ukranian translation (Pavlo Rudy)
Change-Id: I8aca68a151451f710a0069d8a5e1325a21ce901d
2025-04-29 14:26:34 -04:00
Solomon Peachy
27ad208024 FS#13604: Updated Swedish Translation (wilton millfjord)
Change-Id: I9a5e5b83501b25488033b6edaf31e7c4254e4692
2025-04-23 15:02:31 -04:00
Solomon Peachy
c65050571e docs: Do a proper "merge" with the API docs
This keeps all the old descriptions etc that were there before.

Had to fix up the tools some more, honestly feels better to just
rewrite this crap in perl.

Change-Id: Ic15deae200c143ba5457423e12c81f871c0fef09
2025-04-21 15:59:00 -04:00
Solomon Peachy
96f5cb728c docs: Update the Plugin API document, which was _very_ out of date
Change-Id: I2490e86e6cc4d949eca0298498d384c3dba733f4
2025-04-20 17:07:40 -04:00
Solomon Peachy
3383060990 docs: Delete some _very_ obsolete documentation
Change-Id: I9c04c8eed8d7400d9d16f80c7dab1d6c8c42674f
2025-04-20 16:53:57 -04:00
Solomon Peachy
b7b20c4a77 FS#13599: Updated Romanian translation (Mihai Alexandru Vasiliu)
Change-Id: Ia87c6a34c6776059e51c06f96708040914d3a97b
2025-04-19 17:43:14 -04:00
Solomon Peachy
d307568410 FS#13598: Updated Spanish translation (Guillermo Garcia Rojas)
Change-Id: Ida5f5319c0b9f37b04ac2d7be35186f798e3480a
2025-04-18 17:30:41 -04:00
Solomon Peachy
d835a294ef Minor mechanical correction to the Russian translation
(Now at 100%)

Change-Id: I236dd37ab9d4b88f7a42314ae22b8540aaf56b1d
2025-04-03 11:03:26 -04:00
Solomon Peachy
4347d41076 CREDITS: legal name change
Change-Id: Iec092f3e8d7f8dba165ff0a99d996d7076f6baa2
2025-04-01 20:02:08 -04:00
Solomon Peachy
83edee4224 FS#13579: Brazilian Portuguese translation update (Luyara Muniz)
Change-Id: I03401efac719dbcef27abf32593bc30e1b2fe15f
2025-03-23 21:12:35 -04:00
Solomon Peachy
19bb4a06ee FS#13577: Latvian language fixes (Renalds Belaks)
Hopefully the first step in getting this translation current

Change-Id: I3c1f70fc6324bd47c179c742be42b73ccc658034
2025-03-22 22:12:02 -04:00
Solomon Peachy
ee4591d9e7 FS#13565: Updated Serbian translation (Ivan Pešić)
Change-Id: Iea26a845a1d1d1e5a354133f0a5a323a665f5498
2025-02-16 07:59:19 -05:00
Solomon Peachy
078699ef49 FS#13555: Updated French Translation (CHAPUIS Adhemar)
Change-Id: I6e9229710392cd85010230457c284f3ac3b21e81
2025-02-02 08:05:26 -05:00
Solomon Peachy
e4179e4ff9 FS#13554: Updated Japanese translation (Emi Foster)
Not quite 100%, but _very_ close!

Change-Id: I56848fbd5ae3791828aacdae833a8742aeaab4a3
2025-02-01 13:05:53 -05:00
Nick Feldmann
f1b53d129f android: make installToolchains.sh work again
Google changed their site and the layout of downloaded SDK zips.
Also add a warning to configure if a r2x series NDK version is used, because those aren't supported - they no longer contain GCC, only clang.

Change-Id: I48a42c38c9b657ac6662162a39763aac73ec502a
2025-01-01 09:59:34 -05:00
Solomon Peachy
9b725a9fad voice: Add Spanish (Mexican) to the nightly voice sets.
This uses the piper engine.

Peninsular Spanish sounds markedly different from Central/South American
Spanish, so it seems prudent to offer both.

...We'll see how the masses feel.

Change-Id: Idfd3edd92c2dde7f9288afd99f474e59984689c9
2024-11-20 20:46:09 -05:00
Solomon Peachy
85330eb5fe Update multiple translations:
- English-US (Solomon Peachy)
 - German (Wilfried Winkler)
 - Italian (Alessio Lenzi)
 - Korean (Hoseok Seo)
 - Polish (Adam Rak)
 - Turkish (Mustafa YILDIZ)

Change-Id: I8ca5d6acb46bb86004e2d393cfce058dc85dc426
2024-10-31 08:08:22 -04:00
Solomon Peachy
c1bcebd998 FS#9059: Add WenQangYi Unibt font (William Poetra Yoga Hadisoeseno)
Change-Id: I8411349fdfdddf67f0d4a692d35176925498a7f6
2024-10-27 22:04:54 -04:00