在视频解码算法里会经常出现需要做饱和处理的,也就说在dct变换后数据会出现大于255,或者小于0的数据。 此时需要将数据进行截断,小于0的让等于0,大于255的变回255。通常源码是这样的
if(ra>255) {
ra = 255;
}
else if(ra<0) {
ra = 0;
}
而在一些专业的代码里我们会看到这样的语句。
if((unsigned)ra<255){
}else{
if(ra>255) {
ra = 255;
}
else if(ra<0) {
ra = 0;
}
}
貌似运算变复杂了,其实从概率上来说数据落在0-255之间的概率要比在之外的概率大的多,所以通常都只需一次比较,就可以结束。总的运算量反而变少。