diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2008-06-10 14:09:37 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2008-06-10 14:09:37 +0000 |
commit | beaa7b7491e6deccd6c49abc375702e23aa4324a (patch) | |
tree | 9ebf2d154e6c5d7bfc61222a60731d59deb2e89e /third_party/speex/libspeex/testjitter.c | |
parent | 60ce2ec8b88876b89c408ef7b78a4641d1162148 (diff) |
Upgraded Speex version to the latest and reorganized it in local copy (since Speex is now using Git)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2002 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'third_party/speex/libspeex/testjitter.c')
-rw-r--r-- | third_party/speex/libspeex/testjitter.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/third_party/speex/libspeex/testjitter.c b/third_party/speex/libspeex/testjitter.c new file mode 100644 index 00000000..3bcbe2fe --- /dev/null +++ b/third_party/speex/libspeex/testjitter.c @@ -0,0 +1,75 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <speex/speex_jitter.h> +#include <stdio.h> + +union jbpdata { + unsigned int idx; + unsigned char data[4]; +}; + +void synthIn(JitterBufferPacket *in, int idx, int span) { + union jbpdata d; + d.idx = idx; + + in->data = d.data; + in->len = sizeof(d); + in->timestamp = idx * 10; + in->span = span * 10; + in->sequence = idx; + in->user_data = 0; +} + +void jitterFill(JitterBuffer *jb) { + char buffer[65536]; + JitterBufferPacket in, out; + int i; + + out.data = buffer; + + jitter_buffer_reset(jb); + + for(i=0;i<100;++i) { + synthIn(&in, i, 1); + jitter_buffer_put(jb, &in); + + out.len = 65536; + if (jitter_buffer_get(jb, &out, 10, NULL) != JITTER_BUFFER_OK) { + printf("Fill test failed iteration %d\n", i); + } + if (out.timestamp != i * 10) { + printf("Fill test expected %d got %d\n", i*10, out.timestamp); + } + jitter_buffer_tick(jb); + } +} + +int main() +{ + char buffer[65536]; + JitterBufferPacket in, out; + int i; + + JitterBuffer *jb = jitter_buffer_init(10); + + out.data = buffer; + + /* Frozen sender case */ + jitterFill(jb); + for(i=0;i<100;++i) { + out.len = 65536; + jitter_buffer_get(jb, &out, 10, NULL); + jitter_buffer_tick(jb); + } + synthIn(&in, 100, 1); + jitter_buffer_put(jb, &in); + out.len = 65536; + if (jitter_buffer_get(jb, &out, 10, NULL) != JITTER_BUFFER_OK) { + printf("Failed frozen sender resynchronize\n"); + } else { + printf("Frozen sender: Jitter %d\n", out.timestamp - 100*10); + } + return 0; +} |