diff options
| author | Sigrid <ftrvxmtrx@gmail.com> | 2020-11-02 11:46:50 +0100 |
|---|---|---|
| committer | Sigrid <ftrvxmtrx@gmail.com> | 2020-11-02 11:46:50 +0100 |
| commit | f4d206737342feec31086a8f3ca6866506a2e0b5 (patch) | |
| tree | c0b21196bdeb8d4b9701f02298ecdf18019d5dae | |
| parent | a4c6dc1d3d3a2ef3ec4d4ac49b16ec039c353cd7 (diff) | |
| download | plan9front-f4d206737342feec31086a8f3ca6866506a2e0b5.tar.xz | |
audio/wavdec: add -s option
| -rw-r--r-- | sys/man/1/audio | 4 | ||||
| -rw-r--r-- | sys/src/cmd/audio/wavdec/wavdec.c | 25 |
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); } |
