float lsps[LPC_ORD];
float prev_lsps[LPC_ORD];
float e, prev_e;
- int lpc_correction;
float ak_interp[LPC_MAX];
void *nlp_states;
model.Wo = decode_Wo(encode_Wo(model.Wo));
aks_to_M2(ak, order, &model, e, &snr, 1);
- apply_lpc_correction(&model, lpc_correction);
+ apply_lpc_correction(&model);
sum_snr += snr;
#ifdef DUMP
dump_quantised_model(&model);
#else
interpolate_lsp(&interp_model, &prev_model, &model,
prev_lsps, prev_e, lsps, e, ak_interp);
- apply_lpc_correction(&interp_model, lpc_correction);
+ apply_lpc_correction(&interp_model);
#endif
if (phase0)
MODEL model;
int voiced1, voiced2;
int lsp_indexes[LPC_ORD];
- int lpc_correction;
int energy_index;
int Wo_index;
int i;
Wo_index = encode_Wo(model.Wo);
encode_amplitudes(lsp_indexes,
- &lpc_correction,
&energy_index,
&model,
c2->Sn,
for(i=0; i<LPC_ORD; i++) {
pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
}
- pack(bits, &nbit, lpc_correction, 1);
pack(bits, &nbit, energy_index, E_BITS);
pack(bits, &nbit, voiced1, 1);
pack(bits, &nbit, voiced2, 1);
int voiced1, voiced2;
int lsp_indexes[LPC_ORD];
float lsps[LPC_ORD];
- int lpc_correction;
int energy_index;
float energy;
int Wo_index;
for(i=0; i<LPC_ORD; i++) {
lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
}
- lpc_correction = unpack(bits, &nbit, 1);
energy_index = unpack(bits, &nbit, E_BITS);
voiced1 = unpack(bits, &nbit, 1);
voiced2 = unpack(bits, &nbit, 1);
decode_amplitudes(&model,
ak,
lsp_indexes,
- lpc_correction,
energy_index,
lsps,
&energy);
interpolate_lsp(&model_interp, &c2->prev_model, &model,
c2->prev_lsps, c2->prev_energy, lsps, energy, ak_interp);
- apply_lpc_correction(&model_interp, lpc_correction);
+ apply_lpc_correction(&model_interp);
/* synthesis two 10ms frames */
#define __CODEC2__
#define CODEC2_SAMPLES_PER_FRAME 160
-#define CODEC2_BITS_PER_FRAME 51
+#define CODEC2_BITS_PER_FRAME 50
void *codec2_create();
void codec2_destroy(void *codec2_state);
\*---------------------------------------------------------------------------*/
-void apply_lpc_correction(MODEL *model, int lpc_correction)
+void apply_lpc_correction(MODEL *model)
{
if (model->Wo < (PI*150.0/4000)) {
model->A[1] *= 0.032;
\*---------------------------------------------------------------------------*/
void encode_amplitudes(int lsp_indexes[],
- int *lpc_correction,
int *energy_index,
MODEL *model,
float Sn[],
e = speech_to_uq_lsps(lsps, ak, Sn, w, LPC_ORD);
encode_lsps(lsp_indexes, lsps, LPC_ORD);
- *lpc_correction = need_lpc_correction(model, ak, e, LPC_ORD);
*energy_index = encode_energy(e);
}
float decode_amplitudes(MODEL *model,
float ak[],
int lsp_indexes[],
- int lpc_correction,
int energy_index,
float lsps[],
float *e
lsp_to_lpc(lsps, ak, LPC_ORD);
*e = decode_energy(energy_index);
aks_to_M2(ak, LPC_ORD, model, *e, &snr, 1);
- apply_lpc_correction(model, lpc_correction);
+ apply_lpc_correction(model);
return snr;
}
float decode_energy(int index);
void encode_amplitudes(int lsp_indexes[],
- int *lpc_correction,
int *energy_index,
MODEL *model,
float Sn[],
float decode_amplitudes(MODEL *model,
float ak[],
int lsp_indexes[],
- int lpc_correction,
int energy_index,
float lsps[],
float *e);
int lsp_bits(int i);
-int need_lpc_correction(MODEL *model, float ak[], float E, int order);
-void apply_lpc_correction(MODEL *model, int lpc_correction);
+void apply_lpc_correction(MODEL *model);
float speech_to_uq_lsps(float lsp[],
float ak[],
float Sn[],
tnlp_LDADD = $(lib_LTLIBRARIES)
tnlp_LDFLAGS = $(LIBS)
-tinterp_SOURCES = tinterp.c ../src/sine.c ../src/four1.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/dump.c
+tinterp_SOURCES = tinterp.c ../src/sine.c ../src/four1.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/codebookd.c ../src/dump.c
tinterp_LDADD = $(lib_LTLIBRARIES)
tinterp_LDFLAGS = $(LIBS)
-tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c ../src/codebook.c
+tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c ../src/codebook.c ../src/codebookd.c
tquant_LDADD = $(lib_LTLIBRARIES)
tquant_LDFLAGS = $(LIBS)
tcodec2_SOURCES = tcodec2.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c \
../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
-../src/codebook.c ../src/pack.c
+../src/codebook.c ../src/codebookd.c ../src/pack.c
tcodec2_LDADD = $(lib_LTLIBRARIES)
tcodec2_LDFLAGS = $(LIBS)
lpc.$(OBJEXT) lsp.$(OBJEXT) dump.$(OBJEXT) four1.$(OBJEXT) \
codec2.$(OBJEXT) sine.$(OBJEXT) nlp.$(OBJEXT) \
postfilter.$(OBJEXT) phase.$(OBJEXT) interp.$(OBJEXT) \
- codebook.$(OBJEXT) pack.$(OBJEXT)
+ codebook.$(OBJEXT) codebookd.$(OBJEXT) pack.$(OBJEXT)
tcodec2_OBJECTS = $(am_tcodec2_OBJECTS)
tcodec2_DEPENDENCIES =
am_tinterp_OBJECTS = tinterp.$(OBJEXT) sine.$(OBJEXT) four1.$(OBJEXT) \
interp.$(OBJEXT) lpc.$(OBJEXT) lsp.$(OBJEXT) \
- quantise.$(OBJEXT) codebook.$(OBJEXT) dump.$(OBJEXT)
+ quantise.$(OBJEXT) codebook.$(OBJEXT) codebookd.$(OBJEXT) \
+ dump.$(OBJEXT)
tinterp_OBJECTS = $(am_tinterp_OBJECTS)
tinterp_DEPENDENCIES =
am_tnlp_OBJECTS = tnlp.$(OBJEXT) sine.$(OBJEXT) nlp.$(OBJEXT) \
tnlp_DEPENDENCIES =
am_tquant_OBJECTS = tquant.$(OBJEXT) quantise.$(OBJEXT) lpc.$(OBJEXT) \
lsp.$(OBJEXT) dump.$(OBJEXT) four1.$(OBJEXT) \
- codebook.$(OBJEXT)
+ codebook.$(OBJEXT) codebookd.$(OBJEXT)
tquant_OBJECTS = $(am_tquant_OBJECTS)
tquant_DEPENDENCIES =
am_vqtrain_OBJECTS = vqtrain.$(OBJEXT)
tnlp_SOURCES = tnlp.c ../src/sine.c ../src/nlp.c ../src/four1.c ../src/dump.c
tnlp_LDADD = $(lib_LTLIBRARIES)
tnlp_LDFLAGS = $(LIBS)
-tinterp_SOURCES = tinterp.c ../src/sine.c ../src/four1.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/dump.c
+tinterp_SOURCES = tinterp.c ../src/sine.c ../src/four1.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/codebookd.c ../src/dump.c
tinterp_LDADD = $(lib_LTLIBRARIES)
tinterp_LDFLAGS = $(LIBS)
-tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c ../src/codebook.c
+tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c ../src/codebook.c ../src/codebookd.c
tquant_LDADD = $(lib_LTLIBRARIES)
tquant_LDFLAGS = $(LIBS)
tcodec2_SOURCES = tcodec2.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c \
../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
-../src/codebook.c ../src/pack.c
+../src/codebook.c ../src/codebookd.c ../src/pack.c
tcodec2_LDADD = $(lib_LTLIBRARIES)
tcodec2_LDFLAGS = $(LIBS)
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebook.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codec2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract.Po@am__quote@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebook.obj `if test -f '../src/codebook.c'; then $(CYGPATH_W) '../src/codebook.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebook.c'; fi`
+codebookd.o: ../src/codebookd.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookd.o -MD -MP -MF "$(DEPDIR)/codebookd.Tpo" -c -o codebookd.o `test -f '../src/codebookd.c' || echo '$(srcdir)/'`../src/codebookd.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/codebookd.Tpo" "$(DEPDIR)/codebookd.Po"; else rm -f "$(DEPDIR)/codebookd.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../src/codebookd.c' object='codebookd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookd.o `test -f '../src/codebookd.c' || echo '$(srcdir)/'`../src/codebookd.c
+
+codebookd.obj: ../src/codebookd.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookd.obj -MD -MP -MF "$(DEPDIR)/codebookd.Tpo" -c -o codebookd.obj `if test -f '../src/codebookd.c'; then $(CYGPATH_W) '../src/codebookd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookd.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/codebookd.Tpo" "$(DEPDIR)/codebookd.Po"; else rm -f "$(DEPDIR)/codebookd.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../src/codebookd.c' object='codebookd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookd.obj `if test -f '../src/codebookd.c'; then $(CYGPATH_W) '../src/codebookd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookd.c'; fi`
+
pack.o: ../src/pack.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pack.o -MD -MP -MF "$(DEPDIR)/pack.Tpo" -c -o pack.o `test -f '../src/pack.c' || echo '$(srcdir)/'`../src/pack.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pack.Tpo" "$(DEPDIR)/pack.Po"; else rm -f "$(DEPDIR)/pack.Tpo"; exit 1; fi
float ak[LPC_ORD+1];
int voiced1, voiced2;
int lsp_indexes[LPC_ORD];
- int lpc_correction;
int energy_index;
int Wo_index;
char bits[CODEC2_BITS_PER_FRAME];
int nbit;
int i;
-
+ float lsps[LPC_ORD];
+ float e;
+
c2 = codec2_create();
c3 = (CODEC2*)c2;
Wo_index = encode_Wo(model.Wo);
encode_amplitudes(lsp_indexes,
- &lpc_correction,
&energy_index,
&model,
c3->Sn,
for(i=0; i<LPC_ORD; i++) {
pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
}
- pack(bits, &nbit, lpc_correction, 1);
pack(bits, &nbit, energy_index, E_BITS);
pack(bits, &nbit, voiced1, 1);
pack(bits, &nbit, voiced2, 1);
for(i=0; i<LPC_ORD; i++) {
lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
}
- lpc_correction = unpack(bits, &nbit, 1);
energy_index = unpack(bits, &nbit, E_BITS);
voiced1 = unpack(bits, &nbit, 1);
voiced2 = unpack(bits, &nbit, 1);
decode_amplitudes(&model,
ak,
lsp_indexes,
- lpc_correction,
- energy_index);
+ energy_index,
+ lsps,
+ &e);
model.voiced = voiced2;
model_interp.voiced = voiced1;