Mix partial stream PCM without copying stale buffer tails

This commit is contained in:
evgeny committed 2026-10-21 01:11:35 +02:00
1 parent c6ed01110e
commit 50cf61e9cd
2 files changed
+14 -4

No files matched your search

@@ -30,14 +30,14 @@ internal class StreamMixBuffer(val frames: Int = 480) {
private var gain = 1f
fun clear() = sum.fill(0f)
fun add(pcm: ShortArray, fadeFrames: Int = 480): Int {
require(pcm.size <= sum.size && pcm.size % 2 == 0)
for (i in 0 until pcm.size / 2) {
fun add(pcm: ShortArray, fadeFrames: Int = 480, count: Int = pcm.size / 2): Int {
require(pcm.size % 2 == 0 && count in 0..min(frames, pcm.size / 2))
for (i in 0 until count) {
val volume = min(1f, (fadeFrames + i + 1) / 480f) / 32768f
sum[2 * i] += pcm[2 * i] * volume
sum[2 * i + 1] += pcm[2 * i + 1] * volume
}
return min(480, fadeFrames + pcm.size / 2)
return min(480, fadeFrames + count)
}
fun finish(): ShortArray {