bitbank2 / JPEGDEC

An optimized JPEG decoder for Arduino
Apache License 2.0
365 stars 47 forks source link

RGB888 in Arduino Library version 1.2.8 ??? #65

Closed jameszah closed 6 months ago

jameszah commented 6 months ago

Hi, I was trying to use this to replace some slow jpg->rgb888 software, and I got the rgb565 working (very fast!) , but your code here suggests you have the rgb888 (or 8888), but the arduino library esp32 version does not have it.

Is that just "in progress" or not supported for some reason, or maybe installed wrong on my pc?

image image image

bitbank2 commented 6 months ago

It's currently in progress. I tested it and it appears to work fine. I only coded the full sized decode to generate RGB8888 and need to add the fractional size output too. Once I add those I'll do a full release. For now, feel free to clone this and let me know if you encounter any issues.

bitbank2 commented 6 months ago

Added/tested/released :)

jameszah commented 6 months ago

Got a load of compile errors on ver 1.2.9 with a Arduino 1.8.19 Seems to be complaining over "int" as a 16bit or 32bit default.

Edit: looking at the first error ... image

image image

Compiling library "JPEGDEC"
"C:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\esp-2021r2-patch5-8.4.0/bin/xtensa-esp32-elf-g++" -DHAVE_CONFIG_H "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX -D_GNU_SOURCE "-DIDF_VER=\"v4.4.6-dirty\"" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/newlib/platform_include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/freertos/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/freertos/include/esp_additions/freertos" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/freertos/port/xtensa/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/freertos/include/esp_additions" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_hw_support/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_hw_support/include/soc" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_hw_support/include/soc/esp32" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_hw_support/port/esp32" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_hw_support/port/esp32/private_include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/heap/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/log/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/lwip/include/apps" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/lwip/include/apps/sntp" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/lwip/lwip/src/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/lwip/port/esp32/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/lwip/port/esp32/include/arch" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/soc/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/soc/esp32" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/soc/esp32/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/hal/esp32/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/hal/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/hal/platform_port/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_rom/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_rom/include/esp32" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_rom/esp32" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_common/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_system/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_system/port/soc" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_system/port/public_compat" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp32/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/xtensa/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/xtensa/esp32/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/driver/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/driver/esp32/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_pm/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_ringbuf/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/efuse/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/efuse/esp32/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/vfs/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_wifi/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_event/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_netif/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_eth/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/tcpip_adapter/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_phy/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_phy/esp32/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_ipc/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/app_trace/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_timer/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/mbedtls/port/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/mbedtls/mbedtls/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/mbedtls/esp_crt_bundle/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/app_update/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/spi_flash/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bootloader_support/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/nvs_flash/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/pthread/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_gdbstub/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_gdbstub/xtensa" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_gdbstub/esp32" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espcoredump/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espcoredump/include/port/xtensa" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/wpa_supplicant/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/wpa_supplicant/port/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/wpa_supplicant/esp_supplicant/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/ieee802154/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/console" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/asio/asio/asio/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/asio/port/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/common/osi/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/include/esp32/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/common/api/include/api" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/common/btc/profile/esp/blufi/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/common/btc/profile/esp/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/host/bluedroid/api/include/api" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/storage" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/btc/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/common/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/client/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/server/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/api/core/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/api/models/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/bt/esp_ble_mesh/api" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/cbor/port/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/unity/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/unity/unity/src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/cmock/CMock/src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/coap/port/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/coap/libcoap/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/nghttp/port/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/nghttp/nghttp2/lib/includes" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-tls" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-tls/esp-tls-crypto" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_adc_cal/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_hid/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/tcp_transport/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_http_client/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_http_server/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_https_ota/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_https_server/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_lcd/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_lcd/interface" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/protobuf-c/protobuf-c" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/protocomm/include/common" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/protocomm/include/security" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/protocomm/include/transports" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/mdns/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_local_ctrl/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/sdmmc/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_serial_slave_link/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_websocket_client/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/expat/expat/expat/lib" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/expat/port/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/wear_levelling/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/fatfs/diskio" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/fatfs/vfs" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/fatfs/src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/freemodbus/freemodbus/common/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/idf_test/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/idf_test/include/esp32" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/jsmn/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/json/cJSON" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/libsodium/libsodium/src/libsodium/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/libsodium/port_include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/mqtt/esp-mqtt/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/openssl/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/perfmon/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/spiffs/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/ulp/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/wifi_provisioning/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/rmaker_common/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_diagnostics/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/rtc_store/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_insights/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/json_parser/upstream/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/json_parser/upstream" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/json_generator/upstream" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_schedule/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp_secure_cert_mgr/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_rainmaker/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/gpio_button/button/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/qrcode/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/ws2812_led" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp_littlefs/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-dl/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-dl/include/tool" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-dl/include/typedef" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-dl/include/image" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-dl/include/math" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-dl/include/nn" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-dl/include/layer" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-dl/include/detect" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp-dl/include/model_zoo" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp32-camera/driver/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/esp32-camera/conversions/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/dotprod/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/mem/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/hann/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_harris/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_nuttall/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/nuttall/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/flat_top/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/iir/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/fir/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/add/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sub/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mul/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/addc/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mulc/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sqrt/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/matrix/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/fft/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/dct/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/conv/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/common/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf_imu13states/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/include/fb_gfx/include" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14/tools/sdk/esp32/qio_qspi/include" -mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -std=gnu++11 -fexceptions -fno-rtti -MMD -c -w -Os -DF_CPU=240000000L -DARDUINO=10819 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DARDUINO_PARTITION_default_ffat -DESP32 -DCORE_DEBUG_LEVEL=0 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DARDUINO_USB_CDC_ON_BOOT=0 "@C:\\Users\\James\\AppData\\Local\\Temp\\arduino_build_663204/build_opt.h" "@C:\\Users\\James\\AppData\\Local\\Temp\\arduino_build_663204/file_opts" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14\\cores\\esp32" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14\\variants\\esp32" "-IC:\\ArduinoPortable\\sketch\\libraries\\bitluni_ESP32Lib\\src" "-IC:\\ArduinoPortable\\sketch\\libraries\\JPEGDEC\\src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\WiFi\\src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\ArduinoOTA\\src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\Update\\src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\EEPROM\\src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\SD_MMC\\src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\FS\\src" "-IC:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\ESPmDNS\\src" "C:\\ArduinoPortable\\sketch\\libraries\\JPEGDEC\\src\\JPEGDEC.cpp" -o "C:\\Users\\James\\AppData\\Local\\Temp\\arduino_build_663204\\libraries\\JPEGDEC\\JPEGDEC.cpp.o"
In file included from C:\ArduinoPortable\sketch\libraries\JPEGDEC\src\JPEGDEC.cpp:32:
C:\ArduinoPortable\sketch\libraries\JPEGDEC\src\jpeg.inl: In function 'void JPEGPutMCU11(JPEGIMAGE*, int, int)':
C:\ArduinoPortable\sketch\libraries\JPEGDEC\src\jpeg.inl:2499:41: error: cannot convert 'uint16_t*' {aka 'short unsigned int*'} to 'uint32_t*' {aka 'unsigned int*'}
                     JPEGPixelRGB(pOutput+iCol*2, Y, iCb, iCr);
                                  ~~~~~~~^~~~~~~
