我试图将多个PCM音频数据排列成特定的序列。 事实上,它的音频数据仅用于上下文,问题本身与音频/ DSP无关。
我的输入是一组不同长度的文件,我试图将数据顺序排列到一个新文件中,并在需要的每个段之后添加填充,以便每个输入元素与网格对齐是整数可被120个单位整除。换句话说,我需要能够通过选择0-119之间的偏移来解决每个段的开始。
来说明这里的问题是一个简单的案例。两个输入文件具有以下字节长度:
200
+ 400
---
= 600
在这种情况下,不需要填充。 文件可以背靠背排列,因为它们适合120格。在网格中,200文件的范围为0-40(40个单位),400文件的范围为40-120(80个单位)。
如果任何文件不适合网格,这就变得更加棘手。 199
+ 398
---
= 597
直观地说,很容易看出199字节的文件在末尾需要1字节的填充,因此它的长度变为200,而398字节的文件需要2个字节才能变成400字节。然后我们在2个文件之间有一个很好的1:2比例,在120网格中转换为40和80个单位。
现在,我试图找到一种算法,可以对1-120中的任意数量的输入文件执行此操作,其中每个文件可以具有任意非零长度。
也许现有的算法可以做到这一点,但我发现很难找到问题的描述性关键词。
我试图天真地解决这个问题,但不知怎的,我没有完全理解这个问题。基本上我需要增加单个文件,使它们的大小是它们长度总和的最小公分母的倍数 - 这对我来说是一种鸡/蛋问题。如果我增加文件以使它们的比例合在一起,我也会增加它们的长度总和,我不明白如何检查这两个网格...
编辑:好吧我想我明白了: https://gist.github.com/jpenca/b033122fcb2300c5e9e4 不知道如何证明正确性,但尝试使用不同的输入似乎工作正常。