vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Dec 17 18:52:04 2018 +0200| [41e8a7801535e4aa8281b6aa54f10890bebdbc5a] | committer: Rémi Denis-Courmont
es_format: simplify MaskToShift() > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=41e8a7801535e4aa8281b6aa54f10890bebdbc5a --- src/misc/es_format.c | 45 ++------------------------------------------- 1 file changed, 2 insertions(+), 43 deletions(-) diff --git a/src/misc/es_format.c b/src/misc/es_format.c index 2eeb46d918..08c1efd5f5 100644 --- a/src/misc/es_format.c +++ b/src/misc/es_format.c @@ -35,55 +35,14 @@ #include <vlc_es.h> -/***************************************************************************** - * BinaryLog: computes the base 2 log of a binary value - ***************************************************************************** - * This functions is used by MaskToShift, to get a bit index from a binary - * value. - *****************************************************************************/ -static int BinaryLog( uint32_t i ) -{ - int i_log = 0; - - if( i == 0 ) return -31337; - - if( i & 0xffff0000 ) i_log += 16; - if( i & 0xff00ff00 ) i_log += 8; - if( i & 0xf0f0f0f0 ) i_log += 4; - if( i & 0xcccccccc ) i_log += 2; - if( i & 0xaaaaaaaa ) i_log += 1; - - return i_log; -} - /** * It transforms a color mask into right and left shifts * FIXME copied from video_output.c */ static void MaskToShift( int *pi_left, int *pi_right, uint32_t i_mask ) { - uint32_t i_low, i_high; /* lower and higher bits of the mask */ - - if( !i_mask ) - { - *pi_left = *pi_right = 0; - return; - } - - /* Get bits */ - i_low = i_high = i_mask; - - i_low &= - (int32_t)i_low; /* lower bit of the mask */ - i_high += i_low; /* higher bit of the mask */ - - /* Transform bits into an index. Also deal with i_high overflow, which - * is faster than changing the BinaryLog code to handle 64 bit integers. */ - i_low = BinaryLog (i_low); - i_high = i_high ? BinaryLog (i_high) : 32; - - /* Update pointers and return */ - *pi_left = i_low; - *pi_right = (8 - i_high + i_low); + *pi_left = ctz(i_mask); + *pi_right = 8 - vlc_popcount(i_mask); } /* */ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
