ГОСТ Р 53556.2—2012
float р1.
float ratio)
{
retum((pO
*
(1,0- ratio) <p1) && (p1 <pO
*
(1.0
+
ratio))):
}
*
static float TrackingPilch(
NgbPrm ’cmtPrm. Г current parameter
7
NgbPrm ’prevPrm, Г previous parameter
V
intscantimit.
/*
Numberof autocorrelationpeaks
V
float ’ас. Г Autoconelation
7
int peakPos{PEAKMAXJ. Г Position of autocorrelationpeaks
7
int prevVUV)
/* 7/1/7 о/pfmwous
frame
7
{
float kimete:
float pitch:
int i;
sialic float prevRawp= 0.0:
int st0.st1.st2:
float sldPch:
staticfloat rbIPch = 0.0:
static float prevRbIPch = 0.0:
rbIPch = global_pitch:
if (prevVUV
/=
0 && rbIPch != 0.0)
{
slO = Ambiguous(prevPrm->pitch. rbIPch.
0.11):
st1
=
Ambiguous(crntPrm->pitch. rbIPch,
0,11):
if(!(st0
1|
st1))
{
if (NearPitch(crntPrm->pitch. prevPrm-
>pitch, 0.2))
pitch
=
crntPrm->prtch:
else if (NearPitch(crntPrm->pitch. rbIPch, 0.2))
pitch = crnlPrm->pitch:
else if (NearPitch(prevPrm->pitch. rbIPch. 0.2))
{
if (cmtPrm->rOr > prevPrm->rOr && cmtPrm->prob >
prevPrm->prob)
pitch = cmtPrm->pitch;
else
pitch
=
prevPrm->pitch:
}
else
pitch = GetStdPch2EJms(cmtPrm, prevPrm. scanJimit,
peakPos. ac):
}
2
2
elseif (IstO)
{
if (NearPitch(prevPrm->pitch, cmtPrm->pitch,
0
. ) )
pitch
=
cmtPrm->pitch:
else if ((gpMax
*
1,2 > cmlPrm->pitch) &&
NearPitch(prevPrm->rawPilch, crntPrm->pitch.
0
. ) )
pitch
=
cmtPrm->pitch:
else
pitch = prevPrm->pitch;
}
elseif (!st1)
<
52