Skip to content

Commit

Permalink
Generic ring buffer
Browse files Browse the repository at this point in the history
  • Loading branch information
hiroshihorie committed Oct 3, 2024
1 parent 0c41cfa commit df8f3a1
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
2 changes: 1 addition & 1 deletion Sources/LiveKit/Convenience/AudioProcessing.swift
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public class AudioVisualizeProcessor {

// MARK: - Private

private let ringBuffer = FloatRingBuffer(size: AudioVisualizeProcessor.bufferSize)
private let ringBuffer = RingBuffer<Float>(size: AudioVisualizeProcessor.bufferSize)
private let processor: FFTProcessor

public init(minFrequency: Float = 10,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,28 +17,28 @@
import Foundation

// Simple ring-buffer used for internal audio processing. Not thread-safe.
class FloatRingBuffer {
class RingBuffer<T: Numeric> {
private var _isFull = false
private var _buffer: [Float]
private var _buffer: [T]
private var _head: Int = 0

init(size: Int) {
_buffer = Array(repeating: 0, count: size)
_buffer = [T](repeating: 0, count: size)
}

func write(_ value: Float) {
func write(_ value: T) {
_buffer[_head] = value
_head = (_head + 1) % _buffer.count
if _head == 0 { _isFull = true }
}

func write(_ sequence: [Float]) {
func write(_ sequence: [T]) {
for value in sequence {
write(value)
}
}

func read() -> [Float]? {
func read() -> [T]? {
guard _isFull else { return nil }

if _head == 0 {
Expand Down

0 comments on commit df8f3a1

Please sign in to comment.