136{
137
138
141
142
143 integer rci_dim1 = 0, rci_offset, i__1, i__2;
145
146
148
149
150 real alrn, alro, yarc[10], prop;
151 integer i__, j, vflag, jused, lsamp;
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234 if (rc) {
235 --rc;
236 }
237 if (rci) {
239 rci_offset = rci_dim1 + 1;
240 rci -= rci_offset;
241 }
242 if (voice) {
243 --voice;
244 }
245 if (ivuv) {
246 --ivuv;
247 }
248 if (ipiti) {
249 --ipiti;
250 }
251 if (rmsi) {
252 --rmsi;
253 }
254
255
257 ipito = &(st->
ipito);
260 jsamp = &(st->
jsamp);
262
263 if (*rms < 1.f) {
264 *rms = 1.f;
265 }
266 if (*rmso < 1.f) {
267 *rmso = 1.f;
268 }
269 uvpit = 0.f;
270 *ratio = *rms / (*rmso + 8.f);
272 lsamp = 0;
273 ivoice = voice[2];
274 if (ivoice == 0) {
276 }
278 *jsamp = *
lframe - *nout * *pitch;
279
280
281
282
283
284
285
286
287
288
289 i__1 = *nout;
290 for (i__ = 1; i__ <= i__1; ++i__) {
292 for (j = 1; j <= i__2; ++j) {
293 rci[j + i__ * rci_dim1] = rc[j];
294 }
295 ivuv[i__] = ivoice;
296 ipiti[i__] = *pitch;
297 rmsi[i__] = *rms;
298 }
300 } else {
301 vflag = 0;
303 slope = (*pitch - *ipito) / (
real) lsamp;
304 *nout = 0;
305 jused = 0;
306 istart = 1;
307 if (voice[1] == *ivoico && voice[2] == voice[1]) {
308 if (voice[2] == 0) {
309
311 *ipito = *pitch;
312 if (*ratio > 8.f) {
313 *rmso = *rms;
314 }
315 }
316
317 slope = (*pitch - *ipito) / (
real) lsamp;
318 ivoice = voice[2];
319 } else {
320 if (*ivoico != 1) {
321 if (*ivoico == voice[1]) {
322
324 } else {
325
326 nl = lsamp - *
lframe * 3 / 4;
327 }
328 ipiti[1] = nl / 2;
329 ipiti[2] = nl - ipiti[1];
330 ivuv[1] = 0;
331 ivuv[2] = 0;
332 rmsi[1] = *rmso;
333 rmsi[2] = *rmso;
335 for (i__ = 1; i__ <= i__1; ++i__) {
336 rci[i__ + rci_dim1] = rco[i__ - 1];
337 rci[i__ + (rci_dim1 << 1)] = rco[i__ - 1];
338 rco[i__ - 1] = rc[i__];
339 }
340 slope = 0.f;
341 *nout = 2;
342 *ipito = *pitch;
343 jused = nl;
344 istart = nl + 1;
345 ivoice = 1;
346 } else {
347 if (*ivoico != voice[1]) {
348
349 lsamp = *
lframe / 4 + *jsamp;
350 } else {
351
352 lsamp = *
lframe * 3 / 4 + *jsamp;
353 }
355 for (i__ = 1; i__ <= i__1; ++i__) {
356 yarc[i__ - 1] = rc[i__];
357 rc[i__] = rco[i__ - 1];
358 }
359 ivoice = 1;
360 slope = 0.f;
361 vflag = 1;
362 }
363 }
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465 i__1 = lsamp;
466 for (i__ = istart; i__ <= i__1; ++i__) {
467 r__1 = *ipito + slope * i__;
469 if (uvpit != 0.f) {
471 }
472 if (ip <= i__ - jused) {
473 ++(*nout);
474
475
476
477
478
479
480
481
482
483 ipiti[*nout] = ip;
484 *pitch = ip;
485 ivuv[*nout] = ivoice;
486 jused += ip;
487 prop = (jused - ip / 2) / (
real) lsamp;
489 for (j = 1; j <= i__2; ++j) {
490 alro = (
real)log((rco[j - 1] + 1) / (1 - rco[j - 1]));
491 alrn = (
real)log((rc[j] + 1) / (1 - rc[j]));
492 xxy = alro + prop * (alrn - alro);
493 xxy = (
real)exp(xxy);
494 rci[j + *nout * rci_dim1] = (xxy - 1) / (xxy + 1);
495 }
496 rmsi[*nout] = (
real)(log(*rmso) + prop * (log(*rms) - log(*rmso)));
497 rmsi[*nout] = (
real)exp(rmsi[*nout]);
498 }
499 }
500 if (vflag != 1) {
501 goto L100;
502 }
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550 vflag = 0;
551 istart = jused + 1;
553 slope = 0.f;
554 ivoice = 0;
555 uvpit = (
real) ((lsamp - istart) / 2);
556 if (uvpit > 90.f) {
557 uvpit /= 2;
558 }
559 *rmso = *rms;
561 for (i__ = 1; i__ <= i__1; ++i__) {
562 rc[i__] = yarc[i__ - 1];
563 rco[i__ - 1] = yarc[i__ - 1];
564 }
565 }
566L100:
567 *jsamp = lsamp - jused;
568 }
569
570
571
572
573 if (*nout != 0) {
574 *ivoico = voice[2];
575 *ipito = *pitch;
576 *rmso = *rms;
578 for (i__ = 1; i__ <= i__1; ++i__) {
579 rco[i__ - 1] = rc[i__];
580 }
581 }
582 return 0;
583}
struct sla_ringing_trunk * first