Added capability information

This commit is contained in:
2026-08-08 14:20:46 +02:00
parent 070f6bd12a
commit 8e6bf4e0f7
7 changed files with 119 additions and 19 deletions
+32 -16
View File
@@ -10,6 +10,7 @@
audio-sniff-format
audio-sniff-format/extension
audio-sniff-extension
audio-format-for-extension
audio-format-matches?
audio-format-known?)
@@ -46,6 +47,30 @@
(substring s 1)
s))])))
(define (audio-format-for-extension* extension)
(let* ((text (string-downcase
(format "~a" extension)))
(normalized
(if (string-prefix? text ".")
(substring text 1)
text)))
(case (string->symbol normalized)
[(mp3 mp2 mp1) 'mp3]
[(flac) 'flac]
[(ogg oga) 'ogg]
[(opus) 'opus]
[(wav wave) 'wav]
[(aif aiff aifc) 'aiff]
[(m4a mp4 m4b m4p) 'mp4]
[(aac) 'aac]
[(alac) 'alac]
[(ac3) 'ac3]
[(ape) 'ape]
[(wv wvp wvpk wavpack) 'wavpack]
[(wma asf) 'wma]
[(webm mka mkv) 'matroska]
[else 'unknown])))
(define (file-readable-status file)
(cond
[(not (file-exists? file)) 'file-not-found]
@@ -294,22 +319,9 @@
fmt]
[(not (eq? fmt 'unknown)) fmt]
[else
(case (string->symbol (or (audio-sniff-extension* file) ""))
[(mp3 mp2 mp1) 'mp3]
[(flac) 'flac]
[(ogg oga) 'ogg]
[(opus) 'opus]
[(wav wave) 'wav]
[(aif aiff aifc) 'aiff]
[(m4a mp4 m4b m4p) 'mp4]
[(aac) 'aac]
[(alac) 'alac]
[(ac3) 'ac3]
[(ape) 'ape]
[(wv wvp wvpk wavpack) 'wavpack]
[(wma asf) 'wma]
[(webm mka mkv) 'matroska]
[else 'unknown])])))
(audio-format-for-extension*
(or (audio-sniff-extension* file)
""))])))
(define (audio-format-known?* fmt)
(not (eq? (memq fmt audio-formats) #f)))
@@ -321,6 +333,10 @@
(-> path-string? (or/c string? #f))
(audio-sniff-extension* file))
(define/contract (audio-format-for-extension extension)
(-> (or/c string? symbol?) audio-format?)
(audio-format-for-extension* extension))
(define/contract (audio-sniff-format file)
(-> path-string? audio-format?)
(audio-sniff-format* file))