RustAudio/rodio

Tracking of planned breaking changes

Opened this issue · 4 comments

I want to gather all planned breaking changes and release them together with a porting/update guide and announcement on socials (for now rust user forum and reddit).

The changes are currently motivated by personal experience using rodio, and maintaining it. Before these changes are applied we hope to base them on user stories instead. Please if you use rodio or chose not describe your audio usecase here: #626.

This main post will be updated when new ideas are added. Each item links to an individual issues. If you wish to discuss a single change please do that in its linked issue.

  • Overhaul features to highlight split between codecs and containers. Clearly document the new features. #539
  • Rename member function to be in line with std (fixes a lint too) #562
  • Make new_mp4 easier to use #612
  • Remove the need to keep the stream around when using sink: #613
  • Reduce public API, should have no impact on users #615
  • Remove duplicate source Skippable (same as Stoppable) #616
  • Remove duplicate functionality (DataConverter is a subset of SampleConverter) #617
  • Rename BltFilter to Filter #618
  • Make it possible to change the buffer size of the OutputStream #512 should probably take this opportunity to unify all the factories with a builder.
  • Allow using the Sink as a 'playlist' #619
  • Remove wrapping source's factories #622
  • Deprecate sine.rs in favor of signal_generator.rs #642

@est31 Please let me know if you have other items that could be on here or object to some of the entries.

@tomaka Would you be okay with the changes above? Thanks to est32 I have been able to maintain rodio for the past 9 months. Given the breaking nature of the changes listed I would like to have your blessing before I continue.

Sorry for not answering, the way rodio works has left my mind a long time ago.
Nothing suggested above seems wrong to me.

If I had the time, I would personally go into a much deeper refactoring, such as removing entirely the Sink struct, or implement Source on Sink. IMO this struct comes from a fundamental misunderstanding of how the library is supposed to work (you're supposed to pull things to play through combining Sources, not push things). But given that I'm not going to do any work on the library any time soon, I would encourage you to consider my opinion as not relevant.

Thank you very much for your comment. I share your sentiment on Sink. With some contributors we are considering ways to overhaul it. I will definitely consider removing it entirely. Sink currently functions as a easy way to use rodio without understanding source and to control playback without getting periodic_access. We might be able to think of something more elegant to fulfill that role.