#include "sched.h"
#include "filter.h"
#include "string.h"
-#include "audiod.h"
+#include "error.h"
/** The size of the output data buffer. */
#define COMPRESS_CHUNK_SIZE 40960
unsigned num_samples;
/** Absolute value of the maximal sample in the current block. */
unsigned peak;
- /** Amplification factor. */
- unsigned amp;
};
static ssize_t compress(char *inbuf, size_t inbuf_len, struct filter_node *fn)
return 0;
for (i = 0; i < length / 2; i++) {
/* be careful in that heat, my dear */
- int sample = *ip++, adjusted_sample = (PARA_ABS(sample) * (64 + pcd->amp)) >> 6;
-
- adjusted_sample = (adjusted_sample * pcd->current_gain) >> gain_shift;
+ int sample = *ip++, adjusted_sample = (PARA_ABS(sample) *
+ pcd->current_gain) >> gain_shift;
if (unlikely(adjusted_sample > 32767)) { /* clip */
PARA_NOTICE_LOG("clip: sample: %d, adjusted sample: %d\n",
sample, adjusted_sample);
free(fn->buf);
}
-static void *compress_parse_config(int argc, char **argv)
+/** TODO: Add sanity checks */
+static int compress_parse_config(int argc, char **argv, void **config)
{
- struct compress_filter_args_info *ret = para_calloc(sizeof(struct compress_filter_args_info));
- if (!compress_cmdline_parser(argc, argv, ret))
- return ret;
- free(ret);
- return NULL;
+ int ret;
+ struct compress_filter_args_info *compress_conf
+ = para_calloc(sizeof(*compress_conf));
+
+ ret = -E_COMPRESS_SYNTAX;
+ if (compress_cmdline_parser(argc, argv, compress_conf))
+ goto err;
+ *config = compress_conf;
+ return 1;
+err:
+ free(compress_conf);
+ return ret;
}
static void open_compress(struct filter_node *fn)
fn->buf = para_malloc(fn->bufsize);
pcd->current_gain = 1 << pcd->conf->inertia_arg;
pcd->max_gain = 1 << (pcd->conf->inertia_arg + pcd->conf->aggressiveness_arg);
- if (stat_item_values[SI_AMPLIFICATION])
- sscanf(stat_item_values[SI_AMPLIFICATION], "%u", &pcd->amp);
- PARA_NOTICE_LOG("amplification: %u (scaling factor: %1.2f)\n", pcd->amp,
- pcd->amp / 64.0 + 1.0);
}
/**