probablykasper / redlux

AAC decoder for MPEG-4 and AAC files, with rodio support
MIT License
18 stars 2 forks source link

Update rodio dependency (breaking) #6

Closed compenguy closed 1 year ago

compenguy commented 2 years ago

Bump rodio to 0.16.0 because a changed trait bound broke compabitility for implementers of that trait.

Bump mp4 to 0.12.0

probablykasper commented 2 years ago

hm, why does compatibility break if there's no code change required?

probablykasper commented 2 years ago

mp4 had a bug introduced in 0.9, so not sure we can update it https://github.com/alfg/mp4-rust/issues/68

compenguy commented 2 years ago

You expose a rodio type through your interface - you implement the Source trait, but the trait bounds changed in rodio, causing the compiler to the rodio::Source that redlux implements as not being the same trait as required by the 16.0 methods on the rodio::Source trait.

probablykasper commented 2 years ago

Ah gotcha, trait bounds changed

About rust-mp4, it seems like it was actually updated to 0.10 in a previous PR, and I probably forgot about the rust-mp4 issue.

Next steps would be:

compenguy commented 1 year ago

So, I played around with your mp4-0.9 branch in combination with the data file that reproduced @NightlySide 's issue, and as best as I can tell, the issue has existed with mp4-0.8.3, 0.9.2, 0.10.0 and still with 0.12.0. That is to say that that test file doesn't appear to have ever worked?

Or at least, it outputs sample Err(IoError(Error { kind: UnexpectedEof, message: "failed to fill whole buffer" })) with each of the above named versions. I changed Cargo.toml to point at each of the above versions, ran the example (modulo a few source changes due to some mp4 API breakage), and got the same output each time.

probablykasper commented 1 year ago

Ah you're probably right that #4 has always been an issue. The issue with the mp4-0.9 branch seems to be the m4a_playback example, but it works fine in this PR! Thanks for looking into it