UNPKG

pw-client

Version:

Node.js wrapper for developing PipeWire clients

42 lines (41 loc) 1.74 kB
/** * 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 }; } }