summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorRostislav Pehlivanov <atomnuker@gmail.com>2017-07-18 20:47:30 +0100
committerRostislav Pehlivanov <atomnuker@gmail.com>2017-07-18 20:52:06 +0100
commit79450adfc80bb5d5d94deb1e1dd573b6cebfbe99 (patch)
tree272e4641323652a5750e2b36e03d25dc47c38b39 /libavcodec
parent9b937958907daaddade139c36ce33c6eac269631 (diff)
opus: simplify coarse energy beta coefficients
Just put the subtraction in the table. Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/opus_celt.c26
-rw-r--r--libavcodec/opusenc.c4
-rw-r--r--libavcodec/opustab.c4
3 files changed, 15 insertions, 19 deletions
diff --git a/libavcodec/opus_celt.c b/libavcodec/opus_celt.c
index 0177b123b1..84d484753b 100644
--- a/libavcodec/opus_celt.c
+++ b/libavcodec/opus_celt.c
@@ -29,25 +29,21 @@
#include "opustab.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)
{
int i, j;
- float prev[2] = {0};
- float alpha, beta;
- const uint8_t *model;
-
- /* use the 2D z-transform to apply prediction in both */
- /* the time domain (alpha) and the frequency domain (beta) */
-
- if (opus_rc_tell(rc)+3 <= f->framebits && ff_opus_rc_dec_log(rc, 3)) {
- /* intra frame */
- alpha = 0;
- beta = 1.0f - 4915.0f/32768.0f;
+ float prev[2] = { 0 };
+ float alpha = ff_celt_alpha_coef[f->size];
+ float beta = ff_celt_beta_coef[f->size];
+ const uint8_t *model = ff_celt_coarse_energy_dist[f->size][0];
+
+ /* intra frame */
+ if (opus_rc_tell(rc) + 3 <= f->framebits && ff_opus_rc_dec_log(rc, 3)) {
+ alpha = 0.0f;
+ beta = 1.0f - (4915.0f/32768.0f);
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++) {
diff --git a/libavcodec/opusenc.c b/libavcodec/opusenc.c
index c54df8c060..8f2da4a7ba 100644
--- a/libavcodec/opusenc.c
+++ b/libavcodec/opusenc.c
@@ -644,10 +644,10 @@ static void exp_quant_coarse(OpusRangeCoder *rc, CeltFrame *f,
if (intra) {
alpha = 0.0f;
- beta = 1.0f - 4915.0f/32768.0f;
+ beta = 1.0f - (4915.0f/32768.0f);
} else {
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++) {
diff --git a/libavcodec/opustab.c b/libavcodec/opustab.c
index b31705297e..fb340e07e8 100644
--- a/libavcodec/opustab.c
+++ b/libavcodec/opustab.c
@@ -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
};
-const float ff_celt_beta_coef[] = { /* TODO: precompute 1 minus this if the code ends up neater */
- 30147.0f/32768.0f, 22282.0f/32768.0f, 12124.0f/32768.0f, 6554.0f/32768.0f
+const float ff_celt_beta_coef[] = {
+ 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] = {