diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c index bdfe35fe70..310f25ef8b 100644 --- a/libavcodec/ccaption_dec.c +++ b/libavcodec/ccaption_dec.c @@ -202,10 +202,10 @@ static int validate_cc_data_pair(uint8_t *cc_data_pair) // if EIA-608 data then verify parity. if (cc_type==0 || cc_type==1) { - if (!ff_parity(cc_data_pair[2])) { + if (!av_parity(cc_data_pair[2])) { return AVERROR_INVALIDDATA; } - if (!ff_parity(cc_data_pair[1])) { + if (!av_parity(cc_data_pair[1])) { cc_data_pair[1]=0x7F; } } diff --git a/libavcodec/g729dec.c b/libavcodec/g729dec.c index 7265883b0e..2e1bf18e4e 100644 --- a/libavcodec/g729dec.c +++ b/libavcodec/g729dec.c @@ -472,7 +472,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, ac_index = get_bits(&gb, format->ac_index_bits[i]); if(!i && format->parity_bit) - bad_pitch = ff_parity(ac_index >> 2) == get_bits1(&gb); + bad_pitch = av_parity(ac_index >> 2) == get_bits1(&gb); fc_indexes = get_bits(&gb, format->fc_indexes_bits); pulses_signs = get_bits(&gb, format->fc_signs_bits); gc_1st_index = get_bits(&gb, format->gc_1st_index_bits); diff --git a/libavutil/common.h b/libavutil/common.h index 9ac04daf95..f3276a2369 100644 --- a/libavutil/common.h +++ b/libavutil/common.h @@ -331,6 +331,11 @@ static av_always_inline av_const int av_popcount64_c(uint64_t x) return av_popcount((uint32_t)x) + av_popcount((uint32_t)(x >> 32)); } +static av_always_inline av_const int av_parity_c(uint32_t v) +{ + return av_popcount(v) & 1; +} + #define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) #define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) @@ -517,3 +522,6 @@ static av_always_inline av_const int av_popcount64_c(uint64_t x) #ifndef av_popcount64 # define av_popcount64 av_popcount64_c #endif +#ifndef av_parity +# define av_parity av_parity_c +#endif diff --git a/libavutil/intmath.h b/libavutil/intmath.h index 17c4f1b48a..9573109e9d 100644 --- a/libavutil/intmath.h +++ b/libavutil/intmath.h @@ -153,16 +153,10 @@ static av_always_inline av_const unsigned ff_clz_c(unsigned x) } #endif -#ifndef ff_parity -#define ff_parity ff_parity_c -static av_always_inline av_const int ff_parity_c(uint32_t v) -{ -#if HAVE_PARITY - return __builtin_parity(v); -#else - return av_popcount(v) & 1; +#if AV_GCC_VERSION_AT_LEAST(3,4) +#ifndef av_parity +#define av_parity __builtin_parity #endif -} #endif /** diff --git a/libavutil/version.h b/libavutil/version.h index 9ffa7a8666..a99b50e4cd 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -64,7 +64,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 55 -#define LIBAVUTIL_VERSION_MINOR 12 +#define LIBAVUTIL_VERSION_MINOR 13 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \