STM32F767 阿波罗开发板,图片显示问题

2019-07-20 11:51发布

[mw_shl_code=applescript,true]jd->dptr = seg; jd->dctr = 0; jd->dmsk = 0;        /* Prepare to read bit stream */
                        if (ofs %= JD_SZBUF) {                                                /* Align read offset to JD_SZBUF */
                                jd->dctr = jd->infunc(jd, seg + ofs, JD_SZBUF - (UINT)ofs);
                                jd->dptr = seg + ofs - 1;
                        }[/mw_shl_code]
在图片分析函数中prepare函数中,最后进入0xDA中,为什么要对ofs取余,ofs是之前所有图片段的长度,这里为何要seg+ofs?输入缓冲区容量是JD_SZBUF - (UINT)ofs,那么是不是最多读取这么多字节,那么是不是读取图片的大小就有限制了???
第二个疑问:我如果用图片已经是数组格式的数据,想解析成RGB数据,那么res=jd_prepare(jpeg_dev,jpeg_in_func,jpg_buffer,JPEG_WBUF_SIZE,f_jpeg);这个函数中调用的jpeg_in_func函数FIL *dev=(FIL*)jd->device;这句话是不是可以去掉了,当然之前的open和read函数都去掉,帖上源码:
[mw_shl_code=applescript,true]u32 jpeg_in_func(JDEC* jd,u8* buf,u32 num)
{
    u32  rb;
    FIL *dev=(FIL*)jd->device;
    if(buf)
    {
        f_read(dev,buf,num,&rb);′
        return rb;
    }else return (f_lseek(dev,f_tell(dev)+num)==FR_OK)?num:0;
}  [/mw_shl_code]
我改的代码:
[mw_shl_code=applescript,true]u32 jpeg_in_func(JDEC* jd,u8* buf,u32 num)
{
        u32 i;
  u32  rb;
       
  FIL *dev=(FIL*)jd->device;
        for( i = 0;i<num;i++)
        {
                buf = udata;//初始化udata等于jpeg数据数组
        }
        rb = i+1;
       
        for(i=0;i < (jnpDataNum-num);i++)
        {
                pdata = udata[i+num];
        }
        jnpDataNum -=num;
        for(i=0;i < jnpDataNum;i++)
        {
                udata = pdata;
        }               
        return rb;
}[/mw_shl_code]但是这么写图片没有显示出来,至于后面的代码,我认为可以完全照搬原子哥的代码,所以我没有改动,后面的很多代码都是对图片的数据处理,第二个问题就是这里,这个函数如何改写?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。