diff options
author | Nedeljko Babic <nbabic@mips.com> | 2012-06-04 18:02:56 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-06-11 21:12:39 +0200 |
commit | 3827a86eacd04d9d7b356f769be553f7b8cca361 (patch) | |
tree | 5666cb5c2bb96e22bd58a7043fb50a44f8cac677 /libavcodec/acelp_vectors.h | |
parent | 751dcd92435d8f38fd3f2035d515b10049483c49 (diff) | |
download | ffmpeg-3827a86eacd04d9d7b356f769be553f7b8cca361.tar.gz |
Optimization of AMR NB and WB decoders for MIPS
AMR NB and WB decoders are optimized for MIPS architecture.
Appropriate Makefiles are changed accordingly.
Cnfigure script is changed in order to support optimizations.
Optimizations are enabled by default when compiling is done for
mips architecture.
Appropriate cflags are automatically set.
Support for several mips CPUs is added in configure script.
New ffmpeg options are added for disabling optimizations.
The FFMPEG option --disable-mipsfpu disables MIPS floating point
optimizations.
The FFMPEG option --disable-mips32r2 disables MIPS32R2
optimizations.
The FFMPEG option --disable-mipsdspr1 disables MIPS DSP ASE R1
optimizations.
The FFMPEG option --disable-mipsdspr2 disables MIPS DSP ASE R2
optimizations.
Signed-off-by: Nedeljko Babic <nbabic@mips.com>
Reviewed-by: Vitor Sessak <vitor1001@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/acelp_vectors.h')
-rw-r--r-- | libavcodec/acelp_vectors.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libavcodec/acelp_vectors.h b/libavcodec/acelp_vectors.h index f3bc781446..d92f288de4 100644 --- a/libavcodec/acelp_vectors.h +++ b/libavcodec/acelp_vectors.h @@ -25,6 +25,30 @@ #include <stdint.h> +typedef struct ACELPVContext { + /** + * float implementation of weighted sum of two vectors. + * @param[out] out result of addition + * @param in_a first vector + * @param in_b second vector + * @param weight_coeff_a first vector weight coefficient + * @param weight_coeff_a second vector weight coefficient + * @param length vectors length (should be a multiple of two) + * + * @note It is safe to pass the same buffer for out and in_a or in_b. + */ + void (*weighted_vector_sumf)(float *out, const float *in_a, const float *in_b, + float weight_coeff_a, float weight_coeff_b, + int length); + +}ACELPVContext; + +/** + * Initialize ACELPVContext. + */ +void ff_acelp_vectors_init(ACELPVContext *c); +void ff_acelp_vectors_init_mips(ACELPVContext *c); + /** Sparse representation for the algebraic codebook (fixed) vector */ typedef struct { int n; |