Comments (8)
I discovered that using the ESP32SPI_DMA bus for the display and editing the MAX_TRANSFER_SZ in Arduino_ESP32SPI_DMA.h to (32*1024) from (480 * 2 * 9) had a big impact to gif playback speed. I'm fairly satisfied with the quality now.
I placed the SD card on a separate SPI bus using the HSPI pins (using pin 36 for MISO instead of Pin 12). The bottle neck seems to be on the display side
However now I'm noticing that high quality jpgs from the SD card are slow too haha. My test image is ~240*240 and 67K in size and you can see the image be filled in row by row. I'll be trying to optimize this next
from arduino_gfx.
from arduino_gfx.
Using the GC9A01 and and SD breakout board.
I noticed that for Gifs we can use writeIndexedPixels to display the whole frame right?
For Jpgs I see that we're writing row by row with draw16bitBeRGBBitmap.
Wouldn't it be possible to grab the jpg data in such a way that we can use it in the writeIndexedPixels and basically treat it like a frame of a gif?
from arduino_gfx.
4-bit SD_MMC can play 22050 MP3 + 320x240 MJPEG over 15 FPS, is it already good enough?
https://github.com/moononournation/ESP32-LCDKit/blob/master/Mjpeg_MP3_JPEGDEC_DMA/Mjpeg_MP3_JPEGDEC_DMA.ino
from arduino_gfx.
I found that by changing the JPG size and buff size to 4096 from 2048 in JPGDEC.h (bitbank2/JPEGDEC) library source code we get an enormous increase in speed to display jpgs. I now have only ~0.14 seconds to display a quality 240*240 jpg from an SD card. I tried larger sizes and had a very small difference in performance, so i found that 4096 is optimal. I know that these libraries are meant to run on as many microcontrollers as possible, but with the ESP32 there is an order of magnitude more RAM than most others and by utilizing it both GIF playback and image rendering can be improved substantially.
I'm now going to shift attention to custom animations such as displaying live sensor data as a graph
from arduino_gfx.
from arduino_gfx.
But I said I can play 320x240 MJPEG at 15 FPS with MP3 simultaneously, or 30 FPS without MP3, that means only 0.033 seconds a frame.
from arduino_gfx.
I'd like to test that example later on as well, does this use both cores to achieve 30 FPS? One to fill the buffer and the other core to display?
I'll mention this change to bitbank2 as well, my findings have all been surface level; I'm sure the author would know of some additional ways to improve performance for more capable controllers like the ESP32
from arduino_gfx.
Related Issues (20)
- ESP32 V3.0.0 is out but didn't work with Arduino GFX HOT 3
- Error when compiling "PDQgraphicstest" for ESP32_8048S043 HOT 7
- Problem with jpeg_dec_parse_header() HOT 6
- using XL9535 IOs HOT 2
- T-QT Pro text and back colors not working HOT 4
- Problems with using setRotation HOT 4
- Is NV3023A supported? HOT 4
- WEA2012 miss D/C and TE pin define HOT 1
- GFX display not working with T-Display S3 AMOLED HOT 15
- Data Bus Class add bl618/bl616 HOT 1
- Pico tailor-made 8bit parallel not working, only slow software parallel with NT35510 HOT 1
- How to configure a three wire SPI without a DC line HOT 1
- Adding a new 7" blue EA7013 7inch ESP32 display with 16-bit parallel RGB interface HOT 4
- is st7789 170x320 supported? HOT 1
- Compile Error on Arduino 2.3.2 HOT 1
- Arduino_ESP32RGBPanel and Arduino_RGB_Display not compatible with ESP32 v3 library HOT 1
- Arduino_Canvas Compilation error: no matching function for call to 'Arduino_Canvas::Arduino_Canvas(int, int, Arduino_ESP32RGBPanel*&, int, int, int)' HOT 2
- Color problem while using ST7701 4" screen HOT 7
- Dev Device Declaration for ESP32-8048S070 - 7 Inch Display not working
- esp_lcd_panel interfaces
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arduino_gfx.