37 seed = seed* 1664525 + 1013904223;
43 v = ((double)seed) / UINT_MAX;
44 seed = seed*1664525 + 1013904223;
45 v-= ((double)seed) / UINT_MAX;
60 v = (- tmp[i] + 2*tmp[i+1] - tmp[i+2]) / sqrt(6);
115 for (i=0;
filters[i].coefs; i++) {
120 for (j=0; j<f->
len; 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
int out_sample_rate
output sample rate
enum AVResampleDitherMethod method
#define AV_LOG_WARNING
Something somehow does not look correct.
float ns_scale
Noise shaping dither scale.
float ns_coeffs[NS_TAPS]
Noise shaping filter coefficients.
#define av_assert0(cond)
assert() equivalent, that is always enabled.
float ns_errors[SWR_CH_MAX][2 *NS_TAPS]
int swri_get_dither(SwrContext *s, void *dst, int len, unsigned seed, enum AVSampleFormat noise_fmt)
int output_sample_bits
the number of used output bits, needed to scale dither correctly
av_cold int swri_dither_init(SwrContext *s, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt)
The libswresample context.
simple assert() macros that are a bit more flexible than ISO C assert().
float ns_scale_1
Noise shaping dither scale^-1.
float noise_scale
Noise scale.
AVSampleFormat
Audio sample formats.
int ns_pos
Noise shaping dither position.
struct DitherContext dither
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.
static const struct PPFilter filters[]
#define av_malloc_array(a, b)
int ns_taps
Noise shaping dither taps.