OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3263|回复: 5

请教:怎么对ram中的jpg数据直接解码

[复制链接]

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2012-10-15
在线时间
5 小时
发表于 2014-10-30 16:50:53 | 显示全部楼层 |阅读模式
5金钱
硬件:战舰的板子,TCP模块
目的:stm32接收TCP的jpg文件数据,存到缓存,然后解码显示
参考:光盘中 实验42-图片显示实验 的程序,用图片解码库 tjpgd 解码

目前传输图片无误,问题出在解码上,移植tjpgd主要是提供infunc和outfunc函数,即输入数据和输出显示。
光盘中实验程序中的infunc函数的实现是:(tjgpd.c 1033行)
[mw_shl_code=c,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]
其中用了文件读的方式,读到buf里面。我希望改成直接读ram里现成的,于是改成:
[mw_shl_code=c,true]u32 jpeg_in_func(JDEC* jd,u8* buf,u32 num) {     static u32 offset=0;     if(buf){ // buf=Rx_Buffer+offset; memcpy(buf,Rx_Buffer+offset,num); offset+=num;     } //    else //{ // offset=0; //}     return num; } 其中Rx_Buffer是ram中的jpg数据;我看了,和传输的文件内容一致。 但是经jd_prepare函数调用后buf中的数据总是不正确,不知这段程序怎么写,请大家看看问题在哪。 另:jd_prepare函数中定义了BYTE *seg,调用上面函数时作为u8* buf的实参传递进去,我跟踪了一下,有时候在jpeg_in_func函数中buf被赋值了,可返回时seg还是原来的值没变,不知何故。 不知哪位兄弟做过在RAM中直接解码的,希望指教一下![/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

兄弟,建议你参考下论坛骤雨龙元发的一个407视频播放例程,他的就是直接TJPGD,解码ram的jpg数据流。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165462
金钱
165462
注册时间
2010-12-1
在线时间
2114 小时
发表于 2014-10-30 16:50:54 | 显示全部楼层
兄弟,建议你参考下论坛骤雨龙元发的一个407视频播放例程,他的就是直接TJPGD,解码ram的jpg数据流。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2012-10-15
在线时间
5 小时
 楼主| 发表于 2014-10-31 11:08:47 | 显示全部楼层
谢谢原子,你说的我马上去搜搜看,我自己已经解决了,就是自定义一个结构,模拟文件指针
typedef struct {
u32 size;
u8* addr;
u8* ptr;
} _jpg_ram;
extern _jpg_ram  jpgram;

u32 jpeg_in_func(JDEC* jd,u8* buf,UINT num) 

if(buf)
{
memcpy(buf,jpgram.ptr,num);
jpgram.ptr+=num;
return num;
}
else
{
jpgram.ptr+=num;
return num;
}
}

给大家参考吧。

现在的问题是,用windows画图保存的图片可以正确显示,但有些图片虽然解码成功,显示出来的是破损的图像,有点诡异的感觉!
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2012-10-15
在线时间
5 小时
 楼主| 发表于 2014-10-31 11:50:10 | 显示全部楼层
试了一下,用fast解码偶尔会图像解码不完整
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2016-10-5
在线时间
34 小时
发表于 2016-12-29 07:59:02 来自手机 | 显示全部楼层
楼主是怎么将tcp发过来的jpg存成完整的一帧jpg缓存的,请教一下楼主和原子哥。
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-7-26
在线时间
7 小时
发表于 2017-7-30 21:58:38 来自手机 | 显示全部楼层
可以看下楼主的程序吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-19 22:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表