Mix partial stream PCM without copying stale buffer tails
This commit is contained in:
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 {
|
||||
|
||||
Reference in new issue
Block a user