summaryrefslogtreecommitdiffstats
path: root/apps/plugins/imageviewer
AgeCommit message (Collapse)AuthorFilesLines
2022-04-18ImageViewer: Fix buffer overflowChristian Soffke1-1/+5
np_file is a buffer of size MAX_PATH. After removing only the file name component and leaving the rest of the path, the available space may not be sufficient for appending another file name (possibly of size MAX_PATH itself) to it. This can occur after a file of acceptable length is opened in ImageViewer, and you then advance to another file whose path (including the file name) is longer than MAX_PATH. Change-Id: Ideadd9451359bd5735bce92fca5d983e61f300e9
2022-04-09imageviewer: limit progress bar LCD update rateAidan MacDonald1-1/+13
The progress callback doesn't rate limit LCD updates, which causes excessive slowdowns (up to 150x!) on some targets. Limiting updates to 20fps solves the problem and should boost load speed across the board, particularly for large images and animated GIFs that may run the progress callback thousands of times. Change-Id: Ia48924d4dcb24c1111509329581809be494d0165
2022-04-01ImageViewer: M3K keymap allow scrolling up/downChristian Soffke2-0/+10
Change-Id: I385354688b1d8f8df4d44e7e177e23bdb6ed3df4
2022-01-09ImageViewer: Fix FS#13329 (GIF File handle/memory leaks)Christian Soffke3-16/+40
Change-Id: Ib3ef22716c8ba35c7bb78231ca4f5c7155f16018
2022-01-09ImageViewer: Fix GIF Decoder progress barChristian Soffke1-1/+1
Change-Id: I9db9b27f9e12f08323534038bc6f0882329a2c00
2022-01-09ImageViewer: Fix gifs sporadically crashing on targetsChristian Soffke1-1/+1
ensure 32bit alignment Change-Id: I11e0df599403a888fa63dab8f1c5a94a5f35d9ad
2022-01-09ImageViewer: Improve smoothness of animated gif playbackChristian Soffke2-3/+7
Don't disable grayscale overlay, don't show "resize" messages between frames and and don't clear display unless actually necessary Change-Id: I9f501d8280ce0c8f26f4345088d805d1b84cf143
2022-01-09ImageViewer: Fix crash when zooming on grayscale devicesChristian Soffke1-1/+3
lcd_update was called while the grayscale overlay was running regression, apparently introduced by 0ceaff2 (only reproducible on target, not in Simulator) Change-Id: Ife0ef359e19a03a6dc033070a11ae5843ee555e6
2021-08-07Remove unhelpful unsigned casting trickAidan MacDonald1-8/+3
Change-Id: Ice86f060974c51bbaf051ed8c5a369ce80ecfe15
2021-08-04Document intentional fallthroughs + fix harmless unintended onesAidan MacDonald1-0/+2
Change-Id: I1ca5b1027ec30cbf61093bab35b980196ed14e6b
2021-07-13New port: Shanling Q1 nativeAidan MacDonald1-0/+3
- Audio playback works - Touchscreen and buttons work - Bootloader works and is capable of dual boot - Plugins are working - Cabbiev2 theme has been ported - Stable for general usage Thanks to Marc Aarts for porting Cabbiev2 and plugin bitmaps. There's a few minor known issues: - Bootloader must be installed manually using 'usbboot' as there is no support in jztool yet. - Keymaps may be lacking, need further testing and feedback. - Some plugins may not be fully adapted to the screen size and could benefit from further tweaking. - LCD shows abnormal effects under some circumstances: for example, after viewing a mostly black screen an afterimage appears briefly when going back to a brightly-lit screen. Sudden power-off without proper shutdown of the backlight causes a "dissolving" effect. - CW2015 battery reporting driver is buggy, and disabled for now. Battery reporting is currently voltage-based using the AXP192. Change-Id: I635e83f02a880192c5a82cb0861ad3a61c137c3a
2021-04-26Nuke all TCC77x targets: iAudio 7, Sansa C100, M200(v1-3), Logik DAXSolomon Peachy1-11/+0
They were never finished, never saw any release ever, and haven't compiled for the better part of a decade. Given their HW capabilities [1], they are not worth trying to fix. [1] 1-2MB RAM, ~256MB onboard flash, no expandability Change-Id: I7b2a5806d687114c22156bb0458d4a10a9734190
2021-03-28New port: FiiO M3K on bare metalAidan MacDonald1-0/+14
Change-Id: I7517e7d5459e129dcfc9465c6fbd708619888fbe
2021-03-11ImageViewer Fix jpeg decoderWilliam Wilgus1-7/+3
Image viewer compiles decoders as a plugin and removes CRT0 A resuklt static vars do not get initialized in decoders Change-Id: I72da326967c7b404b297897000f82852661a7ebb
2021-02-27Rename symbols of FiiO M3K Linux-based portAidan MacDonald1-1/+1
Mainly a straight replacement of FIIO_M3K -> FIIO_M3K_LINUX. Change-Id: Id07c84f8150991d1b6851540c2c3f8f67e3f12c2
2020-10-26LCD core move buf ptr and address look up function viewport structWilliam Wilgus2-5/+18
I'm currently running up against the limitations of the lcd_draw functions I want these functions to be able to be used on any size buffer not just buffers with a stride matching the underlying device [DONE] allow the framebuffer to be decoupled from the device framebuffer [DONE need examples] allow for some simple blit like transformations [DONE] remove the device framebuffer from the plugin api [DONE}ditto remote framebuffer [DONE] remove _viewport_get_framebuffer you can call struct *vp = lcd_set_viewport(NULL) and vp->buffer->fb_ptr while remote lcds may compile (and work in the sim) its not been tested on targets [FIXED] backdrops need work to be screen agnostic [FIXED] screen statusbar is not being combined into the main viewport correctly yet [FIXED] screen elements are displayed incorrectly after switch to void* [FIXED] core didn't restore proper viewport on splash etc. [NEEDS TESTING] remote lcd garbled data [FIXED] osd lib garbled screen on bmp_part [FIXED] grey_set_vp needs to return old viewport like lcd_set_viewport [FIXED] Viewport update now handles viewports with differing buffers/strides by copying to the main buffer [FIXED] splash on top of WPS leaves old framebuffer data (doesn't redraw) [UPDATE] refined this a bit more to have clear_viewport set the clean bit and have skin_render do its own screen clear scrolling viewports no longer trigger wps refresh also fixed a bug where guisyncyesno was displaying and then disappearing [ADDED!] New LCD macros that allow you to create properly size frame buffers in you desired size without wasting bytes (LCD_ and LCD_REMOTE_) LCD_STRIDE(w, h) same as STRIDE_MAIN LCD_FBSTRIDE(w, h) returns target specific stride for a buffer W x H LCD_NBELEMS(w, h) returns the number of fb_data sized elemenst needed for a buffer W x H LCD_NATIVE_STRIDE(s) conversion between rockbox native vertical and lcd native stride (2bitH) test_viewports.c has an example of usage [FIXED!!] 2bit targets don't respect non-native strides [FIXED] Few define snags Change-Id: I0d04c3834e464eca84a5a715743a297a0cefd0af
2020-10-26make the plugin API frambuffer agnosticMoshe Piekarski2-4/+4
Change-Id: I5abdc231093054c517ff53b9a456997e440e3f6e
2020-10-11New port: AIGO EROS Q / EROS KSolomon Peachy1-22/+7
The Q and K have a slightly different case, but the hardware under the shell is completely identical. These models are rebadged versions: * Hifiwalker H2 (== Q) * AGPTek H3 (== K) * Surfans F20 (== K) Other notes: * Significant improvements in the shared Hiby-platform launcher/loader * SD card can theoretically be hot-swapped now * Support external USB mass storage! * Some consolidation of Hiby-platform targets * Some consolidation of plugin keymaps Todo/known issues: * Keymaps need to be gone over properly * Convert to HAVE_SCROLLWHEEL? Change-Id: I5a8a4f22c38a5b69392ca7c0a8ad8c4e07d9523c
2020-10-09New port: FiiO M3KSolomon Peachy1-0/+15
Most credit goes to: Roman Skylarov Additional integration and refactoring by myself. *** COMPLETELY UNTESTED *** Change-Id: Ia64c36d92e0214c6b15f7a868df286f8113ea27b
2020-09-20voice: rename mp3_play_* functions to voice_play_*Solomon Peachy1-1/+1
Remove mp3_is_playing() entirely, in favor of pcm_is_playing() Remove mp3_play_pause() entirely, as it's a dummy/no-op call Remoce some archos-specific comments Change-Id: I4e9ff323490a93add00809efd19e0d4e3f198b2d
2020-09-13Xduoo X3 Add tree scrolling FS#13240, Emulate Multibutton pressesWilliam Wilgus1-1/+1
Fixes deficiencies with the button system on the X3 The x3 has an interesting button layout. Multiple key presses are NOT supported unless [BUTTON_POWER] is one of the combined keys As you can imagine this causes problems as the power button takes precedence in the button system and initiates a shutdown if the key is held too long instead of BUTTON_POWER use BUTTON_PWRALT in combination with other keys IF using as a prerequsite button then BUTTON_POWER should be used Multiple buttons are emulated by button_read_device but there are a few caveats to be aware of: Button Order Matters! different keys have different priorities, higher priority keys 'overide' the lower priority keys VOLUP[7] VOLDN[6] PREV[5] NEXT[4] PLAY[3] OPTION[2] HOME[1] There will be no true release or repeat events, the user can let off the button pressed initially and it will still continue to appear to be pressed as long as the second key is held Tree scrolling is PLAY+NEXT or PLAY+PREV Change-Id: I88dfee1c70a6a99659e8227f5becacc50cc43910
2020-07-24plugins: More HAVE_BACKLIGHT cleanupSolomon Peachy1-0/+4
Change-Id: I70cf700f5bc3d4375c025efa62ef40fd2bd70293
2020-07-24[1/4] Remove SH support and all archos targetsSolomon Peachy2-42/+3
This removes all code specific to SH targets Change-Id: I7980523785d2596e65c06430f4638eec74a06061
2020-06-30imageviewer: Fix potential null pointer dereferenceSolomon Peachy1-4/+6
(caught by clang-analyzer) Change-Id: Ie24b7cd75c5e9814007674925f33b1a321f1d06d
2020-04-13av300: Continue cleaning out keymaps.Solomon Peachy1-11/+0
(A lot of work was done on this thing, for a target that hasn't been compileable at least since we moved to git..) Change-Id: Ibface9392f3251b5be4bf1e0c4d12639c4f1662d
2020-04-06xDuoo X3II and X20 portMarcin Bukat1-0/+30
Provided by Roman Stolyarov Integration, Refactoring, and Upstreaming by Solomon Peachy X3II confirmed working by forum tester, X20 is nearly identical. This includes bootloader, main firmware, and the flash image patcher. Eventual Todo: * Further refactor AGPTek Rocker & xduoo hiby bootloaders * Further refactor AGPTek Rocker & xduoo hosted platform code Change-Id: I34a674051d368efcc75d1d18c725971fe46c3eee
2019-07-20Add speech feedback to imageviewer pluginSolomon Peachy1-16/+17
Patch by Igor Poretsky Change-Id: Ifcca7342d07f0d7fb90d282468f7e6576c13d36b
2019-01-02Add Xuelin iHIFI 770/770C/800 supportSolomon Peachy1-0/+30
Taken from the xvortex fork (Roman Stolyarov) Ported, rebased, and cleaned up by myself. Change-Id: I7b2bca2d29502f2e4544e42f3d122786dd4b7978
2018-07-28Add cleaned-up xDuoo X3 supportSolomon Peachy1-0/+15
Cleaned up, rebased, and forward-ported from the xvortex fork. (original credit to vsoftster@gmail.com) Change-Id: Ibcc023a0271ea81e901450a88317708c2683236d Signed-off-by: Solomon Peachy <pizza@shaftnet.org>
2018-06-12Agptek Rocker: Build pluginsMarcin Bukat1-0/+12
Patch provided by Aapo Tahkola. Change-Id: I37a42a950d78d6b8aa3927ec7aeb30030f7be7a5
2018-04-03Zen XFi2: Enable PluginsSebastian Leonhardt1-0/+4
Keymaps aren't tested, there may be room for improvement. Change-Id: I6b8fe697899b241ea6e96f4fe446d88671ad7818
2016-04-01Fix FS#12981 JPEG decoding problem when entropy data starts with FFBoris Gjenero1-10/+10
This changes JPEG fill and invalid byte handling to be like mozjpeg, and bases entropy data start on SOS marker location. Thanks to Stefan Waldmann and Dean Tersigni for reporting. Change-Id: I3c79cc6ac8d714fdc75c12b57ba427d611c99519 Chaange-Id: Ibc7c17d38d5be63642bdaf6adfd6acc2a6cf4450
2016-01-25Replace SAMSUNG_YH920_PAD with YH92XSebastian Leonhardt1-1/+1
seems more logical to me, and is more consistent, since "SAMSUNG_YH92X_PAD" is already used in the tex files. Change-Id: Ie9a9d850ea86155a7dcf86c88a22a420a10a3837
2015-11-15YH8xx,YH9xx: Keymap improvementSebastian Leonhardt2-5/+32
The main "innovation" in this patch are two "virtual buttons" for the record switch on YH92x targets. When the switch state changes, a single BUTTON_REC_SW_ON or .._OFF button event will be generated. Thus keymap code can react on switching, but not on the actual state of the switch. Wherever sensible, the following user scheme is applied: - use PLAY as confirm button - use REW button or Long REW to exit - use REC (YH820) or FFWD (YH92X) as modifier key for button combos Change-Id: Ic8d1db9cc6869daed8dda98990dfdf7f6fd5d5a1
2015-01-11Limit more variables to file scopeThomas Jarosch1-1/+1
Change-Id: I30219d626316776eb73b4205d63376fa3dbc6361
2014-09-18Introducing Targets iBasso DX50 & iBasso DX90Simon Rothen1-0/+8
The port to for this two targets has been entirely developped by Ilia Sergachev (alias Il or xzcc). His source can be found at https://bitbucket.org/isergachev/rockbox . The few necesary modifications for the DX90 port was done by headwhacker form head-fi.org. Unfortunately i could not try out the final state of the DX90 port. The port is hosted on android (without java) as standalone app. The official Firmware is required to run this port. Ilia did modify the source files for the "android" target in the rockbox source to make the DX port work. The work I did was to separate the code for DX50 (&DX90) from the android target. On this Target Ilia used source from tinyalsa from AOSP. I did not touch that part of the code because I do not understand it. What else I changed from Ilias sources besides the separation from the target "android": * removed a dirty hack to keep backlight off * changed value battery meter to voltage battery meter * made all plugins compile (named target as "standalone") and added keymaps * i added the graphics for the manual but did not do anything else for the manual yet * minor optimizations known bugs: * timers are slowed donw when playback is active (tinyalsa related?) * some minor bugs Things to do: * The main prolem will be how to install the app correctly. A guy called DOC2008 added a CWM (by androtab.info) to the official firmware and Ilia made a CWM installation script and a dualboot selector (rbutils/ibassoboot, build with ndk-build). We will have to find a way to install rockbox in a proper way without breaking any copyrights. Maybe ADB is an option but it is not enable with OF by default. Patching the OF is probably the way to go. * All the wiki and manual to build: needed: android ndk installed, android sdk installed with additional build-tools 19.1.0 installed ./tools/configure select iBasso DX50 or iBasso DX90 make -j apk the content of rockbox.zip/.rockbox needs to be copied to /system/rockbox/app_rockbox/rockbox/ (rockbox app not needed) the content of libs/armeabi to /system/rockbox/lib/ (rockbox app needed) The boot selector is needed as /system/bin/MangoPlayer and the iBasso app as /system/bin/MangoPlayer_original. There is also the "vold" file. The one from OF does not work with DX50 rockbox (DX90 works!?), the one from Ilia is necessary. Until we have found a proper way to install it, it can only be installed following the instructions of Ilia on his bitbucket page, using the CWM-OF and his installation script package. Change-Id: Ic4faaf84824c162aabcc08e492cee6e0068719d0 Reviewed-on: http://gerrit.rockbox.org/941 Tested: Chiwen Chang <rock1104.tw@yahoo.com.tw> Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
2014-07-17zen/zenxfi/zenxfistyle/zenmozaic: implement plugin keymaps and enable pluginsAmaury Pouly1-0/+12
Plugins on the ZEN/ZEN X-Fi require to increase the plugin buffer size. Change-Id: If4651c87b402060faa24530985c6e871379c8ea1
2014-06-30Introduce plugin keymaps for the Sony NWZ SeriesNils Stec1-0/+12
Change-Id: I46b8766bd44118bce4931b7ee71815ae5f51cb2e Reviewed-on: http://gerrit.rockbox.org/879 Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2014-06-21lcd-24bit: Introduce a 24-bit mid-level LCD driverThomas Martitz2-6/+6
With LCD driver all calculation will be performed on RGB888 and the hardware/OS can display from our 24bit framebuffer. It is not yet as performance optimized as the existing drivers but should be good enough.The vast number of small changes is due to the fact that fb_data can be a struct type now, while most of the code expected a scalar type. lcd-as-memframe ASM code does not work with 24bit currently so the with 24bit it enforces the generic C code. All plugins are ported over. Except for rockpaint. It uses so much memory that it wouldnt fit into the 512k plugin buffer anymore (patches welcome). Change-Id: Ibb1964545028ce0d8ff9833ccc3ab66be3ee0754
2014-05-24Separate keymaps for YH-820 and YH-920/925Sebastian Leonhardt1-1/+2
Although both players basically have the same keys, the differences in the layout is rather big, so I think both deserve their own keymaps. (On the yh820 the FFWD/PLAY/REW buttons are located above the direction keys, on the yh920 at the side of the player. Furthermore the yh920/925 has a REC switch, whereas yh820 has a push button.) Change-Id: I0e62a1b101c387646c0bdb07ea142d9d2430ca15 Reviewed-on: http://gerrit.rockbox.org/814 Reviewed-by: Szymon Dziok <b0hoon@o2.pl>
2014-04-06Complete Plugin Keymaps for Creative Zen X-Fi3David Jilke1-0/+11
This patch completes the plugin keymaps for the Zen X-Fi3 and enables those plugins for compilation. One key was changed in "button-target.h" for compatibility with Rockboy. This also caused the changes to "keymap-zenxfi3.c", to keep the stock functionality (no further changes in here). Change-Id: Ic222faf89e9a9a2332a49d6e532cedb6eb16d3d7 Reviewed-on: http://gerrit.rockbox.org/762 Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-04-18imageviewer: fix animated gifs handlingMarcin Bukat2-23/+10
If disposal method is set to BACKGROUND one would expect that canvas should be restored to global background color. That is what gif standard suggests. Most (all?) decoders however treat this as reseting canvas to transparency or fixed, decoder specific background color. Virtually all gifs are prepared with this in mind so to not break them we can't follow standard here. Change-Id: I90ca712bba89d4190771eb5320eabda353d3e2bb
2013-02-23Make the git viewer use the global libtlsf.aFrank Gevaerts2-3/+2
Change-Id: Id529858f902aa7ffd3a63e4e335db2ac3c411430
2013-01-25gif viewer: remove max frames count constraintMarcin Bukat3-24/+53
Change-Id: I0be2f86234cfc5fd4ab6bb21fb918e507c608f2f Reviewed-on: http://gerrit.rockbox.org/380 Reviewed-by: Thomas Martitz <kugel@rockbox.org> Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
2012-12-26[Fuze+] imageviewer: update/complete keymapsJean-Louis Biasini1-3/+4
1) update/complete keymaps (now handle slideshow) 2) update/complete manual Change-Id: I1baf2598941bb781a2f2777f23eb543bd6bf5848 Reviewed-on: http://gerrit.rockbox.org/354 Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2012-11-21imageviewer: compile gif addon with -O2Marcin Bukat1-1/+1
Change-Id: I38ce91fec50147c0bc2705da4aa362a917bf02b3
2012-11-13imageviewer: gif viewer based on giflib-5.0.2Marcin Bukat21-15/+3004
This adds ability to view gif images in rockbox. Works both on color and gray/monochrome targets (greylib). Aspect correction is supported as well. Limitations: - animated gifs are restricted to 32 frames - animated gifs loop always (loopcount is ignored) - plain text extension is not supported - animated gifs with interframe delay = 0 are treated as still images (web browsers usually treat delay 0 as 100ms to prevent exhaustive CPU load by such images) Change-Id: I61501f801ddcd403410e38d83e6bddc9883e7ede
2012-04-19hm801: Add support for plugins.Andrew Ryabinin1-0/+12
Change-Id: I81654db87d38324d8680a56bcdb7e9922ee5b619
2012-04-19hm60x: Add support for plugins.Andrew Ryabinin1-0/+12
Change-Id: I4cad0881c8249f163680a280f70d1a0b36248da8
2012-04-04Refactor and unify objcopy calls in the build system. Also now properly ↵Thomas Martitz1-5/+1
handles DEBUG builds on hosted targets to keep debug symbols if necessary. Change-Id: I884031b79c6d49479e4d95752f35ced68872dd5d