- Status Closed
- Percent Complete
- Task Type Patches
- Category User Interface → Themes
- Assigned To No-one
- Operating System All players
- Severity Low
- Priority Very Low
- Reported Version Version 3.2
- Due in Version Undecided
-
Due Date
Undecided
- Votes
- Private
FS#10177 - core jpeg decoder
Core JPEG decoder for all targets with >1bit LCD. This is a port of the plugin jpeg decoder to work in core, along with some other changes. Data is read from disk as needed, IDCT have been split into separate horizontal and vertical passes, allowing different IDCT scaling on each axis, and 16-wide IDCT output is added, allowing for upscaling by 2x during decode (or upscaling chroma channels during IDCT when decoding at 1x). Output is fed to the scaler, and read_jpeg_file and read_jpeg_fd functions are added with call signatures identical to the similar functions for BMP files. Callers for these functions must pass a buffer in the struct bmp that is large enough for decoded image data, the struct jpeg used by the decoder, decode buffers (variable based on scaling and output width) and scaler buffers (variable based on output width). read_jpeg_file is exported in the plugin API, and a test_core_jpeg plugin is provided which will act as a viewer to decode and display one image (use the select button to exit). I have tested on images with 1×2-, 2×1-, 2×2-, and non-subsampled chroma, as well as Y-only images and ones with varying sizes above or below display size and various reset marker intervals.
The test_core_jpeg plugin will need to be enabled by editing apps/plugins/SOURCES. There seems to be some extra blockiness at the borders of 16-wide IDCT blocks - this should be tracked down before commit, these IDCT routines are possibly not ported correctly from the jpeg-7-pre sources.
The compiled object file for the loader is ~22KiB on an ARM color target (Gigabeat S).
ID | Project | Summary | Priority | Severity | Assigned To | Progress | |
---|---|---|---|---|---|---|---|
10178 | Rockbox | Very Low | Low |
2009-05-02 01:38
Reason for closing: Accepted
Additional comments about closing: Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407
Committed as r20836
Loading...
Available keyboard shortcuts
- Alt + ⇧ Shift + l Login Dialog / Logout
- Alt + ⇧ Shift + a Add new task
- Alt + ⇧ Shift + m My searches
- Alt + ⇧ Shift + t focus taskid search
Tasklist
- o open selected task
- j move cursor down
- k move cursor up
Task Details
- n Next task
- p Previous task
- Alt + ⇧ Shift + e ↵ Enter Edit this task
- Alt + ⇧ Shift + w watch task
- Alt + ⇧ Shift + y Close Task
Task Editing
- Alt + ⇧ Shift + s save task
Add API entries correctly (at the end of the struct), bump plugin API version, move huffman table setup to after struct jpeg is moved, so that pointers in huffman tables do not need to be updated as a separate step.
Apply the pre-round optimization from the 16-point IDCT to the others, saving a few adds in each routine, for a total of ~70B on ARM.