Commit graph

2379 commits

Author SHA1 Message Date
Marcin Bukat
a3227cadb5 skin_engine: more tags for the recording screen
What the built-in recording screen shows and the skin tags did not:

- %RS  size of the current recording, as "1.5MB"
- %RP  seconds in the pre-record buffer, empty unless pre-recording
- %Rc  clips counted by the peak meter
- %Rt  trigger state by name; as a conditional off, ready, steady, go,
       postrec, retrig, continue
- %Rw  recording warnings in hex, empty while there are none
- %Ri  recording source by name; as a conditional the same on every
       target: mic, line in, digital, FM radio
- %Rg  gain of the source in dB, the left channel's for line in and FM

The manual gets a Recording section covering these and the recording
tags that were there, none of which it described.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: I889f95fd472c472c2589393a6c77eff4a4fd5c8f
2026-10-07 20:12:49 -04:00
Vencislav Atanasov
88f3d21890 manual: Fix case of "iPod"
The special iPod_Control folder's case is also fixed.

Change-Id: I9a65cf9034774ddb8c3b2de00ff1c27e35710d20
2026-09-30 07:58:19 -04:00
Solomon Peachy
e2efcb906a manual: Correct download links for daily/dev builds.
Change-Id: Iba3822386d2ed7c2f91d635f63014d63b652decc
2026-09-27 11:06:40 -04:00
Solomon Peachy
636ae404f7 misc: forums.rockbox.org -> www.rockbox.org/forums
Change-Id: Ieddb1d534aa15e3e931eb66e9380276602cfd0c5
2026-09-27 10:46:01 -04:00
Andrew Rice
1ad17c9b57 manual: add the iPod Nano 3G
Adds the platform file, modelled on the Nano 2G's and the iPod
Classic's, and corrects the supported-versions text shared by the Nano
manuals, which said Rockbox does not run on the third generation.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Change-Id: Ie6290d67ae113086cb8a63c825eb9db9544c1d49
2026-09-20 08:58:09 -04:00
David Cormier
e0136bc7f4 ipod6g: add hardware H.264 video playback
Add S5L8702 VPU-B initialization, reset, bitstream input, frame output,
and cache maintenance to the iPod 6G target. Advertise it with
HAVE_HW_H264 and append a capability-gated decoder interface to the
plugin API.

Keep MP4 parsing, AAC decode and mixer output, A/V synchronization,
playback controls, resume state, and presentation in the multi-file
h264_player plugin. The target layer exposes decoder operations only.

Accept non-fragmented MP4/M4V containing Constrained Baseline H.264
through level 3.0, up to 640x480 at 30 fps, with optional AAC-LC audio.
Validate codec configuration and all sample-table relationships before
activating the hardware.

Read MP4 tables in bulk, boost the CPU while preparing them, and report
staged loading progress so long movies do not appear to hang during
startup.

Register the viewer and document its format limits and controls. The
libm4a compatibility fixes needed by video-first containers remain in
the preceding standalone change.

Tested on an iPod Classic 6G through an isolated Rolo nightly runtime:
H.264/AAC playback and M4V startup succeeded. Normal and
isolated-runtime iPod 6G builds also complete, and git diff --check is
clean.

Change-Id: I1e96c65c7d0b4231a94f602f8052f1b26d6e4a80
2026-09-13 08:07:59 -04:00
Solomon Peachy
cbd8b68e06 manual: Remove executable bit off of files that shouldn't have it
Change-Id: I1524a574d44f0f1bc5cb121fab949a82ca8cc802
2026-09-07 09:00:07 -04:00
Aidan MacDonald
376db9bf5b touchscreen: Add flick gesture support in list and WPS
Add some hardcoded flick gestures in the list UI:

Top   -> open quickscreen
Left  -> go back
Right -> go to the WPS

The WPS also gets a set of hardcoded flick shortcuts:

Top    -> open quickscreen
Left   -> go to file / database browser
Right  -> view playlist
Bottom -> context menu

These are enabled by default in pointing mode but can
be disabled using the "Touchscreen Flick Shortcuts"
option.

