From 685ca2672e5842fe185c8f12da6bf108fd8f074f Mon Sep 17 00:00:00 2001 From: Nils Wallménius Date: Sun, 29 Nov 2009 15:21:00 +0000 Subject: Use clz instruction to calculate integer logarithms, speeds up decoding of one flac 8 sample by 12%. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23783 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/libffmpegFLAC/SOURCES | 2 ++ apps/codecs/libffmpegFLAC/golomb.h | 8 ++++++++ 2 files changed, 10 insertions(+) (limited to 'apps/codecs') diff --git a/apps/codecs/libffmpegFLAC/SOURCES b/apps/codecs/libffmpegFLAC/SOURCES index 688cd3bce7..823a2b7744 100644 --- a/apps/codecs/libffmpegFLAC/SOURCES +++ b/apps/codecs/libffmpegFLAC/SOURCES @@ -1,7 +1,9 @@ bitstream.c decoder.c shndec.c +#if !(defined(CPU_ARM) && (ARM_ARCH > 4)) tables.c +#endif #if defined(CPU_COLDFIRE) coldfire.S #elif defined(CPU_ARM) diff --git a/apps/codecs/libffmpegFLAC/golomb.h b/apps/codecs/libffmpegFLAC/golomb.h index 659ecc1579..11753fc4bb 100644 --- a/apps/codecs/libffmpegFLAC/golomb.h +++ b/apps/codecs/libffmpegFLAC/golomb.h @@ -21,6 +21,13 @@ #include +#if (defined(CPU_ARM) && (ARM_ARCH > 4)) +static inline int av_log2(uint32_t v) +{ + return 31 - __builtin_clz(v); +} +#else + /* From libavutil/common.h */ extern const uint8_t ff_log2_tab[256]; @@ -41,6 +48,7 @@ static inline int av_log2(unsigned int v) return n; } +#endif /** * @file golomb.h -- cgit v1.2.3