summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rbcodec/codecs/libopus/celt/celt.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/lib/rbcodec/codecs/libopus/celt/celt.c b/lib/rbcodec/codecs/libopus/celt/celt.c
index a4afb247b1..d91b8689b5 100644
--- a/lib/rbcodec/codecs/libopus/celt/celt.c
+++ b/lib/rbcodec/codecs/libopus/celt/celt.c
@@ -458,10 +458,10 @@ static void compute_inv_mdcts(const CELTMode *mode, int shortBlocks, celt_sig *X
458 RESTORE_STACK; 458 RESTORE_STACK;
459} 459}
460 460
461static void deemphasis(celt_sig *in[], opus_val16 *pcm, int N, int C, int downsample, const opus_val16 *coef, celt_sig *mem) 461static void deemphasis(celt_sig *in[], opus_val16 *pcm, int N, int C, /* int downsample,*/ const opus_val16 *coef, celt_sig *mem)
462{ 462{
463 int c; 463 int c;
464 int count=0; 464/* int count=0;*/
465 c=0; do { 465 c=0; do {
466 int j; 466 int j;
467 celt_sig * OPUS_RESTRICT x; 467 celt_sig * OPUS_RESTRICT x;
@@ -472,18 +472,21 @@ static void deemphasis(celt_sig *in[], opus_val16 *pcm, int N, int C, int downsa
472 for (j=0;j<N;j++) 472 for (j=0;j<N;j++)
473 { 473 {
474 celt_sig tmp = *x + m; 474 celt_sig tmp = *x + m;
475 m = MULT16_32_Q15(coef[0], tmp) 475 m = MULT16_32_Q15(coef[0], tmp);
476 - MULT16_32_Q15(coef[1], *x); 476#ifdef CUSTOM_MODES
477 m -= MULT16_32_Q15(coef[1], *x);
477 tmp = SHL32(MULT16_32_Q15(coef[3], tmp), 2); 478 tmp = SHL32(MULT16_32_Q15(coef[3], tmp), 2);
479#endif
478 x++; 480 x++;
479 /* Technically the store could be moved outside of the if because 481 /* Technically the store could be moved outside of the if because
480 the stores we don't want will just be overwritten */ 482 the stores we don't want will just be overwritten */
481 if (count==0) 483 /* ROCKBOX: we don't downsample
484 if (count==0) */
482 *y = SCALEOUT(SIG2WORD16(tmp)); 485 *y = SCALEOUT(SIG2WORD16(tmp));
483 if (++count==downsample) 486 /* if (++count==downsample) */
484 { 487 {
485 y+=C; 488 y+=C;
486 count=0; 489 /* count=0; */
487 } 490 }
488 } 491 }
489 mem[c] = m; 492 mem[c] = m;
@@ -2286,7 +2289,7 @@ static void celt_decode_lost(CELTDecoder * OPUS_RESTRICT st, opus_val16 * OPUS_R
2286 } while (++c<C); 2289 } while (++c<C);
2287 } 2290 }
2288 2291
2289 deemphasis(out_syn, pcm, N, C, st->downsample, st->mode->preemph, st->preemph_memD); 2292 deemphasis(out_syn, pcm, N, C, /*st->downsample,*/ st->mode->preemph, st->preemph_memD);
2290 2293
2291 st->loss_count++; 2294 st->loss_count++;
2292 2295
@@ -2661,7 +2664,7 @@ int celt_decode_with_ec(CELTDecoder * OPUS_RESTRICT st, const unsigned char *dat
2661 } while (++c<2); 2664 } while (++c<2);
2662 st->rng = dec->rng; 2665 st->rng = dec->rng;
2663 2666
2664 deemphasis(out_syn, pcm, N, CC, st->downsample, st->mode->preemph, st->preemph_memD); 2667 deemphasis(out_syn, pcm, N, CC, /*st->downsample,*/ st->mode->preemph, st->preemph_memD);
2665 st->loss_count = 0; 2668 st->loss_count = 0;
2666 RESTORE_STACK; 2669 RESTORE_STACK;
2667 if (ec_tell(dec) > 8*len) 2670 if (ec_tell(dec) > 8*len)