[Ffmpeg-devel] clip_uint8
Panagiotis Issaris
takis.issaris
Fri Apr 28 17:58:56 CEST 2006
Hi,
The clip function clips between the amin and amax values given as parameters,
the clip_uint8 function, actually behaves a bit differently. The lower bound
is indeed 0 as the uint8 postfix in the name implies, but upper values (values
higher then 255) are returned as -1. This works if the value which stores the
returned value is uint8, but in other cases will cause strange behavior imho.
libavutil/common.h:
430 static inline int clip(int a, int amin, int amax)
431 {
432 if (a < amin)
433 return amin;
434 else if (a > amax)
435 return amax;
436 else
437 return a;
438 }
439
440 static inline int clip_uint8(int a)
441 {
442 if (a&(~255)) return (-a)>>31;
443 else return a;
444 }
Changing the return type to uint8_t fixes this, or was the -1
return value intentional?
diff --git a/libavutil/common.h b/libavutil/common.h
index d8f2c40..92c0d08 100644
--- a/libavutil/common.h
+++ b/libavutil/common.h
@@ -437,7 +437,7 @@ static inline int clip(int a, int amin,
return a;
}
-static inline int clip_uint8(int a)
+static inline uint8_t clip_uint8(int a)
{
if (a&(~255)) return (-a)>>31;
else return a;
With friendly regards,
Takis
More information about the ffmpeg-devel
mailing list