]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - compress.c
Create list of supported filters via autoconf.
[paraslash.git] / compress.c
index a6c3d32a18990719f454c971a1ead2de46659e0e..d6f7520d6376dab4ccc9a4a580aab40d90f68c03 100644 (file)
 #include "sched.h"
 #include "filter.h"
 #include "string.h"
+#include "error.h"
 
 /** The size of the output data buffer. */
 #define COMPRESS_CHUNK_SIZE 40960
 
+extern char *stat_item_values[NUM_STAT_ITEMS];
+
 /** Data specific to the compress filter. */
 struct private_compress_data {
        /** The current multiplier. */
@@ -47,10 +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;
-
-               adjusted_sample = (PARA_ABS(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);
@@ -83,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)
@@ -109,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;