Documentation added.
This commit is contained in:
+52
-1
@@ -1,7 +1,9 @@
|
||||
(module opus-encoder racket/base
|
||||
|
||||
(require ffi/unsafe
|
||||
"private/utils.rkt")
|
||||
racket/string
|
||||
"private/utils.rkt"
|
||||
"taglib.rkt")
|
||||
|
||||
(provide opus-encoder-available?
|
||||
opus-encoder-default-settings
|
||||
@@ -156,6 +158,54 @@
|
||||
(check-ope 'opus-comment (ope_comments_add comments (string-upcase (symbol->string k)) v)))))
|
||||
(hash-keys ch))))))
|
||||
|
||||
(define (picture-kind->opus-int kind)
|
||||
(define s
|
||||
(cond [(number? kind) (number->string kind)]
|
||||
[(symbol? kind) (string-replace (string-downcase (symbol->string kind)) "-" " ")]
|
||||
[(string? kind) (string-downcase kind)]
|
||||
[else ""]))
|
||||
(cond [(or (string=? s "0") (string=? s "other")) 0]
|
||||
[(or (string=? s "1") (string=? s "file icon") (string=? s "32x32 icon")) 1]
|
||||
[(or (string=? s "2") (string=? s "other file icon")) 2]
|
||||
[(or (string=? s "3") (string=? s "front cover") (string=? s "cover front")
|
||||
(string=? s "cover (front)") (string=? s "front")) 3]
|
||||
[(or (string=? s "4") (string=? s "back cover") (string=? s "cover back")
|
||||
(string=? s "cover (back)") (string=? s "back")) 4]
|
||||
[(or (string=? s "5") (string=? s "leaflet page")) 5]
|
||||
[(or (string=? s "6") (string=? s "media") (string=? s "label side of media")) 6]
|
||||
[(or (string=? s "7") (string=? s "lead artist") (string=? s "lead performer")
|
||||
(string=? s "soloist")) 7]
|
||||
[(or (string=? s "8") (string=? s "artist") (string=? s "performer")) 8]
|
||||
[(or (string=? s "9") (string=? s "conductor")) 9]
|
||||
[(or (string=? s "10") (string=? s "band") (string=? s "orchestra")) 10]
|
||||
[(or (string=? s "11") (string=? s "composer")) 11]
|
||||
[(or (string=? s "12") (string=? s "lyricist") (string=? s "text writer")) 12]
|
||||
[(or (string=? s "13") (string=? s "recording location")) 13]
|
||||
[(or (string=? s "14") (string=? s "during recording")) 14]
|
||||
[(or (string=? s "15") (string=? s "during performance")) 15]
|
||||
[(or (string=? s "16") (string=? s "movie screen capture")) 16]
|
||||
[(or (string=? s "17") (string=? s "a bright coloured fish")
|
||||
(string=? s "bright coloured fish")) 17]
|
||||
[(or (string=? s "18") (string=? s "illustration")) 18]
|
||||
[(or (string=? s "19") (string=? s "band logo") (string=? s "artist logotype")) 19]
|
||||
[(or (string=? s "20") (string=? s "publisher logo") (string=? s "publisher logotype")) 20]
|
||||
[else 3]))
|
||||
|
||||
(define (add-picture! comments settings)
|
||||
(when (hash-has-key? settings 'picture)
|
||||
(unless ope_comments_add_picture_from_memory
|
||||
(error 'opus-picture "libopusenc does not provide ope_comments_add_picture_from_memory"))
|
||||
(let ((picture (hash-ref settings 'picture)))
|
||||
(when (id3-picture? picture)
|
||||
(let ((data (id3-picture-bytes picture)))
|
||||
(check-ope 'opus-picture
|
||||
(ope_comments_add_picture_from_memory
|
||||
comments
|
||||
data
|
||||
(bytes-length data)
|
||||
(picture-kind->opus-int (id3-picture-kind picture))
|
||||
(id3-picture-description picture))))))))
|
||||
|
||||
(define (opus-encoder-open output-file settings format)
|
||||
(unless (opus-encoder-available?)
|
||||
(error 'opus-encoder-open "libopusenc or one of its dependent libraries (ogg/opus) could not be loaded"))
|
||||
@@ -163,6 +213,7 @@
|
||||
(resolved (opus-encoder-prepare-settings settings format))
|
||||
(comments (ope_comments_create)))
|
||||
(add-comments! comments resolved)
|
||||
(add-picture! comments resolved)
|
||||
(let-values (((enc err) (ope_encoder_create_file file comments
|
||||
(hash-ref resolved 'sample-rate)
|
||||
(hash-ref resolved 'channels)
|
||||
|
||||
Reference in New Issue
Block a user