shithub: opus

Download patch

ref: 7d9affc3853b0aeb766b9e8a7275773c848fd185
parent: ca4a8d4f09e80761c02f8ee4efe8f9350de68e41
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Tue Dec 11 11:58:19 EST 2018

Moving the frame out of lpcnet.c and into test_lpcnet.c

--- a/dnn/compile.sh
+++ b/dnn/compile.sh
@@ -1,4 +1,4 @@
 #!/bin/sh
 
 gcc -Wall -W -O3 -g -I../include dump_data.c freq.c kiss_fft.c pitch.c celt_lpc.c -o dump_data -lm
-gcc -o test_lpcnet -mavx2 -mfma -g -O3 -Wall -W -Wextra lpcnet.c nnet.c nnet_data.c freq.c kiss_fft.c pitch.c celt_lpc.c -lm
+gcc -o test_lpcnet -mavx2 -mfma -g -O3 -Wall -W -Wextra test_lpcnet.c lpcnet.c nnet.c nnet_data.c freq.c kiss_fft.c pitch.c celt_lpc.c -lm
--- a/dnn/lpcnet.c
+++ b/dnn/lpcnet.c
@@ -32,8 +32,6 @@
 #include "arch.h"
 #include "lpcnet.h"
 
-#define NB_FEATURES 38
-#define NB_TOTAL_FEATURES 55
 
 #define LPC_ORDER 16
 #define PREEMPH 0.85f
@@ -193,42 +191,5 @@
 }
 
 #if 1
-#define FRAME_SIZE 160
-int main(int argc, char **argv) {
-    FILE *fin, *fout;
-    LPCNetState *net;
-    net = lpcnet_create();
-    if (argc != 3)
-    {
-        fprintf(stderr, "usage: test_lpcnet <features.f32> <output.pcm>\n");
-        return 0;
-    }
-    fin = fopen(argv[1], "rb");
-    if (fin == NULL) {
-	fprintf(stderr, "Can't open %s\n", argv[1]);
-	exit(1);
-    }
 
-    fout = fopen(argv[2], "wb");
-    if (fout == NULL) {
-	fprintf(stderr, "Can't open %s\n", argv[2]);
-	exit(1);
-    }
-
-    while (1) {
-        float in_features[NB_TOTAL_FEATURES];
-        float features[NB_FEATURES];
-        short pcm[FRAME_SIZE];
-        fread(in_features, sizeof(features[0]), NB_TOTAL_FEATURES, fin);
-        if (feof(fin)) break;
-        RNN_COPY(features, in_features, NB_FEATURES);
-        RNN_CLEAR(&features[18], 18);
-        lpcnet_synthesize(net, pcm, features, FRAME_SIZE);
-        fwrite(pcm, sizeof(pcm[0]), FRAME_SIZE, fout);
-    }
-    fclose(fin);
-    fclose(fout);
-    lpcnet_destroy(net);
-    return 0;
-}
 #endif
--- a/dnn/lpcnet.h
+++ b/dnn/lpcnet.h
@@ -27,6 +27,9 @@
 #ifndef _LPCNET_H_
 #define _LPCNET_H_
 
+#define NB_FEATURES 38
+#define NB_TOTAL_FEATURES 55
+
 typedef struct LPCNetState LPCNetState;
 
 LPCNetState *lpcnet_create();
--- /dev/null
+++ b/dnn/test_lpcnet.c
@@ -1,0 +1,70 @@
+/* Copyright (c) 2018 Mozilla */
+/*
+   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 FOUNDATION 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.
+*/
+
+#include <math.h>
+#include <stdio.h>
+#include "arch.h"
+#include "lpcnet.h"
+
+
+#define FRAME_SIZE 160
+int main(int argc, char **argv) {
+    FILE *fin, *fout;
+    LPCNetState *net;
+    net = lpcnet_create();
+    if (argc != 3)
+    {
+        fprintf(stderr, "usage: test_lpcnet <features.f32> <output.pcm>\n");
+        return 0;
+    }
+    fin = fopen(argv[1], "rb");
+    if (fin == NULL) {
+	fprintf(stderr, "Can't open %s\n", argv[1]);
+	exit(1);
+    }
+
+    fout = fopen(argv[2], "wb");
+    if (fout == NULL) {
+	fprintf(stderr, "Can't open %s\n", argv[2]);
+	exit(1);
+    }
+
+    while (1) {
+        float in_features[NB_TOTAL_FEATURES];
+        float features[NB_FEATURES];
+        short pcm[FRAME_SIZE];
+        fread(in_features, sizeof(features[0]), NB_TOTAL_FEATURES, fin);
+        if (feof(fin)) break;
+        RNN_COPY(features, in_features, NB_FEATURES);
+        RNN_CLEAR(&features[18], 18);
+        lpcnet_synthesize(net, pcm, features, FRAME_SIZE);
+        fwrite(pcm, sizeof(pcm[0]), FRAME_SIZE, fout);
+    }
+    fclose(fin);
+    fclose(fout);
+    lpcnet_destroy(net);
+    return 0;
+}
--