00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <stdint.h>
00022
00023 #include "libavcodec/avcodec.h"
00024 #include "libavcodec/fmtconvert.h"
00025
00026 void ff_int32_to_float_fmul_scalar_neon(float *dst, const int *src,
00027 float mul, int len);
00028
00029 void ff_float_to_int16_neon(int16_t *dst, const float *src, long len);
00030 void ff_float_to_int16_interleave_neon(int16_t *, const float **, long, int);
00031
00032 void ff_float_to_int16_vfp(int16_t *dst, const float *src, long len);
00033
00034 void ff_fmt_convert_init_arm(FmtConvertContext *c, AVCodecContext *avctx)
00035 {
00036 if (HAVE_ARMVFP && HAVE_ARMV6) {
00037 c->float_to_int16 = ff_float_to_int16_vfp;
00038 }
00039
00040 if (HAVE_NEON) {
00041 c->int32_to_float_fmul_scalar = ff_int32_to_float_fmul_scalar_neon;
00042
00043 if (!(avctx->flags & CODEC_FLAG_BITEXACT)) {
00044 c->float_to_int16 = ff_float_to_int16_neon;
00045 c->float_to_int16_interleave = ff_float_to_int16_interleave_neon;
00046 }
00047 }
00048 }