如何在MjSip中更改编解码器解析系统?

时间:2012-02-20 10:53:59

标签: codec audioformat mjsip

我正在开发一个软件电话项目并使用MjSip堆栈来开发它。核心MjSip仅支持PCMA / PCMU编解码器。但我想添加更多的编解码器,如G729,GSM,iLBC等。

在MjSip中,类 AudioSender.java 是纯java音频流发送方。它使用javax.sound包。 在该类中, javax.sound.sampled.AudioFormat 用于使用PCM signed,unsigned或float类型格式化音频流。 它在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 个答案:

没有答案