pw-client
Version:
Node.js wrapper for developing PipeWire clients
42 lines (41 loc) • 1.74 kB
JavaScript
/**
* Buffer configuration and management for audio streams.
* Provides both static and dynamic buffer sizing strategies.
*/
import { AudioQuality } from "./audio-quality.mjs";
/**
* Buffer sizing strategy for audio streams.
*/
export var BufferStrategy;
(function (BufferStrategy) {
/** Minimal latency (~5ms), smallest buffers (may cause underruns on slow systems) */
BufferStrategy["MinimalLatency"] = "minimal-latency";
/** Low latency (~10ms), good for real-time applications */
BufferStrategy["LowLatency"] = "low-latency";
/** Balanced latency and reliability (~20ms, recommended default) */
BufferStrategy["Balanced"] = "balanced";
/** Smooth playback (~40ms), maximum reliability against dropouts */
BufferStrategy["Smooth"] = "smooth";
/** User specifies target latency in milliseconds */
BufferStrategy["MaxLatency"] = "max-latency";
/** User specifies exact buffer size in bytes */
BufferStrategy["MaxSize"] = "max-size";
/** User specifies quantum multiplier (for PipeWire experts) */
BufferStrategy["QuantumMultiplier"] = "quanta";
})(BufferStrategy || (BufferStrategy = {}));
/**
* Get recommended buffer configuration for an audio quality level.
* Returns user-friendly buffer strategies with appropriate latency settings.
*/
export function getBufferConfigForQuality(quality) {
switch (quality) {
case AudioQuality.High:
return { strategy: BufferStrategy.Smooth };
case AudioQuality.Standard:
return { strategy: BufferStrategy.Balanced };
case AudioQuality.Efficient:
return { strategy: BufferStrategy.LowLatency };
default:
return { strategy: BufferStrategy.Balanced };
}
}