summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSigrid <ftrvxmtrx@gmail.com>2020-11-02 11:46:50 +0100
committerSigrid <ftrvxmtrx@gmail.com>2020-11-02 11:46:50 +0100
commitf4d206737342feec31086a8f3ca6866506a2e0b5 (patch)
treec0b21196bdeb8d4b9701f02298ecdf18019d5dae
parenta4c6dc1d3d3a2ef3ec4d4ac49b16ec039c353cd7 (diff)
downloadplan9front-f4d206737342feec31086a8f3ca6866506a2e0b5.tar.xz
audio/wavdec: add -s option
-rw-r--r--sys/man/1/audio4
-rw-r--r--sys/src/cmd/audio/wavdec/wavdec.c25
2 files changed, 27 insertions, 2 deletions
diff --git a/sys/man/1/audio b/sys/man/1/audio
index 511182c98..414827362 100644
--- a/sys/man/1/audio
+++ b/sys/man/1/audio
@@ -23,6 +23,10 @@ mp3dec, mp3enc, oggdec, oggenc, flacdec, sundec, wavdec, pcmconv, mixfs \- decod
]
.br
.B audio/wavdec
+[
+.B -s
+.I seconds
+]
.br
.B audio/sundec
.PP
diff --git a/sys/src/cmd/audio/wavdec/wavdec.c b/sys/src/cmd/audio/wavdec/wavdec.c
index 02e44e7a2..376f8cd5d 100644
--- a/sys/src/cmd/audio/wavdec/wavdec.c
+++ b/sys/src/cmd/audio/wavdec/wavdec.c
@@ -40,13 +40,29 @@ getcc(char tag[4])
}
void
-main(int, char *argv[])
+usage(void)
+{
+ fprint(2, "usage: %s [ -s SECONDS ]\n", argv0);
+ exits("usage");
+}
+
+void
+main(int argc, char **argv)
{
char buf[1024], fmt[32];
+ double seekto;
ulong len, n;
Wave wav;
- argv0 = argv[0];
+ seekto = 0.0;
+ ARGBEGIN{
+ case 's':
+ seekto = atof(EARGF(usage()));
+ break;
+ default:
+ usage();
+ }ARGEND
+
if(memcmp(getcc(buf), "RIFF", 4) != 0)
sysfatal("no riff format");
get4();
@@ -96,6 +112,11 @@ main(int, char *argv[])
default:
sysfatal("wave format (0x%lux) not supported", (ulong)wav.fmt);
}
+ if(seekto != 0.0){
+ if(seek(0, (ulong)seekto*wav.rate*wav.framesz & ~wav.framesz, 1) < 1)
+ seekto = 0.0;
+ fprint(2, "time: %g\n", seekto);
+ }
snprint(buf, sizeof(buf), "%lud", len);
execl("/bin/audio/pcmconv", "pcmconv", "-i", fmt, "-l", buf, nil);
}