diff options
Diffstat (limited to 'src/pcm/dsd2pcm/noiseshape.hpp')
-rw-r--r-- | src/pcm/dsd2pcm/noiseshape.hpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/pcm/dsd2pcm/noiseshape.hpp b/src/pcm/dsd2pcm/noiseshape.hpp new file mode 100644 index 000000000..1fc698b36 --- /dev/null +++ b/src/pcm/dsd2pcm/noiseshape.hpp @@ -0,0 +1,43 @@ +#ifndef NOISE_SHAPE_HXX_INCLUDED +#define NOISE_SHAPE_HXX_INCLUDED + +#include <stdexcept> +#include "noiseshape.h" + +/** + * C++ wrapper for the noiseshape C library + */ + +class noise_shaper +{ + noise_shape_ctx ctx; +public: + noise_shaper(int sos_count, const float *bbaa) + { + noise_shape_init(&ctx, sos_count, bbaa); + } + + noise_shaper(noise_shaper const& x) + { + noise_shape_clone(&x.ctx,&ctx); + } + + ~noise_shaper() + { noise_shape_destroy(&ctx); } + + noise_shaper& operator=(noise_shaper const& x) + { + if (this != &x) { + noise_shape_destroy(&ctx); + noise_shape_clone(&x.ctx,&ctx); + } + return *this; + } + + float get() { return noise_shape_get(&ctx); } + + void update(float error) { noise_shape_update(&ctx,error); } +}; + +#endif /* NOISE_SHAPE_HXX_INCLUDED */ + |