你好
我正在尝试以灰度格式对 (160*120) 的图像进行编码 - 即 1bpp 色深的 bmp 文件。
不幸的是,编码器无法完成其转换。并且不会调用“HAL_JPEG_EncodeCpltCallback”。
我的设置基于来自 ST 的“JPEG_EncodingUsingFs_DMA”,虽然此示例是为 24 位像素深度设计的,但我尝试为我的应用程序修改它——将“ReadBmpRgbLines”更改为仅读取一种颜色:
- static void ReadBmpRgbLines(FIL *file, JPEG_ConfTypeDef Conf, uint8_t * pDataBuffer, uint32_t *BufferSize)
- {
- uint32_t bytesReadfile = 1;
- uint32_t CurrentBlockLine = 1;
- *BufferSize = 0;
- while((CurrentLine <= Conf.ImageHeight) && (CurrentBlockLine <= MAX_INPUT_LINES))
- {
- f_lseek (file,BMP_HEADER_SIZE + Conf.ImageWidth *(Conf.ImageHeight - CurrentLine)*1);
- f_read (file, pDataBuffer , Conf.ImageWidth*1 , (UINT*)(&bytesReadfile));
- pDataBuffer += bytesReadfile;
- *BufferSize += bytesReadfile;
- CurrentLine +=1 ;
- CurrentBlockLine += 1;
- }
- }
我的编码器值如下:
- #define JPEG_RGB_FORMAT JPEG_RGB888
- #define JPEG_CHROMA_SAMPLING JPEG_444_SUBSAMPLING
- #define JPEG_COLOR_SPACE JPEG_YCBCR_COLORSPACE
- #define JPEG_IMAGE_QUALITY 100
- #define MAX_INPUT_WIDTH 800
- #define MAX_INPUT_LINES 8
我注意到为生成新的 MCU 块而调用的函数“卡在”同一 bmp 图像行上。
任何人都可以发送有关此问题的提示吗?我必须为编码器设置不同的参数吗?