Change-Id: Ib30a338ebb9662cd136985da6d34ed5b041e4077
2026-09-07 08:56:38 -04:00
David Cormier
27332d64ad ipod6g: add composite output setting
Add Off, Auto, and On choices under the LCD settings menu for targets
with HAVE_COMPOSITE_VIDEO_OUT. Off is the default and leaves accessory
ADC, video registers, framebuffer conversion, output clocks, and CPU
boost untouched.

Auto enables output only for the qualified Philips dock signature. On
still requires a physically present, fully identified dock and permits
other detected composite accessories.

Document the menu behavior and the corresponding configuration-file
values in the iPod Classic manual.

Hardware tested on an iPod Classic 6G/7G with a Philips DCP750/37.

Change-Id: I649149daa331a95aa31110e1f2260a4a00ba789a
2026-09-07 08:55:22 -04:00
Solomon Peachy
420537c864 manual: correct Ipod/Itunes -> iPod/iTunes
Change-Id: I54b323085140f0e4abddab7a522e34e897d9edf4
2026-08-30 21:17:29 -04:00
Sebastian Leonhardt
95e9d227aa manual: fix typos and whitespace; bump copyright to 2026
Change-Id: I453f94d1b9995deb1e8275a878bf81a22960c08e
2026-08-30 20:54:35 -04:00
Michael McAllister
ec59f570dd keyboard: point-mode virtual keyboard for touchscreens
On large touchscreens the software keyboard can now run in "point mode". Keys are laid out finger-sized and tapped directly instead of being navigated with a cursor. Targets opt in with HAVE_KBD_POINT_MODE.

Key size is derived from LCD_DPI so a key is about 5mm across whatever the panel density, falling back to a fixed size where DPI is unknown.

A phone-style default layout in the UI font, across three flip pages of eight lines. Page two is page one shifted (i.e caps). Page three completes Latin-1 and adds additional accented letters common to the other European locales.

Space is drawn as an icon, since the UI font has no glyph for it.

Change-Id: Ibe2e305b3c22b1f9152358cf3864b9445b67b463
Co-Author: Claude Opus 4.8
2026-08-25 09:56:46 -04:00
Christian Soffke
789d796120 quickscreen: make %QT hide built-in UI
When an SBS uses the new %QT tag (added in 96f42a5)
to retrieve the name of the top Quickscreen setting
(thus likely wants to draw its own QS UI), we disable
the built-in interface until a new SBS file is applied.

Fixes lag encountered in Themify 2 due to invisible
built-in Quickscreen UI that kept being re-drawn.

Change-Id: Id4f295f959c2d16d1650f6fc066c3ceca6685405
2026-08-22 20:23:07 +02:00
Aidan MacDonald
444c9ce4bd manual: add touchscreen settings section
Change-Id: I5b9196fb79e7b67a4ac013fe10b8ad462cb8bfa8
2026-08-11 12:22:19 +01:00
Hemant Kumar
b217a55059 ipod6g: Add inline earphone remote support
Decode the jack remote's play/pause and volume buttons via the
"Mikey" controller (I2C 0x72) and report them as multimedia keys so
they work on every screen, like the OF. Protocol reverse engineered
on-device, notes in mikey-6g.c.

Change-Id: If5f3d3abf043c0ce0d8ca7beb0f4b591e41c5c43
2026-08-05 08:40:24 -04:00
Skye
e764656ab7 Allow customizing EQ filter types
Allows any EQ band to be set to any of Low Shelf, Peak, or High Shelf, instead of hardcoding the types per band.

Change-Id: I470ab916359092ba465e7b6331baed3bf11b2fc9
2026-07-30 07:48:45 -04:00
Roman Artiukhin
31dfd5da2e playback: add Playlist Single Mode option
Change-Id: I27c782ad246135fa6c98b52ed1491e86a7dfd456
2026-07-27 22:22:46 -04:00
William Wilgus
acff6143c4 FS#13938 - Line disappears after %Vf tag and %Vb tag
As far as I can tell this was indtroduced during this commit
32ff4e93bd
basically they added a NOBREAK flag
to all the commands that had '\n'
where as
    { SKIN_TOKEN_VIEWPORT_FGCOLOUR,       "Vf" , "S"},
    { SKIN_TOKEN_VIEWPORT_BGCOLOUR,       "Vb" , "S"},
