]> 4ch.mooo.com Git - 16.git/blob - src/lib/doslib/ext/speex/testjitter.c
3bcbe2fed2e8f44fc8729f111b73a4b37de159cf
[16.git] / src / lib / doslib / ext / speex / testjitter.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <speex/speex_jitter.h>
6 #include <stdio.h>
7
8 union jbpdata {
9   unsigned int idx;
10   unsigned char data[4];
11 };
12
13 void 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
25 void 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
49 int 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 }