diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 87f716ce36..d491fc2a8c 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -171,7 +171,7 @@ OBJS-$(CONFIG_FOURXM_DECODER) += 4xm.o OBJS-$(CONFIG_FRAPS_DECODER) += fraps.o OBJS-$(CONFIG_FRWU_DECODER) += frwu.o OBJS-$(CONFIG_G723_1_DECODER) += g723_1.o acelp_vectors.o \ - celp_filters.o celp_math.o + celp_filters.o OBJS-$(CONFIG_GIF_DECODER) += gifdec.o lzw.o OBJS-$(CONFIG_GIF_ENCODER) += gif.o lzwenc.o OBJS-$(CONFIG_GSM_DECODER) += gsmdec.o gsmdec_data.o msgsmdec.o @@ -367,7 +367,7 @@ OBJS-$(CONFIG_TRUESPEECH_DECODER) += truespeech.o OBJS-$(CONFIG_TSCC_DECODER) += tscc.o msrledec.o OBJS-$(CONFIG_TSCC2_DECODER) += tscc2.o OBJS-$(CONFIG_TTA_DECODER) += tta.o -OBJS-$(CONFIG_TWINVQ_DECODER) += twinvq.o celp_math.o +OBJS-$(CONFIG_TWINVQ_DECODER) += twinvq.o OBJS-$(CONFIG_TXD_DECODER) += txd.o s3tc.o OBJS-$(CONFIG_ULTI_DECODER) += ulti.o OBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodec.o utvideo.o diff --git a/libavcodec/celp_math.c b/libavcodec/celp_math.c index a34508f85c..b28c51b52d 100644 --- a/libavcodec/celp_math.c +++ b/libavcodec/celp_math.c @@ -28,21 +28,6 @@ #include "celp_math.h" #include "libavutil/common.h" -/** - * Cosine table: base_cos[i] = (1<<15) * cos(i*PI/64) - */ -static const int16_t tab_cos[65] = -{ - 32767, 32738, 32617, 32421, 32145, 31793, 31364, 30860, - 30280, 29629, 28905, 28113, 27252, 26326, 25336, 24285, - 23176, 22011, 20793, 19525, 18210, 16851, 15451, 14014, - 12543, 11043, 9515, 7965, 6395, 4810, 3214, 1609, - 1, -1607, -3211, -4808, -6393, -7962, -9513, -11040, - -12541, -14012, -15449, -16848, -18207, -19523, -20791, -22009, - -23174, -24283, -25334, -26324, -27250, -28111, -28904, -29627, - -30279, -30858, -31363, -31792, -32144, -32419, -32616, -32736, -32768, -}; - static const uint16_t exp2a[]= { 0, 1435, 2901, 4400, 5931, 7496, 9096, 10730, @@ -59,16 +44,6 @@ static const uint16_t exp2b[]= 17176, 17898, 18620, 19343, 20066, 20790, 21514, 22238, }; -int16_t ff_cos(uint16_t arg) -{ - uint8_t offset= arg; - uint8_t ind = arg >> 8; - - assert(arg <= 0x3fff); - - return tab_cos[ind] + (offset * (tab_cos[ind+1] - tab_cos[ind]) >> 8); -} - int ff_exp2(uint16_t power) { unsigned int result= exp2a[power>>10] + 0x10000; diff --git a/libavcodec/celp_math.h b/libavcodec/celp_math.h index 4a502ca04b..92cc2abf7e 100644 --- a/libavcodec/celp_math.h +++ b/libavcodec/celp_math.h @@ -25,14 +25,6 @@ #include -/** - * fixed-point implementation of cosine in [0; PI) domain. - * @param arg fixed-point cosine argument, 0 <= arg < 0x4000 - * - * @return value of (1<<15) * cos(arg * PI / (1<<14)), -0x8000 <= result <= 0x7fff - */ -int16_t ff_cos(uint16_t arg); - /** * fixed-point implementation of exp2(x) in [0; 1] domain. * @param power argument to exp2, 0 <= power <= 0x7fff diff --git a/libavcodec/lsp.c b/libavcodec/lsp.c index 2adc9cfa39..b501bfb7b8 100644 --- a/libavcodec/lsp.c +++ b/libavcodec/lsp.c @@ -55,6 +55,30 @@ void ff_set_min_dist_lsf(float *lsf, double min_spacing, int size) prev = lsf[i] = FFMAX(lsf[i], prev + min_spacing); } + +/* Cosine table: base_cos[i] = (1 << 15) * cos(i * PI / 64) */ +static const int16_t tab_cos[65] = +{ + 32767, 32738, 32617, 32421, 32145, 31793, 31364, 30860, + 30280, 29629, 28905, 28113, 27252, 26326, 25336, 24285, + 23176, 22011, 20793, 19525, 18210, 16851, 15451, 14014, + 12543, 11043, 9515, 7965, 6395, 4810, 3214, 1609, + 1, -1607, -3211, -4808, -6393, -7962, -9513, -11040, + -12541, -14012, -15449, -16848, -18207, -19523, -20791, -22009, + -23174, -24283, -25334, -26324, -27250, -28111, -28904, -29627, + -30279, -30858, -31363, -31792, -32144, -32419, -32616, -32736, -32768, +}; + +static int16_t ff_cos(uint16_t arg) +{ + uint8_t offset= arg; + uint8_t ind = arg >> 8; + + assert(arg <= 0x3fff); + + return tab_cos[ind] + (offset * (tab_cos[ind+1] - tab_cos[ind]) >> 8); +} + void ff_acelp_lsf2lsp(int16_t *lsp, const int16_t *lsf, int lp_order) { int i;