Tag: core audio

使用Core Audio从默认线路输出声音设备中提取浮点数

我需要一些帮助/指导,使用Core Audio从声音输出设备中提取浮点数。 我已经阅读过关于从AIFF中提取浮子的类似post。 我的最终目标是: iTunes正在播放一首歌 使用Core Audio的C / C ++程序从声音设备中提取浮点值(实时) 使用生成的浮点向量对浮点数组执行傅立叶变换(可能使用Apple的Accelerate Library中的vDSP) – 这部分我有点想通了:) 注意:我正在使用Mac OS X(10.6+)进行开发。 任何帮助都感激不尽。

内存在音频缓冲区代码中不断增长

我有一个代码,我们多次使用我们的应用程序,它是一个获取缓冲区样本并处理它的类,然后将通知发送回主类。 代码是c和objective-c。 它工作得很好,但有一个记忆增长,我可以在仪器分配工具中看到。 “总字节数”不断增长,每秒100k。 因为我知道他们是谁的代码的某些部分。 这是回调函数,带有产生问题的行。 它每秒都会发生很多次。 我也不太明白我的*pool放在哪里: static OSStatus recordingCallback(void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData) { AudioBuffer buffer; buffer.mNumberChannels = 1; buffer.mDataByteSize = inNumberFrames * 2; //NSLog(@”%ld”,inNumberFrames); buffer.mData = malloc( inNumberFrames * 2 ); // Put buffer in a AudioBufferList AudioBufferList bufferList; bufferList.mNumberBuffers = 1; bufferList.mBuffers[0] = […]

如何正确处理UnsafeMutablePointer

我有点困惑。 什么时候我必须免费拨打电话和/ devalloc? 我正在研究一个学习核心音频的简短代码片段。 我想如果我调用UnsafeMutablePointer.alloc(size)那么我应该调用destroy & dealloc 。 但是如果我使用malloc()或calloc()我应该调用free() 。 在这个来自Learning Core Audio的示例中,以下代码片段让我想知道: var asbds = UnsafeMutablePointer.alloc(Int(infoSize)) audioErr = AudioFileGetGlobalInfo(kAudioFileGlobalInfo_AvailableStreamDescriptionsForFormat, UInt32(sizeof(fileTypeAndFormat.dynamicType)), &fileTypeAndFormat, &infoSize, asbds) 在这里我使用alloc 。 调用释放内存是free的。 free(asbds) 但为什么不呢 asbds.destroy(Int(infoSize)) asbds.dealloc(Int(infoSize)) 我希望遵循规则。 我会感激任何帮助,因为这让我头晕目眩。 文档说我负责销毁和dealloc,以便部分清晰,但是以哪种方式?