X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_filter%2Fblend.c;h=f680f04415200c3ba5623403f7702bc0d4aa3d3b;hb=bb6e66dcc43e65b97af05c6e0da421e1f6f74c39;hp=89dfeba6b9e2bf187e9c18923a8854bdcfd9d310;hpb=78c19a345a39dff0d8264da9929cd757ef9ed00a;p=vlc diff --git a/modules/video_filter/blend.c b/modules/video_filter/blend.c index 89dfeba6b9..f680f04415 100644 --- a/modules/video_filter/blend.c +++ b/modules/video_filter/blend.c @@ -312,6 +312,15 @@ static void Blend( filter_t *p_filter, picture_t *p_dst, /*********************************************************************** * Utils ***********************************************************************/ +static inline uint8_t vlc_uint8( int v ) +{ + if( v > 255 ) + return 255; + else if( v < 0 ) + return 0; + return v; +} + static inline void yuv_to_rgb( int *r, int *g, int *b, uint8_t y1, uint8_t u1, uint8_t v1 ) { @@ -319,7 +328,6 @@ static inline void yuv_to_rgb( int *r, int *g, int *b, # define SCALEBITS 10 # define ONE_HALF (1 << (SCALEBITS - 1)) # define FIX(x) ((int) ((x) * (1< 255) ? 255 : ((x) < 0) ? 0 : (x)); int y, cb, cr, r_add, g_add, b_add; @@ -330,9 +338,12 @@ static inline void yuv_to_rgb( int *r, int *g, int *b, - FIX(0.71414*255.0/224.0) * cr + ONE_HALF; b_add = FIX(1.77200*255.0/224.0) * cb + ONE_HALF; y = (y1 - 16) * FIX(255.0/219.0); - *r = CLAMP((y + r_add) >> SCALEBITS); - *g = CLAMP((y + g_add) >> SCALEBITS); - *b = CLAMP((y + b_add) >> SCALEBITS); + *r = vlc_uint8( (y + r_add) >> SCALEBITS ); + *g = vlc_uint8( (y + g_add) >> SCALEBITS ); + *b = vlc_uint8( (y + b_add) >> SCALEBITS ); +#undef FIX +#undef ONE_HALF +#undef SCALEBITS } static inline void rgb_to_yuv( uint8_t *y, uint8_t *u, uint8_t *v,