[jitsi-dev] Questions on New Codec Support in Jitsi


#1

Hi,

I am new to Jitsi and recently downloaded the source code and was able
to successfully launch Jitsi.
In the options->Audio->encodings. I observed Jitsi is supporting various
audio codecs including Opus. However, recently I came across EVS codec. I'm
thinking of adding EVS support (or other codec support) to Jitsi.
As I'm totally new to Jitsi, I would like to know the following information
from the Developers
1. Is there any proper documentation explaining the procedure for adding
new features (Ex: new codec support) to Jitsi ?
2. if not, can you provide me the list of files to be modified.
so far, I was able to shortlist few files which needs modifications apart
from encoder and decoder files
constants,MediaServiceimpl,Utils,MediaFormatfactoryimpl,Encodingconfig java

3a. Do I need to modify all the codec c files for allowing communication
between Java and C ? Any tools recommended ?
<My Story to question 3>
For g729 , I found that all the native files are converted into Java.
Initially I thought of following the same style and realized it is time
consuming and not efficient. The alternative procedure is 'JNI' , I guess
this was followed for other codecs.

From the look of neomedia.codec.audio.g722 (in libjitsi) java files ,

understood that most of my work is to create JNIEncoder and JNIDecoder
files, however I'm not sure whether all the g722 native files should
be modified.

3b. Can you release the modified native code of the codecs (Ex: g722/opus),
as currently I can see shared libraries (.dll/.so/etc.,) of the codec not
physical files?

4. Finally, is adding EVS or other codecs support to Jitsi possible ?

Thanks in advance.

···

--
*Thank you​ ​** & Regards,*
* Srikanth *


#2

Hello,

Hi,

I am new to Jitsi and recently downloaded the source code and was able
to successfully launch Jitsi.
In the options->Audio->encodings. I observed Jitsi is supporting various
audio codecs including Opus. However, recently I came across EVS codec.
I'm thinking of adding EVS support (or other codec support) to Jitsi.
As I'm totally new to Jitsi, I would like to know the following
information from the Developers
1. Is there any proper documentation explaining the procedure for adding
new features (Ex: new codec support) to Jitsi ?

There's some information about setting up your environment and a few other topics here[1], and about the Jitsi architecture here[2].

2. if not, can you provide me the list of files to be modified.
so far, I was able to shortlist few files which needs modifications
apart from encoder and decoder files
constants,MediaServiceimpl,Utils,MediaFormatfactoryimpl,Encodingconfig java

I don't think anyone could give you a complete list, but it I can't think of anything obvious missing from your list.

3a. Do I need to modify all the codec c files for allowing communication
between Java and C ? Any tools recommended?
<My Story to question 3>
For g729 , I found that all the native files are converted into Java.
Initially I thought of following the same style and realized it is time
consuming and not efficient. The alternative procedure is 'JNI' , I
guess this was followed for other codecs.
From the look of neomedia.codec.audio.g722 (in libjitsi) java files ,
understood that most of my work is to create JNIEncoder and JNIDecoder
files, however I'm not sure whether all the g722 native files should
be modified.

3b. Can you release the modified native code of the codecs (Ex:
g722/opus), as currently I can see shared libraries (.dll/.so/etc.,) of
the codec not physical files?

It is not necessary to translate the native implementation to java, or modify it. For opus we use an unmodified version of libopus[3], compiled along with our JNI wrapper functions into libjnopus.{so,dll,jnilib}. The code for the wrappers is here[4]. On the java side the wrappers are defined in Opus.java.

4. Finally, is adding EVS or other codecs support to Jitsi possible ?

Yes, certainly, if it can be transported over RTP.

Regards,
Boris

[1] https://jitsi.org/Documentation/DeveloperDocumentation
[2] http://www.aosabook.org/en/jitsi.html
[3] http://opus-codec.org/downloads/
[4] https://github.com/jitsi/libjitsi/tree/master/src/native/opus

···

On 16/01/15 05:11, srikanth nagisetty wrote: