Skip to content

Commit d408975

Browse files
committed
FIX: handle loading 24bit WAV files + minor wav codec fixes
1 parent 9288d5e commit d408975

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/mezz/codec-wav.reb

+13-5
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ register-codec [
4444
data: copy []
4545
chunks: copy []
4646

47-
while [not tail? bin/buffer][
47+
while [8 < length? bin/buffer][
4848
binary/read bin [
4949
id: BYTES 4
5050
size: UI32LE
5151
starts: INDEX
5252
]
5353
ends: starts + size
54-
chunk: any [ try [to tag! id] id ]
54+
chunk: any [ attempt [to tag! id] id ]
5555
if verbose > 0 [
5656
printf [
5757
$32
@@ -112,7 +112,7 @@ register-codec [
112112
]
113113
<cue > [
114114
count: binary/read bin 'UI32LE
115-
append chunks cues: copy []
115+
append/only chunks cues: copy []
116116
loop count [
117117
binary/read/into bin [
118118
UI32LE ; id - unique identification value
@@ -151,7 +151,15 @@ register-codec [
151151
channels: (format/2)
152152
bits: (format/6)
153153
chunks: (chunks)
154-
data: (either empty? data [none][make vector! reduce ['integer! format/6 rejoin data]])
154+
data: (
155+
case [
156+
empty? data [none]
157+
; we don't have 24bit integer vectors
158+
find [8 16 32] format/6 [make vector! reduce ['integer! format/6 rejoin data]]
159+
; so provide raw binary data only...
160+
'else data
161+
]
162+
)
155163
]
156164
]
157165
]
@@ -254,5 +262,5 @@ register-codec [
254262
parse data [#{52494646} 4 skip #{57415645} to end]
255263
]
256264

257-
verbose: 0
265+
verbose: 3
258266
]

0 commit comments

Comments
 (0)