Thanks to Dave DeLong: Its a CoreMedia error: Returned when caller passes incorrect input or output parameters
So it's a paramErr, but for CoreMedia. Something, somewhere, internally went amiss, and it's interpreting an argument as invalid.
Here are situations I've either encountered or seen on the net:
#import <AudioToolbox/AudioToolbox.h>
...
- (NSTimeInterval) voiceCueLength {
NSTimeInterval length = 0.0;
NSURL *audioURL = [NSURL fileURLWithPath: self.pathToVoiceCue];
OSStatus result = noErr;
AudioFileID audioFile = NULL;
result = AudioFileOpenURL ((CFURLRef)audioURL,
kAudioFileReadPermission,
0, // hint
&audioFile);
if (result != noErr) goto bailout;
//Get file length
NSTimeInterval seconds;
UInt32 propertySize = sizeof (seconds);
result = AudioFileGetProperty (audioFile,
kAudioFilePropertyEstimatedDuration,
&propertySize,
&seconds);
if (result != noErr) goto bailout;
length = seconds;
bailout:
if (audioFile) AudioFileClose (audioFile);
return length;
} // voiceCueLength
And Link with the AudioToolbox framework.