-
-
Notifications
You must be signed in to change notification settings - Fork 207
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 libvorbis #758
Comments
Hi, I am interested in solving this issue. |
Welcome, thank you! |
Let me know if you'll need help/hints with the build system. Also, if libogg dependency can be disabled, I suppose we should do it, because all we need is vorbis encoder/decoder, we don't need to work with ogg files. |
Hi @gavv , I tried without the libogg, but it fails when installing vorbis. According to the README, "You'll need libogg (distributed separately) to compile this library.", which is why I tried to install it before libvorbis. I managed to install vorbis with the build script after installing libogg. But I'm having trouble in installing the libogg with the script, since I used "make install" on the terminal. |
Oh, I see. I assumed that libogg should support using libvorbis as codec, but instead, libvorbis supports using libogg for muxing. For rfc5215, we'll need to disable ogg muxing, which seems to be feasible. libvorbis encodes packets into a struct from libogg ( When For example, here is what is "installed" for json-c:
These OK, so what we need to do if we need to build libogg and then pass it as a dependency to libvorbis? Here is an example of similar situation: roc-toolkit/3rdparty/SConscript Lines 267 to 285 in b102bb7
Here, ltdl and json-c are dependencies of pulseaudio. We first build dependencies, and then pass them via When we call format_flags(), it iterates all those dependencies (if they're present) and add their include and lib directories to the flags. Summary:
|
Feel free to ping me if you'll have troubles with those scripts, I know it's not the funniest part :) |
Hi @gavv , I am working on the handling of Vorbis stream headers. When encoding with vorbis, we should have 3 headers: the identification, comments and codebook headers. And have a few doubts on how to deal with this: Should we have a dedicated frame for headers or should we split the header across multiple frames together with the data? Or do you have another idea? My idea would be to create a function How should we handle cases where the header size exceeds the frame size? Could split the header through multiple frame cause any problems? Does the I would need to adjust all the unit tests, as well as the packetizer uses the |
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: VorbisEncoder and VorbisDecoder, that will use libvorbis 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.
The text was updated successfully, but these errors were encountered: