缓冲波文件/样本管理

时间:2014-10-14 12:48:13

标签: c++ arrays audio buffer

简而言之:我想在堆中缓冲整个音频文件(wave)。 所以基本上,我会为每个通道使用一个数组,包含最多10 min * 60 sec * 44100个样本。 (我只是将长度限制在10分钟,必要时转换为44100个样本/秒。)

所以我必须使用两个长度为26460000个元素的数组。关于大小,数组将包含16位整数,每个文件加起来大约100mbyte。 (应该允许应用程序一次打开4个文件,因此使用的内存总计大约400字节)

问题是,如果这可以在Windows(32位)系统上运行,或者我应该使用更动态的样本管理?我想有用的是切割缓冲区块(例如)1024个样本,所以我不必使用一个巨大的数组,而是一堆较小的数组。

如果这不是一个好主意,我怎样才能实现一个样本管理,可以处理突然跳转到文件中的特定位置或重复一些样本。 (因此,一个“简单”的圆形缓冲区会覆盖旧的/使用过的样本,但实际上并没有帮助......)

1 个答案:

答案 0 :(得分:0)

即使在Win32上也没什么大不了的。请使用std::vector::reserve,您事先知道有多少样本。