diff options
Diffstat (limited to 'src/aiorecord.cc')
-rw-r--r-- | src/aiorecord.cc | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/aiorecord.cc b/src/aiorecord.cc index cfcc392..76febac 100644 --- a/src/aiorecord.cc +++ b/src/aiorecord.cc @@ -58,8 +58,24 @@ static const char usage_str[] = " -h, --help Print this message and exit.\n" ; +typedef enum { + MODE_UNKNOWN, + MODE_RECORD, + MODE_PLAY, +} mode_t; + int main(int argc, char *argv[]) { + // This program acts as both a recorder and a player depending on which name + // it is called by. + mode_t mode = MODE_UNKNOWN; + char *prog = strrchr(argv[0], '/'); + if(prog == NULL) prog = argv[0]; + if(!strcmp(prog, "aiorecord")) mode = MODE_RECORD; + if(!strcmp(prog, "aioplay")) mode = MODE_PLAY; + + print("prog: '%s'\n", prog); + std::string device = "default"; std::string file = "/dev/stdout"; int samplerate = 48000; @@ -129,9 +145,19 @@ int main(int argc, char *argv[]) Device dev(device); - Source *src = dev.getSource(device, samplerate, channels); - if(!src) { - printf("Could not find source device: %s\n", device.c_str()); + switch(mode) { + case MODE_RECORD: + { + Source *src = dev.getSource(device, samplerate, channels); + if(!src) { + printf("Could not find source device: %s\n", device.c_str()); + } + } + break; + case MODE_PLAY: + default: + printf("Unknown mode '%s'.\n", prog); + return 1; } return 0; |