hans5966 发表于 2019-12-25 09:37:05

LCD+JPEG 解码记忆体空间问题

各位好!

想与各位请教,目前我正在使用JPEG解码器将图片从SD卡解码后显示到LCD,同时有显示问题,程序参考STM32H7官方JPEG,检查过后扩大Chunk值后有一点改善,可是仍然部分少图。
/* Private define ------------------------------------------------------------*/

#define CHUNK_SIZE_IN((uint32_t)(64 * 1024))//(4096)) //
#define CHUNK_SIZE_OUT ((uint32_t)(64 * 1024))//(64 * 1024))

#define JPEG_BUFFER_EMPTY 0
#define JPEG_BUFFER_FULL1

#define NB_OUTPUT_DATA_BUFFERS      2
#define NB_INPUT_DATA_BUFFERS       2

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/

FIL *pFile;   /* pointer to File object */

uint8_t JPEG_Data_InBuffer0;
uint8_t JPEG_Data_InBuffer1;


JPEG_Data_BufferTypeDef Jpeg_IN_BufferTab =
{
{JPEG_BUFFER_EMPTY , JPEG_Data_InBuffer0, 0},
{JPEG_BUFFER_EMPTY , JPEG_Data_InBuffer1, 0}
};

uint32_t JPEG_Decode_DMA(JPEG_HandleTypeDef *hjpeg, FIL *file, uint32_t DestAddress)
{
uint32_t i;

pFile = file;
FrameBufferAddress = DestAddress;
         
/* Read from JPG file and fill input buffers */
for(i = 0; i < NB_INPUT_DATA_BUFFERS; i++)
{
    if(f_read (pFile, Jpeg_IN_BufferTab.DataBuffer , CHUNK_SIZE_IN, (UINT*)(&Jpeg_IN_BufferTab.DataBufferSize)) == FR_OK)
    {
      Jpeg_IN_BufferTab.State = JPEG_BUFFER_FULL;
    }
    else
    {
      Error_Handler();
    }      
}
/* Start JPEG decoding with DMA method */
HAL_JPEG_Decode_DMA(hjpeg ,Jpeg_IN_BufferTab.DataBuffer ,Jpeg_IN_BufferTab.DataBufferSize ,(uint8_t *)FrameBufferAddress ,CHUNK_SIZE_OUT);

       
return 0;
}

还请各位协助!
谢谢!


页: [1]
查看完整版本: LCD+JPEG 解码记忆体空间问题