使用重叠执行缓冲/窗口添加CMSampleBufferRef

时间:2012-07-02 13:48:17

标签: objective-c ios avfoundation core-audio vdsp

我正在尝试对PCM音频数据执行一些基本的DSP功能,我使用iPhone上的AVAssetReader从视频文件中检索这些功能。 我正在正确读取缓冲区,每个缓冲区的样本数是8192(默认是这样吗?可以改变吗?)。 但是,我需要对不是8192个样本长度的切片执行窗口化,fft和各种其他操作。实际上,我想一次处理512个样本,每个切片之间有50%的重叠。 我一直在深入挖掘Apple的Accelerate / vDSP框架,我认为我可以处理这样的处理,而不知道如何按照我想要的方式实际分割信号。 我有很强的DSP背景,但不幸的是我的DSP编程经验几乎以MATLAB结束。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

深入挖掘后,我在CoreAudio开发工具的PublicUtility中找到了CASpectralProcessor,它来自ver。 4.3以后不再与XCODE捆绑在一起。要下载转到 https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

CASpectralProcessor正是我所需要的,一个完整的光谱分析仪,包括自定义窗口长度,窗口类型,跳跃大小。甚至执行带有重叠/添加的IFFT!

希望这有助于任何人。

答案 1 :(得分:0)

您可以将1或2个大型缓冲液切成若干个较短所需长度的缓冲液,并将这些较短的缓冲液或切片送入处理程序。