缓冲波形文件/样本管理
Buffering wave files / sample management
简而言之:我想在堆中缓冲整个音频文件(wave)。因此,基本上,我会为每个通道使用一个数组,其中包含最大10 min * 60 sec * 44100
样本。(我只是将长度限制为10分钟,必要时转换为44100个样本/秒。)
因此,我必须使用两个最大长度为26460000
元素的数组。关于大小,这些数组将包含16位整数,每个文件最多可添加约100字节。(应用程序应该被允许一次打开4个文件,因此使用的内存加起来将达到约400兆字节)
问题是,这是否适用于windows(32位)系统,或者我是否应该使用更动态的样本管理?我想,将缓冲区int块(例如)减少1024个样本会有所帮助,这样我就不必使用一个巨大的数组,而是使用一堆较小的数组。
如果这不是一个好主意,我该如何实现一个可以处理突然跳到文件中特定位置或重复一些示例的示例管理。(因此,覆盖旧的/使用过的样本的"简单"圆形缓冲区并没有真正的帮助…)
即使在Win32上也没什么大不了的。一定要使用std::vector::reserve
,你事先就知道有多少样品。
相关文章:
- 当vector是tje全局变量时,c++中vector的内存管理
- 如何维护资源管理器项目视图中当前可见的项目列表
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 资源管理设计模式
- 使用"Task"函数指针队列定义作业管理器
- 实现动态插件管理器
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- libcurl 和 DNS ttl 中的内部连接管理
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- 在C++管理一家中国.txt
- 编译器资源管理器和 GCC 具有不同的输出
- 我们可以通过 IPC 传递具有动态管理成员的类对象吗?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- Q没有管理权限的 exe 无法启动维护工具
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- QT:管理来自 QNetworkReply 的回复
- 使用 std::vector<double> 访问由 std::unique_ptr<double[2] 管理的数据>
- 使用源读取器从网络摄像头源获取 H264 样本
- 读取 TCP 标头并使用RAW_SOCKET管理 TCP 连接
- 缓冲波形文件/样本管理