Beken BK7256 320 MHz dual-core RISC-V IoT MCU offers WiFi 6, Bluetooth 5.2, JPEG video encoder/decoder

Beken BK7256 development board

Until now, I had only heard about Beken Bluetooth audio chips, but I’ve just been informed the company is also making WiFi chips such as the BK7256 that are notably found in some Tuya Smart Home modules. Beken offers both RISC-V and Arm WiFi and Bluetooth chips with features summarized as follows: BK7235 single-core RISC-V MCU up to 320 MHz with 2.4 GHz WiFi 6 802.11ax and Bluetooth 5.2 LE, 4MB flash, 512KB SRAM, optional 4MB PSRAM BK7236 dual-core Arm MCU up to 120 to 240 MHh with 2.4 GHz WiFi 6 802.11ax and Bluetooth 5.3 dual mode, 4MB flash, 512KB SRAM, optional 4MB PSRAM BK7237 dual-core RISC-V MCU up to 320 MHz with 2.4 GHz WiFi 6 802.11ax and Bluetooth 5.2 dual mode, 4 or 8MB flash, 512KB SRAM, optional 4MB PSRAM BK7256 dual-core RISC-V MCU up to 320 MHz with 2.4 GHz WiFi 6 802.11ax and Bluetooth 5.2 […]

JPEGDEC is a Faster JPEG Arduino Library Designed for 32-bit MCUs

In order to ensure software compatibility, Arduino libraries are supposed to work on various types of hardware from 8-bit microcontrollers with a limited amount of memory to more powerful 32-bit chips like STM32 Arm Cortex-M MCU or ESP32 dual-core Tensilica WiSoC that can access a larger amount of RAM. This is all good, but in some cases, this may affect performance. Larry Bank noticed this when looking for a JPEG viewers for Arduino and only found ones which sacrificed speed to work on MCUs with very little RAM. So he started to work on JPEDDEC JPEG Arduino library optimized for speed and compatible with any MCU with at least 20K of RAM. Optimizations go beyond just loading more data into memory, as Larry explains in a blog post, the library also performs the removal of stuffed bytes, optimize the Huffman decode and DCT parts, and more. Some of the key […]

Google Pik Image Format Improves on Lossy JPEG and Lossless PNG

Google Pik butteraugli

JPEG lossy compression is still used on most photos in the Internet, while PNG is still the preferred format for lossless compressions. Back in 2010, Google unveiled WebP to improve on both, but that’s only very recently that I started to see a few webp image on the Internet. The company has been working on yet another image for with Pik lossy/lossless image format designed for high quality and fast decoding. Some of the features enabling high quality: Built-in support for psychovisual modeling via adaptive quantization and XYB color space 4×4..32×32 DCT, AC/DC predictors, chroma from luma, nonlinear loop filter, enhanced DC precision Full-precision (32-bit float) processing, plus support for wide gamut and high dynamic range Features allowing faster decoding over 1 GB/s multi-threaded: Parallel processing of large images SIMD/GPU-friendly, benefits from SSE4 or AVX2 Cache-friendly layout Fast and effective entropy coding: context modeling with clustering, rANS Google Pik is […]

Optimizing JPEG Transformations on Qualcomm Centriq Arm Servers with NEON Instructions

Arm servers are already deployed in some datacenters, but they are pretty new compared to their Intel counterparts, so at this stage software may not always be optimized as well on Arm as on Intel. Vlad Krasnow working for Cloudflare found  one of those unoptimized cases when testing out Jpegtran – a utility performing lossless transformation of JPEG files – on one of their Xeon Silver 4116 Server:

and comparing it to one based on Qualcomm Centriq 2400 Arm SoC:

Nearly four times slower on a single core. Not so good, as the company aims for at least 50% of the performance since the Arm processor has double the number of cores. Vlad did some optimization on The Intel processor using SSE instructions before, so he decided to look into optimization the Arm code with NEON instructions instead. First step was to check which functions may slowdown the […]

Google Releases Guetzli Open Source JPEG Encoder Generating 20 to 35% Smaller Files Compared to Libjpeg

Google has been working one several front to make data and images smaller, hence faster to load from the Internet, with project such as Zopfli algorithm producing smalled PNG & gzip files, or WebP image compression algorithm that provides better lossless compression compare to PNG, and better lossy compression compared to JPEG, but requires updated support from clients such as web browsers. Google has now released Guetzli algorithm that improve on the latter, as it can create JPEG files that are 20 to 35% smaller compared to libjpeg with similar quality, and still compatible with the JPEG format. The image above shows a close up on a phone line with the original picture, the JPEG picture compressed with libjpeg with the artifacts around the line, and a smaller JPEG picture compressed with Guetzli with less artifacts. You can find out more about the algorithm in the paper entitled “Guetzli: Perceptually […]

Lepton Image Compression Achieves 22% Lossless Compression of JPEG Images (on Average)

Dropbox stores billions of images on their servers, most of them JPEGs, so if they can reduce the size of pictures it can have a big impact on their storage requirements, so the company developed Lepton image compression, which – on average – achieved 22% lossless compression on the images stored in their cloud. Compression and decompression speed is also important, since the files are compressed when uploaded and uncompressed on the fly when downloaded so that the complete process is transparent to the end users, who only see JPEG photos, and the company claims 5MB/s compression, and 15MB/s compression, again on average. The good news is that the company released Lepton implementation on Github, so in theory it could also be used to increase the capacity of NAS which may contain lots of pictures. So I’ve given it a try in a terminal window in Ubuntu 14.04, but it […]

FLIF Lossless Image Format Claims to Outperform PNG, JPEG2000, WebP, and BPG

FLIF, which stands for Free Lossless Image Format, is a new lossless image format that is said to provide better compression ration than PNG, lossless JPEG2000, lossless WebP, and lossless BPG for all king of images including medical images, geographical maps, cliparts and so on. Beside being lossless, FLIF is also progressive, so a lower quality version of the image can be displayed early while the download is still in progress. The developer has uploaded a video comparing how a PNG image and FLIF image would load in a slow network. Other FLIF features include: Lossless compression Greyscale, RGB, RGBA Up to 16 bits color depth per channel (high dynamic range) Interlaced (default) or non-interlaced Animation support “Encoding and decoding speeds are not blazingly fast, but they are in the right ballpark” Based on MANIAC (Meta-Adaptive Near-zero Integer Arithmetic Coding) algorithm developed by Jon Sneyers and Pieter Wuille. (However details […]

Faster JPEG decoding on ARM with libjpeg-turbo and NEON Instructions

libjpeg-turbo is based on libjpeg, but uses SIMD instructions (MMX, SSE2, etc.) to accelerate JPEG compression and decompression on x86 targets. On such systems, libjpeg-turbo is generally 2-4x as fast as the original version of libjpeg with the same hardware. ARM does not support MMX or SSE2 instructions, but it has its own SIMD instructions processed by the NEON Engine on ARM Cortex Core A5, A8, A9 and A15. ARM claims that “NEON technology can accelerate multimedia and signal processing algorithms such as video encode/decode, 2D/3D graphics, gaming, audio and speech processing, image processing, telephony, and sound synthesis by at least 3x the performance of ARMv5 and at least 2x the performance of ARMv6 SIMD.” Linaro worked on libjpeg-turbo and added NEON support to it. The code is available on launchpad at https://code.launchpad.net/~tom-gall/linaro/libjpeg-turbo Linaro has also provide benchmark result for libjpeg-turbo with a 12 Mpixel image on TI OMAP4 (Pandaboard) using the […]

Memfault IoT and embedded debugging platform