Browse Source

lavu: add av_ctz() for trailing zero bit count

tags/n1.1
Justin Ruggles 13 years ago
parent
commit
dfde8a34e5
5 changed files with 65 additions and 2 deletions
  1. +3
    -0
      doc/APIchanges
  2. +1
    -1
      libavutil/Makefile
  3. +5
    -0
      libavutil/intmath.c
  4. +55
    -0
      libavutil/intmath.h
  5. +1
    -1
      libavutil/version.h

+ 3
- 0
doc/APIchanges View File

@@ -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




+ 1
- 1
libavutil/Makefile View File

@@ -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 \


libavutil/log2.c → libavutil/intmath.c View File

@@ -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);
}

+ 55
- 0
libavutil/intmath.h View File

@@ -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);

/** /**
* @} * @}
*/ */


+ 1
- 1
libavutil/version.h View File

@@ -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…
Cancel
Save