|
1 /** |
|
2 |
|
3 g722_encode_state_t *g722_encode_init(g722_encode_state_t *s, int rate, int options); |
|
4 int g722_encode_release(g722_encode_state_t *s); |
|
5 int g722_encode(g722_encode_state_t *s, uint8_t g722_data[], const int16_t amp[], int len); |
|
6 |
|
7 g722_decode_state_t *g722_decode_init(g722_decode_state_t *s, int rate, int options); |
|
8 int g722_decode_release(g722_decode_state_t *s); |
|
9 int g722_decode(g722_decode_state_t *s, int16_t amp[], const uint8_t g722_data[], int len); |
|
10 |
|
11 */ |
|
12 |
|
13 #include <jni.h> |
|
14 #include "g722.h" |
|
15 |
|
16 jlong |
|
17 Java_org_sipdroid_media_codecs_G722JNI_encodeInit(JNIEnv *env, jlong jg722State, jint rate, jint options) |
|
18 { |
|
19 return g722_encode_init((void *) jg722State, rate, options); |
|
20 } |
|
21 |
|
22 jint |
|
23 Java_org_sipdroid_media_codecs_G722JNI_encodeRelease(JNIEnv *env, jlong jg722State) |
|
24 { |
|
25 return g722_encode_release((void *) jg722State); |
|
26 } |
|
27 |
|
28 jint |
|
29 Java_org_sipdroid_media_codecs_G722JNI_encode(JNIEnv *env, jlong jg722State, jshortArray jsignal, jlong jsrcPos, jbyteArray jg722Byte, jlong jdestPos, jint len) |
|
30 { |
|
31 jshort *signal; |
|
32 jbyte *g722Byte; |
|
33 jboolean isCopyByte; |
|
34 jboolean isCopySignal; |
|
35 void *ctx = (void *) jg722State; |
|
36 jint res; |
|
37 |
|
38 g722Byte = (*env)->GetByteArrayElements(env, jg722Byte, &isCopyByte); |
|
39 signal = (*env)->GetShortArrayElements(env, jsignal, &isCopySignal); |
|
40 |
|
41 res = g722_encode(ctx, g722Byte + jdestPos, signal + jsrcPos, len); |
|
42 if (isCopyByte == JNI_TRUE) |
|
43 (*env)->ReleaseByteArrayElements(env, jg722Byte, g722Byte, 0); |
|
44 if (isCopySignal == JNI_TRUE) |
|
45 (*env)->ReleaseShortArrayElements(env, jsignal, signal, 0); |
|
46 return res; |
|
47 } |
|
48 |
|
49 jlong |
|
50 Java_org_sipdroid_media_codecs_G722JNI_decodeInit(JNIEnv *env, jlong jg722State, jint rate, jint options) |
|
51 { |
|
52 return g722_decode_init((void *) jg722State, rate, options); |
|
53 } |
|
54 |
|
55 jint |
|
56 Java_org_sipdroid_media_codecs_G722JNI_decodeRelease(JNIEnv *env, jlong jg722State) |
|
57 { |
|
58 return g722_decode_release((void *) jg722State); |
|
59 } |
|
60 |
|
61 jint |
|
62 Java_org_sipdroid_media_codecs_G722JNI_decode(JNIEnv *env, jlong jg722State, jbyteArray jg722Byte, jlong jsrcPos, jshortArray jsignal, jlong jdestPos, jint len) |
|
63 { |
|
64 jshort *signal; |
|
65 jbyte *g722Byte; |
|
66 jboolean isCopyByte; |
|
67 jboolean isCopySignal; |
|
68 void *ctx = (void *) jg722State; |
|
69 jint res; |
|
70 |
|
71 g722Byte = (*env)->GetByteArrayElements(env, jg722Byte, &isCopyByte); |
|
72 signal = (*env)->GetShortArrayElements(env, jsignal, &isCopySignal); |
|
73 |
|
74 res = g722_decode(ctx, signal + jdestPos, g722Byte + jsrcPos, len); |
|
75 if (isCopyByte == JNI_TRUE) |
|
76 (*env)->ReleaseByteArrayElements(env, jg722Byte, g722Byte, 0); |
|
77 if (isCopySignal == JNI_TRUE) |
|
78 (*env)->ReleaseShortArrayElements(env, jsignal, signal, 0); |
|
79 return res; |
|
80 } |