linux jpeg视频传输四部曲之三

接上一篇

(3)不经文件存储步骤,直接连续、循环发送jpeg格式的数据

这一步的难点在于在使用 jpeglib 库的前提下,不经过文件存储的步骤而直接获得由RGB原始数据经jpeg编码过的jpeg data。通过Google我找到了两种实现方法。一种方法是通过修改库函数jpeg_stdio_dest (j_compress_ptr cinfo, FILE * outfile)的实现方式,将其改为jpeg_stdio_dest JPP((j_compress_ptr cinfo, char* outdata));,其中间步骤的实现颇为复杂。详细方法可以参看《通过简单修改libjpeg源代码,实现内存内位图的压缩及解压缩》一文,另一种方法是直接通过设置struct jpeg_destination_mgr,来指定jpeg数据的输出buffer,并计算得到缓冲区的大小,详见《libJPEG调用程序》一文。

其实这两种方法本质上一一样的,只不过创出第一种方法的人没有认识到jpeg_stdio_dest (j_compress_ptr cinfo, FILE * outfile)的本质所在,相当于走了一趟弯路。

解决了上面的问题,这一路就算走通了。

本来以为通过这一步减少了中间存储文件,读取文件的过程,程序执行速度上会提高不少,可是从实际效果看,好像也没过大提高,大概也就每秒4-5帧吧。所以这样看来,程序的速度瓶颈应该是在jpeg数据的压缩环节和发送环节。这就引出了下面的用多线程方法实现连续发送jpeg格式的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值