src/org/sipdroid/media/codecs/GSM.java
changeset 823 2036ebfaccda
--- /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(){
+	}
+}