Skip to content

Default to Symphonia for MP3 decoding #409

@Shnatsel

Description

@Shnatsel

Symphonia is already a supported backend for MP3 decoding in rodio, but it is not the default. I believe Symphonia MP3 decoder has matured, and it's time to switch to using it by default.

Currently rodio defaults to minimp3 for decoding, which is written in C and causes a number of issues:

Symphonia has an MP3 decoder written in 100% safe Rust. The decoding performance is exactly on par with ffmpeg in my tests.

I have tested the correctness of Symphonia's MP3 decoder on over 50,000 real-world files created by a variety of encoders to ensure correct decoding and compatibility with the files found in the wild, which resulted in multiple fixes (see pdeljanov/Symphonia#72, pdeljanov/Symphonia#78, pdeljanov/Symphonia#99). These fixes are going to ship in the upcoming v0.5 along with support for gapless playback for MP3 files.

With safety, performance and compatibility all being in great shape for Symphonia's MP3 decoder, I believe it is time to switch to using it by default instead of minimp3.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions