ITADN
minorninth/libresample
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

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 的更改:

版本 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 许可证条款下授予。

您可以选择任一许可证以符合规定,由您自行决定。

允许以源代码和二进制形式重新分发和使用,无论是否经过修改, 但必须满足以下条件:

  • 源代码的重新分发必须保留上述版权声明、本 条件列表以及以下免责声明。

  • 二进制形式的重新分发必须在随分发的文档和/或 其他材料中复现上述版权声明、本条件列表以及以下免责声明。

本软件由版权持有人和贡献者按“原样”提供, 且任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的 暗示保证,均被排除。在任何情况下,版权持有人或贡献者均不对 任何直接的、间接的、偶然的、特殊的、惩罚性的或后果性的损害 (包括但不限于替代商品或服务的采购; 使用、数据或利润的损失;或业务中断)承担责任,无论何种原因以及基于 何种责任理论,无论是合同、严格责任还是侵权 (包括过失或其他),均因使用本软件而产生, 即使已被告知此类损害的可能性。