/** * Resizable interleaved sample buffer for audio processing. * Uses ES2024 ArrayBuffer for zero-allocation growth. * * @remarks * Stores stereo audio samples in a contiguous Float32Array * Provides methods for efficient buffer management and sample transfer */ export default class FifoSampleBuffer { /** * Backing ArrayBuffer for sample storage */ private _buffer; /** * Float32Array view of the buffer */ private _vector; /** * Current read position (frame index) */ private _position; /** * Number of frames currently stored */ private _frameCount; /** * Creates a new FifoSampleBuffer * @param maxFrames Maximum number of frames for buffer allocation */ constructor(maxFrames?: number); /** * Returns the Float32Array view of the buffer */ get vector(): Float32Array; /** * Returns the current read position (frame index) */ get position(): number; /** * Returns the start sample index for reading */ get startIndex(): number; /** * Returns the number of frames currently stored */ get frameCount(): number; /** * Returns the end sample index for reading */ get endIndex(): number; /** * Clears the buffer and resets position and frame count */ clear(): void; /** * Adds empty frames to the buffer * @param numFrames Number of frames to add */ put(numFrames: number): void; /** * Adds samples to the buffer from a Float32Array * @param samples Source samples (interleaved stereo) * @param position Start frame index in source * @param numFrames Number of frames to copy (default: all available) */ putSamples(samples: Float32Array, position?: number, numFrames?: number): void; /** * Adds samples from another FifoSampleBuffer * @param buffer Source buffer * @param position Start frame index in source buffer * @param numFrames Number of frames to copy (default: all available) */ putBuffer(buffer: FifoSampleBuffer, position?: number, numFrames?: number): void; /** * Advances the read position and reduces frame count * @param numFrames Number of frames to receive (default: all available) */ receive(numFrames?: number): void; /** * Copies and receives samples into an output array * @param output Destination Float32Array * @param numFrames Number of frames to copy and receive */ receiveSamples(output: Float32Array, numFrames?: number): void; /** * Extracts samples into an output array without advancing position * @param output Destination Float32Array * @param position Start frame index in buffer * @param numFrames Number of frames to extract */ extract(output: Float32Array, position?: number, numFrames?: number): void; /** * Ensures the buffer has capacity for at least numFrames * @param numFrames Minimum number of frames required */ ensureCapacity(numFrames?: number): void; /** * Ensures buffer has capacity for additional frames * @param numFrames Number of additional frames required */ ensureAdditionalCapacity(numFrames?: number): void; /** * Moves all unread samples to the start of the buffer */ rewind(): void; } //# sourceMappingURL=FifoSampleBuffer.d.ts.map