初级会员

- 积分
- 63
- 金钱
- 63
- 注册时间
- 2017-5-30
- 在线时间
- 14 小时
|

楼主 |
发表于 2018-8-20 14:49:52
|
显示全部楼层
说一下我的理解:
TjpgDec 主要修改两个入口函数,in_func(),out_func();
out_func(jd,Buff,sizeof(Buff)) 与JPG图片显示接口是一样的,所以用图片显示代码就可以;
in_func(jd,bitmap,rect) 涉及到两个变量,JDEC* jd(存放解码信息的结构体),Buff(待解码数据数组)
将AVI的视频流文件一个视频片段一次性写入Buff;
而 jd 存储的信息是以JPG文件为目标的,不能狗从AVI文件直接传入,有些需要手工添加对应解码参数;
例如已有的:
jd->dptr = fbuf;
jd->pool = Work_buf;/* Work memroy */
jd->sz_pool = sz_wbuf; /* Size of given work memory */
需要添加的:
jd->width=320;
jd->height=240;
等;
然后通过jd_decomp(jd,out_func,scale) 解码并调用out_func()显示每一帧图片;
通过USART设置的输出参数,能够看到 00dc,01dw交替出现,偏移量,帧尺寸;
jd 信息和 Buff 数据的变化;但lcd依旧没有图像显示
可能问题:jd结构体的解码信息可能就不是这样传递的;
Buff 数组数据不正确也可能不能显示
以下是通过串口得到的JDEC 信息对比:
step 1 是初始化时的数据
step 2 是传递后的参数配置
step 1.----------------
jd->dctr = 0.
jd->dptr = 0.
jd->inbuf= 0
jd->dmsk = 0
jd->inbuf= 0.
jd->scale= 0.
jd->msx = 0.
jd->msy = 0.
qtid[3] = 0. 0. 0.
dcv[3] = 0. 0. 0.
nrst=0
jd->width = 0.
jd->height= 134422704.
huffbits[2][2]=80320b0.8000c15.0.0.
huffcode[2][2]=8.10.0.1.
huffdata[2][2]=0.0.1.60000000.
jd->qttbl[4]=47.1.11.19.
jd->workbuf=44.
jd->mcubuf=134221631.
jd->pool=76786.
jd->sz_pool=134422704.
infunction=134422704.
------------------------------------------
step 2-------------------------------
jd->dctr = 116.
jd->dptr = 536876915.
jd->inbuf= 536874984
jd->dmsk = 0
jd->inbuf= 536874984.
jd->scale= 0.
jd->msx = 2.
jd->msy = 2.
qtid[3] = 0. 1. 1.
dcv[3] = 0. 0. 0.
nrst=0
jd->width = 320.
jd->height= 240.
huffbits[2][2]=200019e8.20001a1c.20001c14.20001c48.
huffcode[2][2]=200019f8.20001a2c.20001c24.20001c58.
huffdata[2][2]=20001a10.20001b70.20001c3c.20001d9c.
jd->qttbl[4]=200017e8.200018e8.0.0.
jd->workbuf=536878656.
jd->mcubuf=536879232.
jd->pool=536879616.
jd->sz_pool=3560.
希望有研究过TjpgDec 的给个指点 |
|