http://ffmpeg.blogbus.com/logs/517509.html
传统的视频解码程序一般都是将宏块解码的输出结果,送到一个buffer中,然后统一将这一块内存区的内容送入到显存中,供播放使用。
这样的话,对于嵌入式应用就会带来两个问题。1.就是中间经过了buffer,多了一遍内存拷贝的动作。2.就是到一帧解码结束后,这个buffer中的大部分数据都已经不在cache中了,会带来比较大的cache miss。
所以,改进的方法就是宏块解码的结果直接送到输出显存,这时候宏块的数据都是在cache里的。对于destination则,可以用cache allocate (如果可cache的话,)加快拷贝速度。
http://ffmpeg.blogbus.com/logs/436638.html
就是在视频的dct域变换压缩中,经过dct转换后,数据大部分集中在左上角。所以数据的特性在行上就是,一个数后面跟7个0这种情况。所以在做idct逆运算的时候,可以很好的利用这个特性。
就是:下面用data[0]....data[7]做示范
short data[64];
short a;
int b,c,d;
a=data[1];b=((int *)data)[1];c=((int *)data)[2];d=((int *)data)[3];
if(a|b|c|d){
正常的idct运算}
else{
coef[0]=coef[1]....coef[6]=coef[7]=data[0]/8;
}
好像是这样的,效果很不错,实践证明的...