chiark / gitweb /
Suppress IO buffering when running tests
[disorder] / clients / playrtp.c
index 1263d7a012cc000085cb359a63a9d8ad20fae205..4f6e57a257f423e4660332ebff6080e4f4eba5dc 100644 (file)
@@ -85,6 +85,7 @@
 #include "client.h"
 #include "playrtp.h"
 #include "inputline.h"
+#include "version.h"
 
 #define readahead linux_headers_are_borked
 
@@ -192,9 +193,26 @@ HEAP_DEFINE(pheap, struct packet *, lt_packet);
 /** @brief Control socket or NULL */
 const char *control_socket;
 
+/** @brief Buffer for debugging dump
+ *
+ * The debug dump is enabled by the @c --dump option.  It records the last 20s
+ * of audio to the specified file (which will be about 3.5Mbytes).  The file is
+ * written as as ring buffer, so the start point will progress through it.
+ *
+ * Use clients/dump2wav to convert this to a WAV file, which can then be loaded
+ * into (e.g.) Audacity for further inspection.
+ *
+ * All three backends (ALSA, OSS, Core Audio) now support this option.
+ *
+ * The idea is to allow the user a few seconds to react to an audible artefact.
+ */
 int16_t *dump_buffer;
+
+/** @brief Current index within debugging dump */
 size_t dump_index;
-size_t dump_size = 44100 * 2 * 20; /* 20s */
+
+/** @brief Size of debugging dump in samples */
+size_t dump_size = 44100/*Hz*/ * 2/*channels*/ * 20/*seconds*/;
 
 static const struct option options[] = {
   { "help", no_argument, 0, 'h' },
@@ -514,13 +532,6 @@ static void help(void) {
   exit(0);
 }
 
-/* display version number and terminate */
-static void version(void) {
-  xprintf("disorder-playrtp version %s\n", disorder_version_string);
-  xfclose(stdout);
-  exit(0);
-}
-
 int main(int argc, char **argv) {
   int n, err;
   struct addrinfo *res;
@@ -557,7 +568,7 @@ int main(int argc, char **argv) {
   while((n = getopt_long(argc, argv, "hVdD:m:b:x:L:R:M:aocC:r", options, 0)) >= 0) {
     switch(n) {
     case 'h': help();
-    case 'V': version();
+    case 'V': version("disorder-playrtp");
     case 'd': debugging = 1; break;
     case 'D': device = optarg; break;
     case 'm': minbuffer = 2 * atol(optarg); break;