blob: 417f4e1c9922a52ba33a9c63ef0db1d964747191 [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"
Gregory Maxwell083883e2009-06-03 20:02:53 -04008#define CELT_C
9#include "../libcelt/stack_alloc.h"
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110010
Jean-Marc Valin4d108fc2008-12-23 09:31:39 -050011#include "../libcelt/rangeenc.c"
12#include "../libcelt/rangedec.c"
13#include "../libcelt/entenc.c"
14#include "../libcelt/entdec.c"
15#include "../libcelt/entcode.c"
16#include "../libcelt/laplace.c"
17
Jean-Marc Valin789fc142009-10-23 21:44:54 -040018#define DATA_SIZE 40000
Jean-Marc Valin4d108fc2008-12-23 09:31:39 -050019
Jean-Marc Valina82dfdd2008-03-13 23:01:55 +110020int main(void)
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110021{
22 int i;
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110023 int ret = 0;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110024 ec_enc enc;
25 ec_dec dec;
26 ec_byte_buffer buf;
Jean-Marc Valin789fc142009-10-23 21:44:54 -040027 unsigned char *ptr;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110028 int val[10000], decay[10000];
Jean-Marc Valinf7cec832008-04-18 17:29:56 +100029 ALLOC_STACK;
Jean-Marc Valin789fc142009-10-23 21:44:54 -040030 ptr = malloc(DATA_SIZE);
31 ec_byte_writeinit_buffer(&buf, ptr, DATA_SIZE);
32 //ec_byte_writeinit(&buf);
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110033 ec_enc_init(&enc,&buf);
34
Jean-Marc Valin7cdc5a32008-03-01 20:56:17 +110035 val[0] = 3; decay[0] = 6000;
36 val[1] = 0; decay[1] = 5800;
37 val[2] = -1; decay[2] = 5600;
Jean-Marc Valin7ff2cbc2008-03-02 21:25:22 +110038 for (i=3;i<10000;i++)
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110039 {
40 val[i] = rand()%15-7;
41 decay[i] = rand()%11000+5000;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110042 }
Jean-Marc Valin7cdc5a32008-03-01 20:56:17 +110043 for (i=0;i<10000;i++)
Jean-Marc Valin45e358f2008-05-28 00:58:42 +100044 ec_laplace_encode(&enc, &val[i], decay[i]);
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110045
46 ec_enc_done(&enc);
47
48 ec_byte_readinit(&buf,ec_byte_get_buffer(&buf),ec_byte_bytes(&buf));
49 ec_dec_init(&dec,&buf);
50
51 for (i=0;i<10000;i++)
52 {
53 int d = ec_laplace_decode(&dec, decay[i]);
54 if (d != val[i])
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110055 {
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110056 fprintf (stderr, "Got %d instead of %d\n", d, val[i]);
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110057 ret = 1;
58 }
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110059 }
60
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110061 return ret;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110062}