rockbox/apps
Michael Giacomelli 5c74d20bce jpeg_load: decode chroma sampled like 1x2 or 2x1 luma
When all three components share 1x2 or 2x1 sampling there is no chroma
subsampling, but each interleaved MCU holds two blocks per component.
The core loader assumed one chroma block per MCU, so these files (the
folder.jpg in the original report) decoded to garbage and have been
rejected since chroma sampling is validated.

Lay out the MCU generically in fix_headers(): each component's H x V
blocks in turn, with a per-block position that places chroma blocks
with the same offsets as luma. The MCU size and decode buffer now come
from the luma sampling in colour builds too, and the chroma IDCT scale
from the luma:chroma sampling ratio, which is unchanged for 1x1
chroma. The unused subsample_x/y fields are removed.

All other layouts decode byte-identically to before at every scale.
The new layouts decode byte-identically to the same image encoded as
4:4:4. Code size drops by 108 bytes on the e200 and struct jpeg by
20 bytes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: I63a894d6609e56f3553a902afd6278ce70e04637
2026-10-01 13:47:38 -04:00
..
bitmaps ap80max: New hosted port 2026-08-13 17:55:06 -07:00
gui Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
hosted/android chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
iap iap: Improve IAPGeneralCommandID_RequestIPodName 2026-08-07 08:48:05 -04:00
keymaps YP-R0 keypad: recording screen and FM recording keys 2026-09-29 09:51:25 +02:00
lang Bulgarian translation update 2026-09-29 20:38:15 -04:00
menus touchscreen: Add flick gesture support in list and WPS 2026-09-07 08:56:38 -04:00
plugins jpeg: reject layouts the decoders cannot handle 2026-10-01 13:22:53 -04:00
radio rk27generic: FM radio screen keys, tuner noted as an RDA5807P 2026-09-30 08:07:47 -04:00
recorder jpeg_load: decode chroma sampled like 1x2 or 2x1 luma 2026-10-01 13:47:38 -04:00
abrepeat.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
abrepeat.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
action.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
action.h touchscreen: Fix seeking to end of track in WPS 2025-12-04 19:36:19 -05:00
alarm_menu.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
alarm_menu.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
appevents.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
applimits.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
apps.make chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
audio_path.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
audio_thread.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
audio_thread.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
beep.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
bookmark.c Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
bookmark.h Fix return to root after selecting items from playlist viewer 2022-11-19 10:01:23 +01:00
buffering.c Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
buffering.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
codec_thread.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
codec_thread.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
codecs.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
core_asmdefs.c
core_keymap.c Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
core_keymap.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
cuesheet.c FS13892: Voice feedback in Cuesheet browser 2026-08-25 07:54:03 -04:00
cuesheet.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
debug_menu.c rk27xx: fix -Wundef warnings in the FTL scheme finder 2026-10-01 13:00:41 +02:00
debug_menu.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
enc_config.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
enc_config.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
features.txt lang: Restrict LANG_COMPOSITE_VIDEO_OUTPUT to devices that have it 2026-09-07 09:27:20 -04:00
fileop.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
fileop.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
filetree.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
filetree.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
filetypes.c Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
filetypes.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
fracmul.h
gesture.c touchscreen: Add flick gesture detector 2026-08-13 08:03:37 -04:00
gesture.h touchscreen: Add flick gesture detector 2026-08-13 08:03:37 -04:00
keyboard.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
language.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
language.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
logfdisp.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
logfdisp.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
main.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
menu.c quickscreen: prevent out-of-bounds viewports 2026-09-02 14:03:17 -04:00
menu.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
misc.c ipod6g: Add inline earphone remote support 2026-08-05 08:40:24 -04:00
misc.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
onplay.c onplay wps context menu plugin item rework namebuf 2026-06-11 09:52:09 -04:00
onplay.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
open_plugin.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
open_plugin.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
pcmbuf.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
pcmbuf.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
playback.c FS#13996: Have audio_hard_stop() kill the PCM output path entirely 2026-09-25 16:03:03 -04:00
playback.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
playlist.c Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
playlist.h skin: add %pX tag for time-based playlist progress 2026-06-27 12:29:31 -04:00
playlist_catalog.c Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
playlist_catalog.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
playlist_menu.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
playlist_viewer.c quickscreen: always refresh SBS when leaving 2026-09-02 23:07:58 +02:00
playlist_viewer.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
plugin.c fix red in c6abf3382a -- iriver h1xx/h3xx simulator 2026-09-23 14:17:24 -04:00
plugin.h fix red in c6abf3382a -- iriver h1xx/h3xx simulator 2026-09-23 14:17:24 -04:00
rbcodec_helpers.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
rbcodecconfig.h usbaudio: send through dsp (new) 2025-11-15 07:38:19 -05:00
rbcodecplatform.h
README
root_menu.c tagtree: warn if tagnavi.config is missing instead of freezing 2026-09-16 07:55:47 -04:00
root_menu.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
screen_access.c FS#13944 - FONT_UI loads the last loaded font not global_status.font_id 2026-06-30 13:29:23 -04:00
screen_access.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
screens.c allow softlock in additional screens 2026-07-05 12:59:27 +02:00
screens.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
settings.c ipod6g: add composite output setting 2026-09-07 08:55:22 -04:00
settings.h touchscreen: Add flick gesture support in list and WPS 2026-09-07 08:56:38 -04:00
settings_list.c ipodnano3g: power, RTC, backlight, battery and audio 2026-09-20 08:53:53 -04:00
settings_list.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
shortcuts.c shortcuts: go to WPS for ACTION_TREE_WPS 2026-07-05 06:58:44 -04:00
shortcuts.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
sound_menu.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
SOURCES 3ds: Port refactor. 2026-09-01 08:39:07 -04:00
status.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
status.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
tagcache.c Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
tagcache.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
tagnavi.config tagnavi.config: Add "Album Artists by First Letter" 2025-02-08 12:14:32 -05:00
tagtree.c tagtree: warn if tagnavi.config is missing instead of freezing 2026-09-16 07:55:47 -04:00
tagtree.h tagtree: warn if tagnavi.config is missing instead of freezing 2026-09-16 07:55:47 -04:00
talk.c Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
talk.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
tree.c tree: skip redundant SBS refresh after Quickscreen 2026-09-03 01:32:17 +02:00
tree.h 3ds: Port refactor. 2026-09-01 08:39:07 -04:00
usb_keymaps.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
usb_keymaps.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
voice_thread.c chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
voice_thread.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00

For general information see: docs/README
For API information see: docs/API