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)
--
⑨