Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update rust crate songbird to 0.4.0 #136

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Dec 1, 2023

This PR contains the following updates:

Package Type Update Change
songbird dependencies minor 0.3.2 -> 0.4.0

Release Notes

serenity-rs/songbird (songbird)

v0.4.3

This patch release fixes features in dependencies and reverts a breaking tokio-tungstenite update.

Thanks to the following for their contributions:

Fixed

v0.4.2

Compare Source

This patch release adds in support for HLS and M3U8 stream playback, in addition to several bugfixes.

Thanks to the following for their contributions:

Changed

v0.4.1

Compare Source

This patch release includes several fixes to how audio tasks behave when moved between channels, and prevents a crash on zero-length packets in 48kHz Ogg Vorbis files.
We've also added to YoutubeDl so you can now make use of ytdl's built-in search functionality.

Thanks to the following for their contributions:

Added
Changed
Fixed

v0.4.0

Compare Source

Possessing a beautiful, creative, and evocative song through both night and day, the humble Nightingale has long been seen as a symbol of poetry and love.

In keeping with the spirit of this release's passerine of choice, songbird now sings more melodiously than ever!
This release has been a long time coming, and as such Nightingale brings several huge changes to how songbird is used and how it performs.


The largest change by far is a complete overhaul of all code relating to audio decoding, mixing, and loading from different locations, driven by Symphonia.
Broadly, this means that we handle every part of the audio pipeline in-process and ffmpeg is entirely removed, saving significant memory and CPU and letting you scale to more voice calls on one box.
Another boon is that reading in-memory audio now Just Works: if you can treat it as a &[u8], then you're good to go!
Having this level of control also lets us expand our list of file-formats supporting direct Opus passthrough to include Ogg Opus and WebM/MKV, as well as the DCA format.
Given that many sites will serve WebM, this is a significant saving on CPU time for many playback use cases.
Additionally, we now handle HTTP reconnection logic internally, offering more reliable behaviour than certain downloader -> ffmpeg process chains would provide.
Symphonia format support is significant, and you can enable and disable exactly the codecs and containers you need at compile-time.

Voice receive has been given its own fair share of improvements.
Most importantly, all receive sessions now make use of per-user jitter bufferssongbird will now delay decoding of all users to correctly reorder audio packets, smooth out network latency jitter, and to help synchronize playback of several speakers.
Receive functionality is now feature-gated and disabled by default, and so won't affect compile-time or runtime performance if you don't want to make use of it.

Finally, songbird now includes a new deadline-aware audio scheduler, which will pack as many concurrent Calls as possible onto a single thread.
Compared to the previous model we now reduce thread counts, CPU use, and context switching – for context, up to 660 live Opus-passthrough-enabled calls can run on a single thread on a Ryzen 5700X.
This is also helped by how we now park all Calls without any active Tracks onto a single shared event handling async task.


All in all, we're really excited to see what you build with these new tools and performance improvements.

Thanks to the following for their contributions:

Upgrade Pathway

Inputs:

  • ytdl etc. are removed and replaced with new lazy initialisers – read the docs on how to create sources from a URL or local path.
  • All inputs are now lazy by default, so Restartable is no longer needed.
  • Inputs can no longer directly output raw audio, as symphonia must always parse a container/codec pair. We've included a custom RawReader container format and the RawAdapter transform to support this.
  • Metadata is now split according to what you can learn when creating a source (AuxMetadata, e.g. info learned from a web scrape) and what metadata is encoded in a track itself (Metadata). Metadata can only be read once a track is fully initialised and parsed.
  • Songbird can now better encode an audio source's lifecycle from uninitialised, to readable, to having its headers fully parsed. Read the examples on how they can be manipulated, particularly if you want to make use of metadata.
  • Songbird's audio systems have undergone the most change in this release, so this list is non-exhaustive.

Tracks:

  • TrackHandle::action now gives temporary access to a View object – a set of current track state and extracted metadata – which can be used to fire more complex commands like seeking or pre-loading a Track by returning an Action.
  • TrackHandles are now created only from Driver::play/play_input and related methods.
  • tracks::create_player is removed in favour of the above methods on Driver.

Voice Receive:

  • Users of voice receive will now need to enable the "receive" feature.
  • CoreEvent::VoicePacket has now split into two events: RtpPacket and VoiceTick.
    RtpPacket corresponds to raw RTP packets received from each user and does not decode audio, while VoiceTick fires every 20ms and includes the reordered (and decoded, if so configured) audio for every user, synchronised and ready to use.
  • Per-user jitter buffer sizes can be configured using Config::playout_buffer_length and ::playout_spike_length.
Added
Changed
Fixed

Configuration

📅 Schedule: Branch creation - "before 9am on Saturday" in timezone Asia/Tokyo, Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor Author

renovate bot commented Dec 1, 2023

⚠ Artifact update problem

Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path crates/koe/Cargo.toml --workspace
warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
    Updating crates.io index
error: failed to select a version for `songbird`.
    ... required by package `koe v0.1.0 (/tmp/renovate/repos/github/ciffelia/koe/crates/koe)`
versions that meet the requirements `^0.4.0` are: 0.4.1, 0.4.0

the package `koe` depends on `songbird`, with features: `serenity-native` but `songbird` does not have these features.


failed to select a version for `songbird` which could resolve this conflict

File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path crates/koe-call/Cargo.toml --workspace
warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
    Updating crates.io index
error: failed to select a version for `songbird`.
    ... required by package `koe v0.1.0 (/tmp/renovate/repos/github/ciffelia/koe/crates/koe)`
versions that meet the requirements `^0.4.0` are: 0.4.1, 0.4.0

the package `koe` depends on `songbird`, with features: `serenity-native` but `songbird` does not have these features.


failed to select a version for `songbird` which could resolve this conflict

@renovate renovate bot changed the title chore(deps): update rust crate songbird to 0.4.0 chore(deps): update rust crate songbird to 0.4.1 Mar 1, 2024
@renovate renovate bot force-pushed the renovate/songbird-0.x branch from 1b70d64 to 402d175 Compare May 5, 2024 09:53
@renovate renovate bot changed the title chore(deps): update rust crate songbird to 0.4.1 chore(deps): update rust crate songbird to 0.4.0 May 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants