高级会员

- 积分
- 839
- 金钱
- 839
- 注册时间
- 2020-11-13
- 在线时间
- 135 小时
|
1金钱
本帖最后由 wangertan 于 2021-3-16 17:31 编辑
stm32h750 jpeg硬件编解码
1 解码 现在是将一个图片用cube自带的软件工具转换为数组后,使用jpeg功能对图片进行解码 可以显示。
2 编码 将一个图片转换为数组后,对图片进行编码(压缩),一直失败。
参考的是cube自带的demo 一直死在
do
{
JPEG_EncodeInputHandler(&JPEG_Handle);
jpeg_encode_processing_end = JPEG_EncodeOutputHandler(&JPEG_Handle); //死在这个函数里边
}while(jpeg_encode_processing_end == 0); 不知道是不是我的参数设置错误了,还是图片的类型和转换方式错误,一直在调试。
有没有做过jpeg编码和解码的伙伴,求教?
顶1 感觉是驱动有点毛病 再调下
顶2 不会进入这个函数
void HAL_JPEG_DataReadyCallback (JPEG_HandleTypeDef *hjpeg, uint8_t *pDataOut, uint32_t OutDataLength)
{
Jpeg_OUT_BufferTypeDef.State = JPEG_BUFFER_FULL; ///////进入不了这个函数 就不会改变这个值
Jpeg_OUT_BufferTypeDef.DataBufferSize = OutDataLength;
HAL_JPEG_Pause(hjpeg, JPEG_PAUSE_RESUME_OUTPUT);
Output_Is_Paused = 1;
HAL_JPEG_ConfigOutputBuffer(hjpeg, Jpeg_OUT_BufferTypeDef.DataBuffer, CHUNK_SIZE_OUT);
}
进入不了这个函数 就不会改变这个值 Jpeg_OUT_BufferTypeDef.State 就会影响下边函数的if判断
uint32_t JPEG_EncodeOutputHandler(JPEG_HandleTypeDef *hjpeg)
{
uint32_t bytesWritefile = 0;
/* Output buffer is full */
if(Jpeg_OUT_BufferTypeDef.State == JPEG_BUFFER_FULL)
{
/* Write to file */
f_write(pJpegFile, Jpeg_OUT_BufferTypeDef.DataBuffer, Jpeg_OUT_BufferTypeDef.DataBufferSize, (UINT*)(&bytesWritefile));
/* Reset output buffer */
Jpeg_OUT_BufferTypeDef.State = JPEG_BUFFER_EMPTY;
Jpeg_OUT_BufferTypeDef.DataBufferSize = 0;
/* Close file if encoding was end */
if(Jpeg_HWEncodingEnd != 0)
{
return 1;
}
/* Or start to reveive data from encoder */
else if((Output_Is_Paused == 1) && (Jpeg_OUT_BufferTypeDef.State == JPEG_BUFFER_EMPTY))
{
Output_Is_Paused = 0;
HAL_JPEG_Resume(hjpeg, JPEG_PAUSE_RESUME_OUTPUT);
}
}
return 0;
}
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
void HAL_JPEG_DataReadyCallback (JPEG_HandleTypeDef *hjpeg, uint8_t *pDataOut, uint32_t OutDataLength)不知道为啥不进入这个函数 看我改变参数试试。
|
最佳答案
查看完整内容[请看2#楼]
似乎找到问题了 typedef struct
{
uint8_t State;
uint8_t *DataBuffer;
uint32_t DataBufferSize; //不是u8
}JPEG_Data_BufferTypeDef;
昨天晚上就在怀疑这个数据出了问题 今天看了下 改为u32后就可以跑完了 应该是手抖改错了
现在是在一个工程编码 在另一个工程解码 是可以的。
但是要是我想在一个工程里使用编码和解码就会出错。驱动部分都不一样 再改改看把
可以了可以了 可以编码和解码了。ok了。 ...
|