From c490702340d5a4939b700bc25d3669fb1d4e159c Mon Sep 17 00:00:00 2001 From: "C.S.M" Date: Mon, 9 Jun 2025 14:14:20 +0800 Subject: [PATCH] bugfix(jpeg): eliminate random black line on jpeg decoder --- components/esp_driver_jpeg/jpeg_decode.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/esp_driver_jpeg/jpeg_decode.c b/components/esp_driver_jpeg/jpeg_decode.c index 76c6680168..1a4c230649 100644 --- a/components/esp_driver_jpeg/jpeg_decode.c +++ b/components/esp_driver_jpeg/jpeg_decode.c @@ -247,6 +247,10 @@ esp_err_t jpeg_decoder_process(jpeg_decoder_handle_t decoder_engine, const jpeg_ ret = esp_cache_msync((void*)decoder_engine->header_info->buffer_offset, decoder_engine->header_info->buffer_left, ESP_CACHE_MSYNC_FLAG_DIR_C2M | ESP_CACHE_MSYNC_FLAG_UNALIGNED); assert(ret == ESP_OK); + // Before 2DDMA starts, invalidate cache ahead of time. + ret = esp_cache_msync((void*)decoder_engine->decoded_buf, outbuf_size, ESP_CACHE_MSYNC_FLAG_DIR_M2C); + assert(ret == ESP_OK); + ESP_GOTO_ON_ERROR(dma2d_enqueue(decoder_engine->dma2d_group_handle, &trans_desc, decoder_engine->trans_desc), err2, TAG, "enqueue dma2d failed"); bool need_yield; // Blocking for JPEG decode transaction finishes.