|
|
@ -92,7 +92,7 @@ static const int16_t nelly_delta_table[32] = { |
|
|
|
typedef struct NellyMoserDecodeContext { |
|
|
|
typedef struct NellyMoserDecodeContext { |
|
|
|
AVCodecContext* avctx; |
|
|
|
AVCodecContext* avctx; |
|
|
|
DECLARE_ALIGNED_16(float,float_buf[NELLY_SAMPLES]); |
|
|
|
DECLARE_ALIGNED_16(float,float_buf[NELLY_SAMPLES]); |
|
|
|
float state[64]; |
|
|
|
float state[128]; |
|
|
|
AVRandomState random_state; |
|
|
|
AVRandomState random_state; |
|
|
|
GetBitContext gb; |
|
|
|
GetBitContext gb; |
|
|
|
int add_bias; |
|
|
|
int add_bias; |
|
|
@ -121,12 +121,12 @@ static void overlap_and_window(NellyMoserDecodeContext *s, float *state, float * |
|
|
|
|
|
|
|
|
|
|
|
while (bot < NELLY_BUF_LEN/2) { |
|
|
|
while (bot < NELLY_BUF_LEN/2) { |
|
|
|
audio[bot] = ( a_in[bot]*sine_window[bot]+state[bot]*sine_window[top])/s->scale_bias + s->add_bias; |
|
|
|
audio[bot] = ( a_in[bot]*sine_window[bot]+state[bot]*sine_window[top])/s->scale_bias + s->add_bias; |
|
|
|
audio[top] = ( a_in[top]*sine_window[top]+state[bot]*sine_window[bot])/s->scale_bias + s->add_bias; |
|
|
|
audio[top] = ( a_in[top]*sine_window[top]+state[top]*sine_window[bot])/s->scale_bias + s->add_bias; |
|
|
|
state[bot] = a_in[bot + NELLY_BUF_LEN]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bot++; |
|
|
|
bot++; |
|
|
|
top--; |
|
|
|
top--; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
memcpy(state, a_in + NELLY_BUF_LEN, sizeof(float)*NELLY_BUF_LEN); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static int sum_bits(short *buf, short shift, short off) |
|
|
|
static int sum_bits(short *buf, short shift, short off) |
|
|
|