From fe1a84b1f66e0d29022255a3c1dc8118cbf997a5 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Wed, 9 Jun 2021 00:38:49 +0200 Subject: [PATCH] Keep JPEG MDMA handles local. --- src/omv/imlib/imlib.h | 1 + src/omv/imlib/jpeg.c | 10 ++++++++-- src/omv/ports/stm32/stm32fxxx_hal_msp.c | 10 ++-------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/omv/imlib/imlib.h b/src/omv/imlib/imlib.h index 4c68ee6e2..76b8833cc 100644 --- a/src/omv/imlib/imlib.h +++ b/src/omv/imlib/imlib.h @@ -981,6 +981,7 @@ void bmp_write_subimg(image_t *img, const char *path, rectangle_t *r); #if (OMV_HARDWARE_JPEG == 1) void imlib_jpeg_compress_init(); void imlib_jpeg_compress_deinit(); +void jpeg_mdma_irq_handler(); #endif bool jpeg_compress(image_t *src, image_t *dst, int quality, bool realloc); int jpeg_clean_trailing_bytes(int bpp, uint8_t *data); diff --git a/src/omv/imlib/jpeg.c b/src/omv/imlib/jpeg.c index 92ce38f69..16d55b68c 100644 --- a/src/omv/imlib/jpeg.c +++ b/src/omv/imlib/jpeg.c @@ -546,8 +546,8 @@ static void jpeg_get_mcu(image_t *src, int x_offset, int y_offset, int dx, int d static JPEG_HandleTypeDef JPEG_Handle = {}; static JPEG_ConfTypeDef JPEG_Config = {}; -MDMA_HandleTypeDef JPEG_MDMA_Handle_In = {}; -MDMA_HandleTypeDef JPEG_MDMA_Handle_Out = {}; +static MDMA_HandleTypeDef JPEG_MDMA_Handle_In = {}; +static MDMA_HandleTypeDef JPEG_MDMA_Handle_Out = {}; static int JPEG_out_data_length_max = 0; static volatile int JPEG_out_data_length = 0; @@ -576,6 +576,12 @@ void JPEG_IRQHandler() IRQ_EXIT(JPEG_IRQn); } +void jpeg_mdma_irq_handler() +{ + HAL_MDMA_IRQHandler(&JPEG_MDMA_Handle_In); + HAL_MDMA_IRQHandler(&JPEG_MDMA_Handle_Out); +} + void HAL_JPEG_GetDataCallback(JPEG_HandleTypeDef *hjpeg, uint32_t NbDecodedData) { HAL_JPEG_Pause(hjpeg, JPEG_PAUSE_RESUME_INPUT); diff --git a/src/omv/ports/stm32/stm32fxxx_hal_msp.c b/src/omv/ports/stm32/stm32fxxx_hal_msp.c index d4ac01674..a4af0dd6c 100644 --- a/src/omv/ports/stm32/stm32fxxx_hal_msp.c +++ b/src/omv/ports/stm32/stm32fxxx_hal_msp.c @@ -11,7 +11,7 @@ #include STM32_HAL_H #include "axiqos.h" #include "omv_boardconfig.h" - +#include "imlib.h" #include "irq.h" /* GPIO struct */ @@ -653,17 +653,11 @@ void HAL_MspDeInit(void) } -#if (OMV_HARDWARE_JPEG == 1) -extern MDMA_HandleTypeDef JPEG_MDMA_Handle_In; -extern MDMA_HandleTypeDef JPEG_MDMA_Handle_Out; -#endif - void MDMA_IRQHandler() { IRQ_ENTER(MDMA_IRQn); #if (OMV_HARDWARE_JPEG == 1) - HAL_MDMA_IRQHandler(&JPEG_MDMA_Handle_In); - HAL_MDMA_IRQHandler(&JPEG_MDMA_Handle_Out); + jpeg_mdma_irq_handler(); #endif IRQ_EXIT(MDMA_IRQn); }