ref: 7d4aeb756f2bf6d8b6119f66acc7954b8651258c
parent: d7e1bd507f2f1bdec0487133036f135801abcb71
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Mon May 8 22:45:19 EDT 2023
Fix DRED PVQ for case when K=0 on a split
--- a/silk/dred_coding.c
+++ b/silk/dred_coding.c
@@ -36,6 +36,7 @@
#include "celt/vq.h"
#include "celt/cwrs.h"
#include "celt/laplace.h"
+#include "os_support.h"
#define LATENT_DIM 80
#define PVQ_DIM 24
@@ -46,7 +47,10 @@
celt_assert(N==24 || N==12 || N==6);
fits = (N==24 && K<=9) || (N==12 && K<=16) || (N==6);
/*printf("encode(%d,%d), fits=%d\n", N, K, fits);*/
- if (fits) encode_pulses(iy, N, K, enc);
+ if (fits) {
+ if (K > 0)
+ encode_pulses(iy, N, K, enc);
+ }
else {
int N2 = N/2;
int K0=0;
@@ -90,7 +94,12 @@
celt_assert(N==24 || N==12 || N==6);
fits = (N==24 && K<=9) || (N==12 && K<=16) || (N==6);
/*printf("encode(%d,%d), fits=%d\n", N, K, fits);*/
- if (fits) decode_pulses(iy, N, K, dec);
+ if (fits) {
+ if (K > 0)
+ decode_pulses(iy, N, K, dec);
+ else
+ OPUS_CLEAR(iy, N);
+ }
else {
int N2 = N/2;
int K0;
--
⑨