Symphonia icon indicating copy to clipboard operation
Symphonia copied to clipboard

opus: implement range decoder.

Open thinking-tower opened this issue 2 years ago • 7 comments

Description

Part of the work for https://github.com/pdeljanov/Symphonia/issues/8.

Part of implementing RFC 6716 Section 3.1 and 4.1.

thinking-tower avatar Mar 14 '22 06:03 thinking-tower

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 avatar Mar 23 '22 03:03 pdeljanov

@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.

thinking-tower avatar Mar 23 '22 07:03 thinking-tower

@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/

SunnyWar avatar Jan 25 '23 03:01 SunnyWar

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

Sean-Der avatar Jan 26 '23 18:01 Sean-Der

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.

pdeljanov avatar Jan 27 '23 00:01 pdeljanov

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!

Sean-Der avatar Jan 31 '23 05:01 Sean-Der

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.

pdeljanov avatar Feb 04 '23 18:02 pdeljanov