C:\ArduinoPortable\sketch\libraries\JPEGDEC\src\jpeg.inl:2346:36: note:   initializing argument 1 of 'void JPEGPixelRGB(uint32_t*, int, int, int)'
 static void JPEGPixelRGB(uint32_t *pDest, int iY, int iCb, int iCr)
                          ~~~~~~~~~~^~~~~
C:\ArduinoPortable\sketch\libraries\JPEGDEC\src\jpeg.inl:2522:26: error: cannot convert 'uint16_t*' {aka 'short unsigned int*'} to 'uint32_t*' {aka 'unsigned int*'}
             JPEGPixelRGB(pOutput, Y, iCb, iCr);
                          ^~~~~~~
C:\ArduinoPortable\sketch\libraries\JPEGDEC\src\jpeg.inl:2346:36: note:   initializing argument 1 of 'void JPEGPixelRGB(uint32_t*, int, int, int)'
 static void JPEGPixelRGB(uint32_t *pDest, int iY, int iCb, int iCr)
                          ~~~~~~~~~~^~~~~
C:\ArduinoPortable\sketch\libraries\JPEGDEC\src\jpeg.inl:2569:26: error: cannot convert 'uint16_t*' {aka 'short unsigned int*'} to 'uint32_t*' {aka 'unsigned int*'}
             JPEGPixelRGB(pOutput, Y, iCb, iCr);
                          ^~~~~~~
C
bitbank2 commented 6 months ago

Thanks for reporting that. I was testing on Linux and didn't generate errors for the warnings. I'll push a fix.

jameszah commented 6 months ago

Hi, thanks for your work here on the holidays!!! I answered a couple questions, but no actual work.

Latest version compiles nicely. But where do I find the 4 bytes for rgb8888?

I had this code below for 565 that recreated the rgb buffer I had with the slow decoders. This is a 640x480 jpeg reduced 1/8 to 80x60, and then written to a rgb888 (3 bytes) buffer, which works fine.

