#ifndef AUDIO_COMPRESSOR_H #define AUDIO_COMPRESSOR_H #include #include #ifdef __cplusplus extern "C" { #endif struct audio_compressor; typedef struct { int sample_rate; int channels; int block_duration_ms; int lookback_ms; int lookahead_ms; float max_gain_db; float rise_rate_per_sec; float target_level; } audio_compressor_config_t; struct audio_compressor* audio_compressor_create(void); void audio_compressor_destroy(struct audio_compressor* ac); void audio_compressor_configure(struct audio_compressor* ac, const audio_compressor_config_t* cfg); void audio_compressor_reset(struct audio_compressor* ac); void audio_compressor_set_enabled(struct audio_compressor* ac, int enabled); int audio_compressor_is_enabled(const struct audio_compressor* ac); void audio_compressor_push(struct audio_compressor* ac, const int16_t* samples, size_t count); void audio_compressor_flush(struct audio_compressor* ac); const int16_t* audio_compressor_output(const struct audio_compressor* ac); size_t audio_compressor_output_size(const struct audio_compressor* ac); #ifdef __cplusplus } #endif #endif