diff --git a/doc/drivers.html b/doc/drivers.html index ea2046725591050497202968d4bb30cd5d537047..a055855f5573ed96e9fb7ce2c32860e07a564de5 100644 --- a/doc/drivers.html +++ b/doc/drivers.html @@ -32,7 +32,11 @@ Null driver. This is just a test device which does not write the audio data anywhere. <p> -<b>Option keys:</b> None. +<b>Option keys:</b> +<ul> +<li>"debug" - Print the number of bytes written to the device to stderr +when the device is closed. The option value is ignored. +</ul> <p> <hr width="50%"> diff --git a/src/ao_null.c b/src/ao_null.c index c4b6ab7a0a81ae1d6fab08141fc928a1970ff05f..04605d51f4328d882c32445f58720dee20762835 100644 --- a/src/ao_null.c +++ b/src/ao_null.c @@ -25,6 +25,7 @@ */ #include <stdio.h> +#include <string.h> #include <ao/ao.h> static ao_info ao_null_info = { @@ -42,6 +43,7 @@ static ao_info ao_null_info = { typedef struct ao_null_internal { unsigned long byte_counter; + int debug_output; } ao_null_internal; @@ -67,7 +69,8 @@ static int ao_null_device_init(ao_device *device) return 0; /* Could not initialize device memory */ internal->byte_counter = 0; - + internal->debug_output = 0; + device->internal = internal; return 1; /* Memory alloc successful */ @@ -77,7 +80,13 @@ static int ao_null_device_init(ao_device *device) static int ao_null_set_option(ao_device *device, const char *key, const char *value) { - return 1; /* No options! */ + ao_null_internal *internal = (ao_null_internal *) device->internal; + + if (!strcmp(key, "debug")) { + internal->debug_output = 1; + } + + return 1; } @@ -106,8 +115,10 @@ static int ao_null_close(ao_device *device) { ao_null_internal *internal = (ao_null_internal *) device->internal; - fprintf(stderr, "ao_null: %ld bytes sent to null device.\n", - internal->byte_counter); + if (internal->debug_output) { + fprintf(stderr, "ao_null: %ld bytes sent to null device.\n", + internal->byte_counter); + } return 1; }