X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Ffmtconvert.h;h=b2c235677824c5404234a47b921a14be166f6a04;hb=00fd914d4912322212e924c15f325cebf2fde8d3;hp=1b534019f1b8ada51c45b004a32f448dfcdd3381;hpb=45add995de6a1458cd8095abb302f9a7cbd3e3ee;p=ffmpeg diff --git a/libavcodec/fmtconvert.h b/libavcodec/fmtconvert.h index 1b534019f1b..b2c23567782 100644 --- a/libavcodec/fmtconvert.h +++ b/libavcodec/fmtconvert.h @@ -35,62 +35,42 @@ typedef struct FmtConvertContext { * @param len number of elements to convert. * constraints: multiple of 8 */ - void (*int32_to_float_fmul_scalar)(float *dst, const int *src, float mul, int len); - + void (*int32_to_float_fmul_scalar)(float *dst, const int32_t *src, + float mul, int len); /** - * Convert an array of float to an array of int16_t. - * - * Convert floats from in the range [-32768.0,32767.0] to ints - * without rescaling - * - * @param dst destination array of int16_t. - * constraints: 16-byte aligned - * @param src source array of float. - * constraints: 16-byte aligned + * Convert an array of int32_t to float. + * @param dst destination array of float. + * constraints: 32-byte aligned + * @param src source array of int32_t. + * constraints: 32-byte aligned * @param len number of elements to convert. * constraints: multiple of 8 */ - void (*float_to_int16)(int16_t *dst, const float *src, long len); + void (*int32_to_float)(float *dst, const int32_t *src, intptr_t len); /** - * Convert multiple arrays of float to an interleaved array of int16_t. - * - * Convert floats from in the range [-32768.0,32767.0] to ints - * without rescaling - * - * @param dst destination array of interleaved int16_t. + * Convert an array of int32_t to float and multiply by a float value from another array, + * stepping along the float array once for each 8 integers. + * @param c pointer to FmtConvertContext. + * @param dst destination array of float. * constraints: 16-byte aligned - * @param src source array of float arrays, one for each channel. + * @param src source array of int32_t. * constraints: 16-byte aligned + * @param mul source array of float multipliers. * @param len number of elements to convert. * constraints: multiple of 8 - * @param channels number of channels */ - void (*float_to_int16_interleave)(int16_t *dst, const float **src, - long len, int channels); + void (*int32_to_float_fmul_array8)(struct FmtConvertContext *c, + float *dst, const int32_t *src, + const float *mul, int len); - /** - * Convert multiple arrays of float to an array of interleaved float. - * - * @param dst destination array of interleaved float. - * constraints: 16-byte aligned - * @param src source array of float arrays, one for each channel. - * constraints: 16-byte aligned - * @param len number of elements to convert. - * constraints: multiple of 8 - * @param channels number of channels - */ - void (*float_interleave)(float *dst, const float **src, unsigned int len, - int channels); } FmtConvertContext; -void ff_float_interleave_c(float *dst, const float **src, unsigned int len, - int channels); - void ff_fmt_convert_init(FmtConvertContext *c, AVCodecContext *avctx); +void ff_fmt_convert_init_aarch64(FmtConvertContext *c, AVCodecContext *avctx); void ff_fmt_convert_init_arm(FmtConvertContext *c, AVCodecContext *avctx); -void ff_fmt_convert_init_altivec(FmtConvertContext *c, AVCodecContext *avctx); +void ff_fmt_convert_init_ppc(FmtConvertContext *c, AVCodecContext *avctx); void ff_fmt_convert_init_x86(FmtConvertContext *c, AVCodecContext *avctx); #endif /* AVCODEC_FMTCONVERT_H */