]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - compress.c
Merge branch 'master' into next
[paraslash.git] / compress.c
index 8e2f07c9c4f3342e2984c5b4b8b2a0b047bb038c..d6f7520d6376dab4ccc9a4a580aab40d90f68c03 100644 (file)
@@ -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;