blob: 367f9b0527c3cee6b57be32c9893146d54d9fa2e [file] [log] [blame]
/*---------------------------------------------------------------------------*
* utt_data.c *
* *
* Copyright 2007, 2008 Nuance Communciations, Inc. *
* *
* Licensed under the Apache License, Version 2.0 (the 'License'); *
* you may not use this file except in compliance with the License. *
* *
* You may obtain a copy of the License at *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an 'AS IS' BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* *
*---------------------------------------------------------------------------*/
#include <stdlib.h>
#include <string.h>
#ifndef _RTT
#include <stdio.h>
#endif
#ifdef unix
#include <unistd.h>
#endif
#include <assert.h>
#include "simapi.h"
#include "portable.h"
#include "../clib/fpi_tgt.inl"
static const char utt_data[] = "$Id: utt_data.c,v 1.8.6.6 2007/10/15 18:06:24 dahan Exp $";
int CA_SeekStartOfUtterance(CA_Utterance *hUtt)
{
TRY_CA_EXCEPT
int gap = 0;
ASSERT(hUtt);
if (utterance_started(&hUtt->data))
{
if ((gap = getBlockGap(hUtt->data.gen_utt.frame)) > 0)
(void) setRECframePtr(hUtt->data.gen_utt.frame, gap, 1);
if (hUtt->data.gen_utt.frame->holdOffPeriod > 0)
setRECframePtr(hUtt->data.gen_utt.frame, -MIN(hUtt->data.gen_utt.frame->holdOffPeriod, getFrameGap(hUtt->data.gen_utt.frame)), 1);
while (!(rec_frame_voicing_status(hUtt->data.gen_utt.frame) & VOICE_BIT))
{
incRECframePtr(hUtt->data.gen_utt.frame);
if (getFrameGap(hUtt->data.gen_utt.frame) == 0)
break;
}
setRECframePtr(hUtt->data.gen_utt.frame, MIN(hUtt->data.gen_utt.start_windback, getBlockGap(hUtt->data.gen_utt.frame)), 1);
#ifdef SREC_ENGINE_VERBOSE_LOGGING
PLogMessage("L: Frame start rewound to %d (%d, %d)", hUtt->data.gen_utt.frame->pullTime,
hUtt->data.gen_utt.start_windback,
getBlockGap(hUtt->data.gen_utt.frame));
#endif
hUtt->data.gen_utt.last_push = NULL;
return hUtt->data.gen_utt.start_windback;
}
else
return 0;
BEG_CATCH_CA_EXCEPT
END_CATCH_CA_EXCEPT(hUtt)
}
int CA_GetUnprocessedFramesInUtterance(CA_Utterance *hUtt)
{
TRY_CA_EXCEPT
ASSERT(hUtt);
return (getFrameGap(hUtt->data.gen_utt.frame));
BEG_CATCH_CA_EXCEPT
END_CATCH_CA_EXCEPT(hUtt)
}