Symphonia
Symphonia copied to clipboard
opus: implement range decoder.
Description
Part of the work for https://github.com/pdeljanov/Symphonia/issues/8.
Part of implementing RFC 6716 Section 3.1 and 4.1.
Hey @thinking-tower,
I'm not particularly familiar with range decoding so I can't comment on the correctness of the code/give a proper review.
Do you think it'd be a good idea to have some tests for these functions to gain some confidence?
@pdeljanov
I'm not particularly familiar with range decoding so I can't comment on the correctness of the code/give a proper review.
No worries, I'm just looking for more of a Rust code style review since I still need more work to verify it's correct.
Do you think it'd be a good idea to have some tests for these functions to gain some confidence?
For sure, I'm currently still debugging to get an idea what a "correct input" would look like.
@pdeljanov
I'm not particularly familiar with range decoding so I can't comment on the correctness of the code/give a proper review.
No worries, I'm just looking for more of a Rust code style review since I still need more work to verify it's correct.
Do you think it'd be a good idea to have some tests for these functions to gain some confidence?
For sure, I'm currently still debugging to get an idea what a "correct input" would look like.
OPUS has test vectors available: https://opus-codec.org/docs/
Hey @thinking-tower @pdeljanov I would love to help with this.
I started a Opus decoder for Go pion/opus, SILK works great. I haven't started CELT.
https://github.com/lu-zero/opus is MIT licensed and I learned a lot from it.
I would love to help with this so I can use it with https://github.com/webrtc-rs/webrtc
Hi @Sean-Der,
That looks very cool! We've had a few false starts with Opus so far, but I'd really like to have support for it. Would love to have you on board.
My immediate goal is going to be addressing long-standing Symphonia's API issues. I think this is required for the health of the project. So I think the best strategy would be if we rebase an Opus branch to master
and then let you and @thinking-tower work on it. I'll probably need to be hands off until the API changes are complete. However, I don't expect many (if any) decode API changes so it should be easy to merge when it comes time.
Hi @thinking-tower are you still interested in working on this? I would love to follow your lead.
I could maybe sketch up a rough plan/explain how I did my Opus impl?
thanks!
Hey @Sean-Der,
Since there hasn't been any activity on this for a while, I think you may have to take the reins on it. If @thinking-tower returns, then I'm sure you could both work together. You have a really great foundation to reference with your existing Go implementation.