annotate src/opus-1.3/celt/tests/test_unit_cwrs32.c @ 169:223a55898ab9 tip default

Add null config files
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 02 Mar 2020 14:03:47 +0000
parents 4664ac0c1032
children
rev   line source
cannam@154 1 /* Copyright (c) 2008-2011 Xiph.Org Foundation, Mozilla Corporation,
cannam@154 2 Gregory Maxwell
cannam@154 3 Written by Jean-Marc Valin, Gregory Maxwell, and Timothy B. Terriberry */
cannam@154 4 /*
cannam@154 5 Redistribution and use in source and binary forms, with or without
cannam@154 6 modification, are permitted provided that the following conditions
cannam@154 7 are met:
cannam@154 8
cannam@154 9 - Redistributions of source code must retain the above copyright
cannam@154 10 notice, this list of conditions and the following disclaimer.
cannam@154 11
cannam@154 12 - Redistributions in binary form must reproduce the above copyright
cannam@154 13 notice, this list of conditions and the following disclaimer in the
cannam@154 14 documentation and/or other materials provided with the distribution.
cannam@154 15
cannam@154 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
cannam@154 17 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
cannam@154 18 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
cannam@154 19 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
cannam@154 20 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
cannam@154 21 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
cannam@154 22 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
cannam@154 23 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
cannam@154 24 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
cannam@154 25 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
cannam@154 26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cannam@154 27 */
cannam@154 28
cannam@154 29 #ifdef HAVE_CONFIG_H
cannam@154 30 #include "config.h"
cannam@154 31 #endif
cannam@154 32
cannam@154 33 #include <stdio.h>
cannam@154 34 #include <string.h>
cannam@154 35
cannam@154 36 #ifndef CUSTOM_MODES
cannam@154 37 #define CUSTOM_MODES
cannam@154 38 #else
cannam@154 39 #define TEST_CUSTOM_MODES
cannam@154 40 #endif
cannam@154 41
cannam@154 42 #define CELT_C
cannam@154 43 #include "stack_alloc.h"
cannam@154 44 #include "entenc.c"
cannam@154 45 #include "entdec.c"
cannam@154 46 #include "entcode.c"
cannam@154 47 #include "cwrs.c"
cannam@154 48 #include "mathops.c"
cannam@154 49 #include "rate.h"
cannam@154 50
cannam@154 51 #define NMAX (240)
cannam@154 52 #define KMAX (128)
cannam@154 53
cannam@154 54 #ifdef TEST_CUSTOM_MODES
cannam@154 55
cannam@154 56 #define NDIMS (44)
cannam@154 57 static const int pn[NDIMS]={
cannam@154 58 2, 3, 4, 5, 6, 7, 8, 9, 10,
cannam@154 59 11, 12, 13, 14, 15, 16, 18, 20, 22,
cannam@154 60 24, 26, 28, 30, 32, 36, 40, 44, 48,
cannam@154 61 52, 56, 60, 64, 72, 80, 88, 96, 104,
cannam@154 62 112, 120, 128, 144, 160, 176, 192, 208
cannam@154 63 };
cannam@154 64 static const int pkmax[NDIMS]={
cannam@154 65 128, 128, 128, 128, 88, 52, 36, 26, 22,
cannam@154 66 18, 16, 15, 13, 12, 12, 11, 10, 9,
cannam@154 67 9, 8, 8, 7, 7, 7, 7, 6, 6,
cannam@154 68 6, 6, 6, 5, 5, 5, 5, 5, 5,
cannam@154 69 4, 4, 4, 4, 4, 4, 4, 4
cannam@154 70 };
cannam@154 71
cannam@154 72 #else /* TEST_CUSTOM_MODES */
cannam@154 73
cannam@154 74 #define NDIMS (22)
cannam@154 75 static const int pn[NDIMS]={
cannam@154 76 2, 3, 4, 6, 8, 9, 11, 12, 16,
cannam@154 77 18, 22, 24, 32, 36, 44, 48, 64, 72,
cannam@154 78 88, 96, 144, 176
cannam@154 79 };
cannam@154 80 static const int pkmax[NDIMS]={
cannam@154 81 128, 128, 128, 88, 36, 26, 18, 16, 12,
cannam@154 82 11, 9, 9, 7, 7, 6, 6, 5, 5,
cannam@154 83 5, 5, 4, 4
cannam@154 84 };
cannam@154 85
cannam@154 86 #endif
cannam@154 87
cannam@154 88 int main(void){
cannam@154 89 int t;
cannam@154 90 int n;
cannam@154 91 ALLOC_STACK;
cannam@154 92 for(t=0;t<NDIMS;t++){
cannam@154 93 int pseudo;
cannam@154 94 n=pn[t];
cannam@154 95 for(pseudo=1;pseudo<41;pseudo++)
cannam@154 96 {
cannam@154 97 int k;
cannam@154 98 #if defined(SMALL_FOOTPRINT)
cannam@154 99 opus_uint32 uu[KMAX+2U];
cannam@154 100 #endif
cannam@154 101 opus_uint32 inc;
cannam@154 102 opus_uint32 nc;
cannam@154 103 opus_uint32 i;
cannam@154 104 k=get_pulses(pseudo);
cannam@154 105 if (k>pkmax[t])break;
cannam@154 106 printf("Testing CWRS with N=%i, K=%i...\n",n,k);
cannam@154 107 #if defined(SMALL_FOOTPRINT)
cannam@154 108 nc=ncwrs_urow(n,k,uu);
cannam@154 109 #else
cannam@154 110 nc=CELT_PVQ_V(n,k);
cannam@154 111 #endif
cannam@154 112 inc=nc/20000;
cannam@154 113 if(inc<1)inc=1;
cannam@154 114 for(i=0;i<nc;i+=inc){
cannam@154 115 #if defined(SMALL_FOOTPRINT)
cannam@154 116 opus_uint32 u[KMAX+2U];
cannam@154 117 #endif
cannam@154 118 int y[NMAX];
cannam@154 119 int sy;
cannam@154 120 opus_uint32 v;
cannam@154 121 opus_uint32 ii;
cannam@154 122 int j;
cannam@154 123 #if defined(SMALL_FOOTPRINT)
cannam@154 124 memcpy(u,uu,(k+2U)*sizeof(*u));
cannam@154 125 cwrsi(n,k,i,y,u);
cannam@154 126 #else
cannam@154 127 cwrsi(n,k,i,y);
cannam@154 128 #endif
cannam@154 129 sy=0;
cannam@154 130 for(j=0;j<n;j++)sy+=abs(y[j]);
cannam@154 131 if(sy!=k){
cannam@154 132 fprintf(stderr,"N=%d Pulse count mismatch in cwrsi (%d!=%d).\n",
cannam@154 133 n,sy,k);
cannam@154 134 return 99;
cannam@154 135 }
cannam@154 136 /*printf("%6u of %u:",i,nc);
cannam@154 137 for(j=0;j<n;j++)printf(" %+3i",y[j]);
cannam@154 138 printf(" ->");*/
cannam@154 139 #if defined(SMALL_FOOTPRINT)
cannam@154 140 ii=icwrs(n,k,&v,y,u);
cannam@154 141 #else
cannam@154 142 ii=icwrs(n,y);
cannam@154 143 v=CELT_PVQ_V(n,k);
cannam@154 144 #endif
cannam@154 145 if(ii!=i){
cannam@154 146 fprintf(stderr,"Combination-index mismatch (%lu!=%lu).\n",
cannam@154 147 (long)ii,(long)i);
cannam@154 148 return 1;
cannam@154 149 }
cannam@154 150 if(v!=nc){
cannam@154 151 fprintf(stderr,"Combination count mismatch (%lu!=%lu).\n",
cannam@154 152 (long)v,(long)nc);
cannam@154 153 return 2;
cannam@154 154 }
cannam@154 155 /*printf(" %6u\n",i);*/
cannam@154 156 }
cannam@154 157 /*printf("\n");*/
cannam@154 158 }
cannam@154 159 }
cannam@154 160 return 0;
cannam@154 161 }