do not have \n yet they were changed to have the NOBREAK flag applied
    { SKIN_TOKEN_VIEWPORT_FGCOLOUR,       "Vf" , "S", NOBREAK },
    { SKIN_TOKEN_VIEWPORT_BGCOLOUR,       "Vb" , "S", NOBREAK },
this causes anything after the command to be ignored

-- Note added to manual this will be a won't fix
due to the possibility of breaking existing themes

Change-Id: I0135f04c344bf817c104f951a657e2690f2d36bb
2026-06-30 13:55:03 -04:00
Adam N. Burke
a824085057 skin: add %pX tag for time-based playlist progress
%pP reports playlist progress by position index, which treats every
track as equally long. For playlists with tracks of unequal length --
audiobooks with chapters anywhere from two minutes to an hour are the
motivating case -- position is a poor proxy for listening progress.

%pX reports the played percentage of the whole playlist by time: the
summed length of all preceding tracks plus the elapsed time in the
current one, relative to the playlist's total duration. It can be
used as a value, in a conditional, with %if(), or as a bar tag like
%pb.

If a playlist contains more than 500 tracks or the scan is taking too
long and the user aborts the tag will fallback to the behavior of %pP
except the progress through the current track will be included in the
returned percentage

--------------------------------------
Computing this needs every track's length, and reading metadata for
every track is too slow and disk-heavy for a tag that refreshes on the
WPS. Instead each track's length is estimated from its file size: the
skin engine scans the playlist in the background, a batch of files each
skin refresh, opening each file only to read its size (directory
metadata, no header parse). Size is turned into time by calibrating one
file of each type -- the first file of each extension is parsed once
with get_metadata to learn its bytes-per-second, and every later file
of that type reuses it. A single-format playlist, the usual audiobook
case, parses exactly one file and stat's the rest.

The result is an estimate -- bitrate varies within a type, especially
for VBR -- but it is cheap and accurate enough for a progress
indicator, and the playing track always contributes its exact elapsed
time. Per-track lengths are stored as two bytes of minutes each in a
movable buffer sized to the track count and allocated only while the
tag is in use; the cache is keyed on the track count and a crc of the
first, middle and last filenames, so a playlist swap or reshuffle is
caught. If the buffer cannot be allocated (a very large playlist on a
low-memory target) the tag falls back to position-based progress.

The buffer is allocated when playback starts (and when the now-playing
screen is opened with playback already active) rather than lazily on the
first WPS refresh, so the one-time allocation happens at a playback
boundary instead of during steady-state playback; it falls back to
allocating on first use if that point is missed.

Until the scan finishes the tag does not blank: it returns an instant
equal-weight estimate -- (completed tracks + fraction through the
current one) / track count -- which sharpens into the size-based value
as the scan fills in. So a theme can just use %pX and it is correct
from the first frame, and %?pX is true whenever a playlist is loaded.

Tested on a Sansa Clip Zip and in the simulator. On a 216-track,
~745 MB single-format audiobook playlist the length scan dropped from
~4150 ms (get_metadata on every track) to ~174 ms (one parse plus 215
file-size stats), roughly 24x lighter.

Change-Id: I6e572e78a10444bd513ddc77e30da04aa5153ef2
2026-06-27 12:29:31 -04:00
Solomon Peachy
d54b9e6f8d chore: Get rid of *all* vestigal CVS '$Id:$' tags
Change-Id: I35c13a9768c582e4851aa252dd3ea5c89f760c8c
2026-06-01 16:01:18 -04:00
William Wilgus
bf0fa29a30 WPS Context Menu configurable entry
Allow setting context menu items

reuses WPS hotkey items

Runs the item
displays the item

Open plugin shows the item name

Pitch shows the pitch speed amount

add 'Show In Files' hotkey item

