Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Status of OPUS Codec #8

Open
perfectmak opened this issue Apr 11, 2020 · 27 comments
Open

Status of OPUS Codec #8

perfectmak opened this issue Apr 11, 2020 · 27 comments
Assignees
Labels
enhancement New feature or request

Comments

@perfectmak
Copy link

What is the status of work on the opus Codec? I see it marked as next in the readme, is there an ETA for release?

@pdeljanov
Copy link
Owner

Work on Opus hasn't started yet, but it's the next item on the road map.

Before I can begin work on Opus the OGG branch must be merged. However, before I can do that I first need to re-work some of Sonata's public API. This work is about 80% complete.

@perfectmak
Copy link
Author

Okay. Thanks for the update. I'll keep an eye on the repository in the meantime.

@pdeljanov pdeljanov self-assigned this May 12, 2020
@Gelbpunkt
Copy link

Hi, any status updates on this? I'd love to replace libopus with a pure rust thing in one of my projects and Symphonia looks most promising.

@pdeljanov
Copy link
Owner

Hi @Gelbpunkt,

The prerequisite work noted above has been completed, however I'm afraid to say that not much progress has been made on the Opus decoder itself.

I'm on a bit of a temporary hiatus from my personal projects at the moment so I wouldn't expect anything soon.

@Beiri22
Copy link

Beiri22 commented May 29, 2021

Some time has passed; any news on opus?

@pdeljanov
Copy link
Owner

Sorry to say, but there's not much to report. 😕 Haven't had the time to do much beyond bug fixes. I'd suggest looking for alternative crates if you need Opus support.

@thinking-tower
Copy link

Hey @pdeljanov, can I give this a go?

@pdeljanov
Copy link
Owner

@thinking-tower, please, go ahead. You can use the opus branch to get you started. It contains all the required boilerplate and gets you to a point where you can work on decoding the audio packets. It just needs to be brought up-to date first. Best of luck!

@pdeljanov pdeljanov added the enhancement New feature or request label Aug 10, 2021
@thinking-tower
Copy link

@pdeljanov I'm still working on this ticket btw! Thanks for your patience 😄

@pdeljanov
Copy link
Owner

Hey @thinking-tower, that's good to hear! Are you running into any challenges or issues?

Opus is a pretty complex codec, so feel free to submit multiple PRs to the opus branch. I believe that Opus will prompt some changes in symphonia-core, for example, adding arithmetic decoding to the BitReaders, or more DSP routines to the dsp module. We could collaborate on these changes if there is a central branch we can work off of.

@thinking-tower
Copy link

@pdeljanov At the moment, not any issues yet. I like the idea of splitting up the commits into multiple PRs!

@darksv
Copy link
Contributor

darksv commented Jan 31, 2022

Hi @thinking-tower! Are you actively working on a decoder for Opus? I would like to help with the implementation.

@pdeljanov
Copy link
Owner

Hi @darksv,

Thanks for volunteering to work on this. Let's wait a bit longer to give a chance for @thinking-tower to respond, but as far as I know the Opus decoder hasn't been actively worked on in a long time.

There are two Opus related branches. The first is the opus branch which was my first attempt from two years ago before I focused my attention onto other priorities. The second, newer, branch is opus-dev which is where @thinking-tower was submitting PRs to.

It would probably be worthwhile to first bring opus-dev up-to-date, then port the remaining code from opus over to it. We can then make opus-dev the official Opus branch going forward.

I think for Opus you should aim for smaller PRs that can be merged into opus-dev. That way I, and other developers, can contribute to the effort. Opus is really two codecs in one, and will also likely drive many changes to symphonia-core and symphonia-utils-xiph.

@thinking-tower
Copy link

thinking-tower commented Feb 3, 2022

Hi @darksv and @pdeljanov, I am still working on the Opus decoder. I'm definitely happy to receive help!

@darksv I'm currently just debugging the official repo (https://github.com/xiph/opus) to get a better feel of how the decoding process works, are you familiar with Opus yourself?

@pdeljanov Thanks again for your patience!

@darksv
Copy link
Contributor

darksv commented Feb 5, 2022

are you familiar with Opus yourself?

@thinking-tower Not really. I've read some parts of the RFC and looked into the official implementation a bit, but I'm not very familiar with Opus just yet.

@SunnyWar
Copy link

Perhaps this work should be divided into SILK and CELT sub-codecs. SILK being used for lower bandwidth speech and CELT is for higher bandwidth music, typically.

@echelon
Copy link

echelon commented Apr 30, 2023

I'll pay a bounty (~$500) to whomever lands opus / e1a70095c4409478c1ded499fb8dd4afa540fb90.

This is important for dealing with web uploads as browser APIs use opus.

Bonus points if media duration is easy to extract.

@chris-ha458
Copy link
Contributor

I will match @echelon's offer.
Also 100$ partial bounties for :

  1. bringing opus-dev recent upto master
  2. any complete SILK implementation
  3. any complete CELT implementation
  4. if 1 and 2 has been achieved integration of 1,2 algorithms
  5. any sub task as @pdeljanov sees fit.

all determinations as to (sub-)task completion decision is upto @pdeljanov and obviously these are payable to @pdeljanov as well (in this case I will request for tests to be implemented as well for objective review of achievement)

@chris-ha458
Copy link
Contributor

I think i might start with 1 myself

@JSDurand
Copy link

I just found this repository opus-native, which aims to implement opus codec in pure Rust.
From a rough glance at its codes, it seems that it can help others implement the codec at least.
Maybe it is worth sharing this information here. :)

@chris-ha458
Copy link
Contributor

@JSDurand thanks for mentioning opus-native.
But it seems that not only do the tests do not pass, they don't even compile atm.

@JSDurand
Copy link

@chris-ha458 Yes, that is not finished. But it did implement some decoding logics, such as the range decoding, and the outer-most decoder logic. I am not familiar with this topic, so I cannot tell how completed it is, though. Just thought this might help the implementers if they did not know about that repository previously.

@thinking-tower
Copy link

@JSDurand thanks for that link, it'll be helpful for me.

@chris-ha458 How are you getting on with this? I've got some time to work on this now.

@chris-ha458
Copy link
Contributor

I think the only fair and reasonable approach would be to defer to the maintainer atm.

@thinking-tower
Copy link

I was working on this before, so I'll continue. I'm happy to work with anyone interested.

@FreezyLemon
Copy link

Hey, can I ask what the current state of this is? I would assume the API changes mentioned earlier are done and that the OGG implementation is now at a point where the opus codec can be implemented?

This looks interesting and I might take a shot at it over the weekends (no promises though). @thinking-tower are you still actively working on this? And if so, what are you working on atm?

@giorgi-o
Copy link

Hi, any updates on this? @pdeljanov @thinking-tower

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests