mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 04:26:37 +08:00 
			
		
		
		
	optimizing av_log2
Originally committed as revision 1515 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		| @@ -27,6 +27,17 @@ const UINT8 ff_sqrt_tab[128]={ | |||||||
|         9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11 |         9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11 | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | const uint8_t ff_log2_tab[256]={ | ||||||
|  |         0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, | ||||||
|  |         5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | ||||||
|  |         6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, | ||||||
|  |         6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, | ||||||
|  |         7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, | ||||||
|  |         7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, | ||||||
|  |         7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, | ||||||
|  |         7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 | ||||||
|  | }; | ||||||
|  |  | ||||||
| void init_put_bits(PutBitContext *s,  | void init_put_bits(PutBitContext *s,  | ||||||
|                    UINT8 *buffer, int buffer_size, |                    UINT8 *buffer, int buffer_size, | ||||||
|                    void *opaque, |                    void *opaque, | ||||||
|   | |||||||
| @@ -804,6 +804,7 @@ void print_stats(void); | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* misc math functions */ | /* misc math functions */ | ||||||
|  | extern const uint8_t ff_log2_tab[256]; | ||||||
|  |  | ||||||
| static inline int av_log2(unsigned int v) | static inline int av_log2(unsigned int v) | ||||||
| { | { | ||||||
| @@ -818,20 +819,26 @@ static inline int av_log2(unsigned int v) | |||||||
|         v >>= 8; |         v >>= 8; | ||||||
|         n += 8; |         n += 8; | ||||||
|     } |     } | ||||||
|     if (v & 0xf0) { |     n += ff_log2_tab[v]; | ||||||
|         v >>= 4; |  | ||||||
|         n += 4; |  | ||||||
|     } |  | ||||||
|     if (v & 0xc) { |  | ||||||
|         v >>= 2; |  | ||||||
|         n += 2; |  | ||||||
|     } |  | ||||||
|     if (v & 0x2) { |  | ||||||
|         n++; |  | ||||||
|     } |  | ||||||
|     return n; |     return n; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static inline int av_log2_16bit(unsigned int v) | ||||||
|  | { | ||||||
|  |     int n; | ||||||
|  |  | ||||||
|  |     n = 0; | ||||||
|  |     if (v & 0xff00) { | ||||||
|  |         v >>= 8; | ||||||
|  |         n += 8; | ||||||
|  |     } | ||||||
|  |     n += ff_log2_tab[v]; | ||||||
|  |  | ||||||
|  |     return n; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| /* median of 3 */ | /* median of 3 */ | ||||||
| static inline int mid_pred(int a, int b, int c) | static inline int mid_pred(int a, int b, int c) | ||||||
| { | { | ||||||
| @@ -861,7 +868,7 @@ static inline int clip(int a, int amin, int amax) | |||||||
| } | } | ||||||
|  |  | ||||||
| /* math */ | /* math */ | ||||||
| extern const UINT8 ff_sqrt_tab[128]; | extern const uint8_t ff_sqrt_tab[128]; | ||||||
|  |  | ||||||
| int ff_gcd(int a, int b); | int ff_gcd(int a, int b); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Niedermayer
					Michael Niedermayer