1*28e138c6SAndroid Build Coastguard Worker #ifdef HAVE_CONFIG_H
2*28e138c6SAndroid Build Coastguard Worker #include "config.h"
3*28e138c6SAndroid Build Coastguard Worker #endif
4*28e138c6SAndroid Build Coastguard Worker
5*28e138c6SAndroid Build Coastguard Worker #include "speex/speex_jitter.h"
6*28e138c6SAndroid Build Coastguard Worker #include <stdio.h>
7*28e138c6SAndroid Build Coastguard Worker
8*28e138c6SAndroid Build Coastguard Worker union jbpdata {
9*28e138c6SAndroid Build Coastguard Worker unsigned int idx;
10*28e138c6SAndroid Build Coastguard Worker unsigned char data[4];
11*28e138c6SAndroid Build Coastguard Worker };
12*28e138c6SAndroid Build Coastguard Worker
synthIn(JitterBufferPacket * in,int idx,int span)13*28e138c6SAndroid Build Coastguard Worker void synthIn(JitterBufferPacket *in, int idx, int span) {
14*28e138c6SAndroid Build Coastguard Worker union jbpdata d;
15*28e138c6SAndroid Build Coastguard Worker d.idx = idx;
16*28e138c6SAndroid Build Coastguard Worker
17*28e138c6SAndroid Build Coastguard Worker in->data = d.data;
18*28e138c6SAndroid Build Coastguard Worker in->len = sizeof(d);
19*28e138c6SAndroid Build Coastguard Worker in->timestamp = idx * 10;
20*28e138c6SAndroid Build Coastguard Worker in->span = span * 10;
21*28e138c6SAndroid Build Coastguard Worker in->sequence = idx;
22*28e138c6SAndroid Build Coastguard Worker in->user_data = 0;
23*28e138c6SAndroid Build Coastguard Worker }
24*28e138c6SAndroid Build Coastguard Worker
jitterFill(JitterBuffer * jb)25*28e138c6SAndroid Build Coastguard Worker void jitterFill(JitterBuffer *jb) {
26*28e138c6SAndroid Build Coastguard Worker char buffer[65536];
27*28e138c6SAndroid Build Coastguard Worker JitterBufferPacket in, out;
28*28e138c6SAndroid Build Coastguard Worker int i;
29*28e138c6SAndroid Build Coastguard Worker
30*28e138c6SAndroid Build Coastguard Worker out.data = buffer;
31*28e138c6SAndroid Build Coastguard Worker
32*28e138c6SAndroid Build Coastguard Worker jitter_buffer_reset(jb);
33*28e138c6SAndroid Build Coastguard Worker
34*28e138c6SAndroid Build Coastguard Worker for(i=0;i<100;++i) {
35*28e138c6SAndroid Build Coastguard Worker synthIn(&in, i, 1);
36*28e138c6SAndroid Build Coastguard Worker jitter_buffer_put(jb, &in);
37*28e138c6SAndroid Build Coastguard Worker
38*28e138c6SAndroid Build Coastguard Worker out.len = 65536;
39*28e138c6SAndroid Build Coastguard Worker if (jitter_buffer_get(jb, &out, 10, NULL) != JITTER_BUFFER_OK) {
40*28e138c6SAndroid Build Coastguard Worker printf("Fill test failed iteration %d\n", i);
41*28e138c6SAndroid Build Coastguard Worker }
42*28e138c6SAndroid Build Coastguard Worker if (out.timestamp != i * 10) {
43*28e138c6SAndroid Build Coastguard Worker printf("Fill test expected %d got %d\n", i*10, out.timestamp);
44*28e138c6SAndroid Build Coastguard Worker }
45*28e138c6SAndroid Build Coastguard Worker jitter_buffer_tick(jb);
46*28e138c6SAndroid Build Coastguard Worker }
47*28e138c6SAndroid Build Coastguard Worker }
48*28e138c6SAndroid Build Coastguard Worker
main()49*28e138c6SAndroid Build Coastguard Worker int main()
50*28e138c6SAndroid Build Coastguard Worker {
51*28e138c6SAndroid Build Coastguard Worker char buffer[65536];
52*28e138c6SAndroid Build Coastguard Worker JitterBufferPacket in, out;
53*28e138c6SAndroid Build Coastguard Worker int i;
54*28e138c6SAndroid Build Coastguard Worker
55*28e138c6SAndroid Build Coastguard Worker JitterBuffer *jb = jitter_buffer_init(10);
56*28e138c6SAndroid Build Coastguard Worker
57*28e138c6SAndroid Build Coastguard Worker out.data = buffer;
58*28e138c6SAndroid Build Coastguard Worker
59*28e138c6SAndroid Build Coastguard Worker /* Frozen sender case */
60*28e138c6SAndroid Build Coastguard Worker jitterFill(jb);
61*28e138c6SAndroid Build Coastguard Worker for(i=0;i<100;++i) {
62*28e138c6SAndroid Build Coastguard Worker out.len = 65536;
63*28e138c6SAndroid Build Coastguard Worker jitter_buffer_get(jb, &out, 10, NULL);
64*28e138c6SAndroid Build Coastguard Worker jitter_buffer_tick(jb);
65*28e138c6SAndroid Build Coastguard Worker }
66*28e138c6SAndroid Build Coastguard Worker synthIn(&in, 100, 1);
67*28e138c6SAndroid Build Coastguard Worker jitter_buffer_put(jb, &in);
68*28e138c6SAndroid Build Coastguard Worker out.len = 65536;
69*28e138c6SAndroid Build Coastguard Worker if (jitter_buffer_get(jb, &out, 10, NULL) != JITTER_BUFFER_OK) {
70*28e138c6SAndroid Build Coastguard Worker printf("Failed frozen sender resynchronize\n");
71*28e138c6SAndroid Build Coastguard Worker } else {
72*28e138c6SAndroid Build Coastguard Worker printf("Frozen sender: Jitter %d\n", out.timestamp - 100*10);
73*28e138c6SAndroid Build Coastguard Worker }
74*28e138c6SAndroid Build Coastguard Worker return 0;
75*28e138c6SAndroid Build Coastguard Worker }
76