devices without a hotkey get an extra item

added Manual entries

Change-Id: I427e70e1cad15364ac5d2a7114032e97cc9eee1a
2026-05-25 11:07:59 -04:00
Christian Soffke
1a8efac956 manual: fix skinned list tag mixup (FS#13895)
Change-Id: I890fe8800aa6e8640f445cd79ee3fa192398ad0c
2026-05-19 17:11:42 +02:00
Solomon Peachy
d839cab05a manual: Correct a minor error in the countdown timer documentation
Change-Id: I5105a2ebf51e030c9d58a234c521b473141e71f7
2026-05-03 08:08:43 -04:00
Solomon Peachy
30ad7f4ee8 manual: Mention [lack of] unicode normalization in the manual
Change-Id: Icdb19a47367fbe7b2fd32679885a26669a799612
2026-05-03 08:08:43 -04:00
seroteunine
a1040cda5d plugins: add timer/countdown plugin
-New countdown timer plugin with pause, overtime support
-Add full name to credits and manual entry
-Make status strings translatable

Change-Id: I1437b2e5ac5ede292bdab8d36e58b81326ea2ba3
2026-04-16 21:35:52 -04:00
Christian Soffke
cc7418dd8b dsp: add option to swap left and right channels
Change-Id: Id4b518638436576cfb5e747548f10ece6e58eba0
2026-04-16 21:08:53 -04:00
Christian Soffke
e405858b9e wps: Replace menu items "Open With" & "Delete" with "Show in Files"
Limit these (less commonly used) "file handling" operations
to the File Browser while making it quicker to reveal the
file that is currently playing from the WPS.

"Open With" and "Delete" remain available as WPS shortcuts.

Change-Id: I91e582a45998160f07a3f7e16d475d770e8c5212
2026-04-16 21:04:27 -04:00
Christian Soffke
f83cb1f7d5 fix manual a1ccb79727
Change-Id: Ic1729fb81386e2010c662373baaa31c302a80ff7
2026-04-16 14:07:17 +02:00
Christian Soffke
a1ccb79727 pitchscreen: adjust keymaps for ipod and fiiom3k
ipod:
- To be more consistent with other plugins and
  (Settings) menus, press Long Select, instead of Menu,
  to reset, and press Menu, or Select, to exit screen

fiiom3k:
- Press Back, or Select, to exit screen
- Press Menu, instead of Select, to switch between modes
- Use repeat button events and adjust values by 1%, instead of
  by 0.1%, when scrolling, to speed up setting changes
- Get rid of surprising actions for Back/Menu/Volume buttons

Change-Id: Ifd16958bf56c7e20fb182aa157b4cb4dd19ac9b9
2026-04-16 13:35:38 +02:00
Christian Soffke
c765addd24 Eliminate default browser setting (e881655)
Keeps track of most recently used browser
across reboots instead.

Change-Id: I0de2c3acc69f827aac68e7dfcfc4af1a4f8c66de
2026-04-13 19:20:27 -04:00
Vencislav Atanasov
719f0f1a3b settings: Move USB-related settings to their own submenu
Change-Id: Ic35025633f655138767e82bf4369e0626e91b4d4
2026-04-13 18:55:30 +03:00
Solomon Peachy
b5e3789dc1 manual: Fix red due to a missing }
Change-Id: I86a3f0681ef15bee61489c2df9e013c27d9b55f9
2026-04-03 18:04:38 -04:00
Solomon Peachy
1c4774e7e9 manual: Correct dead links for Sandisk Fuze+ firmware download
All URLs into Sandisk's web site return 404 or 403 errors, so
point at our local mirror of Sansa firmware files instead.

Change-Id: Ib3efcb62b13431f6416a320483877ca162ea5990
2026-04-03 17:33:08 -04:00
Solomon Peachy
868da83e92 FS#13849: Correct dead stock firmware links for SansaAMS devices
(Sandisk no longer hosts any firwmare for these old devices, so point
 users at our own mirror instead)

