93 lines
2.2 KiB
Common Lisp
93 lines
2.2 KiB
Common Lisp
(in-package #:cl-streamer)
|
|
|
|
(cffi:define-foreign-library liblame
|
|
(:unix (:or "libmp3lame.so.0" "libmp3lame.so"))
|
|
(:darwin "libmp3lame.dylib")
|
|
(:windows "libmp3lame.dll")
|
|
(t (:default "libmp3lame")))
|
|
|
|
(cffi:use-foreign-library liblame)
|
|
|
|
(cffi:defctype lame-global-flags :pointer)
|
|
|
|
(cffi:defcenum lame-vbr-mode
|
|
(:vbr-off 0)
|
|
(:vbr-mt 1)
|
|
(:vbr-rh 2)
|
|
(:vbr-abr 3)
|
|
(:vbr-mtrh 4)
|
|
(:vbr-default 4))
|
|
|
|
(cffi:defcenum lame-mode
|
|
(:stereo 0)
|
|
(:joint-stereo 1)
|
|
(:dual-channel 2)
|
|
(:mono 3))
|
|
|
|
(cffi:defcfun ("lame_init" lame-init) lame-global-flags)
|
|
|
|
(cffi:defcfun ("lame_close" lame-close) :int
|
|
(gfp lame-global-flags))
|
|
|
|
(cffi:defcfun ("lame_set_in_samplerate" lame-set-in-samplerate) :int
|
|
(gfp lame-global-flags)
|
|
(rate :int))
|
|
|
|
(cffi:defcfun ("lame_set_out_samplerate" lame-set-out-samplerate) :int
|
|
(gfp lame-global-flags)
|
|
(rate :int))
|
|
|
|
(cffi:defcfun ("lame_set_num_channels" lame-set-num-channels) :int
|
|
(gfp lame-global-flags)
|
|
(channels :int))
|
|
|
|
(cffi:defcfun ("lame_set_mode" lame-set-mode) :int
|
|
(gfp lame-global-flags)
|
|
(mode lame-mode))
|
|
|
|
(cffi:defcfun ("lame_set_quality" lame-set-quality) :int
|
|
(gfp lame-global-flags)
|
|
(quality :int))
|
|
|
|
(cffi:defcfun ("lame_set_brate" lame-set-brate) :int
|
|
(gfp lame-global-flags)
|
|
(brate :int))
|
|
|
|
(cffi:defcfun ("lame_set_VBR" lame-set-vbr) :int
|
|
(gfp lame-global-flags)
|
|
(vbr-mode lame-vbr-mode))
|
|
|
|
(cffi:defcfun ("lame_set_VBR_quality" lame-set-vbr-quality) :int
|
|
(gfp lame-global-flags)
|
|
(quality :float))
|
|
|
|
(cffi:defcfun ("lame_init_params" lame-init-params) :int
|
|
(gfp lame-global-flags))
|
|
|
|
(cffi:defcfun ("lame_encode_buffer_interleaved" lame-encode-buffer-interleaved) :int
|
|
(gfp lame-global-flags)
|
|
(pcm :pointer)
|
|
(num-samples :int)
|
|
(mp3buf :pointer)
|
|
(mp3buf-size :int))
|
|
|
|
(cffi:defcfun ("lame_encode_buffer" lame-encode-buffer) :int
|
|
(gfp lame-global-flags)
|
|
(buffer-l :pointer)
|
|
(buffer-r :pointer)
|
|
(num-samples :int)
|
|
(mp3buf :pointer)
|
|
(mp3buf-size :int))
|
|
|
|
(cffi:defcfun ("lame_encode_flush" lame-encode-flush) :int
|
|
(gfp lame-global-flags)
|
|
(mp3buf :pointer)
|
|
(mp3buf-size :int))
|
|
|
|
(cffi:defcfun ("lame_get_lametag_frame" lame-get-lametag-frame) :size
|
|
(gfp lame-global-flags)
|
|
(buffer :pointer)
|
|
(size :size))
|
|
|
|
(cffi:defcfun ("get_lame_version" get-lame-version) :string)
|