diff -r 537ddd8aa407 -r 2036ebfaccda src/org/sipdroid/media/codecs/GSM.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/sipdroid/media/codecs/GSM.java Fri Nov 20 19:29:42 2009 +0100 @@ -0,0 +1,68 @@ +package org.sipdroid.media.codecs; + +public class GSM extends Codec { + + public static final CodecInfo mCodecInfo = new CodecInfo(); + + static { + System.loadLibrary("gsm"); + mCodecInfo.displayName = "GSM"; + mCodecInfo.rtpPayloadName = "GSM"; + mCodecInfo.description = "GSM Full Rate codec"; + mCodecInfo.rtpPayloadCode = 3; + mCodecInfo.samplingRate = 8000; + mCodecInfo.rtpSampleDivider = 1; + mCodecInfo.minFrameTimeMsecs = 20; + mCodecInfo.codecFrameSize = 33; + CodecManager.registerAudioCodec(new GSM()); + } + + public class GSMContext extends Context { + public long ctx; + } + + @Override + public Context initDecoder() { + GSMContext decoderCtx = new GSMContext(); + decoderCtx.ctx = GSMJNI.create(); + return decoderCtx; + } + + @Override + public Context initEncoder() { + GSMContext encoderCtx = new GSMContext(); + encoderCtx.ctx = GSMJNI.create(); + return encoderCtx; + } + + @Override + public void cleanDecoder(Context ctx) { + GSMJNI.destroy(((GSMContext)ctx).ctx); + } + + @Override + public void cleanEncoder(Context ctx) { + GSMJNI.destroy(((GSMContext)ctx).ctx); + } + + @Override + public int decode(Context ctx, byte[] indata, int inoffset, int size, + short[] outsample, int outoffset) { + return GSMJNI.decode(((GSMContext)ctx).ctx, indata, inoffset, outsample, outoffset); + } + + @Override + public int encode(Context ctx, short[] insample, int inoffset, int size, + byte[] outdata, int outoffset) { + GSMJNI.encode(((GSMContext)ctx).ctx, insample, inoffset, outdata, outoffset); + return size; + } + + @Override + public CodecInfo getInfo() { + return mCodecInfo; + } + + static public void load(){ + } +}