summaryrefslogtreecommitdiffstats
path: root/pico/lib/picocep.c
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2009-08-17 14:20:48 -0700
committerJean-Michel Trivi <jmtrivi@google.com>2009-08-17 14:20:48 -0700
commit7bc39b0d41efe0d8733490d54e14bc392d9f0b6d (patch)
treedb46c91063b1d9ca27c4618c9262a1fd09014c94 /pico/lib/picocep.c
parenta2301be089f8ed570c5bb755ff7c82b130959851 (diff)
downloadexternal_svox-7bc39b0d41efe0d8733490d54e14bc392d9f0b6d.zip
external_svox-7bc39b0d41efe0d8733490d54e14bc392d9f0b6d.tar.gz
external_svox-7bc39b0d41efe0d8733490d54e14bc392d9f0b6d.tar.bz2
Integrate SVOX update that offers two modes to reset the engine: soft
and full. Soft reset is lighter-weight than the previous pico_resetEngine() function as it only clears the input (text) and output (audio data) buffers of the synthesis engine. The synthesis loop is now taking advantage of the soft reset whenever it is interrupted, rather than performing a full engine reset after each call to stop().
Diffstat (limited to 'pico/lib/picocep.c')
-rw-r--r--pico/lib/picocep.c50
1 files changed, 26 insertions, 24 deletions
diff --git a/pico/lib/picocep.c b/pico/lib/picocep.c
index 2510c13..bb80c3d 100644
--- a/pico/lib/picocep.c
+++ b/pico/lib/picocep.c
@@ -285,7 +285,7 @@ static picodata_step_result_t cepStep(register picodata_ProcessingUnit this,
* @callgraph
* @callergraph
*/
-static pico_status_t cepInitialize(register picodata_ProcessingUnit this)
+static pico_status_t cepInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode)
{
/*pico_status_t nRes;*/
cep_subobj_t * cep;
@@ -328,35 +328,37 @@ static pico_status_t cepInitialize(register picodata_ProcessingUnit this)
------------------------------------------------------------------*/
cep->activeEndPos = PICOCEP_MAXWINLEN;
- /* kb pdflfz */
- cep->pdflfz = picokpdf_getPdfMUL(
- this->voice->kbArray[PICOKNOW_KBID_PDF_LFZ]);
+ if (r_mode == PICO_RESET_FULL) {
+ /* kb pdflfz */
+ cep->pdflfz = picokpdf_getPdfMUL(
+ this->voice->kbArray[PICOKNOW_KBID_PDF_LFZ]);
- /* kb pdfmgc */
- cep->pdfmgc = picokpdf_getPdfMUL(
- this->voice->kbArray[PICOKNOW_KBID_PDF_MGC]);
+ /* kb pdfmgc */
+ cep->pdfmgc = picokpdf_getPdfMUL(
+ this->voice->kbArray[PICOKNOW_KBID_PDF_MGC]);
- /* kb tab phones */
- /* cep->phones =
- picoktab_getPhones(this->voice->kbArray[PICOKNOW_KBID_TAB_PHONES]); */
+ /* kb tab phones */
+ /* cep->phones =
+ picoktab_getPhones(this->voice->kbArray[PICOKNOW_KBID_TAB_PHONES]); */
- /*---------------------- other working variables ---------------------------*/
- /* define the (constant) FRAME_PAR item header */
- cep->framehead.type = PICODATA_ITEM_FRAME_PAR;
- cep->framehead.info1 = PICOCEP_OUT_DATA_FORMAT;
- cep->framehead.info2 = cep->pdfmgc->ceporder;
- cep->framehead.len = sizeof(picoos_uint16) + (cep->framehead.info2 + 4)
- * sizeof(picoos_uint16);
+ /*---------------------- other working variables ---------------------------*/
+ /* define the (constant) FRAME_PAR item header */
+ cep->framehead.type = PICODATA_ITEM_FRAME_PAR;
+ cep->framehead.info1 = PICOCEP_OUT_DATA_FORMAT;
+ cep->framehead.info2 = cep->pdfmgc->ceporder;
+ cep->framehead.len = sizeof(picoos_uint16) + (cep->framehead.info2 + 4)
+ * sizeof(picoos_uint16);
+ cep->scmeanpowLFZ = cep->pdflfz->bigpow - cep->pdflfz->meanpow;
+ cep->scmeanpowMGC = cep->pdfmgc->bigpow - cep->pdfmgc->meanpow;
- /* constants used in makeWUWandWUm */
- initSmoothing(cep);
+ cep->scmeanLFZ = (1 << (picoos_uint32) cep->scmeanpowLFZ);
- cep->scmeanpowLFZ = cep->pdflfz->bigpow - cep->pdflfz->meanpow;
- cep->scmeanpowMGC = cep->pdfmgc->bigpow - cep->pdfmgc->meanpow;
+ cep->scmeanMGC = (1 << (picoos_uint32) cep->scmeanpowMGC);
- cep->scmeanLFZ = (1 << (picoos_uint32) cep->scmeanpowLFZ);
+ }
+ /* constants used in makeWUWandWUm */
+ initSmoothing(cep);
- cep->scmeanMGC = (1 << (picoos_uint32) cep->scmeanpowMGC);
return PICO_OK;
}/*cepInitialize*/
@@ -461,7 +463,7 @@ picodata_ProcessingUnit picocep_newCepUnit(picoos_MemoryManager mm,
picoos_deallocate(mm, (void*) &this);
return NULL;
}
- cepInitialize(this);
+ cepInitialize(this, PICO_RESET_FULL);
return this;
}/*picocep_newCepUnit*/