.. _changelog_v4_5_4: v4.5.4 ====== v4.5.4 adds PAG7920 sensor support and STM32 YUV422 hardware-JPEG with controllable subsampling, speeds up JPEG encoding and morphology, and fixes the MQTT, RTSP, and BLE libraries. .. contents:: On this page :local: :depth: 1 Highlights ---------- - **PAG7920** PixArt image sensor support. - **YUV422 hardware JPEG** on STM32, with controllable JPEG subsampling. - **Faster** JPEG YUV sub-sampling and SIMD-accelerated erode/dilate. - **Breaking:** ``erode()``/``dilate()``/``binary()`` argument parsing was standardized (see the breaking change). New features ------------ - **STM32 YUV422 hardware JPEG** — the hardware JPEG encoder now accepts YUV422 input. - **JPEG subsampling control** — a new option to control JPEG chroma subsampling. - **PAG7920** — added support for the PixArt PAG7920 image sensor. Other changes and improvements ------------------------------ - Faster JPEG YUV422/420 UV sub-sampling and SIMD-accelerated ``erode()`` / ``dilate()``. - ``ucryptolib`` (crypto/TLS) re-enabled on the i.MX RT (mimxrt) port. - The ``pid.py`` library now uses ``ticks_ms()`` instead of the deprecated ``millis()``. Bug fixes --------- Libraries: - Fixed MQTT SSL parameters; fixed the RTSP library to work with VLC. System and sensors: - Fixed the OpenMV RT1060 BLE baud rate and STM32 SPI slave-mode CS handling (the CS pin is no longer driven in slave mode). - Fixed an out-of-bounds crash in ``set_pixel()`` anti-aliased drawing. Hardware and board support -------------------------- - **PAG7920** PixArt image sensor. - **Arduino GIGA** — enabled the camera RESET/PEN pin and GC2145 rotation. Breaking API changes -------------------- User-visible API breaks between v4.5.3 and v4.5.4. The only breaking change is the standardized argument parsing for the binary morphology methods. .. _v4_5_4_argparse: ``erode`` / ``dilate`` / ``binary`` argument parsing *(behavior)* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``Image.erode()``, ``Image.dilate()`` and ``Image.binary()`` were moved onto the standardized ``mp_arg_parse_all`` argument parser. Calls that relied on the previous positional/keyword ordering may need adjusting. *Commits:* `f52360271 `__, `e63fbc7c2 `__ Migration checklist ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Re-check the argument order in any ``erode()`` / ``dilate()`` / ``binary()`` calls (:ref:`the morphology parsing change `). All other scripts run unchanged.