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