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

Implement IFrameEncoder / IFrameDecoder using libopus #757

Open
gavv opened this issue Jul 13, 2024 · 5 comments
Open

Implement IFrameEncoder / IFrameDecoder using libopus #757

gavv opened this issue Jul 13, 2024 · 5 comments
Labels
codecs Audio and FEC codecs easy hacks The solution is expected to be straightforward even if you are new to the project enhancement help wanted An important and awaited task but we have no human resources for it yet

Comments

@gavv
Copy link
Member

gavv commented Jul 13, 2024

We have two interfaces IFrameEncoder and IFrameDecoder that are used to encode audio samples into packet payload and decode it back. Currently they're implemented using PcmEncoder and PcmDecoder (for uncompressed PCM).

Now we need to add two more implementations: OpusEncoder and OpusDecoder, that will use libopus library to do the job.

We also need to add new encoder & decoder to the list of tested codecs in test_frame_encoder_decoder.cpp.

@gavv gavv added enhancement help wanted An important and awaited task but we have no human resources for it yet easy hacks The solution is expected to be straightforward even if you are new to the project codecs Audio and FEC codecs labels Jul 13, 2024
@gavv gavv added this to Roc Toolkit Jul 13, 2024
@gavv gavv moved this from Frontlog to Help wanted in Roc Toolkit Jul 13, 2024
@github-project-automation github-project-automation bot moved this to Frontlog in Roc Toolkit Jul 13, 2024
@Nystana
Copy link

Nystana commented Oct 7, 2024

Hello I'd like to try this issue

@gavv
Copy link
Member Author

gavv commented Oct 7, 2024

Great, thank you!

@gavv
Copy link
Member Author

gavv commented Oct 7, 2024

@Nystana Please check out discussion here: #758

It uncovered a few gotchas that are likely the same for opus and vorbis (related to variable packet size), which were not addressed yet.

@runei Leonardo, what are your thoughts/plans regarding those changes needed in encoder/decoder interfaces? Should we wait until that is resolved in libvorbis PR, or work on it in libopus PR?

@runei
Copy link

runei commented Oct 9, 2024

Hi @gavv

I didn't work on this through the past weeks as I have been busy, so I can't give many insights abouts your comments yet. If you want to work in this on libopus, thats fine, I can wait and continue later. Or if you want to wait, I will continue this when I have more time.
You and @Nystana can decide what you prefer, I'm fine with both options.

@baranovmv
Copy link
Member

I'm working on enabling FEC blocks to contain packets of arbitrary length. This is a minor change that won't break backward compatibility, but iframe[encoder|decoder] will require it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
codecs Audio and FEC codecs easy hacks The solution is expected to be straightforward even if you are new to the project enhancement help wanted An important and awaited task but we have no human resources for it yet
Projects
Status: Help wanted
Development

No branches or pull requests

4 participants