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

Posted

技术标签:

【中文标题】使用重叠执行缓冲/窗口添加 CMSampleBufferRef【英文标题】:Performing buffering/windowing with overlap add CMSampleBufferRef 【发布时间】:2012-07-02 13:48:16 【问题描述】:

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

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

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

CASpectralProcessor 正是我所需要的,它是一个完整的频谱分析仪,包括自定义窗口长度、窗口类型、跳数大小。甚至通过重叠/相加执行 IFFT!

希望这对任何人都有帮助。

【讨论】:

作为您答案的补充:我在下载部分找不到实用程序类(可能是我的眼睛有问题),但我确实在这里找到了它们(按顶部的下载源代码): developer.apple.com/library/ios/#samplecode/…【参考方案2】:

您可以将这些大缓冲区中的 1 个或 2 个切成所需长度较短的多个缓冲区,并将这些较短的缓冲区或切片提供给您的处理例程。

【讨论】:

感谢 hotpaw2,我猜这就是我最终不得不做的事情。只是希望 vDSP 框架中可能有一些内部函数来自动处理所有这些东西。

以上是关于使用重叠执行缓冲/窗口添加 CMSampleBufferRef的主要内容,如果未能解决你的问题,请参考以下文章

音频分析合成中的重叠添加

如何找到我添加到表单中的重叠控件?

ArcGIS怎么分别计算每个重叠的缓冲区与其他多边形的重叠面积?

在重叠模式下使用 WSASend 时,我应该何时释放缓冲区?

顶点缓冲区对象未在 SDL 窗口中绘制

检索具有多个重叠 I/O 请求的缓冲区