lavu: add av_ctz() for trailing zero bit count
This commit is contained in:
parent
6a744d2619
commit
dfde8a34e5
@ -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, \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user