Unified · Split
| @@ -13,6 +13,9 @@ libavutil: 2012-10-22 · 12 unmodified lines | ||
| 13 | 13 | |
| 14 | 14 | API changes, most recent first: |
| 15 | 15 | |
| 16 | +2012-xx-xx - xxxxxxx - lavu 52.1.0 - intmath.h | |
| 17 | + Add av_ctz() for trailing zero bit count | |
| 18 | + | |
| 16 | 19 | 2012-10-18 - xxxxxxx - lavu 51.45.0 - error.h |
| 17 | 20 | Add AVERROR_EXPERIMENTAL |
| 18 | 21 | |
| @@ -67,10 +67,10 @@ OBJS = adler32.o \ · 66 unmodified lines | ||
| 67 | 67 | float_dsp.o \ |
| 68 | 68 | imgutils.o \ |
| 69 | 69 | intfloat_readwrite.o \ |
| 70 | + intmath.o \ | |
| 70 | 71 | lfg.o \ |
| 71 | 72 | lls.o \ |
| 72 | 73 | log.o \ |
| 73 | − log2.o \ | |
| 74 | 74 | log2_tab.o \ |
| 75 | 75 | mathematics.o \ |
| 76 | 76 | md5.o \ |
| @@ -32,3 +32,8 @@ int av_log2_16bit(unsigned v) · 31 unmodified lines | ||
| 32 | 32 | { |
| 33 | 33 | return ff_log2_16bit(v); |
| 34 | 34 | } |
| 35 | + | |
| 36 | +int av_ctz(int v) | |
| 37 | +{ | |
| 38 | + return ff_ctz(v); | |
| 39 | +} | |
| @@ -85,6 +85,61 @@ static av_always_inline av_const int ff_log2_16bit_c(unsigned int v) · 84 unmodified lines | ||
| 85 | 85 | #define av_log2 ff_log2 |
| 86 | 86 | #define av_log2_16bit ff_log2_16bit |
| 87 | 87 | |
| 88 | +/** | |
| 89 | + * @} | |
| 90 | + */ | |
| 91 | + | |
| 92 | +/** | |
| 93 | + * @addtogroup lavu_math | |
| 94 | + * @{ | |
| 95 | + */ | |
| 96 | + | |
| 97 | +#if HAVE_FAST_CLZ && AV_GCC_VERSION_AT_LEAST(3,4) | |
| 98 | +#ifndef ff_ctz | |
| 99 | +#define ff_ctz(v) __builtin_ctz(v) | |
| 100 | +#endif | |
| 101 | +#endif | |
| 102 | + | |
| 103 | +#ifndef ff_ctz | |
| 104 | +#define ff_ctz ff_ctz_c | |
| 105 | +static av_always_inline av_const int ff_ctz_c(int v) | |
| 106 | +{ | |
| 107 | + int c; | |
| 108 | + | |
| 109 | + if (v & 0x1) | |
| 110 | + return 0; | |
| 111 | + | |
| 112 | + c = 1; | |
| 113 | + if (!(v & 0xffff)) { | |
| 114 | + v >>= 16; | |
| 115 | + c += 16; | |
| 116 | + } | |
| 117 | + if (!(v & 0xff)) { | |
| 118 | + v >>= 8; | |
| 119 | + c += 8; | |
| 120 | + } | |
| 121 | + if (!(v & 0xf)) { | |
| 122 | + v >>= 4; | |
| 123 | + c += 4; | |
| 124 | + } | |
| 125 | + if (!(v & 0x3)) { | |
| 126 | + v >>= 2; | |
| 127 | + c += 2; | |
| 128 | + } | |
| 129 | + c -= v & 0x1; | |
| 130 | + | |
| 131 | + return c; | |
| 132 | +} | |
| 133 | +#endif | |
| 134 | + | |
| 135 | +/** | |
| 136 | + * Trailing zero bit count. | |
| 137 | + * | |
| 138 | + * @param v input value. If v is 0, the result is undefined. | |
| 139 | + * @return the number of trailing 0-bits | |
| 140 | + */ | |
| 141 | +int av_ctz(int v); | |
| 142 | + | |
| 88 | 143 | /** |
| 89 | 144 | * @} |
| 90 | 145 | */ |
| @@ -37,7 +37,7 @@ · 36 unmodified lines | ||
| 37 | 37 | */ |
| 38 | 38 | |
| 39 | 39 | #define LIBAVUTIL_VERSION_MAJOR 52 |
| 40 | −#define LIBAVUTIL_VERSION_MINOR 0 | |
| 40 | +#define LIBAVUTIL_VERSION_MINOR 1 | |
| 41 | 41 | #define LIBAVUTIL_VERSION_MICRO 0 |
| 42 | 42 | |
| 43 | 43 | #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ |