Skip to content

cpal 0.18.2

Latest

Choose a tag to compare

@roderickvd roderickvd released this 16 Aug 17:58
· 110 commits to master since this release

Added

  • AAudio: Xruns are now reported as ErrorKind::Xrun.
  • CoreAudio: Xruns are now reported as ErrorKind::Xrun.
  • PipeWire: Xruns are now reported as ErrorKind::Xrun.
  • WASAPI: Capture xruns are now reported as ErrorKind::Xrun.

Changed

  • BSD: Clarify that realtime-dbus has no effect there.
  • CoreAudio: Bump objc2-core-foundation dependency lower bound to 0.3.1.
  • iOS: Timestamps now include hardware latency and update when the audio route changes.
  • JACK: Timestamps now include port latency.
  • Linux: Clarify that realtime alone is a no-op without realtime-dbus.
  • PipeWire: Devices with multiple ports now get distinct, localized, per-port names.
  • WASAPI: The windows and windows-core dependencies are now both pinned to 0.62.

Fixed

  • Timestamps now stay monotonic across device and graph changes.
  • ALSA: A nonzero but sub-millisecond stream timeout is no longer treated as a non-blocking poll.
  • ALSA: Fix compilation on FreeBSD, DragonFly, and NetBSD.
  • ASIO: Fix duplex streams silently dropping audio when built from separate Device handles.
  • AudioWorklet: Fix Stream operations to work when called from any thread.
  • AudioWorklet: Fix stale audio output when a data callback wrote a partial buffer.
  • CoreAudio: Fix stale audio output when a data callback wrote a partial buffer.
  • CoreAudio: Default-output streams now report xrun status.
  • iOS: Streams now resume automatically when an audio session interruption ends.
  • JACK: Streams with more channels than physical system ports no longer fail to build.
  • JACK: Channel enumeration is no longer capped at the physical system port count.
  • JACK: Device::id no longer embeds the process ID, so DeviceId is now stable across application restarts.
  • PipeWire: Fix streams starting audio before play() is called.
  • PipeWire: Fix real-time promotion blocking the audio callback thread on Linux.
  • PipeWire: Fix rtkit burst limit errors from repeated real-time promotion on quantum jitter.
  • PipeWire: Fix 24-bit sample format mapping.
  • PipeWire: Nodes with an /Internal media class are now enumerated as devices.
  • PipeWire: Streams for a specific device no longer auto-reroute if it disappears.
  • PipeWire: Build on 32-bit targets without native 64-bit atomics.
  • PulseAudio: NoData errors are no longer misreported as buffer xruns.
  • PulseAudio: Build on 32-bit targets without native 64-bit atomics.
  • visionOS: The CoreAudio backend now builds.
  • WASAPI: Stream::drop, play, and pause no longer panic when the device is lost.
  • WASAPI: Output streams no longer reject formats that the built-in resampler can convert.
  • WASAPI: Fix 24-bit samples not being packed into the upper bits of their sample container.
  • WASAPI: Reported buffer sizes are no longer off by one frame.
  • WASAPI: Default device changes no longer report DeviceChanged, which wrongly implied the stream had rerouted automatically.
  • WebAudio: Fix stale audio output when a data callback wrote a partial buffer.
  • WebAudio: Fix unsound Send + Sync on Stream when compiled with +atomics.
  • WebAudio: Fix Host::is_available() always returning true, even in non-window contexts.

Thanks to Our Contributors

14 people contributed to this release, 9 of them for the first time: Andreas (@sandreas), Benoît Rouleau (@benface), @dheijl, Edwin Löffler (@edwloef), Erwan Legrand (@ErwanLegrand), @Jaxx497, Kpqi5858 (@kpqi5858), LastExceed (@LastExceed), Mat Silverstein (@silverstein), @MordechaiHadad, Nicola Vitale (@nivit), Nicolas Franco Gomez (@nico-franco-gomez), SkeletonGamer (@SkeletonGamer), and @the-drunk-coder. Welcome aboard, and thank you all!