Commit 860dbe02 authored by Rostislav Pehlivanov's avatar Rostislav Pehlivanov

aaccoder_mips: update function definitions

This commit updates the function definitions in the aaccoder_mips.c
file. This was broken around a month or so ago with the addition
of the rounding argument.
The previous commit in this series also introduced a separate array
to put the quantization error in, this also needed to be updated,
albeit non-functional, in the MIPS optimized aaccoder file.

Credits for the rounding goes to Claudio Freire.
Signed-off-by: 's avatarRostislav Pehlivanov <atomnuker@gmail.com>
parent 43b378a0
...@@ -144,6 +144,9 @@ static const uint8_t esc_sign_bits[289] = { ...@@ -144,6 +144,9 @@ static const uint8_t esc_sign_bits[289] = {
1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
}; };
#define ROUND_STANDARD 0.4054f
#define ROUND_TO_ZERO 0.1054f
static void abs_pow34_v(float *out, const float *in, const int size) { static void abs_pow34_v(float *out, const float *in, const int size) {
#ifndef USE_REALLY_FULL_SEARCH #ifndef USE_REALLY_FULL_SEARCH
int i; int i;
...@@ -204,10 +207,10 @@ static int find_min_book(float maxval, int sf) { ...@@ -204,10 +207,10 @@ static int find_min_book(float maxval, int sf) {
* Functions developed from template function and optimized for quantizing and encoding band * Functions developed from template function and optimized for quantizing and encoding band
*/ */
static void quantize_and_encode_band_cost_SQUAD_mips(struct AACEncContext *s, static void quantize_and_encode_band_cost_SQUAD_mips(struct AACEncContext *s,
PutBitContext *pb, const float *in, PutBitContext *pb, const float *in, float *out,
const float *scaled, int size, int scale_idx, const float *scaled, int size, int scale_idx,
int cb, const float lambda, const float uplim, int cb, const float lambda, const float uplim,
int *bits) int *bits, const float ROUNDING)
{ {
const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512]; const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512];
int i; int i;
...@@ -223,10 +226,10 @@ static void quantize_and_encode_band_cost_SQUAD_mips(struct AACEncContext *s, ...@@ -223,10 +226,10 @@ static void quantize_and_encode_band_cost_SQUAD_mips(struct AACEncContext *s,
int *in_int = (int *)&in[i]; int *in_int = (int *)&in[i];
int t0, t1, t2, t3, t4, t5, t6, t7; int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -277,10 +280,10 @@ static void quantize_and_encode_band_cost_SQUAD_mips(struct AACEncContext *s, ...@@ -277,10 +280,10 @@ static void quantize_and_encode_band_cost_SQUAD_mips(struct AACEncContext *s,
} }
static void quantize_and_encode_band_cost_UQUAD_mips(struct AACEncContext *s, static void quantize_and_encode_band_cost_UQUAD_mips(struct AACEncContext *s,
PutBitContext *pb, const float *in, PutBitContext *pb, const float *in, float *out,
const float *scaled, int size, int scale_idx, const float *scaled, int size, int scale_idx,
int cb, const float lambda, const float uplim, int cb, const float lambda, const float uplim,
int *bits) int *bits, const float ROUNDING)
{ {
const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512]; const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512];
int i; int i;
...@@ -298,10 +301,10 @@ static void quantize_and_encode_band_cost_UQUAD_mips(struct AACEncContext *s, ...@@ -298,10 +301,10 @@ static void quantize_and_encode_band_cost_UQUAD_mips(struct AACEncContext *s,
unsigned int v_codes; unsigned int v_codes;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -369,10 +372,10 @@ static void quantize_and_encode_band_cost_UQUAD_mips(struct AACEncContext *s, ...@@ -369,10 +372,10 @@ static void quantize_and_encode_band_cost_UQUAD_mips(struct AACEncContext *s,
} }
static void quantize_and_encode_band_cost_SPAIR_mips(struct AACEncContext *s, static void quantize_and_encode_band_cost_SPAIR_mips(struct AACEncContext *s,
PutBitContext *pb, const float *in, PutBitContext *pb, const float *in, float *out,
const float *scaled, int size, int scale_idx, const float *scaled, int size, int scale_idx,
int cb, const float lambda, const float uplim, int cb, const float lambda, const float uplim,
int *bits) int *bits, const float ROUNDING)
{ {
const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512]; const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512];
int i; int i;
...@@ -390,10 +393,10 @@ static void quantize_and_encode_band_cost_SPAIR_mips(struct AACEncContext *s, ...@@ -390,10 +393,10 @@ static void quantize_and_encode_band_cost_SPAIR_mips(struct AACEncContext *s,
unsigned int v_codes; unsigned int v_codes;
int t0, t1, t2, t3, t4, t5, t6, t7; int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -448,10 +451,10 @@ static void quantize_and_encode_band_cost_SPAIR_mips(struct AACEncContext *s, ...@@ -448,10 +451,10 @@ static void quantize_and_encode_band_cost_SPAIR_mips(struct AACEncContext *s,
} }
static void quantize_and_encode_band_cost_UPAIR7_mips(struct AACEncContext *s, static void quantize_and_encode_band_cost_UPAIR7_mips(struct AACEncContext *s,
PutBitContext *pb, const float *in, PutBitContext *pb, const float *in, float *out,
const float *scaled, int size, int scale_idx, const float *scaled, int size, int scale_idx,
int cb, const float lambda, const float uplim, int cb, const float lambda, const float uplim,
int *bits) int *bits, const float ROUNDING)
{ {
const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512]; const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512];
int i; int i;
...@@ -469,10 +472,10 @@ static void quantize_and_encode_band_cost_UPAIR7_mips(struct AACEncContext *s, ...@@ -469,10 +472,10 @@ static void quantize_and_encode_band_cost_UPAIR7_mips(struct AACEncContext *s,
unsigned int v_codes; unsigned int v_codes;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -542,10 +545,10 @@ static void quantize_and_encode_band_cost_UPAIR7_mips(struct AACEncContext *s, ...@@ -542,10 +545,10 @@ static void quantize_and_encode_band_cost_UPAIR7_mips(struct AACEncContext *s,
} }
static void quantize_and_encode_band_cost_UPAIR12_mips(struct AACEncContext *s, static void quantize_and_encode_band_cost_UPAIR12_mips(struct AACEncContext *s,
PutBitContext *pb, const float *in, PutBitContext *pb, const float *in, float *out,
const float *scaled, int size, int scale_idx, const float *scaled, int size, int scale_idx,
int cb, const float lambda, const float uplim, int cb, const float lambda, const float uplim,
int *bits) int *bits, const float ROUNDING)
{ {
const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512]; const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512];
int i; int i;
...@@ -563,10 +566,10 @@ static void quantize_and_encode_band_cost_UPAIR12_mips(struct AACEncContext *s, ...@@ -563,10 +566,10 @@ static void quantize_and_encode_band_cost_UPAIR12_mips(struct AACEncContext *s,
unsigned int v_codes; unsigned int v_codes;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -635,10 +638,10 @@ static void quantize_and_encode_band_cost_UPAIR12_mips(struct AACEncContext *s, ...@@ -635,10 +638,10 @@ static void quantize_and_encode_band_cost_UPAIR12_mips(struct AACEncContext *s,
} }
static void quantize_and_encode_band_cost_ESC_mips(struct AACEncContext *s, static void quantize_and_encode_band_cost_ESC_mips(struct AACEncContext *s,
PutBitContext *pb, const float *in, PutBitContext *pb, const float *in, float *out,
const float *scaled, int size, int scale_idx, const float *scaled, int size, int scale_idx,
int cb, const float lambda, const float uplim, int cb, const float lambda, const float uplim,
int *bits) int *bits, const float ROUNDING)
{ {
const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512]; const float Q34 = ff_aac_pow34sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512];
int i; int i;
...@@ -659,10 +662,10 @@ static void quantize_and_encode_band_cost_ESC_mips(struct AACEncContext *s, ...@@ -659,10 +662,10 @@ static void quantize_and_encode_band_cost_ESC_mips(struct AACEncContext *s,
unsigned int v_codes; unsigned int v_codes;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUNDING;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUNDING;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUNDING;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUNDING;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -736,10 +739,10 @@ static void quantize_and_encode_band_cost_ESC_mips(struct AACEncContext *s, ...@@ -736,10 +739,10 @@ static void quantize_and_encode_band_cost_ESC_mips(struct AACEncContext *s,
int c1, c2, c3, c4; int c1, c2, c3, c4;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUNDING;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUNDING;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUNDING;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUNDING;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -841,10 +844,10 @@ static void quantize_and_encode_band_cost_ESC_mips(struct AACEncContext *s, ...@@ -841,10 +844,10 @@ static void quantize_and_encode_band_cost_ESC_mips(struct AACEncContext *s,
} }
static void (*const quantize_and_encode_band_cost_arr[])(struct AACEncContext *s, static void (*const quantize_and_encode_band_cost_arr[])(struct AACEncContext *s,
PutBitContext *pb, const float *in, PutBitContext *pb, const float *in, float *out,
const float *scaled, int size, int scale_idx, const float *scaled, int size, int scale_idx,
int cb, const float lambda, const float uplim, int cb, const float lambda, const float uplim,
int *bits) = { int *bits, const float ROUNDING) = {
NULL, NULL,
quantize_and_encode_band_cost_SQUAD_mips, quantize_and_encode_band_cost_SQUAD_mips,
quantize_and_encode_band_cost_SQUAD_mips, quantize_and_encode_band_cost_SQUAD_mips,
...@@ -859,19 +862,19 @@ static void (*const quantize_and_encode_band_cost_arr[])(struct AACEncContext *s ...@@ -859,19 +862,19 @@ static void (*const quantize_and_encode_band_cost_arr[])(struct AACEncContext *s
quantize_and_encode_band_cost_ESC_mips, quantize_and_encode_band_cost_ESC_mips,
}; };
#define quantize_and_encode_band_cost( \ #define quantize_and_encode_band_cost( \
s, pb, in, scaled, size, scale_idx, cb, \ s, pb, in, out, scaled, size, scale_idx, cb, \
lambda, uplim, bits) \ lambda, uplim, bits, ROUNDING) \
quantize_and_encode_band_cost_arr[cb]( \ quantize_and_encode_band_cost_arr[cb]( \
s, pb, in, scaled, size, scale_idx, cb, \ s, pb, in, out, scaled, size, scale_idx, cb, \
lambda, uplim, bits) lambda, uplim, bits, ROUNDING)
static void quantize_and_encode_band_mips(struct AACEncContext *s, PutBitContext *pb, static void quantize_and_encode_band_mips(struct AACEncContext *s, PutBitContext *pb,
const float *in, int size, int scale_idx, const float *in, float *out, int size, int scale_idx,
int cb, const float lambda) int cb, const float lambda, int rtz)
{ {
quantize_and_encode_band_cost(s, pb, in, NULL, size, scale_idx, cb, lambda, quantize_and_encode_band_cost(s, pb, in, out, NULL, size, scale_idx, cb, lambda,
INFINITY, NULL); INFINITY, NULL, (rtz) ? ROUND_TO_ZERO : ROUND_STANDARD);
} }
/** /**
...@@ -904,10 +907,10 @@ static float get_band_numbits_SQUAD_mips(struct AACEncContext *s, ...@@ -904,10 +907,10 @@ static float get_band_numbits_SQUAD_mips(struct AACEncContext *s,
int *in_int = (int *)&in[i]; int *in_int = (int *)&in[i];
int t0, t1, t2, t3, t4, t5, t6, t7; int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -975,10 +978,10 @@ static float get_band_numbits_UQUAD_mips(struct AACEncContext *s, ...@@ -975,10 +978,10 @@ static float get_band_numbits_UQUAD_mips(struct AACEncContext *s,
int curidx; int curidx;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1034,10 +1037,10 @@ static float get_band_numbits_SPAIR_mips(struct AACEncContext *s, ...@@ -1034,10 +1037,10 @@ static float get_band_numbits_SPAIR_mips(struct AACEncContext *s,
int *in_int = (int *)&in[i]; int *in_int = (int *)&in[i];
int t0, t1, t2, t3, t4, t5, t6, t7; int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1107,10 +1110,10 @@ static float get_band_numbits_UPAIR7_mips(struct AACEncContext *s, ...@@ -1107,10 +1110,10 @@ static float get_band_numbits_UPAIR7_mips(struct AACEncContext *s,
int curidx, curidx2; int curidx, curidx2;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1165,10 +1168,10 @@ static float get_band_numbits_UPAIR12_mips(struct AACEncContext *s, ...@@ -1165,10 +1168,10 @@ static float get_band_numbits_UPAIR12_mips(struct AACEncContext *s,
int curidx, curidx2; int curidx, curidx2;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1225,10 +1228,10 @@ static float get_band_numbits_ESC_mips(struct AACEncContext *s, ...@@ -1225,10 +1228,10 @@ static float get_band_numbits_ESC_mips(struct AACEncContext *s,
int c1, c2, c3, c4; int c1, c2, c3, c4;
int t4, t5; int t4, t5;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1390,10 +1393,10 @@ static float get_band_cost_SQUAD_mips(struct AACEncContext *s, ...@@ -1390,10 +1393,10 @@ static float get_band_cost_SQUAD_mips(struct AACEncContext *s,
float di0, di1, di2, di3; float di0, di1, di2, di3;
int t0, t1, t2, t3, t4, t5, t6, t7; int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1502,10 +1505,10 @@ static float get_band_cost_UQUAD_mips(struct AACEncContext *s, ...@@ -1502,10 +1505,10 @@ static float get_band_cost_UQUAD_mips(struct AACEncContext *s,
float di0, di1, di2, di3; float di0, di1, di2, di3;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1605,10 +1608,10 @@ static float get_band_cost_SPAIR_mips(struct AACEncContext *s, ...@@ -1605,10 +1608,10 @@ static float get_band_cost_SPAIR_mips(struct AACEncContext *s,
float di0, di1, di2, di3; float di0, di1, di2, di3;
int t0, t1, t2, t3, t4, t5, t6, t7; int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1723,10 +1726,10 @@ static float get_band_cost_UPAIR7_mips(struct AACEncContext *s, ...@@ -1723,10 +1726,10 @@ static float get_band_cost_UPAIR7_mips(struct AACEncContext *s,
float di0, di1, di2, di3; float di0, di1, di2, di3;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1857,10 +1860,10 @@ static float get_band_cost_UPAIR12_mips(struct AACEncContext *s, ...@@ -1857,10 +1860,10 @@ static float get_band_cost_UPAIR12_mips(struct AACEncContext *s,
float di0, di1, di2, di3; float di0, di1, di2, di3;
int t0, t1, t2, t3, t4; int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -1991,10 +1994,10 @@ static float get_band_cost_ESC_mips(struct AACEncContext *s, ...@@ -1991,10 +1994,10 @@ static float get_band_cost_ESC_mips(struct AACEncContext *s,
int c1, c2, c3, c4; int c1, c2, c3, c4;
int t6, t7; int t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f; qc1 = scaled[i ] * Q34 + ROUND_STANDARD;
qc2 = scaled[i+1] * Q34 + 0.4054f; qc2 = scaled[i+1] * Q34 + ROUND_STANDARD;
qc3 = scaled[i+2] * Q34 + 0.4054f; qc3 = scaled[i+2] * Q34 + ROUND_STANDARD;
qc4 = scaled[i+3] * Q34 + 0.4054f; qc4 = scaled[i+3] * Q34 + ROUND_STANDARD;
__asm__ volatile ( __asm__ volatile (
".set push \n\t" ".set push \n\t"
...@@ -2309,8 +2312,7 @@ static void search_for_quantizers_twoloop_mips(AVCodecContext *avctx, ...@@ -2309,8 +2312,7 @@ static void search_for_quantizers_twoloop_mips(AVCodecContext *avctx,
} while (fflag && its < 10); } while (fflag && its < 10);
} }
static void search_for_ms_mips(AACEncContext *s, ChannelElement *cpe, static void search_for_ms_mips(AACEncContext *s, ChannelElement *cpe)
const float lambda)
{ {
int start = 0, i, w, w2, g; int start = 0, i, w, w2, g;
float M[128], S[128]; float M[128], S[128];
...@@ -2356,25 +2358,25 @@ static void search_for_ms_mips(AACEncContext *s, ChannelElement *cpe, ...@@ -2356,25 +2358,25 @@ static void search_for_ms_mips(AACEncContext *s, ChannelElement *cpe,
sce0->ics.swb_sizes[g], sce0->ics.swb_sizes[g],
sce0->sf_idx[(w+w2)*16+g], sce0->sf_idx[(w+w2)*16+g],
sce0->band_type[(w+w2)*16+g], sce0->band_type[(w+w2)*16+g],
lambda / band0->threshold, INFINITY, NULL); s->lambda / band0->threshold, INFINITY, NULL);
dist1 += quantize_band_cost(s, sce1->coeffs + start + w2*128, dist1 += quantize_band_cost(s, sce1->coeffs + start + w2*128,
R34, R34,
sce1->ics.swb_sizes[g], sce1->ics.swb_sizes[g],
sce1->sf_idx[(w+w2)*16+g], sce1->sf_idx[(w+w2)*16+g],
sce1->band_type[(w+w2)*16+g], sce1->band_type[(w+w2)*16+g],
lambda / band1->threshold, INFINITY, NULL); s->lambda / band1->threshold, INFINITY, NULL);
dist2 += quantize_band_cost(s, M, dist2 += quantize_band_cost(s, M,
M34, M34,
sce0->ics.swb_sizes[g], sce0->ics.swb_sizes[g],
sce0->sf_idx[(w+w2)*16+g], sce0->sf_idx[(w+w2)*16+g],
sce0->band_type[(w+w2)*16+g], sce0->band_type[(w+w2)*16+g],
lambda / maxthr, INFINITY, NULL); s->lambda / maxthr, INFINITY, NULL);
dist2 += quantize_band_cost(s, S, dist2 += quantize_band_cost(s, S,
S34, S34,
sce1->ics.swb_sizes[g], sce1->ics.swb_sizes[g],
sce1->sf_idx[(w+w2)*16+g], sce1->sf_idx[(w+w2)*16+g],
sce1->band_type[(w+w2)*16+g], sce1->band_type[(w+w2)*16+g],
lambda / minthr, INFINITY, NULL); s->lambda / minthr, INFINITY, NULL);
} }
cpe->ms_mask[w*16+g] = dist2 < dist1; cpe->ms_mask[w*16+g] = dist2 < dist1;
} }
......
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