X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fwavpackenc.c;h=95f4b6530c2d6fb168ed1c3ae0e4ea070c9dacde;hb=98b122cdb9ef0920b7774e110407158805d6c136;hp=979b92165b2f30617e1d4daf6b80f66769a66c98;hpb=27e30c73d722ec13e59753dea91be00859c72bf2;p=ffmpeg diff --git a/libavcodec/wavpackenc.c b/libavcodec/wavpackenc.c index 979b92165b2..95f4b6530c2 100644 --- a/libavcodec/wavpackenc.c +++ b/libavcodec/wavpackenc.c @@ -637,21 +637,15 @@ static void reverse_mono_decorr(struct Decorr *dpp) } } +#define count_bits(av) ((av) ? 32 - ff_clz(av) : 0) + static uint32_t log2sample(uint32_t v, int limit, uint32_t *result) { - uint32_t dbits; + uint32_t dbits = count_bits(v); if ((v += v >> 9) < (1 << 8)) { - dbits = nbits_table[v]; *result += (dbits << 8) + wp_log2_table[(v << (9 - dbits)) & 0xff]; } else { - if (v < (1 << 16)) - dbits = nbits_table[v >> 8] + 8; - else if (v < (1 << 24)) - dbits = nbits_table[v >> 16] + 16; - else - dbits = nbits_table[v >> 24] + 24; - *result += dbits = (dbits << 8) + wp_log2_table[(v >> (dbits - 9)) & 0xff]; if (limit && dbits >= limit) @@ -1969,14 +1963,6 @@ static int wv_stereo(WavPackEncodeContext *s, return 0; } -#define count_bits(av) ( \ - (av) < (1 << 8) ? nbits_table[av] : \ - ( \ - (av) < (1 << 16) ? nbits_table[(av) >> 8] + 8 : \ - ((av) < (1 << 24) ? nbits_table[(av) >> 16] + 16 : nbits_table[(av) >> 24] + 24) \ - ) \ -) - static void encode_flush(WavPackEncodeContext *s) { WavPackWords *w = &s->w;