136 lines
3.2 KiB
Common Lisp
136 lines
3.2 KiB
Common Lisp
(in-package #:cl-streamer)
|
|
|
|
(cffi:define-foreign-library libfdkaac
|
|
(:unix (:or "libfdk-aac.so.2" "libfdk-aac.so"))
|
|
(:darwin "libfdk-aac.dylib")
|
|
(:windows "libfdk-aac.dll")
|
|
(t (:default "libfdk-aac")))
|
|
|
|
(cffi:use-foreign-library libfdkaac)
|
|
|
|
(cffi:defctype aac-encoder-handle :pointer)
|
|
|
|
(cffi:defcenum aac-encoder-param
|
|
(:aacenc-aot #x0100)
|
|
(:aacenc-bitrate #x0101)
|
|
(:aacenc-bitratemode #x0102)
|
|
(:aacenc-samplerate #x0103)
|
|
(:aacenc-sbr-mode #x0104)
|
|
(:aacenc-granule-length #x0105)
|
|
(:aacenc-channelmode #x0106)
|
|
(:aacenc-channelorder #x0107)
|
|
(:aacenc-sbr-ratio #x0108)
|
|
(:aacenc-afterburner #x0200)
|
|
(:aacenc-bandwidth #x0203)
|
|
(:aacenc-transmux #x0300)
|
|
(:aacenc-header-period #x0301)
|
|
(:aacenc-signaling-mode #x0302)
|
|
(:aacenc-tpsubframes #x0303)
|
|
(:aacenc-protection #x0306)
|
|
(:aacenc-ancillary-bitrate #x0500)
|
|
(:aacenc-metadata-mode #x0600))
|
|
|
|
(cffi:defcenum aac-encoder-error
|
|
(:aacenc-ok #x0000)
|
|
(:aacenc-invalid-handle #x0020)
|
|
(:aacenc-memory-error #x0021)
|
|
(:aacenc-unsupported-parameter #x0022)
|
|
(:aacenc-invalid-config #x0023)
|
|
(:aacenc-init-error #x0040)
|
|
(:aacenc-init-aac-error #x0041)
|
|
(:aacenc-init-sbr-error #x0042)
|
|
(:aacenc-init-tp-error #x0043)
|
|
(:aacenc-init-meta-error #x0044)
|
|
(:aacenc-encode-error #x0060)
|
|
(:aacenc-encode-eof #x0080))
|
|
|
|
(cffi:defcenum aac-channel-mode
|
|
(:mode-invalid -1)
|
|
(:mode-unknown 0)
|
|
(:mode-1 1)
|
|
(:mode-2 2)
|
|
(:mode-1-2 3)
|
|
(:mode-1-2-1 4)
|
|
(:mode-1-2-2 5)
|
|
(:mode-1-2-2-1 6)
|
|
(:mode-1-2-2-2-1 7))
|
|
|
|
(cffi:defcenum aac-transmux
|
|
(:tt-unknown -1)
|
|
(:tt-raw 0)
|
|
(:tt-adif 1)
|
|
(:tt-adts 2)
|
|
(:tt-latm-mcp1 6)
|
|
(:tt-latm-mcp0 7)
|
|
(:tt-loas 10))
|
|
|
|
(cffi:defcenum aac-aot
|
|
(:aot-none -1)
|
|
(:aot-null 0)
|
|
(:aot-aac-main 1)
|
|
(:aot-aac-lc 2)
|
|
(:aot-aac-ssr 3)
|
|
(:aot-aac-ltp 4)
|
|
(:aot-sbr 5)
|
|
(:aot-aac-scal 6)
|
|
(:aot-er-aac-lc 17)
|
|
(:aot-er-aac-ld 23)
|
|
(:aot-er-aac-eld 39)
|
|
(:aot-ps 29)
|
|
(:aot-mp2-aac-lc 129)
|
|
(:aot-mp2-sbr 132))
|
|
|
|
(cffi:defcstruct aacenc-buf-desc
|
|
(num-bufs :int)
|
|
(bufs :pointer)
|
|
(buf-ids :pointer)
|
|
(buf-sizes :pointer)
|
|
(buf-el-sizes :pointer))
|
|
|
|
(cffi:defcstruct aacenc-in-args
|
|
(num-in-samples :int)
|
|
(num-ancillary-bytes :int))
|
|
|
|
(cffi:defcstruct aacenc-out-args
|
|
(num-out-bytes :int)
|
|
(num-in-samples :int)
|
|
(num-ancillary-bytes :int))
|
|
|
|
(cffi:defcstruct aacenc-info-struct
|
|
(max-out-buf-bytes :uint)
|
|
(max-ancillary-bytes :uint)
|
|
(in-buf-fill-level :uint)
|
|
(input-channels :uint)
|
|
(frame-length :uint)
|
|
(encoder-delay :uint)
|
|
(conf-buf :pointer)
|
|
(conf-size :uint))
|
|
|
|
(cffi:defcfun ("aacEncOpen" aac-enc-open) :int
|
|
(ph-aac-encoder :pointer)
|
|
(enc-modules :uint)
|
|
(max-channels :uint))
|
|
|
|
(cffi:defcfun ("aacEncClose" aac-enc-close) :int
|
|
(ph-aac-encoder :pointer))
|
|
|
|
(cffi:defcfun ("aacEncEncode" aac-enc-encode) :int
|
|
(h-aac-encoder aac-encoder-handle)
|
|
(in-buf-desc :pointer)
|
|
(out-buf-desc :pointer)
|
|
(in-args :pointer)
|
|
(out-args :pointer))
|
|
|
|
(cffi:defcfun ("aacEncInfo" aac-enc-info) :int
|
|
(h-aac-encoder aac-encoder-handle)
|
|
(p-info :pointer))
|
|
|
|
(cffi:defcfun ("aacEncoder_SetParam" aac-encoder-set-param) :int
|
|
(h-aac-encoder aac-encoder-handle)
|
|
(param aac-encoder-param)
|
|
(value :uint))
|
|
|
|
(cffi:defcfun ("aacEncoder_GetParam" aac-encoder-get-param) :uint
|
|
(h-aac-encoder aac-encoder-handle)
|
|
(param aac-encoder-param))
|