But after I set the ".setPixelType(RGB8888);", then pDraw->pPixels is still 16bit, so I need 2 of those for the 4 bytes rgb8888, but when I take 2 16bit pPixels then the second half of the screen is empty -- I used up all the data on the first half. The pDraw->x and pDraw->y and the iHeight and iWidth come out the same as the 565 call, and taking 4 bytes of pPixels ???

Maybe recast pPixels as 32bit is different than grabbing the next 2 bytes???

// this works 
int JPEGDraw565(JPEGDRAW *pDraw){
  int iCount;
  iCount = pDraw->iWidth * pDraw->iHeight; // number of pixels to draw in this call
  int ind = 0;
  for (int y = pDraw->y; y < pDraw->y + pDraw->iHeight; y++) {
    for (int x = pDraw->x; x < pDraw->x + pDraw->iWidth; x++) {
      int p = pDraw->pPixels[ind];
      rgb[ (y * 80 + x) * 3 + 0] = (p & 0b11111) << 3;
      rgb[ (y * 80 + x) * 3 + 1] = ((p >> 5) & 0b111111) << 2;
      rgb[ (y * 80 + x) * 3 + 2] = (p >> 11) << 3;
      ind++;
    }
  }
  return 1; // continue decode
} /* JPEGDraw() */
// this does not work ... many permutations of grabbing more bytes doubling width and incrementing ind
int JPEGDraw888(JPEGDRAW *pDraw)
{
  int iCount;
  iCount = pDraw->iWidth * pDraw->iHeight; // number of pixels to draw in this call

  int ind = 0;
  for (int y = pDraw->y; y < pDraw->y + pDraw->iHeight ; y++) {
    for (int x = pDraw->x; x < pDraw->x + pDraw->iWidth*2 ; x++) {
      int a = (pDraw->pPixels[ind] >> 8) & 0xFF;
      int b = (pDraw->pPixels[ind] >> 0) & 0xFF;
      //ind++;
      int c = (pDraw->pPixels[ind] >> 8) & 0xFF;
      int d = (pDraw->pPixels[ind]) & 0xFF;

      rgb[ (y * 80 + x) * 3 + 2] = a;
      rgb[ (y * 80 + x) * 3 + 1] = b;
      rgb[ (y * 80 + x) * 3 + 0] = c;
      int xx = d;
      ind++;
    }
  }
  return 1; // continue decode
} /* JPEGDraw() */
bitbank2 commented 6 months ago

The pPixels pointer needs to be cast as uint32_t for RGB8888. See my Linux example code. Your code above isn't reading from the pointer correctly.

jameszah commented 6 months ago

The 1/8 reduction seems to reduce y to 1/8, but x to 1/16. I get my entire image, and all 60 rows, but the 80 width gives me 160 (40x4 bytes) bytes of colors, and then the next 160 bytes empty.

This is a 640x480 jpg, reduced 1/8 to rgb, then the rgb converted to bmp with espressif esp32-cam library, then both sent to a web browser. Maybe that process is shrinking the x dimension???

I was trying to stretch the image to double wide yesterday.

I thought this line was relevant, as it exists for full, 1/2, 1/4, but not 1/8, but adding it to the 1/8 section before 2720 didn't help. It is not that bytes are cut off, but the image is squeezed narrow. https://github.com/bitbank2/JPEGDEC/blob/ac4bb5155aacad3e7e1a0fdc2ffadba665d42eb7/src/jpeg.inl#L2803 image image image

uint8_t *rgb ; // is malloced to plenty of room

int JPEGDraw888(JPEGDRAW *pDraw)
{

  uint32_t* outptr;
  outptr = (uint32_t*)pDraw->pPixels;

  int ind = 0;

  for (int y = pDraw->y; y < pDraw->y + pDraw->iHeight ; y++) {
    for (int x = pDraw->x; x < pDraw->x + pDraw->iWidth ; x++) {

      rgb[ (y * 80 + x) * 3 + 2] = (outptr[ind] >> 16) & 0xFF; 
      rgb[ (y * 80 + x) * 3 + 1] = (outptr[ind] >> 8) & 0xFF;  
      rgb[ (y * 80 + x) * 3 + 0] = (outptr[ind]) & 0xFF;      

      ind++;
    }
  }
  return 1; // continue decode
} /* JPEGDraw888() for 80x60 */
bitbank2 commented 6 months ago

Can you share the image? There are 4 subsampling options and 4 sets of code to render the pixels x 4 scale options for each (16 permutations). It can help me narrow it down if you show me which type your image uses.

bitbank2 commented 6 months ago

ok, I found and fixed the issue. Please clone and retry and I'll do a new release when you've verified that it's fixed.

jameszah commented 6 months ago

Looks Good! Thanks!

image image