27 double scale =
s->dither.noise_scale;
39 switch(
s->dither.method){
43 v = ((double)
seed) / UINT_MAX;
45 v-= ((double)
seed) / UINT_MAX;
54 switch(
s->dither.method){
100 scale *=
s->dither.scale;
103 scale *= 1<<(32-
s->dither.output_sample_bits);
106 s->dither.method = 0;
110 s->dither.ns_pos = 0;
111 s->dither.noise_scale= scale;
112 s->dither.ns_scale = scale;
113 s->dither.ns_scale_1 = scale ? 1/scale : 0;
114 memset(
s->dither.ns_errors, 0,
sizeof(
s->dither.ns_errors));
117 if (llabs(
s->out_sample_rate -
f->rate)*20 <=
f->rate &&
f->name ==
s->dither.method) {
119 s->dither.ns_taps =
f->len;
120 for (j=0; j<
f->len; j++)
121 s->dither.ns_coeffs[j] =
f->coefs[j];
127 av_log(
s,
AV_LOG_WARNING,
"Requested noise shaping dither not available at this sampling rate, using triangular hp dither\n");
134 #define TEMPLATE_DITHER_S16
136 #undef TEMPLATE_DITHER_S16
138 #define TEMPLATE_DITHER_S32
140 #undef TEMPLATE_DITHER_S32
142 #define TEMPLATE_DITHER_FLT
144 #undef TEMPLATE_DITHER_FLT
146 #define TEMPLATE_DITHER_DBL
148 #undef TEMPLATE_DITHER_DBL
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert0(cond)
assert() equivalent, that is always enabled.
#define AV_LOG_WARNING
Something somehow does not look correct.
int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt)
Return number of bytes per sample.
enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt)
Get the packed alternative form of the given sample format.
AVSampleFormat
Audio sample formats.
@ AV_SAMPLE_FMT_FLTP
float, planar
@ AV_SAMPLE_FMT_S16P
signed 16 bits, planar
@ AV_SAMPLE_FMT_S32P
signed 32 bits, planar
@ AV_SAMPLE_FMT_S32
signed 32 bits
@ AV_SAMPLE_FMT_DBLP
double, planar
@ AV_SAMPLE_FMT_DBL
double
@ AV_SAMPLE_FMT_S16
signed 16 bits
@ SWR_DITHER_TRIANGULAR_HIGHPASS
@ SWR_DITHER_NB
not part of API/ABI
@ SWR_DITHER_NS
not part of API/ABI
av_cold int swri_dither_init(SwrContext *s, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt)
int swri_get_dither(SwrContext *s, void *dst, int len, unsigned seed, enum AVSampleFormat noise_fmt)
static const struct PPFilter filters[]
The libswresample context.
#define av_malloc_array(a, b)