Some cleaning up, a few less warnings and the decoder no longer does an
infinitete loop in Laplace decoding when the data is corrupted.
This commit is contained in:
parent
06ee7f9083
commit
11f01729e6
6 changed files with 12 additions and 12 deletions
|
@ -6,7 +6,7 @@ AM_CONFIG_HEADER([config.h])
|
||||||
|
|
||||||
CELT_MAJOR_VERSION=0
|
CELT_MAJOR_VERSION=0
|
||||||
CELT_MINOR_VERSION=0
|
CELT_MINOR_VERSION=0
|
||||||
CELT_MICRO_VERSION=0
|
CELT_MICRO_VERSION=1
|
||||||
CELT_EXTRA_VERSION=
|
CELT_EXTRA_VERSION=
|
||||||
CELT_VERSION=$CELT_MAJOR_VERSION.$CELT_MINOR_VERSION.$CELT_MICRO_VERSION$CELT_EXTRA_VERSION
|
CELT_VERSION=$CELT_MAJOR_VERSION.$CELT_MINOR_VERSION.$CELT_MICRO_VERSION$CELT_EXTRA_VERSION
|
||||||
|
|
||||||
|
|
|
@ -155,7 +155,7 @@ void quant_bands(const CELTMode *m, float *X, float *P, ec_enc *enc)
|
||||||
|
|
||||||
for (i=0;i<m->nbEBands;i++)
|
for (i=0;i<m->nbEBands;i++)
|
||||||
{
|
{
|
||||||
int q, id;
|
int q;
|
||||||
q = m->nbPulses[i];
|
q = m->nbPulses[i];
|
||||||
if (q>0) {
|
if (q>0) {
|
||||||
float n = sqrt(B*(eBands[i+1]-eBands[i]));
|
float n = sqrt(B*(eBands[i+1]-eBands[i]));
|
||||||
|
@ -185,7 +185,7 @@ void unquant_bands(const CELTMode *m, float *X, float *P, ec_dec *dec)
|
||||||
|
|
||||||
for (i=0;i<m->nbEBands;i++)
|
for (i=0;i<m->nbEBands;i++)
|
||||||
{
|
{
|
||||||
int q, id;
|
int q;
|
||||||
q = m->nbPulses[i];
|
q = m->nbPulses[i];
|
||||||
if (q>0) {
|
if (q>0) {
|
||||||
float n = sqrt(B*(eBands[i+1]-eBands[i]));
|
float n = sqrt(B*(eBands[i+1]-eBands[i]));
|
||||||
|
|
|
@ -390,16 +390,13 @@ void celt_decoder_destroy(CELTDecoder *st)
|
||||||
celt_free(st);
|
celt_free(st);
|
||||||
}
|
}
|
||||||
|
|
||||||
int celt_decode_lost(CELTDecoder *st, short *pcm)
|
static void celt_decode_lost(CELTDecoder *st, short *pcm)
|
||||||
{
|
{
|
||||||
int i, N, B;
|
int i, N, B;
|
||||||
N = st->block_size;
|
N = st->block_size;
|
||||||
B = st->nb_blocks;
|
B = st->nb_blocks;
|
||||||
|
|
||||||
float X[B*N]; /**< Interleaved signal MDCTs */
|
float X[B*N]; /**< Interleaved signal MDCTs */
|
||||||
float P[B*N]; /**< Interleaved pitch MDCTs*/
|
|
||||||
float bandE[st->mode->nbEBands];
|
|
||||||
float gains[st->mode->nbPBands];
|
|
||||||
int pitch_index;
|
int pitch_index;
|
||||||
|
|
||||||
pitch_index = st->last_pitch_index;
|
pitch_index = st->last_pitch_index;
|
||||||
|
@ -448,7 +445,7 @@ int celt_decode(CELTDecoder *st, char *data, int len, short *pcm)
|
||||||
ec_dec_init(&dec,&buf);
|
ec_dec_init(&dec,&buf);
|
||||||
|
|
||||||
/* Get the pitch index */
|
/* Get the pitch index */
|
||||||
pitch_index = ec_dec_uint(&dec, MAX_PERIOD-(B+1)*N);;
|
pitch_index = ec_dec_uint(&dec, MAX_PERIOD-(B+1)*N);
|
||||||
st->last_pitch_index = pitch_index;
|
st->last_pitch_index = pitch_index;
|
||||||
|
|
||||||
/* Get band energies */
|
/* Get band energies */
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
|
|
||||||
#include "celt.h"
|
#include "celt.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#define FRAME_SIZE 256
|
#define FRAME_SIZE 256
|
||||||
#define NBLOCKS 2
|
#define NBLOCKS 2
|
||||||
|
|
|
@ -303,7 +303,7 @@ void alg_unquant(float *x, int N, int K, float *p, ec_dec *dec)
|
||||||
|
|
||||||
void copy_unquant(float *x, int N, int K, float *Y, int B, int N0, ec_dec *dec)
|
void copy_unquant(float *x, int N, int K, float *Y, int B, int N0, ec_dec *dec)
|
||||||
{
|
{
|
||||||
int i,j;
|
int j;
|
||||||
int sign;
|
int sign;
|
||||||
float s;
|
float s;
|
||||||
int best;
|
int best;
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
|
|
||||||
#include "entenc.h"
|
#include "entenc.h"
|
||||||
#include "entdec.h"
|
#include "entdec.h"
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
static int ec_laplace_get_total(int decay)
|
static int ec_laplace_get_total(int decay)
|
||||||
{
|
{
|
||||||
|
@ -83,7 +82,7 @@ int ec_laplace_decode(ec_dec *dec, int decay)
|
||||||
fl = 0;
|
fl = 0;
|
||||||
fs = 1<<15;
|
fs = 1<<15;
|
||||||
fh = fs;
|
fh = fs;
|
||||||
while (fm >= fh)
|
while (fm >= fh && fs != 0)
|
||||||
{
|
{
|
||||||
fl = fh;
|
fl = fh;
|
||||||
fs = (fs*decay)>>14;
|
fs = (fs*decay)>>14;
|
||||||
|
@ -100,12 +99,15 @@ int ec_laplace_decode(ec_dec *dec, int decay)
|
||||||
fh -= fs;
|
fh -= fs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//printf ("fl/fh: %d/%d\n", fl, fh);
|
/* Preventing an infinite loop in case something screws up in the decoding */
|
||||||
|
if (fl==fh)
|
||||||
|
fl--;
|
||||||
ec_dec_update(dec, fl, fh, ft);
|
ec_dec_update(dec, fl, fh, ft);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
#include <stdio.h>
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int val;
|
int val;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue