annotate src/opus-1.3/celt/tests/test_unit_laplace.c @ 79:91c729825bca pa_catalina

Update build for AUDIO_COMPONENT_FIX
author Chris Cannam
date Wed, 30 Oct 2019 12:40:34 +0000
parents 7aeed7906520
children
rev   line source
Chris@69 1 /* Copyright (c) 2008-2011 Xiph.Org Foundation, Mozilla Corporation
Chris@69 2 Written by Jean-Marc Valin and Timothy B. Terriberry */
Chris@69 3 /*
Chris@69 4 Redistribution and use in source and binary forms, with or without
Chris@69 5 modification, are permitted provided that the following conditions
Chris@69 6 are met:
Chris@69 7
Chris@69 8 - Redistributions of source code must retain the above copyright
Chris@69 9 notice, this list of conditions and the following disclaimer.
Chris@69 10
Chris@69 11 - Redistributions in binary form must reproduce the above copyright
Chris@69 12 notice, this list of conditions and the following disclaimer in the
Chris@69 13 documentation and/or other materials provided with the distribution.
Chris@69 14
Chris@69 15 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Chris@69 16 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Chris@69 17 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
Chris@69 18 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
Chris@69 19 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
Chris@69 20 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
Chris@69 21 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
Chris@69 22 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
Chris@69 23 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
Chris@69 24 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Chris@69 25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Chris@69 26 */
Chris@69 27
Chris@69 28 #ifdef HAVE_CONFIG_H
Chris@69 29 #include "config.h"
Chris@69 30 #endif
Chris@69 31
Chris@69 32 #include <stdio.h>
Chris@69 33 #include <stdlib.h>
Chris@69 34 #define CELT_C
Chris@69 35 #include "laplace.h"
Chris@69 36 #include "stack_alloc.h"
Chris@69 37
Chris@69 38 #include "entenc.c"
Chris@69 39 #include "entdec.c"
Chris@69 40 #include "entcode.c"
Chris@69 41 #include "laplace.c"
Chris@69 42
Chris@69 43 #define DATA_SIZE 40000
Chris@69 44
Chris@69 45 int ec_laplace_get_start_freq(int decay)
Chris@69 46 {
Chris@69 47 opus_uint32 ft = 32768 - LAPLACE_MINP*(2*LAPLACE_NMIN+1);
Chris@69 48 int fs = (ft*(16384-decay))/(16384+decay);
Chris@69 49 return fs+LAPLACE_MINP;
Chris@69 50 }
Chris@69 51
Chris@69 52 int main(void)
Chris@69 53 {
Chris@69 54 int i;
Chris@69 55 int ret = 0;
Chris@69 56 ec_enc enc;
Chris@69 57 ec_dec dec;
Chris@69 58 unsigned char *ptr;
Chris@69 59 int val[10000], decay[10000];
Chris@69 60 ALLOC_STACK;
Chris@69 61 ptr = (unsigned char *)malloc(DATA_SIZE);
Chris@69 62 ec_enc_init(&enc,ptr,DATA_SIZE);
Chris@69 63
Chris@69 64 val[0] = 3; decay[0] = 6000;
Chris@69 65 val[1] = 0; decay[1] = 5800;
Chris@69 66 val[2] = -1; decay[2] = 5600;
Chris@69 67 for (i=3;i<10000;i++)
Chris@69 68 {
Chris@69 69 val[i] = rand()%15-7;
Chris@69 70 decay[i] = rand()%11000+5000;
Chris@69 71 }
Chris@69 72 for (i=0;i<10000;i++)
Chris@69 73 ec_laplace_encode(&enc, &val[i],
Chris@69 74 ec_laplace_get_start_freq(decay[i]), decay[i]);
Chris@69 75
Chris@69 76 ec_enc_done(&enc);
Chris@69 77
Chris@69 78 ec_dec_init(&dec,ec_get_buffer(&enc),ec_range_bytes(&enc));
Chris@69 79
Chris@69 80 for (i=0;i<10000;i++)
Chris@69 81 {
Chris@69 82 int d = ec_laplace_decode(&dec,
Chris@69 83 ec_laplace_get_start_freq(decay[i]), decay[i]);
Chris@69 84 if (d != val[i])
Chris@69 85 {
Chris@69 86 fprintf (stderr, "Got %d instead of %d\n", d, val[i]);
Chris@69 87 ret = 1;
Chris@69 88 }
Chris@69 89 }
Chris@69 90
Chris@69 91 free(ptr);
Chris@69 92 return ret;
Chris@69 93 }