diff options
author | Sebastian Gesemann <unknown> | 2011-10-03 12:03:37 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2011-10-04 21:34:30 +0200 |
commit | 3fcf463f9ef42aa0da0da4f9d0aed2e7aeda28bb (patch) | |
tree | 3d25b85fae36a8174ada6cc40cca4bae4b87e9d9 /src/dsd2pcm/noiseshape.h | |
parent | f77cd63286bedbd995bed0e232498543e28d3957 (diff) | |
download | mpd-3fcf463f9ef42aa0da0da4f9d0aed2e7aeda28bb.tar.gz mpd-3fcf463f9ef42aa0da0da4f9d0aed2e7aeda28bb.tar.xz mpd-3fcf463f9ef42aa0da0da4f9d0aed2e7aeda28bb.zip |
import dsd2pcm_src.zip
[this is the code from dsd2pcm_src.zip, published on a forum by
Sebastian Gesemann. Upon request, he has given permission to
redistribute and modify his code, without referring to a specific
license. - mk]
Diffstat (limited to 'src/dsd2pcm/noiseshape.h')
-rw-r--r-- | src/dsd2pcm/noiseshape.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/dsd2pcm/noiseshape.h b/src/dsd2pcm/noiseshape.h new file mode 100644 index 000000000..bb6b5bf5d --- /dev/null +++ b/src/dsd2pcm/noiseshape.h @@ -0,0 +1,57 @@ +#ifndef NOISE_SHAPE_H_INCLUDED +#define NOISE_SHAPE_H_INCLUDED + +#ifdef __cpluspluc +extern "C" { +#endif + +typedef struct noise_shape_ctx_s { + int sos_count; /* number of second order sections */ + const float *bbaa; /* filter coefficients, owned by user */ + float *t1, *t2; /* filter state, owned by ns library */ +} noise_shape_ctx; + +/** + * initializes a noise_shaper context + * returns an error code or 0 + */ +extern int noise_shape_init( + noise_shape_ctx *ctx, + int sos_count, + const float *coeffs); + +/** + * destroys a noise_shaper context + */ +extern void noise_shape_destroy( + noise_shape_ctx *ctx); + +/** + * initializes a noise_shaper context so that its state + * is a copy of a given context + * returns an error code or 0 + */ +extern int noise_shape_clone( + const noise_shape_ctx *from, noise_shape_ctx *to); + +/** + * computes the next "noise shaping sample". Note: This call + * alters the internal state. xxx_get and xxx_update must be + * called in an alternating manner. + */ +extern float noise_shape_get( + noise_shape_ctx *ctx); + +/** + * updates the noise shaper's state with the + * last quantization error + */ +extern void noise_shape_update( + noise_shape_ctx *ctx, float qerror); + +#ifdef __cpluspluc +} /* extern "C" */ +#endif + +#endif /* NOISE_SHAPE_H_INCLUDED */ + |