ref: ea405cc6844ef4bc025525223c9ab3c589fc2882
parent: a7b2420300ef93fcc87c8b881b1f8985566d41ad
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Mon Feb 21 17:52:39 EST 2022
Add delay-compensation for non-causal PLC
--- a/dnn/lpcnet_demo.c
+++ b/dnn/lpcnet_demo.c
@@ -164,6 +164,8 @@
short pcm[FRAME_SIZE];
int count=0;
int loss=0;
+ int skip=0, extra=0;
+ if ((plc_flags&0x3) == LPCNET_PLC_NONCAUSAL) skip=extra=80;
LPCNetPLCState *net;
net = lpcnet_plc_create(plc_flags);
while (1) {
@@ -176,12 +178,14 @@
}
if (loss) lpcnet_plc_conceal(net, pcm);
else lpcnet_plc_update(net, pcm);
- //if (count)
- fwrite(pcm, sizeof(pcm[0]), FRAME_SIZE, fout);
+ fwrite(&pcm[skip], sizeof(pcm[0]), FRAME_SIZE-skip, fout);
+ skip = 0;
count++;
}
- //lpcnet_plc_conceal(net, pcm);
- //fwrite(pcm, sizeof(pcm[0]), FRAME_SIZE, fout);
+ if (extra) {
+ lpcnet_plc_conceal(net, pcm);
+ fwrite(pcm, sizeof(pcm[0]), extra, fout);
+ }
lpcnet_plc_destroy(net);
} else {
fprintf(stderr, "unknown action\n");
--
⑨