Как изменить систему парсинга кодеков в MjSip? - PullRequest
4 голосов
/ 20 февраля 2012

Я работаю над проектом программного телефона и использую стек MjSip для его разработки.Ядро MjSip поддерживается только кодеками PCMA / PCMU.Но я хочу добавить в него еще несколько кодеков, таких как G729, GSM, iLBC и т. Д.

В MjSip класс AudioSender.java является отправителем аудиопотока в формате чисто Java.Он использует пакет javax.sound.В этом классе javax.sound.sampled.AudioFormat используется для форматирования аудиопотока с типом PCM со знаком, без знака или с плавающей точкой.Это было сделано в MjSip следующим образом.

AudioFormat.Encoding codec;
        if (pcmu) {
            codec = AudioFormat.Encoding.ULAW;
        } else if (linear_signed) {
            codec = AudioFormat.Encoding.PCM_SIGNED;
        } else if (pcma) {
            codec = AudioFormat.Encoding.ALAW;
        } else {
            codec = AudioFormat.Encoding.PCM_UNSIGNED; // default
        }

if (sound)
         {  AudioFormat format=new AudioFormat(codec,sample_rate,8*sample_size,1,sample_size,sample_rate,big_endian);
            System.out.println("System audio format: "+format);
            audio_input=new AudioInput(format);
            sender=new RtpStreamSender(audio_input.getInputStream(),false,payload_type,frame_rate,frame_size,daddr,dport);
         }

Но я создал свой собственный пакет org.mine.codec , включающий эти классы

Codec.java (This is an Interface)
CodecAttribute.java
CodecUtils.java
CodecFactory.java
CodecG729.java
CodecPCMA.java
CodecPCMU.java

Так что я хочуиспользовать это вместо AudioFormat.Encoding .Как мне создать класс AudioSender.java и что нужно изменить в классе RtpStreamSender.java ?Можно ли игнорировать этот AudioFormat класс?Если я должен использовать это, что бы конструктор RtpStreamSender.java ?

...