swr: pass context to swri_get_dither()

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-04-11 13:44:15 +02:00
parent f8a237a307
commit a2c92e6063
3 changed files with 5 additions and 5 deletions

View File

@ -21,7 +21,7 @@
#include "libavutil/avassert.h" #include "libavutil/avassert.h"
#include "swresample_internal.h" #include "swresample_internal.h"
void swri_get_dither(void *dst, int len, unsigned seed, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, enum SwrDitherType method) { void swri_get_dither(SwrContext *s, void *dst, int len, unsigned seed, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt) {
double scale = 0; double scale = 0;
#define TMP_EXTRA 2 #define TMP_EXTRA 2
double *tmp = av_malloc((len + TMP_EXTRA) * sizeof(double)); double *tmp = av_malloc((len + TMP_EXTRA) * sizeof(double));
@ -40,7 +40,7 @@ void swri_get_dither(void *dst, int len, unsigned seed, enum AVSampleFormat out_
double v; double v;
seed = seed* 1664525 + 1013904223; seed = seed* 1664525 + 1013904223;
switch(method){ switch(s->dither_method){
case SWR_DITHER_RECTANGULAR: v= ((double)seed) / UINT_MAX - 0.5; break; case SWR_DITHER_RECTANGULAR: v= ((double)seed) / UINT_MAX - 0.5; break;
case SWR_DITHER_TRIANGULAR : case SWR_DITHER_TRIANGULAR :
case SWR_DITHER_TRIANGULAR_HIGHPASS : case SWR_DITHER_TRIANGULAR_HIGHPASS :
@ -56,7 +56,7 @@ void swri_get_dither(void *dst, int len, unsigned seed, enum AVSampleFormat out_
for(i=0; i<len; i++){ for(i=0; i<len; i++){
double v; double v;
switch(method){ switch(s->dither_method){
case SWR_DITHER_RECTANGULAR: case SWR_DITHER_RECTANGULAR:
case SWR_DITHER_TRIANGULAR : case SWR_DITHER_TRIANGULAR :
v = tmp[i]; v = tmp[i];

View File

@ -527,7 +527,7 @@ static int swr_convert_internal(struct SwrContext *s, AudioData *out, int out_co
return ret; return ret;
if(ret) if(ret)
for(ch=0; ch<s->dither.ch_count; ch++) for(ch=0; ch<s->dither.ch_count; ch++)
swri_get_dither(s->dither.ch[ch], s->dither.count, 12345678913579<<ch, s->out_sample_fmt, s->int_sample_fmt, s->dither_method); swri_get_dither(s, s->dither.ch[ch], s->dither.count, 12345678913579<<ch, s->out_sample_fmt, s->int_sample_fmt);
av_assert0(s->dither.ch_count == preout->ch_count); av_assert0(s->dither.ch_count == preout->ch_count);
if(s->dither_pos + out_count > s->dither.count) if(s->dither_pos + out_count > s->dither.count)

View File

@ -94,6 +94,6 @@ int swri_rematrix_init(SwrContext *s);
int swri_rematrix(SwrContext *s, AudioData *out, AudioData *in, int len, int mustcopy); int swri_rematrix(SwrContext *s, AudioData *out, AudioData *in, int len, int mustcopy);
void swri_sum2(enum AVSampleFormat format, void *dst, const void *src0, const void *src1, float coef0, float coef1, int len); void swri_sum2(enum AVSampleFormat format, void *dst, const void *src0, const void *src1, float coef0, float coef1, int len);
void swri_get_dither(void *dst, int len, unsigned seed, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, enum SwrDitherType type); void swri_get_dither(SwrContext *s, void *dst, int len, unsigned seed, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt);
#endif #endif