hans5966 发表于 2019-12-10 16:08:57

JPEG 硬体解码问题

各位好,

想与各位请教,我用STM32CubeMX 建立了以FatFs 作为读取JPG档案,且用硬体解码于屏幕显示。
有参考过CubeMX的程序( STM32H743EVAL ->JPEG_DecodingUsingFs_DMA),但是似乎有些状况,不知板上是否有人遇到类似的问题?
如下
/*##-8- Wait till end of JPEG decoding and perfom Input Processing in BackGround#*/
          do
          {
在do..while 部分一直不断执行无法使得 JpegProcessing_End = 1

以下为JPEG_InputHandler,一到JPEG_BUFFER_EMPTY 就 Return 0

uint32_t JPEG_InputHandler(JPEG_HandleTypeDef *hjpeg)
{
if (Jpeg_HWDecodingEnd == 0)
{
    if(Jpeg_IN_BufferTab.State == JPEG_BUFFER_EMPTY)
    {
      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();
      }
      
      if((Input_Is_Paused == 1) && (JPEG_IN_Write_BufferIndex == JPEG_IN_Read_BufferIndex))
      {
      Input_Is_Paused = 0;
      HAL_JPEG_ConfigInputBuffer(hjpeg,Jpeg_IN_BufferTab.DataBuffer, Jpeg_IN_BufferTab.DataBufferSize);   
      
      HAL_JPEG_Resume(hjpeg, JPEG_PAUSE_RESUME_INPUT);
      }
      
      JPEG_IN_Write_BufferIndex++;
      if(JPEG_IN_Write_BufferIndex >= NB_INPUT_DATA_BUFFERS)
      {
      JPEG_IN_Write_BufferIndex = 0;
      }            
    }
    return 0;
}
else
{
    return 1;
}
}其中另一个可使得 Jpeg_HWDecodingEnd = 1 的程序
void HAL_JPEG_DecodeCpltCallback(JPEG_HandleTypeDef *hjpeg)
{   
   Jpeg_HWDecodingEnd = 1;
}但因未开启Callback而无法使用

有高手能相助吗?


非常感谢!

慎微 发表于 2019-12-10 17:48:47

这个 JPEG_InputHandler仅仅是 写 处理;对写指针JPEG_IN_Write_BufferIndex处理限定,看不出啥来;
还应结合JPEG_OutputHandler一起看 读处理;才能了解 JPEG_BUFFER_EMPTY 的原因;
您有平台,用KEIL跟踪处理;状态变 JPEG_BUFFER_EMPTY即为断点, 应该能找到原因

hans5966 发表于 2019-12-11 08:45:28

mikecai 发表于 2019-12-10 17:48
这个 JPEG_InputHandler仅仅是 写 处理;对写指针JPEG_IN_Write_BufferIndex处理限定,看不出啥来;
还应结 ...

感谢 mikecai 的协助
虽然说这个程序是官方的,不过在这个程序中却没有设置JPEG_OutputHandler,后来在F769范例中找到类似的方式,不过他的程序转成RGB的方式却不同。

这个方面我再多确认问题面,还是再次感谢 您的协助!!
页: [1]
查看完整版本: JPEG 硬体解码问题