diff -r 537ddd8aa407 -r 2036ebfaccda src/org/sipdroid/media/codecs/G722.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/sipdroid/media/codecs/G722.java Fri Nov 20 19:29:42 2009 +0100 @@ -0,0 +1,68 @@ +package org.sipdroid.media.codecs; + +public class G722 extends Codec { + + public static final CodecInfo mCodecInfo = new CodecInfo(); + + static { + System.loadLibrary("g722"); + mCodecInfo.displayName = "G722"; + mCodecInfo.rtpPayloadName = "G722"; + mCodecInfo.description = "G722 16kHz codec"; + mCodecInfo.rtpPayloadCode = 9; + mCodecInfo.samplingRate = 16000; + mCodecInfo.rtpSampleDivider = 2; + mCodecInfo.minFrameTimeMsecs = 20; + mCodecInfo.codecFrameSize = 160; + CodecManager.registerAudioCodec(new G722()); + } + + public class G722Context extends Context { + public long ctx; + } + + @Override + public Context initDecoder() { + G722Context decoderCtx = new G722Context(); + decoderCtx.ctx = G722JNI.decodeInit(decoderCtx.ctx, mCodecInfo.codecFrameSize, 0); + return decoderCtx; + } + + @Override + public Context initEncoder() { + G722Context encoderCtx = new G722Context(); + encoderCtx.ctx = G722JNI.encodeInit(encoderCtx.ctx, mCodecInfo.codecFrameSize, 0); + return encoderCtx; + } + + @Override + public void cleanDecoder(Context ctx) { + G722JNI.decodeRelease(((G722Context)ctx).ctx); + } + + @Override + public void cleanEncoder(Context ctx) { + G722JNI.encodeRelease(((G722Context)ctx).ctx); + } + + @Override + public int decode(Context ctx, byte[] indata, int inoffset, int size, + short[] outsample, int outoffset) { + return G722JNI.decode(((G722Context)ctx).ctx, indata, inoffset, outsample, outoffset, size); + } + + @Override + public int encode(Context ctx, short[] insample, int inoffset, int size, + byte[] outdata, int outoffset) { + G722JNI.encode(((G722Context)ctx).ctx, insample, inoffset, outdata, outoffset, size); + return size; + } + + @Override + public CodecInfo getInfo() { + return mCodecInfo; + } + + static public void load(){ + } +}