oops, unb0rked testcelt output
[opus.git] / libcelt / testcelt.c
index c0a6dd8..50d7243 100644 (file)
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
 #include "celt.h"
+#include "arch.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
@@ -51,7 +55,7 @@ int main(int argc, char *argv[])
    int rate, overlap;
    double rmsd = 0;
    int count = 0;
-   
+   int skip;
    if (argc != 8)
    {
       fprintf (stderr, "Usage: testcelt <rate> <channels> <frame size> <overlap> <bytes per packet> <input> <output>\n");
@@ -62,7 +66,7 @@ int main(int argc, char *argv[])
    channels = atoi(argv[2]);
    frame_size = atoi(argv[3]);
    overlap = atoi(argv[4]);
-   
+   skip = overlap;
    mode = celt_mode_create(rate, channels, frame_size, overlap, NULL);
    
    if (mode == NULL)
@@ -92,17 +96,19 @@ int main(int argc, char *argv[])
       return 1;
    }
    
-   //mode = celt_mode_create(44100, 1, 192, 64);
    /* Use mode4 for stereo and don't forget to change the value of CHANNEL above */
-   enc = celt_encoder_new(mode);
-   dec = celt_decoder_new(mode);
+   enc = celt_encoder_create(mode);
+   dec = celt_decoder_create(mode);
    
    celt_mode_info(mode, CELT_GET_FRAME_SIZE, &frame_size);
    celt_mode_info(mode, CELT_GET_NB_CHANNELS, &channels);
    while (!feof(fin))
    {
-      celt_int16_t in[frame_size*channels];
-      celt_int16_t out[frame_size*channels];
+      VARDECL(celt_int16_t *in);
+      VARDECL(celt_int16_t *out);
+      SAVE_STACK;
+      ALLOC(in, frame_size*channels, celt_int16_t);
+      ALLOC(out, frame_size*channels, celt_int16_t);
       fread(in, sizeof(short), frame_size*channels, fin);
       if (feof(fin))
          break;
@@ -110,10 +116,9 @@ int main(int argc, char *argv[])
       if (len <= 0)
       {
          fprintf (stderr, "celt_encode() returned %d\n", len);
+         RESTORE_STACK;
          return 1;
       }
-      //printf ("\n");
-      //printf ("%d\n", len);
       /* This is to simulate packet loss */
 #if 1
       if (rand()%100==-1)
@@ -124,11 +129,15 @@ int main(int argc, char *argv[])
       for (i=0;i<frame_size*channels;i++)
          out[i] = in[i];
 #endif
-      //printf ("\n");
       for (i=0;i<frame_size*channels;i++)
+      {
          rmsd += (in[i]-out[i])*1.0*(in[i]-out[i]);
+         /*out[i] -= in[i];*/
+      }
       count++;
-      fwrite(out, sizeof(short), frame_size*channels, fout);
+      fwrite(out, sizeof(short), (frame_size-skip)*channels, fout);
+      skip = 0;
+      RESTORE_STACK;
    }
    celt_encoder_destroy(enc);
    celt_decoder_destroy(dec);