| @@ -13,6 +13,9 @@ libavutil: 2012-10-22 | |||||
| API changes, most recent first: | API changes, most recent first: | ||||
| 2012-xx-xx - xxxxxxx - lavu 52.1.0 - intmath.h | |||||
| Add av_ctz() for trailing zero bit count | |||||
| 2012-10-18 - xxxxxxx - lavu 51.45.0 - error.h | 2012-10-18 - xxxxxxx - lavu 51.45.0 - error.h | ||||
| Add AVERROR_EXPERIMENTAL | Add AVERROR_EXPERIMENTAL | ||||
| @@ -67,10 +67,10 @@ OBJS = adler32.o \ | |||||
| float_dsp.o \ | float_dsp.o \ | ||||
| imgutils.o \ | imgutils.o \ | ||||
| intfloat_readwrite.o \ | intfloat_readwrite.o \ | ||||
| intmath.o \ | |||||
| lfg.o \ | lfg.o \ | ||||
| lls.o \ | lls.o \ | ||||
| log.o \ | log.o \ | ||||
| log2.o \ | |||||
| log2_tab.o \ | log2_tab.o \ | ||||
| mathematics.o \ | mathematics.o \ | ||||
| md5.o \ | md5.o \ | ||||
| @@ -32,3 +32,8 @@ int av_log2_16bit(unsigned v) | |||||
| { | { | ||||
| return ff_log2_16bit(v); | return ff_log2_16bit(v); | ||||
| } | } | ||||
| int av_ctz(int v) | |||||
| { | |||||
| return ff_ctz(v); | |||||
| } | |||||
| @@ -85,6 +85,61 @@ static av_always_inline av_const int ff_log2_16bit_c(unsigned int v) | |||||
| #define av_log2 ff_log2 | #define av_log2 ff_log2 | ||||
| #define av_log2_16bit ff_log2_16bit | #define av_log2_16bit ff_log2_16bit | ||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @addtogroup lavu_math | |||||
| * @{ | |||||
| */ | |||||
| #if HAVE_FAST_CLZ && AV_GCC_VERSION_AT_LEAST(3,4) | |||||
| #ifndef ff_ctz | |||||
| #define ff_ctz(v) __builtin_ctz(v) | |||||
| #endif | |||||
| #endif | |||||
| #ifndef ff_ctz | |||||
| #define ff_ctz ff_ctz_c | |||||
| static av_always_inline av_const int ff_ctz_c(int v) | |||||
| { | |||||
| int c; | |||||
| if (v & 0x1) | |||||
| return 0; | |||||
| c = 1; | |||||
| if (!(v & 0xffff)) { | |||||
| v >>= 16; | |||||
| c += 16; | |||||
| } | |||||
| if (!(v & 0xff)) { | |||||
| v >>= 8; | |||||
| c += 8; | |||||
| } | |||||
| if (!(v & 0xf)) { | |||||
| v >>= 4; | |||||
| c += 4; | |||||
| } | |||||
| if (!(v & 0x3)) { | |||||
| v >>= 2; | |||||
| c += 2; | |||||
| } | |||||
| c -= v & 0x1; | |||||
| return c; | |||||
| } | |||||
| #endif | |||||
| /** | |||||
| * Trailing zero bit count. | |||||
| * | |||||
| * @param v input value. If v is 0, the result is undefined. | |||||
| * @return the number of trailing 0-bits | |||||
| */ | |||||
| int av_ctz(int v); | |||||
| /** | /** | ||||
| * @} | * @} | ||||
| */ | */ | ||||
| @@ -37,7 +37,7 @@ | |||||
| */ | */ | ||||
| #define LIBAVUTIL_VERSION_MAJOR 52 | #define LIBAVUTIL_VERSION_MAJOR 52 | ||||
| #define LIBAVUTIL_VERSION_MINOR 0 | |||||
| #define LIBAVUTIL_VERSION_MINOR 1 | |||||
| #define LIBAVUTIL_VERSION_MICRO 0 | #define LIBAVUTIL_VERSION_MICRO 0 | ||||
| #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | ||||