Change-Id: Ibdcddcd2560b2062e84c82c53049022a7f76b226
2026-04-03 17:25:43 -04:00
Christian Soffke
75fa8e6449 manual: "Always remember last folder" setting update
- move to File View settings menu
- add to config file options

Change-Id: Id676fd5e0cdc9f0471b975addb1fecd62f3cd61d
2026-04-03 02:37:27 +02: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
Aidan MacDonald
58b186d6de Remove Creative Zen Vision and Vision:M ports
They haven't seen development activity for the better part
of two decades and apparently were never able to even boot
to Rockbox, although the Rockbox bootloader could load the
original firmware.

Change-Id: I5cfa5909c21feaf2825aa685a05e78044b893a13
2026-02-06 07:31:54 -05:00
Solomon Peachy
1a2235fb18 manual: Document HifiWalker H2 v2.3 as an erosqnative hw4 variant
Change-Id: I685a5c71b074f1942e1d345a2fe7d73f97ccfe76
2026-02-04 23:29:25 -05:00
Aidan MacDonald
ebd273832d Remove Mini2440 and Lyre prototype 1 ports
Both targets were part of the (presumably dead) Lyre project
and no longer build. The Mini2440 was much more complete than
the Lyre and doesn't seem terribly difficult to fix up to the
point where it at least builds, if someone still cares -- but
given it is a dev board in a box, it's unlikely it ever saw
much use.

Change-Id: I09745379d28db69ea9aaf77f0a62b049884260e1
2026-02-04 08:56:04 -05:00
Solomon Peachy
c826554067 manual: Minor correction to the list of ErosQ/K hardare revisions
Change-Id: I4691d11b5c26a1b0e09e62ccb62e0661a09851b9
2026-01-30 06:06:59 -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
Solomon Peachy
74d86ab965 manual: Document the 'database scan paths' setting
Change-Id: I3a6505655461c13fac4f2246277b811757bdd180
2026-01-13 07:55:04 -05:00
Solomon Peachy
385483d6c5 manual: Don't lead a paragraph with '\\'
(Turns out that tex4ht is a lot pickier than latex)

Change-Id: I4fa320a14ca6fd136fb8abc31120ebecb17a23e3
2026-01-03 23:18:53 -05:00
Hairo R. Carela
d695c3b95b rgnano: rbutil support and manual updates
Needs some testing in windows but except for uninstalling everything should work.

Change-Id: I55691d4cae9b37921f08177edaadc88854fef948
2026-01-03 20:03:12 -05:00
Christian Soffke
16cf7f5d8b plugins: starfield: enable USB audio
forgot about this...

Change-Id: Ib9d1451785390f1fabcaab679271510e76f9e330
2025-12-15 07:48:45 -05:00
Christian Soffke
3ee26f761b manual: html: fix unrecognized --parent(s) option on BSD/Darwin
Replace --parents (specific to GNU cp)
with separate mkdir -p command.

See https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html#index-_002d_002dparents

Change-Id: I80dd5e513300dc921a59227aff9454ddb5766671
2025-12-11 19:14:48 +01:00
Aidan MacDonald
1816667937 touchscreen: Allow bar tag touchregions to be labeled
This is necessary if you want to detect touches on the bar region
using %Tl conditionals. Suppressing the auto-created region and then
creating one manually using %T doesn't give exactly the same results
because user-defined touch regions can't yet specify padding.

Change-Id: I2f4bde8eb56ba89645c72f3cc9d4b2355b934abd
2025-12-05 12:02:53 +00:00
Aidan MacDonald
b781beecf5 manual: document touch area labels for %T and %Tl tags
It's been possible to label touch areas since the v3.9 stable
release, but it was never documented in the manual, only the wiki.

Change-Id: I6b92ff1d19369c105dc3a90aa04f8763f18a4214
2025-12-05 12:02:50 +00:00
Solomon Peachy
6d39bf5e48 manual: Update %Tp documentation
It returns 't' only if a touchscreen is present and set to pointer mode

Change-Id: Ia72c0ea0ceea78fc53327a4c6d6cb25436ef572c
2025-12-04 20:33:57 -05:00