src/org/sipdroid/media/codecs/G722.java
changeset 823 2036ebfaccda
equal deleted inserted replaced
536:537ddd8aa407 823:2036ebfaccda
       
     1 package org.sipdroid.media.codecs;
       
     2 
       
     3 public class G722 extends Codec {
       
     4 
       
     5 	public static final CodecInfo mCodecInfo = new CodecInfo();
       
     6 
       
     7 	static {
       
     8 		System.loadLibrary("g722");
       
     9 		mCodecInfo.displayName = "G722";
       
    10 		mCodecInfo.rtpPayloadName = "G722";
       
    11 		mCodecInfo.description = "G722 16kHz codec";
       
    12 		mCodecInfo.rtpPayloadCode = 9;
       
    13 		mCodecInfo.samplingRate = 16000;
       
    14 		mCodecInfo.rtpSampleDivider = 2;
       
    15 		mCodecInfo.minFrameTimeMsecs = 20;
       
    16 		mCodecInfo.codecFrameSize = 160;
       
    17 		CodecManager.registerAudioCodec(new G722());
       
    18 	}
       
    19 
       
    20 	public class G722Context extends Context {
       
    21 		public long ctx;
       
    22 	}
       
    23 
       
    24 	@Override
       
    25 	public Context initDecoder() {
       
    26 		G722Context decoderCtx = new G722Context();
       
    27 		decoderCtx.ctx = G722JNI.decodeInit(decoderCtx.ctx, mCodecInfo.codecFrameSize, 0);
       
    28 		return decoderCtx;
       
    29 	}
       
    30 
       
    31 	@Override
       
    32 	public Context initEncoder() {
       
    33 		G722Context encoderCtx = new G722Context();
       
    34 		encoderCtx.ctx = G722JNI.encodeInit(encoderCtx.ctx, mCodecInfo.codecFrameSize, 0);
       
    35 		return encoderCtx;
       
    36 	}
       
    37 
       
    38 	@Override
       
    39 	public void cleanDecoder(Context ctx) {
       
    40 		G722JNI.decodeRelease(((G722Context)ctx).ctx);
       
    41 	}
       
    42 
       
    43 	@Override
       
    44 	public void cleanEncoder(Context ctx) {
       
    45 		G722JNI.encodeRelease(((G722Context)ctx).ctx);
       
    46 	}
       
    47 
       
    48 	@Override
       
    49 	public int decode(Context ctx, byte[] indata, int inoffset, int size,
       
    50 			short[] outsample, int outoffset) {
       
    51 		return G722JNI.decode(((G722Context)ctx).ctx, indata, inoffset, outsample, outoffset, size);
       
    52 	}
       
    53 
       
    54 	@Override
       
    55 	public int encode(Context ctx, short[] insample, int inoffset, int size,
       
    56 			byte[] outdata, int outoffset) {
       
    57 		G722JNI.encode(((G722Context)ctx).ctx, insample, inoffset, outdata, outoffset, size);
       
    58 		return size;
       
    59 	}
       
    60 
       
    61 	@Override
       
    62 	public CodecInfo getInfo() {
       
    63 		return mCodecInfo;
       
    64 	}
       
    65 
       
    66 	static public void load(){
       
    67 	}
       
    68 }