Commit 79450adf authored by Rostislav Pehlivanov's avatar Rostislav Pehlivanov

opus: simplify coarse energy beta coefficients

Just put the subtraction in the table.
Signed-off-by: 's avatarRostislav Pehlivanov <atomnuker@gmail.com>
parent 9b937958
...@@ -29,25 +29,21 @@ ...@@ -29,25 +29,21 @@
#include "opustab.h" #include "opustab.h"
#include "opus_pvq.h" #include "opus_pvq.h"
/* Use the 2D z-transform to apply prediction in both the time domain (alpha)
* and the frequency domain (beta) */
static void celt_decode_coarse_energy(CeltFrame *f, OpusRangeCoder *rc) static void celt_decode_coarse_energy(CeltFrame *f, OpusRangeCoder *rc)
{ {
int i, j; int i, j;
float prev[2] = {0}; float prev[2] = { 0 };
float alpha, beta; float alpha = ff_celt_alpha_coef[f->size];
const uint8_t *model; float beta = ff_celt_beta_coef[f->size];
const uint8_t *model = ff_celt_coarse_energy_dist[f->size][0];
/* use the 2D z-transform to apply prediction in both */
/* the time domain (alpha) and the frequency domain (beta) */ /* intra frame */
if (opus_rc_tell(rc) + 3 <= f->framebits && ff_opus_rc_dec_log(rc, 3)) {
if (opus_rc_tell(rc)+3 <= f->framebits && ff_opus_rc_dec_log(rc, 3)) { alpha = 0.0f;
/* intra frame */ beta = 1.0f - (4915.0f/32768.0f);
alpha = 0;
beta = 1.0f - 4915.0f/32768.0f;
model = ff_celt_coarse_energy_dist[f->size][1]; model = ff_celt_coarse_energy_dist[f->size][1];
} else {
alpha = ff_celt_alpha_coef[f->size];
beta = 1.0f - ff_celt_beta_coef[f->size];
model = ff_celt_coarse_energy_dist[f->size][0];
} }
for (i = 0; i < CELT_MAX_BANDS; i++) { for (i = 0; i < CELT_MAX_BANDS; i++) {
......
...@@ -644,10 +644,10 @@ static void exp_quant_coarse(OpusRangeCoder *rc, CeltFrame *f, ...@@ -644,10 +644,10 @@ static void exp_quant_coarse(OpusRangeCoder *rc, CeltFrame *f,
if (intra) { if (intra) {
alpha = 0.0f; alpha = 0.0f;
beta = 1.0f - 4915.0f/32768.0f; beta = 1.0f - (4915.0f/32768.0f);
} else { } else {
alpha = ff_celt_alpha_coef[f->size]; alpha = ff_celt_alpha_coef[f->size];
beta = 1.0f - ff_celt_beta_coef[f->size]; beta = ff_celt_beta_coef[f->size];
} }
for (i = f->start_band; i < f->end_band; i++) { for (i = f->start_band; i < f->end_band; i++) {
......
...@@ -796,8 +796,8 @@ const float ff_celt_alpha_coef[] = { ...@@ -796,8 +796,8 @@ const float ff_celt_alpha_coef[] = {
29440.0f/32768.0f, 26112.0f/32768.0f, 21248.0f/32768.0f, 16384.0f/32768.0f 29440.0f/32768.0f, 26112.0f/32768.0f, 21248.0f/32768.0f, 16384.0f/32768.0f
}; };
const float ff_celt_beta_coef[] = { /* TODO: precompute 1 minus this if the code ends up neater */ const float ff_celt_beta_coef[] = {
30147.0f/32768.0f, 22282.0f/32768.0f, 12124.0f/32768.0f, 6554.0f/32768.0f 1.0f - (30147.0f/32768.0f), 1.0f - (22282.0f/32768.0f), 1.0f - (12124.0f/32768.0f), 1.0f - (6554.0f/32768.0f),
}; };
const uint8_t ff_celt_coarse_energy_dist[4][2][42] = { const uint8_t ff_celt_coarse_energy_dist[4][2][42] = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment