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 } |
|