原子哥,jpegdecode里面那个P_Cal函数的用处到底是干嘛的,感觉里面乱糟糟的。。。。这个pc到底是要偏移什么量啊?为什么要偏移啊?望详解=。=小弟跪拜Σ(っ °Д °;)っ
//对指针地址进行改变!
//pc :当前指针
//返回值:当前指针的减少量.在d_buffer里面自动进行了偏移
unsigned int P_Cal(unsigned char*pc)
{
unsigned short cont=0;//计数器
unsigned long buffer_val=0; //寄存区首地址
unsigned long point_val=0; //指针所指的当前地址
unsigned char secoff;
unsigned short t;
unsigned char *p;
p=jpg_buffer+512;//偏移到中间
point_val=(unsigned long)pc;//得到当前指针所指地址
buffer_val=(unsigned long)&jpg_buffer;//得到缓存区首地址
cont=point_val-buffer_val;//得到两者之差
if(cont>=512)//数据超过了中间
{
secoff=cont/512;//超出了多少secoff个512字节
while(secoff) //读取secoff次512个字节
{
for(t=0;t<512;t++)jpg_buffer[t]=p[t];//复制后512个字节 给前512个字节
if(!F_Read(CurFile,p))//读取512个字节到d_buffer的后半部分
{//读取结束了
//printf("read Fail!\n");
break;//读数失败!break;
}
secoff--;
}
}
return cont-cont%512;//指针地址缩减
} |