X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=compress.c;h=d6f7520d6376dab4ccc9a4a580aab40d90f68c03;hb=89a0e510df07bc7210ca9e73381763fdd183df75;hp=8e2f07c9c4f3342e2984c5b4b8b2a0b047bb038c;hpb=cec9a9348c155e285eb94f024b263d52e1735301;p=paraslash.git diff --git a/compress.c b/compress.c index 8e2f07c9..d6f7520d 100644 --- a/compress.c +++ b/compress.c @@ -16,7 +16,7 @@ #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 @@ -35,8 +35,6 @@ struct private_compress_data { 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) @@ -52,9 +50,8 @@ 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); @@ -87,13 +84,21 @@ static void close_compress(struct filter_node *fn) 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) @@ -106,13 +111,6 @@ 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]) { - int i = SI_AMPLIFICATION; - char *s = stat_item_values[i] + strlen(status_item_list[i]) + 1; - sscanf(s, "%u", &pcd->amp); - } - PARA_NOTICE_LOG("amplification: %u (scaling factor: %1.2f)\n", pcd->amp, - pcd->amp / 64.0 + 1.0); } /** @@ -120,7 +118,7 @@ static void open_compress(struct filter_node *fn) * * \param f Pointer to the struct to initialize. */ -void compress_init(struct filter *f) +void compress_filter_init(struct filter *f) { f->open = open_compress; f->close = close_compress;