I'm trying to load audio data using ExtAudioFileOpenURL() in the AudioToolbox, but seem to have a problem with the pointer gymnastics involved.

First I created a BridgeSuppport file using:

gen_bridge_metadata -f AudioToolbox -o AudioToolbox.bridgesupport


I'm then using code like this:
    
    #load bridgesuppport file
    framework 'AudioToolbox'
    load_bridge_support_file "#{File.dirname(__FILE__)}/AudioToolbox.bridgesupport"

    #open audio file
    fileURL = NSURL.fileURLWithPath "#{File.dirname(__FILE__)}/Blow.aiff"
    fileRef = Pointer.new_with_type '^{OpaqueExtAudioFile}'
    raise "Can't open audio file" unless ExtAudioFileOpenURL(fileURL, fileRef)==0 #ok
    
    #read audio file
    ioNumberFramesPtr = Pointer.new_with_type 'I'
    ioNumberFramesPtr[0] = 800
    ioDataPtr = Pointer.new_with_type '^{AudioBufferList}'
    raise "Can't read audio file" unless ExtAudioFileRead(fileRef[0], ioNumberFramesPtr, ioDataPtr)==0 # error


but runnig this from xcode the last  line causes:

/Users/emiltin/Desktop/builds/Debug/Waveform.app/Contents/Resources/MyView.rb:101:in `awakeFromNib': unrecognized runtime type `{OpaqueExtAudioFile}' (TypeError)
from /Users/emiltin/Desktop/builds/Debug/Waveform.app/Contents/Resources/rb_main.rb:11:in `<main>'



The problem seem to occur where I access fileRef[0]. Am I doing something wrong here?

Thanks,
Emil



From the generated BridgeSupport file:

<function name='ExtAudioFileOpenURL'>
<arg type='^{__CFURL=}'/>
<arg type='^^{OpaqueExtAudioFile}'/>
<retval type='l'/>
</function>
<function name='ExtAudioFileRead'>
<arg type='^{OpaqueExtAudioFile=}'/>
<arg type='^I'/>
<arg type='^{AudioBufferList=I[1{AudioBuffer=II^v}]}'/>
<retval type='l'/>
</function>