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

Roadmap #9

Open
1 of 4 tasks
Sean-Der opened this issue Sep 21, 2022 · 7 comments
Open
1 of 4 tasks

Roadmap #9

Sean-Der opened this issue Sep 21, 2022 · 7 comments

Comments

@Sean-Der
Copy link
Member

Sean-Der commented Sep 21, 2022

This is a covering ticket for the Pion Opus roadmap. If you have any requests feel free to leave them here/vote on others.

0.0.1

  • SILK Decoder
  • CELT Decoder

0.0.2

  • SILK Encoder
  • CELT Encoder
@Sean-Der Sean-Der pinned this issue Sep 21, 2022
@flamehowk

This comment was marked as off-topic.

@Sean-Der

This comment was marked as off-topic.

@Sean-Der Sean-Der mentioned this issue Oct 15, 2022
@flamehowk
Copy link

Hello Sean.

  1. I do not need an encoder, but a decoder.
  2. I need a library that I can connect to my Golang project, and not an executable codec that I will need to access through the API or in the console, because I can take a ready-made codec that is written in C ++.
  3. Since your library does not have any description of the code structure, while the code is very confusing, with a superficial search, I could not understand the chain of functions that provide work with opus files. And since you did not answer for a very long time, I did just that - I just connected a codec that was compiled from source codes in C. Therefore, at the moment my problem is solved, although not in the most convenient way.

Therefore, if you send a description of the structure of this library and the algorithm of its work, so that I can understand it, then perhaps I can find the time and help you finish this codec.
However, if you do not have any descriptions of the structure of this library, then I will not spend a month of my time studying someone else's code, just to understand how it works.
Also, I will not be able to help you if, in the course of our cooperation, you will respond to my requests 2 weeks after I sent them.

I hope for your understanding.
Of good.

@Sean-Der
Copy link
Member Author

1.) Great!

2.) Great!

3.) Were you able to run decode or playback?

For the API we provide a Decoder and you call Decode. That processes the Opus bitstream, and then calls into the SILK or CELT codecs.

I will make sure to respond faster. I am also available on the Pion Slack and you can email me sean@pion.ly anytime.

If you are interested in contributing I am currently just comparing this decoder to ffmpegs output. You could also look at implementing the CELT decoder. It is a pretty time intensive/tedious process though :)

diff --git a/libavcodec/opus_silk.c b/libavcodec/opus_silk.c
index 8523b55ada..e0ec754cdf 100644
--- a/libavcodec/opus_silk.c
+++ b/libavcodec/opus_silk.c
@@ -29,6 +29,7 @@
 #include "opus.h"
 #include "opustab.h"

+FILE *fp = NULL;
 typedef struct SilkFrame {
     int coded;
     int log_gain;
@@ -728,6 +729,11 @@ static void silk_decode_frame(SilkContext *s, OpusRangeCoder *rc,
         }
     }

+    if (fp == NULL) {
+        fp = fopen("/Users/duboisea/workspace/opus/ffmpeg-raw", "w");
+    }
+    fwrite(frame->output + SILK_HISTORY, 1, 1280, fp);
+
     frame->prev_voiced = voiced;
     memmove(frame->lpc_history, frame->lpc_history + s->flength, SILK_HISTORY * sizeof(float));
     memmove(frame->output,      frame->output      + s->flength, SILK_HISTORY * sizeof(float));

@jeanlucmongrain
Copy link

Can't wait for encoder

@gabrielfu
Copy link

thanks for the amazing package. Would love to see CELT decoder released!

@Modestying
Copy link

Can't wait for encoder

hi, have you find other ways to resolve encoder ?

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

No branches or pull requests

5 participants