examples/parse_args.h: make sure samplerate and sizes params are positive, fix help...
[aubio.git] / examples / parse_args.h
index 1f22799..923125b 100644 (file)
@@ -40,7 +40,7 @@ extern char_t * tempo_method;
 extern smpl_t silence_threshold;
 extern uint_t mix_input;
 
-typedef int (*aubio_process_func_t)(fvec_t * input, fvec_t * output);
+extern uint_t force_overwrite;
 
 // functions defined in utils.c
 extern void examples_common_init (int argc, char **argv);
@@ -61,11 +61,6 @@ usage (FILE * stream, int exit_code)
 {
   fprintf (stream, "usage: %s [ options ] \n", prog_name);
   fprintf (stream,
-      "       -h      --help             display this message\n"
-      "       -v      --verbose          be verbose\n"
-#ifdef PROG_HAS_JACK
-      "       -j      --jack             use Jack\n"
-#endif
       "       -i      --input            input type\n"
 #ifdef PROG_HAS_OUTPUT
       "       -o      --output           output type\n"
@@ -85,7 +80,13 @@ usage (FILE * stream, int exit_code)
       "       -s      --silence          select silence threshold\n"
 #ifdef PROG_HAS_OUTPUT
       "       -m      --mix-input        mix input signal with output signal\n"
+      "       -f      --force-overwrite  overwrite output file if needed\n"
+#endif
+#ifdef PROG_HAS_JACK
+      "       -j      --jack             use Jack\n"
 #endif
+      "       -v      --verbose          be verbose\n"
+      "       -h      --help             display this message\n"
       );
   exit (exit_code);
 }
@@ -107,7 +108,7 @@ parse_args (int argc, char **argv)
 #ifdef PROG_HAS_PITCH
     "p:u:l:"
 #endif /* PROG_HAS_PITCH */
-    "s:m";
+    "s:mf";
   int next_option;
   struct option long_options[] = {
     {"help",                  0, NULL, 'h'},
@@ -133,6 +134,7 @@ parse_args (int argc, char **argv)
 #endif /* PROG_HAS_PITCH */
     {"silence",               1, NULL, 's'},
     {"mix-input",             0, NULL, 'm'},
+    {"force-overwrite",       0, NULL, 'f'},
     {NULL,                    0, NULL, 0}
   };
   prog_name = argv[0];
@@ -158,6 +160,9 @@ parse_args (int argc, char **argv)
       case 'o':
         sink_uri = optarg;
         break;
+      case 'f':                /* force_overwrite flag */
+        force_overwrite = 1;
+        break;
       case 'r':
         samplerate = atoi (optarg);
         break;
@@ -229,15 +234,20 @@ parse_args (int argc, char **argv)
 #endif /* PROG_HAS_JACK */
   }
 
-  if (hop_size < 1) {
+  if ((sint_t)hop_size < 1) {
     errmsg("Error: got hop_size %d, but can not be < 1\n", hop_size);
     usage ( stderr, 1 );
-  } else if (buffer_size < 2) {
+  } else if ((sint_t)buffer_size < 2) {
     errmsg("Error: got buffer_size %d, but can not be < 2\n", buffer_size);
     usage ( stderr, 1 );
-  } else if (buffer_size < hop_size + 1) {
+  } else if ((sint_t)buffer_size < (sint_t)hop_size + 1) {
     errmsg("Error: hop size (%d) is larger than or equal to win size (%d)\n",
-        buffer_size, hop_size);
+        hop_size, buffer_size);
+    usage ( stderr, 1 );
+  }
+
+  if ((sint_t)samplerate < 0) {
+    errmsg("Error: got samplerate %d, but can not be < 0\n", samplerate);
     usage ( stderr, 1 );
   }