Commit | Line | Data |
---|---|---|
583b7e4a MW |
1 | #! /bin/bash |
2 | ||
3 | set -e | |
4 | : ${JBDIR=/mnt/jb} | |
5 | ||
6 | zero_start=0 trim_end=0 offset=0 | |
7 | while getopts flF:L:o:b:a: opt; do | |
8 | case "$opt" in | |
9 | f) zero_start=$((588 * 5 - 1)) ;; | |
10 | l) trim_end=$((588 * 5)) ;; | |
11 | F) zero_start=$OPTARG ;; | |
12 | L) trim_end=$OPTARG ;; | |
13 | o) offset=$OPTARG ;; | |
14 | b) before=$OPTARG ;; | |
15 | a) after=$OPTARG ;; | |
16 | *) exit 1 ;; | |
17 | esac | |
18 | done | |
19 | ||
20 | shift $((OPTIND - 1)) | |
21 | case $# in | |
22 | 1) ;; | |
23 | *) echo >&2 "missing file argument" ;; | |
24 | esac | |
25 | file=$1 | |
26 | ||
27 | len=$(metaflac --show-total-samples "$file") | |
28 | ||
29 | if ((offset < 0)); then | |
30 | start=0 | |
31 | stop=$((stop + offset)) | |
32 | elif ((offset >= 0)); then | |
33 | start=$offset | |
34 | stop=$len | |
35 | fi | |
36 | ||
37 | { | |
38 | if ((offset < 0)); then | |
39 | if [ "${before+set}" ]; then | |
40 | n=$(metaflac --show-total-samples "$before") | |
41 | flac -d -s -o- --force-raw-format --sign=signed --endian=little \ | |
42 | --skip=$((n + offset)) --until=$n \ | |
43 | "$before" | |
44 | else | |
45 | $JBDIR/bin/cat-prefix $((4 * -offset)) </dev/zero | |
46 | fi | |
47 | fi | |
48 | ||
49 | flac -d -s -o- --force-raw-format --sign=signed --endian=little \ | |
50 | --skip=$start --until=$stop \ | |
51 | "$file" | |
52 | ||
53 | if ((offset > 0)); then | |
54 | if [ "${after+set}" ]; then | |
55 | flac -d -s -o- --force-raw-format --sign=signed --endian=little \ | |
56 | --skip=0 --until=$offset \ | |
57 | "$after" | |
58 | else | |
59 | $JBDIR/bin/cat-prefix $((4 * offset)) </dev/zero | |
60 | fi | |
61 | fi | |
62 | } | { | |
63 | if ((zero_start > 0)); then | |
64 | $JBDIR/bin/cat-prefix $((4 * zero_start)) </dev/zero | |
65 | $JBDIR/bin/cat-prefix $((4 * zero_start)) >/dev/null | |
66 | len=$((len - zero_start)) | |
67 | fi | |
68 | if ((trim_end > 0)); then | |
69 | $JBDIR/bin/cat-prefix $((4 * (len - trim_end))) | |
70 | $JBDIR/bin/cat-prefix $((4 * trim_end)) </dev/zero | |
71 | cat >/dev/null | |
72 | else | |
73 | cat | |
74 | fi | |
75 | } |