summaryrefslogtreecommitdiff
path: root/libavcodec/apedec.c
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2008-07-06 06:06:55 +0000
committerKostya Shishkov <kostya.shishkov@gmail.com>2008-07-06 06:06:55 +0000
commit88c0536a4217e3d88feddd91b74e7db6f752d301 (patch)
treed41b12c0d5dd841e3c9c80f4576b244cdbef622a /libavcodec/apedec.c
parentfcc402b1c93c35f8958d53270990640ad684cfe7 (diff)
Add several vector functions used by Monkey's Audio decoder to dsputil
Originally committed as revision 14081 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/apedec.c')
-rw-r--r--libavcodec/apedec.c35
1 files changed, 6 insertions, 29 deletions
diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
index 4cc90f234a..c4aa38f8fd 100644
--- a/libavcodec/apedec.c
+++ b/libavcodec/apedec.c
@@ -161,29 +161,6 @@ typedef struct APEContext {
} APEContext;
// TODO: dsputilize
-static inline void vector_add(int16_t * v1, int16_t * v2, int order)
-{
- while (order--)
- *v1++ += *v2++;
-}
-
-// TODO: dsputilize
-static inline void vector_sub(int16_t * v1, int16_t * v2, int order)
-{
- while (order--)
- *v1++ -= *v2++;
-}
-
-// TODO: dsputilize
-static inline int32_t scalarproduct(int16_t * v1, int16_t * v2, int order)
-{
- int res = 0;
-
- while (order--)
- res += *v1++ * *v2++;
-
- return res;
-}
static av_cold int ape_decode_init(AVCodecContext * avctx)
{
@@ -672,19 +649,19 @@ static void init_filter(APEContext * ctx, APEFilter *f, int16_t * buf, int order
do_init_filter(&f[1], buf + order * 3 + HISTORY_SIZE, order);
}
-static inline void do_apply_filter(int version, APEFilter *f, int32_t *data, int count, int order, int fracbits)
+static inline void do_apply_filter(APEContext * ctx, int version, APEFilter *f, int32_t *data, int count, int order, int fracbits)
{
int res;
int absres;
while (count--) {
/* round fixedpoint scalar product */
- res = (scalarproduct(f->delay - order, f->coeffs, order) + (1 << (fracbits - 1))) >> fracbits;
+ res = (ctx->dsp.scalarproduct_int16(f->delay - order, f->coeffs, order, 0) + (1 << (fracbits - 1))) >> fracbits;
if (*data < 0)
- vector_add(f->coeffs, f->adaptcoeffs - order, order);
+ ctx->dsp.add_int16(f->coeffs, f->adaptcoeffs - order, order);
else if (*data > 0)
- vector_sub(f->coeffs, f->adaptcoeffs - order, order);
+ ctx->dsp.sub_int16(f->coeffs, f->adaptcoeffs - order, order);
res += *data;
@@ -736,9 +713,9 @@ static void apply_filter(APEContext * ctx, APEFilter *f,
int32_t * data0, int32_t * data1,
int count, int order, int fracbits)
{
- do_apply_filter(ctx->fileversion, &f[0], data0, count, order, fracbits);
+ do_apply_filter(ctx, ctx->fileversion, &f[0], data0, count, order, fracbits);
if (data1)
- do_apply_filter(ctx->fileversion, &f[1], data1, count, order, fracbits);
+ do_apply_filter(ctx, ctx->fileversion, &f[1], data1, count, order, fracbits);
}
static void ape_apply_filters(APEContext * ctx, int32_t * decoded0,