How about something like this:

let outputData: UnsafeMutableRawPointer

         if let bOData = bO.mData { // Might be a nil?

            outputData = bOData

         } else {

            outputData = inputData

            bO.mData = inputData

            assert(false)

         }


This came from vgorloff's Swift 3 implementation of a host and audiounit -- you 
can find it on Github.

Sent from my iPhone

On Oct 19, 2016, at 9:49 AM, Benjamin Federer 
<[email protected]<mailto:[email protected]>> wrote:

Thanks, Matt

Unfortunately this does not work. Since the line creates an explicitly 
unwrapped optional containing nil, AudioUnitGetProperty fails at runtime, just 
as passing in nil directly would (if the compiler would allow it):

fatal error: unexpectedly found nil while unwrapping an Optional value

For what it's worth I am currently querying the maximum property size using 
AudioUnitGetPropertyInfo, then getting the property data using 
AudioUnitGetProperty and finally slicing off the portion of relevant data 
reported by the ioDataSize out value.

Benjamin


Am 19.10.2016 um 15:21 schrieb Matt Grippaldi 
<[email protected]<mailto:[email protected]>>:

Try this...

        let nullPtr:UnsafeMutableRawPointer! = nil

Matt Grippaldi
[email protected]<mailto:[email protected]>










On Oct 19, 2016, at 7:13 AM, Benjamin Federer 
<[email protected]<mailto:[email protected]>> wrote:

Hi there, especially the Core Audio team,

The documentation for AudioUnitGetProperty() says:

public func AudioUnitGetProperty(_ inUnit: AudioUnit, _ inID: 
AudioUnitPropertyID, _ inScope: AudioUnitScope, _ inElement: AudioUnitElement, 
_ outData: UnsafeMutableRawPointer, _ ioDataSize: UnsafeMutablePointer<UInt32>) 
-> OSStatus

outData: ... Set this parameter to NULL when calling this function if you only 
want to determine how much memory to allocate for a variable size property.

I cannot, for the life of me, get Swift 3 to create a NULL pointer. With Swift 
2 it seems this was possible. With Swift 3 I am supposed to pass in nil 
instead. But since outData is a non-optional I am not allowed to do that.

Interestingly, AudioUnitGetPropertyInfo() also works with passing NULL for its 
inOut parameters, which are optionals:

public func AudioUnitGetPropertyInfo(_ inUnit: AudioUnit, _ inID: 
AudioUnitPropertyID, _ inScope: AudioUnitScope, _ inElement: AudioUnitElement, 
_ outDataSize: UnsafeMutablePointer<UInt32>?, _ outWritable: 
UnsafeMutablePointer<DarwinBoolean>?) -> OSStatus

Is outData being a non-optional intentional and, if so, how should I pass in 
NULL?

Thanks,
Benjamin
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      
([email protected]<mailto:[email protected]>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/coreaudio-api/mattg%40kinematicsystems.com

This email sent to [email protected]<mailto:[email protected]>


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      
([email protected]<mailto:[email protected]>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/coreaudio-api/damiani%40ufl.edu

This email sent to [email protected]<mailto:[email protected]>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/coreaudio-api/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to