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