2006-2-27日
来源:互联网 发布:html5自助建站系统源码 编辑:程序博客网 时间:2024/04/27 13:37
decoder_file_stream流类提供了一个4096字节的缓冲区,对缓冲区的操作有get_bits_1()和get_bits_2(),缓冲区有指向当前所读字节的指针uchar *Pin_buf_ofs。缓冲区为 uchar in_buf[JPGD_INBUFESIZE + 128],不知道padd指的是什么。还有缓冲区未读字节数in_buf_left,当get_bits_1()和get_bits_2()读到超过缓冲区时(这两个函数都是读一个uint类型的位缓冲区bit_buf的,这个缓冲区是32位,每次读的时候都是读的高n位,n必须小于等于32,并且用一个整数bits_left来记录剩下未读的位数,当调用get_bits时读得超过了剩余位数,将调用get_char()来读缓冲区,一次读两个uchar,并且放到位缓冲区的高16位。get_char()函数检查in_buf_left,当为0时就调用prep_in_buffer(),从而重新开始读file_stream,填充缓冲区)。
这是全部的对输入的读取操作的函数,可以看出,为了使得代码对两种字节序都适用,get_bits这族函数写的很复杂,并且操作也较多,如果重写,可以牺牲代码的可移植性,采用一次读一个int字节,甚至更多,来提高效率,因为arm是采用big_endian,跟jpeg文件的字节序是一样的。
huffman解码的几个函数写的很复杂,还并没完全看懂。
读取标记并且初始化的函数写的也很复杂,原因是它是要支持progressive jpeg的,所以要支持重读标记,重新初始化,而我们现在只需要在开始读一下并且初始化一下就可以了,所以我作了简化。我希望还能有进一步的简化。
write_tga部分已经率先改成了c,但是前面的两个类decoder_file_stream和jpeg_decoder因为连接的紧密,以及函数和变量的众多,暂时还不好下手(已经做了数次尝试,但均不成功)。
- 2006-2-27日
- 2006-2-27日
- 2月27日
- 2月27日
- 2月27日
- 2006年2月1日~3日 星期二 雨
- 27日
- 2006年9月27日 培训
- 2006年9月27日星期三
- 2006年 2月02日 阴
- 2006年2月16日
- 2006年2月17日
- 2006年2月31日
- 2006年4月2日
- 2006年10月2日
- 2011年2月27日
- 2月26-27日 IT战略规划
- 2月27日学习记录
- IceSword似乎被研究的差不多了
- 32位代码优化常识(转载)
- SQL盲注攻击技术综述
- 关于VBS调用MSWinsock控件
- 《Java与模式》学习笔记之五――抽象工厂模式(Abstract Factory Pattern)
- 2006-2-27日
- ASP中调用Access中的查询
- 先要声明一下
- Struts + Spring + Hibernate 框架资源--整理
- 2006-2-27日
- linux网络命令.txt
- Basm也比较方便
- 论硕士研究生的就业尴尬
- string 类型和 pchar 的区别