blob: de10b82bc5f651b448e257289c00511498f0470e [file] [log] [blame]
Jean-Marc Valin9caa3342008-02-20 15:00:26 +11001#ifdef HAVE_CONFIG_H
2#include "config.h"
3#endif
4
5#include <stdio.h>
6#include <stdlib.h>
7#include "laplace.h"
Jean-Marc Valinf7cec832008-04-18 17:29:56 +10008#include "stack_alloc.h"
Jean-Marc Valin9caa3342008-02-20 15:00:26 +11009
Jean-Marc Valina82dfdd2008-03-13 23:01:55 +110010int main(void)
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110011{
12 int i;
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110013 int ret = 0;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110014 ec_enc enc;
15 ec_dec dec;
16 ec_byte_buffer buf;
17 int val[10000], decay[10000];
Jean-Marc Valinf7cec832008-04-18 17:29:56 +100018 ALLOC_STACK;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110019 ec_byte_writeinit(&buf);
20 ec_enc_init(&enc,&buf);
21
Jean-Marc Valin7cdc5a32008-03-01 20:56:17 +110022 val[0] = 3; decay[0] = 6000;
23 val[1] = 0; decay[1] = 5800;
24 val[2] = -1; decay[2] = 5600;
Jean-Marc Valin7ff2cbc2008-03-02 21:25:22 +110025 for (i=3;i<10000;i++)
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110026 {
27 val[i] = rand()%15-7;
28 decay[i] = rand()%11000+5000;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110029 }
Jean-Marc Valin7cdc5a32008-03-01 20:56:17 +110030 for (i=0;i<10000;i++)
Jean-Marc Valin45e358f2008-05-28 00:58:42 +100031 ec_laplace_encode(&enc, &val[i], decay[i]);
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110032
33 ec_enc_done(&enc);
34
35 ec_byte_readinit(&buf,ec_byte_get_buffer(&buf),ec_byte_bytes(&buf));
36 ec_dec_init(&dec,&buf);
37
38 for (i=0;i<10000;i++)
39 {
40 int d = ec_laplace_decode(&dec, decay[i]);
41 if (d != val[i])
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110042 {
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110043 fprintf (stderr, "Got %d instead of %d\n", d, val[i]);
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110044 ret = 1;
45 }
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110046 }
47
48 ec_byte_writeclear(&buf);
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110049 return ret;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110050}