| Index: tests/test_opus_decode.c
 | 
| diff --git a/tests/test_opus_decode.c b/tests/test_opus_decode.c
 | 
| index 44a0ae524b09ddc2971b3f32b09b95ebe41b1e7e..9c0eb9c72858d5a8f4dc4da6b9f31eb2caebc41e 100644
 | 
| --- a/tests/test_opus_decode.c
 | 
| +++ b/tests/test_opus_decode.c
 | 
| @@ -1,4 +1,4 @@
 | 
| -/* Copyright (c) 2011 Xiph.Org Foundation
 | 
| +/* Copyright (c) 2011-2013 Xiph.Org Foundation
 | 
|     Written by Gregory Maxwell */
 | 
|  /*
 | 
|     Redistribution and use in source and binary forms, with or without
 | 
| @@ -373,6 +373,49 @@ int test_decoder_code0(int no_fuzz)
 | 
|     return 0;
 | 
|  }
 | 
|  
 | 
| +#ifndef DISABLE_FLOAT_API
 | 
| +void test_soft_clip(void)
 | 
| +{
 | 
| +   int i,j;
 | 
| +   float x[1024];
 | 
| +   float s[8] = {0, 0, 0, 0, 0, 0, 0, 0};
 | 
| +   fprintf(stdout,"  Testing opus_pcm_soft_clip... ");
 | 
| +   for(i=0;i<1024;i++)
 | 
| +   {
 | 
| +      for (j=0;j<1024;j++)
 | 
| +      {
 | 
| +        x[j]=(i&255)*(1/32.f)-4.f;
 | 
| +      }
 | 
| +      opus_pcm_soft_clip(&x[i],1024-i,1,s);
 | 
| +      for (j=i;j<1024;j++)
 | 
| +      {
 | 
| +        if(x[i]>1.f)test_failed();
 | 
| +        if(x[i]<-1.f)test_failed();
 | 
| +      }
 | 
| +   }
 | 
| +   for(i=1;i<9;i++)
 | 
| +   {
 | 
| +      for (j=0;j<1024;j++)
 | 
| +      {
 | 
| +        x[j]=(i&255)*(1/32.f)-4.f;
 | 
| +      }
 | 
| +      opus_pcm_soft_clip(x,1024/i,i,s);
 | 
| +      for (j=0;j<(1024/i)*i;j++)
 | 
| +      {
 | 
| +        if(x[i]>1.f)test_failed();
 | 
| +        if(x[i]<-1.f)test_failed();
 | 
| +      }
 | 
| +   }
 | 
| +   opus_pcm_soft_clip(x,0,1,s);
 | 
| +   opus_pcm_soft_clip(x,1,0,s);
 | 
| +   opus_pcm_soft_clip(x,1,1,0);
 | 
| +   opus_pcm_soft_clip(x,1,-1,s);
 | 
| +   opus_pcm_soft_clip(x,-1,1,s);
 | 
| +   opus_pcm_soft_clip(0,1,1,s);
 | 
| +   printf("OK.\n");
 | 
| +}
 | 
| +#endif
 | 
| +
 | 
|  int main(int _argc, char **_argv)
 | 
|  {
 | 
|     const char * oversion;
 | 
| @@ -405,6 +448,9 @@ int main(int _argc, char **_argv)
 | 
|       into the decoders. This is helpful because garbage data
 | 
|       may cause the decoders to clip, which angers CLANG IOC.*/
 | 
|     test_decoder_code0(getenv("TEST_OPUS_NOFUZZ")!=NULL);
 | 
| +#ifndef DISABLE_FLOAT_API
 | 
| +   test_soft_clip();
 | 
| +#endif
 | 
|  
 | 
|     return 0;
 | 
|  }
 | 
| 
 |