| Index: webrtc/modules/audio_coding/codecs/opus/opus/src/celt/tests/test_unit_cwrs32.c
|
| diff --git a/webrtc/modules/audio_coding/codecs/opus/opus/src/celt/tests/test_unit_cwrs32.c b/webrtc/modules/audio_coding/codecs/opus/opus/src/celt/tests/test_unit_cwrs32.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..36dd8af5f5c4469217c9440fffd4668415ee9acb
|
| --- /dev/null
|
| +++ b/webrtc/modules/audio_coding/codecs/opus/opus/src/celt/tests/test_unit_cwrs32.c
|
| @@ -0,0 +1,161 @@
|
| +/* Copyright (c) 2008-2011 Xiph.Org Foundation, Mozilla Corporation,
|
| + Gregory Maxwell
|
| + Written by Jean-Marc Valin, Gregory Maxwell, and Timothy B. Terriberry */
|
| +/*
|
| + Redistribution and use in source and binary forms, with or without
|
| + modification, are permitted provided that the following conditions
|
| + are met:
|
| +
|
| + - Redistributions of source code must retain the above copyright
|
| + notice, this list of conditions and the following disclaimer.
|
| +
|
| + - Redistributions in binary form must reproduce the above copyright
|
| + notice, this list of conditions and the following disclaimer in the
|
| + documentation and/or other materials provided with the distribution.
|
| +
|
| + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
| + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
| + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
| + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
| + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
| + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
| + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
| + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| +*/
|
| +
|
| +#ifdef HAVE_CONFIG_H
|
| +#include "config.h"
|
| +#endif
|
| +
|
| +#include <stdio.h>
|
| +#include <string.h>
|
| +
|
| +#ifndef CUSTOM_MODES
|
| +#define CUSTOM_MODES
|
| +#else
|
| +#define TEST_CUSTOM_MODES
|
| +#endif
|
| +
|
| +#define CELT_C
|
| +#include "stack_alloc.h"
|
| +#include "entenc.c"
|
| +#include "entdec.c"
|
| +#include "entcode.c"
|
| +#include "cwrs.c"
|
| +#include "mathops.c"
|
| +#include "rate.h"
|
| +
|
| +#define NMAX (240)
|
| +#define KMAX (128)
|
| +
|
| +#ifdef TEST_CUSTOM_MODES
|
| +
|
| +#define NDIMS (44)
|
| +static const int pn[NDIMS]={
|
| + 2, 3, 4, 5, 6, 7, 8, 9, 10,
|
| + 11, 12, 13, 14, 15, 16, 18, 20, 22,
|
| + 24, 26, 28, 30, 32, 36, 40, 44, 48,
|
| + 52, 56, 60, 64, 72, 80, 88, 96, 104,
|
| + 112, 120, 128, 144, 160, 176, 192, 208
|
| +};
|
| +static const int pkmax[NDIMS]={
|
| + 128, 128, 128, 128, 88, 52, 36, 26, 22,
|
| + 18, 16, 15, 13, 12, 12, 11, 10, 9,
|
| + 9, 8, 8, 7, 7, 7, 7, 6, 6,
|
| + 6, 6, 6, 5, 5, 5, 5, 5, 5,
|
| + 4, 4, 4, 4, 4, 4, 4, 4
|
| +};
|
| +
|
| +#else /* TEST_CUSTOM_MODES */
|
| +
|
| +#define NDIMS (22)
|
| +static const int pn[NDIMS]={
|
| + 2, 3, 4, 6, 8, 9, 11, 12, 16,
|
| + 18, 22, 24, 32, 36, 44, 48, 64, 72,
|
| + 88, 96, 144, 176
|
| +};
|
| +static const int pkmax[NDIMS]={
|
| + 128, 128, 128, 88, 36, 26, 18, 16, 12,
|
| + 11, 9, 9, 7, 7, 6, 6, 5, 5,
|
| + 5, 5, 4, 4
|
| +};
|
| +
|
| +#endif
|
| +
|
| +int main(void){
|
| + int t;
|
| + int n;
|
| + ALLOC_STACK;
|
| + for(t=0;t<NDIMS;t++){
|
| + int pseudo;
|
| + n=pn[t];
|
| + for(pseudo=1;pseudo<41;pseudo++)
|
| + {
|
| + int k;
|
| +#if defined(SMALL_FOOTPRINT)
|
| + opus_uint32 uu[KMAX+2U];
|
| +#endif
|
| + opus_uint32 inc;
|
| + opus_uint32 nc;
|
| + opus_uint32 i;
|
| + k=get_pulses(pseudo);
|
| + if (k>pkmax[t])break;
|
| + printf("Testing CWRS with N=%i, K=%i...\n",n,k);
|
| +#if defined(SMALL_FOOTPRINT)
|
| + nc=ncwrs_urow(n,k,uu);
|
| +#else
|
| + nc=CELT_PVQ_V(n,k);
|
| +#endif
|
| + inc=nc/20000;
|
| + if(inc<1)inc=1;
|
| + for(i=0;i<nc;i+=inc){
|
| +#if defined(SMALL_FOOTPRINT)
|
| + opus_uint32 u[KMAX+2U];
|
| +#endif
|
| + int y[NMAX];
|
| + int sy;
|
| + opus_uint32 v;
|
| + opus_uint32 ii;
|
| + int j;
|
| +#if defined(SMALL_FOOTPRINT)
|
| + memcpy(u,uu,(k+2U)*sizeof(*u));
|
| + cwrsi(n,k,i,y,u);
|
| +#else
|
| + cwrsi(n,k,i,y);
|
| +#endif
|
| + sy=0;
|
| + for(j=0;j<n;j++)sy+=abs(y[j]);
|
| + if(sy!=k){
|
| + fprintf(stderr,"N=%d Pulse count mismatch in cwrsi (%d!=%d).\n",
|
| + n,sy,k);
|
| + return 99;
|
| + }
|
| + /*printf("%6u of %u:",i,nc);
|
| + for(j=0;j<n;j++)printf(" %+3i",y[j]);
|
| + printf(" ->");*/
|
| +#if defined(SMALL_FOOTPRINT)
|
| + ii=icwrs(n,k,&v,y,u);
|
| +#else
|
| + ii=icwrs(n,y);
|
| + v=CELT_PVQ_V(n,k);
|
| +#endif
|
| + if(ii!=i){
|
| + fprintf(stderr,"Combination-index mismatch (%lu!=%lu).\n",
|
| + (long)ii,(long)i);
|
| + return 1;
|
| + }
|
| + if(v!=nc){
|
| + fprintf(stderr,"Combination count mismatch (%lu!=%lu).\n",
|
| + (long)v,(long)nc);
|
| + return 2;
|
| + }
|
| + /*printf(" %6u\n",i);*/
|
| + }
|
| + /*printf("\n");*/
|
| + }
|
| + }
|
| + return 0;
|
| +}
|
|
|