Merge pull request #18 from staticfloat/sf/bindeps
Fixes to work with BinDeps/Homebrew properly
This commit is contained in:
commit
9d9af6e4cd
3 changed files with 18 additions and 18 deletions
|
@ -54,6 +54,8 @@ function render(node::AudioNode, input::AudioBuf, info::DeviceInfo)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Get binary dependencies loaded from BinDeps
|
||||||
|
include( "../deps/deps.jl")
|
||||||
include("nodes.jl")
|
include("nodes.jl")
|
||||||
include("portaudio.jl")
|
include("portaudio.jl")
|
||||||
include("sndfile.jl")
|
include("sndfile.jl")
|
||||||
|
|
|
@ -77,7 +77,7 @@ end
|
||||||
|
|
||||||
function handle_status(err::PaError)
|
function handle_status(err::PaError)
|
||||||
if err != PA_NO_ERROR
|
if err != PA_NO_ERROR
|
||||||
msg = ccall((:Pa_GetErrorText, "libportaudio"),
|
msg = ccall((:Pa_GetErrorText, libportaudio),
|
||||||
Ptr{Cchar}, (PaError,), err)
|
Ptr{Cchar}, (PaError,), err)
|
||||||
error("libportaudio: " * bytestring(msg))
|
error("libportaudio: " * bytestring(msg))
|
||||||
end
|
end
|
||||||
|
@ -151,14 +151,14 @@ type PortAudioInterface <: AudioInterface
|
||||||
end
|
end
|
||||||
|
|
||||||
# some thin wrappers to portaudio calls
|
# some thin wrappers to portaudio calls
|
||||||
get_device_info(i) = unsafe_load(ccall((:Pa_GetDeviceInfo, "libportaudio"),
|
get_device_info(i) = unsafe_load(ccall((:Pa_GetDeviceInfo, libportaudio),
|
||||||
Ptr{PaDeviceInfo}, (PaDeviceIndex,), i))
|
Ptr{PaDeviceInfo}, (PaDeviceIndex,), i))
|
||||||
get_host_api_info(i) = unsafe_load(ccall((:Pa_GetHostApiInfo, "libportaudio"),
|
get_host_api_info(i) = unsafe_load(ccall((:Pa_GetHostApiInfo, libportaudio),
|
||||||
Ptr{PaHostApiInfo}, (PaHostApiIndex,), i))
|
Ptr{PaHostApiInfo}, (PaHostApiIndex,), i))
|
||||||
|
|
||||||
function get_portaudio_devices()
|
function get_portaudio_devices()
|
||||||
init_portaudio()
|
init_portaudio()
|
||||||
device_count = ccall((:Pa_GetDeviceCount, "libportaudio"), PaDeviceIndex, ())
|
device_count = ccall((:Pa_GetDeviceCount, libportaudio), PaDeviceIndex, ())
|
||||||
pa_devices = [get_device_info(i) for i in 0:(device_count - 1)]
|
pa_devices = [get_device_info(i) for i in 0:(device_count - 1)]
|
||||||
[PortAudioInterface(bytestring(d.name),
|
[PortAudioInterface(bytestring(d.name),
|
||||||
bytestring(get_host_api_info(d.host_api).name),
|
bytestring(get_host_api_info(d.host_api).name),
|
||||||
|
@ -174,7 +174,7 @@ function init_portaudio()
|
||||||
@assert(libportaudio_shim != "", "Failed to find required library libportaudio_shim. Try re-running the package script using Pkg.build(\"AudioIO\"), then reloading with reload(\"AudioIO\")")
|
@assert(libportaudio_shim != "", "Failed to find required library libportaudio_shim. Try re-running the package script using Pkg.build(\"AudioIO\"), then reloading with reload(\"AudioIO\")")
|
||||||
|
|
||||||
info("Initializing PortAudio. Expect errors as we scan devices")
|
info("Initializing PortAudio. Expect errors as we scan devices")
|
||||||
err = ccall((:Pa_Initialize, "libportaudio"), PaError, ())
|
err = ccall((:Pa_Initialize, libportaudio), PaError, ())
|
||||||
handle_status(err)
|
handle_status(err)
|
||||||
portaudio_inited = true
|
portaudio_inited = true
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
export af_open, FilePlayer
|
export af_open, FilePlayer
|
||||||
|
|
||||||
const sndfile = "libsndfile"
|
|
||||||
|
|
||||||
const SFM_READ = int32(0x10)
|
const SFM_READ = int32(0x10)
|
||||||
const SFM_WRITE = int32(0x20)
|
const SFM_WRITE = int32(0x20)
|
||||||
|
|
||||||
|
@ -59,12 +57,12 @@ function af_open(path::String, mode::String = "r",
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
filePtr = ccall((:sf_open, sndfile), Ptr{Void},
|
filePtr = ccall((:sf_open, libsndfile), Ptr{Void},
|
||||||
(Ptr{Uint8}, Int32, Ptr{SF_INFO}),
|
(Ptr{Uint8}, Int32, Ptr{SF_INFO}),
|
||||||
path, file_mode, &sfinfo)
|
path, file_mode, &sfinfo)
|
||||||
|
|
||||||
if filePtr == C_NULL
|
if filePtr == C_NULL
|
||||||
errmsg = ccall((:sf_strerror, sndfile), Ptr{Uint8}, (Ptr{Void},), filePtr)
|
errmsg = ccall((:sf_strerror, libsndfile), Ptr{Uint8}, (Ptr{Void},), filePtr)
|
||||||
error(bytestring(errmsg))
|
error(bytestring(errmsg))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -72,7 +70,7 @@ function af_open(path::String, mode::String = "r",
|
||||||
end
|
end
|
||||||
|
|
||||||
function Base.close(file::AudioFile)
|
function Base.close(file::AudioFile)
|
||||||
err = ccall((:sf_close, sndfile), Int32, (Ptr{Void},), file.filePtr)
|
err = ccall((:sf_close, libsndfile), Int32, (Ptr{Void},), file.filePtr)
|
||||||
if err != 0
|
if err != 0
|
||||||
error("Failed to close file")
|
error("Failed to close file")
|
||||||
end
|
end
|
||||||
|
@ -95,19 +93,19 @@ function Base.read(file::AudioFile, nframes::Integer, dtype::Type)
|
||||||
end
|
end
|
||||||
|
|
||||||
if dtype == Int16
|
if dtype == Int16
|
||||||
nread = ccall((:sf_readf_short, sndfile), Int64,
|
nread = ccall((:sf_readf_short, libsndfile), Int64,
|
||||||
(Ptr{Void}, Ptr{Int16}, Int64),
|
(Ptr{Void}, Ptr{Int16}, Int64),
|
||||||
file.filePtr, arr, nframes)
|
file.filePtr, arr, nframes)
|
||||||
elseif dtype == Int32
|
elseif dtype == Int32
|
||||||
nread = ccall((:sf_readf_int, sndfile), Int64,
|
nread = ccall((:sf_readf_int, libsndfile), Int64,
|
||||||
(Ptr{Void}, Ptr{Int32}, Int64),
|
(Ptr{Void}, Ptr{Int32}, Int64),
|
||||||
file.filePtr, arr, nframes)
|
file.filePtr, arr, nframes)
|
||||||
elseif dtype == Float32
|
elseif dtype == Float32
|
||||||
nread = ccall((:sf_readf_float, sndfile), Int64,
|
nread = ccall((:sf_readf_float, libsndfile), Int64,
|
||||||
(Ptr{Void}, Ptr{Float32}, Int64),
|
(Ptr{Void}, Ptr{Float32}, Int64),
|
||||||
file.filePtr, arr, nframes)
|
file.filePtr, arr, nframes)
|
||||||
elseif dtype == Float64
|
elseif dtype == Float64
|
||||||
nread = ccall((:sf_readf_double, sndfile), Int64,
|
nread = ccall((:sf_readf_double, libsndfile), Int64,
|
||||||
(Ptr{Void}, Ptr{Float64}, Int64),
|
(Ptr{Void}, Ptr{Float64}, Int64),
|
||||||
file.filePtr, arr, nframes)
|
file.filePtr, arr, nframes)
|
||||||
end
|
end
|
||||||
|
@ -124,19 +122,19 @@ function Base.write{T}(file::AudioFile, frames::Array{T})
|
||||||
nframes = int(length(frames) / file.sfinfo.channels)
|
nframes = int(length(frames) / file.sfinfo.channels)
|
||||||
|
|
||||||
if T == Int16
|
if T == Int16
|
||||||
return ccall((:sf_writef_short, sndfile), Int64,
|
return ccall((:sf_writef_short, libsndfile), Int64,
|
||||||
(Ptr{Void}, Ptr{Int16}, Int64),
|
(Ptr{Void}, Ptr{Int16}, Int64),
|
||||||
file.filePtr, frames, nframes)
|
file.filePtr, frames, nframes)
|
||||||
elseif T == Int32
|
elseif T == Int32
|
||||||
return ccall((:sf_writef_int, sndfile), Int64,
|
return ccall((:sf_writef_int, libsndfile), Int64,
|
||||||
(Ptr{Void}, Ptr{Int32}, Int64),
|
(Ptr{Void}, Ptr{Int32}, Int64),
|
||||||
file.filePtr, frames, nframes)
|
file.filePtr, frames, nframes)
|
||||||
elseif T == Float32
|
elseif T == Float32
|
||||||
return ccall((:sf_writef_float, sndfile), Int64,
|
return ccall((:sf_writef_float, libsndfile), Int64,
|
||||||
(Ptr{Void}, Ptr{Float32}, Int64),
|
(Ptr{Void}, Ptr{Float32}, Int64),
|
||||||
file.filePtr, frames, nframes)
|
file.filePtr, frames, nframes)
|
||||||
elseif T == Float64
|
elseif T == Float64
|
||||||
return ccall((:sf_writef_double, sndfile), Int64,
|
return ccall((:sf_writef_double, libsndfile), Int64,
|
||||||
(Ptr{Void}, Ptr{Float64}, Int64),
|
(Ptr{Void}, Ptr{Float64}, Int64),
|
||||||
file.filePtr, frames, nframes)
|
file.filePtr, frames, nframes)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue