Как изменить систему парсинга кодеков в MjSip?

Я работаю над проектом софтфона и использую стек 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?

0 ответов

Другие вопросы по тегам