rainbowzc

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::

2007年6月27日

摘要: 那天摄像时背景是雪白的墙,结果解码时问题出现了。问题现象: 解码的图像在墙壁部分有很明显的方块,其它图像变化大的地方(如人脸部分)情况还好。问题分析: 以前没有这种情况的呀。改变了的只有编码速率。原来为了兼顾网络状况,我们将码率降得比较低。码率小,量化的精度就低,宏块与宏块之间的量化误差变大。当颜色变化很平缓时,这种很小的误差就变得明显了,图像上的体现就是宏块边界出现明显的颜色跳变,也就是方块。问题解决: 还好mpeg4标准考虑到了这个现象,他们提供了一种叫deblock的解码后处理方法来弱化这种现象。实际将deblock添加后图像确实平滑许多,方块也没了。deblock原理: 大概做法就是将 阅读全文
posted @ 2007-06-27 22:48 ct 阅读(175) 评论(0) 推荐(0) 编辑

摘要: 要做程序的优化,最彻底的方法当然是汇编!还有除了汇编以外(除了二进制)能让你对你的处理器有更全面的控制吗?!对于ARM汇编,作为一个初学者,也就只好先补补基础了@_@。 首先,程序段的定义从AREA 开始,它命名一个代码区域,注意,用非阿拉伯数字作为名字时,应该用|把名字包起来,CODE关键字声明程序(猜测),readonly声明访问权限(猜测)。EXPORT 来表示某个可以用作外部连接的符号(简单点,应该就是函数名?)。END用来结尾。#eg: AREA |.text|, CODE, READONLY EXPORT square ; int square(int i)square ;armc 阅读全文
posted @ 2007-06-27 22:47 ct 阅读(327) 评论(0) 推荐(0) 编辑

摘要: 1.arm c编译器默认char类型是8位无符号的,与其它编译器有点不同2.局部变量最好用int型,因为寄存器是32位的,如果变量不是32位的就需要额外的指令限制范围. 例如:变量i,操作i++ ,如果int i, 则只需add r1,r1,#1 如果char i,则变成add r1,r1,#1 and r1,r1,0xff.多了一条指令3.循环最好用do{}while()型的,相比for(;;)型循环每次循环可以节省3条指令4.函数参数也最好用int 型的,例如 short add(short x,short y) 编译器为了保证输入参数的是short型的会添加额外的指令,比如确保x是sh. 阅读全文
posted @ 2007-06-27 22:46 ct 阅读(239) 评论(0) 推荐(0) 编辑

摘要: 1.加减法,逻辑操作占一个周期,目的地址是PC寄存器时增加一个周期。分支指令占3个周期。在cache命中的情况下,16位和8位的装载指令(LDRH、LDRH等)占一个周期,但紧跟的2个周期不能使用装入的数据。32位装载指令占一个周期,紧跟的一个周期不能使用装载数据。如果装载入PC,同样要增加2个周期。 LDRr1,[r2] ADD r1,r1,r3ADD r4,r4,r5 占4个周期改变次序后 LDRr1,[r2] ADD r4,r4,r5ADD r1,r1,r3占3个周期2. load指令占时间比较长,在循环中可以使用预载的方法将load与跳转指令放在一起,减少流水线的断流。例如:loop 阅读全文
posted @ 2007-06-27 22:44 ct 阅读(370) 评论(0) 推荐(0) 编辑

摘要: 大家知道MOBIL5.0开始,EVC4开发的工程就无法进行DEBUG了,而必须使用VS.NET2005中的VC++来实现。但是以前我们费了很大心力做成的项目,也不能重新来写。今天通过一上午的研究,将转化方法贴出来和大家共勉。这里我们以DIALOGBASED工程为例。首先用EVC4建立一个DIALOGBASED的POCKETPC2003工程。此工程名我们暂定为TXDEMO。我们也可以在对话框放置一个BUTTON,在单击事件里,添加AfxMessageBox(L”Test”);以便升级到VS.NET2005后,测试资源对应情况。此时,保存TXDEMO工程,并关闭掉EVC4开发工具。此时用VS.NE 阅读全文
posted @ 2007-06-27 09:28 ct 阅读(200) 评论(0) 推荐(0) 编辑