From db2eadb2f57ad5a580c9ad5b2d288c4f6a2eeecb Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 10 Apr 2012 19:52:42 +0200 Subject: swr: add dither support. Signed-off-by: Michael Niedermayer --- libswresample/rematrix.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'libswresample/rematrix.c') diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c index e9f919cf50..1dc8ffbaa4 100644 --- a/libswresample/rematrix.c +++ b/libswresample/rematrix.c @@ -272,6 +272,14 @@ int swri_rematrix_init(SwrContext *s){ return 0; } +void swri_sum2(enum AVSampleFormat format, void *dst, const void *src0, const void *src1, float coef0, float coef1, int len){ + if(format == AV_SAMPLE_FMT_FLT){ + sum2_float((float *)dst, (const float *)src0, (const float *)src1, coef0, coef1, len); + }else{ + sum2_s16 ((int16_t*)dst, (const int16_t*)src0, (const int16_t*)src1, lrintf(coef0 * 32768), lrintf(coef1 * 32768), len); + } +} + int swri_rematrix(SwrContext *s, AudioData *out, AudioData *in, int len, int mustcopy){ int out_i, in_i, i, j; @@ -295,15 +303,8 @@ int swri_rematrix(SwrContext *s, AudioData *out, AudioData *in, int len, int mus } break; case 2: - if(s->int_sample_fmt == AV_SAMPLE_FMT_FLT){ - sum2_float((float *)out->ch[out_i], (const float *)in->ch[ s->matrix_ch[out_i][1] ], (const float *)in->ch[ s->matrix_ch[out_i][2] ], - s->matrix[out_i][ s->matrix_ch[out_i][1] ], s->matrix[out_i][ s->matrix_ch[out_i][2] ], - len); - }else{ - sum2_s16 ((int16_t*)out->ch[out_i], (const int16_t*)in->ch[ s->matrix_ch[out_i][1] ], (const int16_t*)in->ch[ s->matrix_ch[out_i][2] ], - s->matrix32[out_i][ s->matrix_ch[out_i][1] ], s->matrix32[out_i][ s->matrix_ch[out_i][2] ], - len); - } + swri_sum2(s->int_sample_fmt, out->ch[out_i], in->ch[ s->matrix_ch[out_i][1] ], in->ch[ s->matrix_ch[out_i][2] ], + s->matrix[out_i][ s->matrix_ch[out_i][1] ], s->matrix[out_i][ s->matrix_ch[out_i][2] ], len); break; default: if(s->int_sample_fmt == AV_SAMPLE_FMT_FLT){ -- cgit v1.2.3