summaryrefslogtreecommitdiff
path: root/bat
diff options
context:
space:
mode:
Diffstat (limited to 'bat')
-rw-r--r--bat/bat.c17
-rw-r--r--bat/common.h3
2 files changed, 20 insertions, 0 deletions
diff --git a/bat/bat.c b/bat/bat.c
index 8645770..17d025d 100644
--- a/bat/bat.c
+++ b/bat/bat.c
@@ -331,6 +331,8 @@ _("Usage: alsabat [-options]...\n"
" --log=# file that both stdout and strerr redirecting to\n"
" --file=# file for playback\n"
" --saveplay=# file that storing playback content, for debug\n"
+" --readcapture=# file with previously captured content. File data\n"
+" is used for analysis instead of capturing it.\n"
" --local internal loop, set to bypass pcm hardware devices\n"
" --standalone standalone mode, to bypass analysis\n"
" --roundtriplatency round trip latency mode\n"
@@ -397,6 +399,7 @@ static void parse_arguments(struct bat *bat, int argc, char *argv[])
{"roundtriplatency", 0, 0, OPT_ROUNDTRIPLATENCY},
{"snr-db", 1, 0, OPT_SNRTHD_DB},
{"snr-pc", 1, 0, OPT_SNRTHD_PC},
+ {"readcapture", 1, 0, OPT_READCAPTURE},
{0, 0, 0, 0}
};
@@ -412,6 +415,11 @@ static void parse_arguments(struct bat *bat, int argc, char *argv[])
case OPT_SAVEPLAY:
bat->debugplay = optarg;
break;
+ case OPT_READCAPTURE:
+ bat->capturefile = optarg;
+ bat->capture.mode = MODE_ANALYZE_ONLY;
+ bat->playback.mode = MODE_ANALYZE_ONLY;
+ break;
case OPT_LOCAL:
bat->local = true;
break;
@@ -708,6 +716,15 @@ int main(int argc, char *argv[])
goto analyze;
}
+ if (bat.capture.mode == MODE_ANALYZE_ONLY && bat.capturefile) {
+ bat.capture.file = strdup(bat.capturefile);
+ fprintf(bat.log,
+ _("Using data from file %s for analysis\n"),
+ bat.capture.file);
+ fprintf(bat.log, _("Skipping playback and capture\n"));
+ goto analyze;
+ }
+
/* loopback thread: playback and capture in a loop */
if (bat.local == false)
test_loopback(&bat);
diff --git a/bat/common.h b/bat/common.h
index 1b07fbe..a9bae5d 100644
--- a/bat/common.h
+++ b/bat/common.h
@@ -25,6 +25,7 @@
#define OPT_ROUNDTRIPLATENCY (OPT_BASE + 6)
#define OPT_SNRTHD_DB (OPT_BASE + 7)
#define OPT_SNRTHD_PC (OPT_BASE + 8)
+#define OPT_READCAPTURE (OPT_BASE + 9)
#define COMPOSE(a, b, c, d) ((a) | ((b)<<8) | ((c)<<16) | ((d)<<24))
#define WAV_RIFF COMPOSE('R', 'I', 'F', 'F')
@@ -151,6 +152,7 @@ enum _bat_op_mode {
MODE_UNKNOWN = -1,
MODE_SINGLE = 0,
MODE_LOOPBACK,
+ MODE_ANALYZE_ONLY,
MODE_LAST
};
@@ -223,6 +225,7 @@ struct bat {
char *narg; /* argument string of duration */
char *logarg; /* path name of log file */
char *debugplay; /* path name to store playback signal */
+ char *capturefile; /* path name for previously saved recording */
bool standalone; /* enable to bypass analysis */
bool roundtriplatency; /* enable round trip latency */