shithub: opus

Download patch

ref: 9297fe52eedf1bb979638b6e4c5e2285aeb2d7d1
parent: 7a7913f3881c24379de3386d83e0fd1ec4c3b5e3
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Tue Feb 8 19:51:44 EST 2022

Add -plc_file option

--- a/dnn/lpcnet_demo.c
+++ b/dnn/lpcnet_demo.c
@@ -44,7 +44,8 @@
     int mode;
     int plc_percent=0;
     FILE *fin, *fout;
-    if (argc != 4 && !(argc == 5 && strcmp(argv[1], "-plc") == 0))
+    FILE *plc_file = NULL;
+    if (argc != 4 && !(argc == 5 && (strcmp(argv[1], "-plc") == 0 || strcmp(argv[1], "-plc_file") == 0)))
     {
         fprintf(stderr, "usage: lpcnet_demo -encode <input.pcm> <compressed.lpcnet>\n");
         fprintf(stderr, "       lpcnet_demo -decode <compressed.lpcnet> <output.pcm>\n");
@@ -61,6 +62,10 @@
         mode=MODE_PLC;
         plc_percent = atoi(argv[2]);
         argv++;
+    } else if (strcmp(argv[1], "-plc_file") == 0) {
+        mode=MODE_PLC;
+        plc_file = fopen(argv[2], "r");
+        argv++;
     } else {
         exit(1);
     }
@@ -140,8 +145,10 @@
             size_t ret;
             ret = fread(pcm, sizeof(pcm[0]), FRAME_SIZE, fin);
             if (feof(fin) || ret != FRAME_SIZE) break;
-            if (count % 2 == 0) loss = rand() < RAND_MAX*(float)plc_percent/100.f;
-            //if (count % 2 == 0) scanf("%d", &loss);
+            if (count % 2 == 0) {
+              if (plc_file != NULL) fscanf(plc_file, "%d", &loss);
+              else loss = rand() < RAND_MAX*(float)plc_percent/100.f;
+            }
             if (loss) lpcnet_plc_conceal(net, pcm);
             else lpcnet_plc_update(net, pcm);
             //if (count)
--