libresample
由 Dominic Mazzoni 提供的实时库接口
基于 resample-1.7: http://www-ccrma.stanford.edu/~jos/resample/
本软件可在 BSD 许可证或 LGPL 许可证的条款下使用,由您选择 - 参见:
LICENSE-LGPL.txt
LICENSE-BSD.txt
历史:
本库并非可用的最高质量的重采样库, 也不是最灵活的, 更不是最快的。 但它在所有这些方面都相当不错, 并且具有相当高的可移植性。 我所知道的 最好的重采样库是 Erik de Castro Lopo 的 libsamplerate。 它小巧、快速, 且质量非常高。 然而,它使用 GPL 作为其 许可证(提供商业选项),而我需要 一个更自由的库。 因此,我编写了这个库,使用 Julius Smith 的 LGPL resample-1.7 库作为基础。
Resample-1.7 是一个定点重采样器,因此 精度有限。 我将其重写为使用单精度 浮点运算,并显著增加了 时间步之间的滤波器系数数量。 在现代处理器上,即使 有这些额外开销,它也能实时重采样。
Resample-1.7 被设计为从文件读取和写入,因此 我删除了所有这些代码,并用一个 API 替换, 允许您以小块传递样本。 应该很容易 将 resample-1.7 作为库链接。
版本 0.1.3 的更改:
-
修复了两个因舍入误差差异而在 Intel x86 处理器上导致细微问题的 bug。
-
为大多数函数名添加了 lrs 前缀,并将头文件 从 resample.h 更改为 libresample.h,以避免与现有程序和库的 命名空间冲突。
-
添加了 resample_dup(感谢 Glenn Maynard)
-
resample_get_filter_width 的参数接受 const void * (感谢 Glenn Maynard)
-
resample-sndfile 将输出裁剪至 -1...1(感谢 Glenn Maynard)
版本 0.1.4 的更改:
-
添加了 BSD 许可证,得到所有作者和贡献者的支持。
-
已上传至 GitHub: http://github.com/minorninth/libresample
版本 0.1.5 的更改:
- 添加了使用 Meson 的新构建系统。
使用说明:
-
如果传入的输出缓冲区太小,resample_process 可能不会使用任何输入样本,因为其内部输出 缓冲区已满,无法处理更多数据。因此,不要 仅因为未消耗输入样本就认为这是错误。只需 继续传入有效的输出缓冲区即可。
-
给定重采样因子 f > 1 和输入 样本数 n,输出样本数应在 floor(n - f) 和 ceil(n + f) 之间。换句话说,如果 以因子 8 对 1000 个样本进行重采样,输出 样本数可能在 7992 到 8008 之间。不要 假设它恰好是 8000。如果需要恰好 8000 个输出,请根据需要用额外的零填充输入。
构建说明:
libresample 可以使用 Meson、
标准的 Autotools ./configure && make 或随附的
Visual Studio 2005 项目文件进行构建。
通常应优先使用 Meson 构建。特别是, 强烈建议下游发行版 打包者出于互操作性原因使用 Meson 构建系统,因为它 会生成 pkg-config 文件,支持 构建共享库,可以自动运行测试,并且 在类 Unix 平台和 Windows 上均可运行。保留旧的 Autotools 构建系统是为了那些已经将其嵌入 其构建和系统中且没有 Meson 的项目。
许可与保证:
本包中的所有文件均受 Dominic Mazzoni dominic@minorninth.com 的 2003 年版权保护。 本库大量基于 Resample-1.7,版权归 Julius O. Smith III jos@ccrma.stanford.edu 所有(1994-2002),保留所有权利。
在遵守自由软件基金会发布的 “GNU 宽通用公共许可证”(LGPL)条款的前提下, 授予使用和复制的许可;可以是许可证 的第 2.1 版,或任何更高版本。 此外,Julius O. Smith III 要求 通过电子邮件将任何修改后的文件的副本发送至 jos@ccrma.stanford.edu,以便他将它们纳入 CCRMA 版本。
本库按原样分发,希望其有用, 但没有任何保证;甚至没有隐含的 适销性或特定用途适用性保证。 请参阅 GNU 宽通用公共许可证以获取更多详细信息。
使用和复制的许可亦在 LICENSE-BSD.txt 中找到的 BSD 许可证条款下授予。
您可以选择任一许可证以符合规定,由您自行决定。
允许以源代码和二进制形式重新分发和使用,无论是否经过修改, 但必须满足以下条件:
-
源代码的重新分发必须保留上述版权声明、本 条件列表以及以下免责声明。
-
二进制形式的重新分发必须在随分发的文档和/或 其他材料中复现上述版权声明、本条件列表以及以下免责声明。
本软件由版权持有人和贡献者按“原样”提供, 且任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的 暗示保证,均被排除。在任何情况下,版权持有人或贡献者均不对 任何直接的、间接的、偶然的、特殊的、惩罚性的或后果性的损害 (包括但不限于替代商品或服务的采购; 使用、数据或利润的损失;或业务中断)承担责任,无论何种原因以及基于 何种责任理论,无论是合同、严格责任还是侵权 (包括过失或其他),均因使用本软件而产生, 即使已被告知此类损害的可能性。