Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/speex.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>2002-03-15 10:30:46 +0300
committerjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>2002-03-15 10:30:46 +0300
commit49f16a1d674aca571414bc7e4312ebf9fb0472bb (patch)
treec2f33cf398d988541cd7e078630e127df5451325 /libspeex
parentee987fd1f6246c541a37e584570d6f226f348b95 (diff)
Wideband encorer
git-svn-id: http://svn.xiph.org/trunk/speex@3149 0101bb08-14d6-0310-b084-bc0e0c8e3800
Diffstat (limited to 'libspeex')
-rw-r--r--libspeex/testenc_wb.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/libspeex/testenc_wb.c b/libspeex/testenc_wb.c
new file mode 100644
index 0000000..2a88d74
--- /dev/null
+++ b/libspeex/testenc_wb.c
@@ -0,0 +1,73 @@
+#include "speex.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FRAME_SIZE 256
+#include <math.h>
+int main(int argc, char **argv)
+{
+ char *inFile, *outFile, *bitsFile;
+ FILE *fin, *fout, *fbits=NULL;
+ short in[FRAME_SIZE];
+ float input[FRAME_SIZE], bak[FRAME_SIZE], bak2[FRAME_SIZE];
+ char cbits[200];
+ int nbBits;
+ int i;
+ EncState st;
+ DecState dec;
+ FrameBits bits;
+
+ for (i=0;i<FRAME_SIZE;i++)
+ bak2[i]=0;
+ encoder_init(&st, &wb_mode);
+ decoder_init(&dec, &wb_mode);
+ if (argc != 4 && argc != 3)
+ {
+ fprintf (stderr, "Usage: encode [in file] [out file] [bits file]\nargc = %d", argc);
+ exit(1);
+ }
+ inFile = argv[1];
+ fin = fopen(inFile, "r");
+ outFile = argv[2];
+ fout = fopen(outFile, "w");
+ if (argc==4)
+ {
+ bitsFile = argv[3];
+ fbits = fopen(bitsFile, "w");
+ }
+ frame_bits_init(&bits);
+ while (!feof(fin))
+ {
+ fread(in, sizeof(short), FRAME_SIZE, fin);
+ for (i=0;i<FRAME_SIZE;i++)
+ bak[i]=input[i]=in[i];
+ frame_bits_reset(&bits);
+ encode(&st, input, &bits);
+ nbBits = frame_bits_write(&bits, cbits, 200);
+ printf ("Encoding frame in %d bits\n", nbBits*8);
+ if (argc==4)
+ fwrite(cbits, 1, nbBits, fbits);
+ {
+ float enoise=0, esig=0, snr;
+ for (i=0;i<FRAME_SIZE;i++)
+ {
+ enoise+=(bak2[i]-input[i])*(bak2[i]-input[i]);
+ esig += bak2[i]*bak2[i];
+ }
+ snr = 10*log10((esig+1)/(enoise+1));
+ printf ("real SNR = %f\n", snr);
+ }
+
+ /* Save the bits here */
+ frame_bits_reset(&bits);
+ for (i=0;i<FRAME_SIZE;i++)
+ in[i]=input[i];
+ for (i=0;i<FRAME_SIZE;i++)
+ bak2[i]=bak[i];
+ fwrite(in, sizeof(short), FRAME_SIZE, fout);
+ }
+
+ encoder_destroy(&st);
+ decoder_destroy(&dec);
+ return 1;
+}