35 #ifdef P_R_O_T_O_T_Y_P_E_S
36 extern int analys_(real *speech, integer *voice, integer *pitch, real *rms, real *rc,
struct lpc10_encoder_state *st);
66 integer order, lframe;
70 #define contrl_1 contrl_
74 static integer c__10 = 10;
75 static integer c__181 = 181;
76 static integer c__720 = 720;
77 static integer c__3 = 3;
78 static integer c__90 = 90;
79 static integer c__156 = 156;
80 static integer c__307 = 307;
81 static integer c__462 = 462;
82 static integer c__312 = 312;
83 static integer c__60 = 60;
84 static integer c__1 = 1;
206 int analys_(real *speech, integer *voice, integer
211 static integer tau[60] = { 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
212 35,36,37,38,39,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,
213 74,76,78,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,
214 140,144,148,152,156 };
215 static integer buflim[4] = { 181,720,25,720 };
216 static real precoef = .9375f;
226 extern int tbdm_(real *, integer *, integer *, integer *,
227 real *, integer *, integer *, integer *);
229 integer midx, ewin[6] ;
233 integer i__, j, lanal;
234 extern int rcchk_(integer *, real *, real *), mload_(
235 integer *, integer *, integer *, real *, real *, real *);
240 extern int onset_(real *, integer *, integer *, integer *
243 extern int dcbias_(integer *, real *, real *);
246 extern int preemp_(real *, real *, integer *, real *,
247 real *), voicin_(integer *, real *, real *, integer *, integer *,
248 real *, real *, integer *, real *, integer *, integer *, integer *,
253 extern int lpfilt_(real *, real *, integer *, integer *),
254 ivfilt_(real *, real *, integer *, integer *, real *), energy_(
255 integer *, real *, real *), invert_(integer *, real *, real *,
257 integer minptr, maxptr;
258 extern int dyptrk_(real *, integer *, integer *, integer
260 real phi[100] , psi[10];
471 inbuf = &(st->inbuf[0]);
472 pebuf = &(st->pebuf[0]);
473 lpbuf = &(st->lpbuf[0]);
474 ivbuf = &(st->ivbuf[0]);
476 osbuf = &(st->osbuf[0]);
477 osptr = &(st->osptr);
478 obound = &(st->obound[0]);
479 vwin = &(st->vwin[0]);
480 awin = &(st->awin[0]);
481 voibuf = &(st->voibuf[0]);
482 rmsbuf = &(st->rmsbuf[0]);
483 rcbuf = &(st->rcbuf[0]);
486 i__1 = 720 - contrl_1.lframe;
487 for (i__ = 181; i__ <= i__1; ++i__) {
488 inbuf[i__ - 181] = inbuf[contrl_1.lframe + i__ - 181];
489 pebuf[i__ - 181] = pebuf[contrl_1.lframe + i__ - 181];
491 i__1 = 540 - contrl_1.lframe;
492 for (i__ = 229; i__ <= i__1; ++i__) {
493 ivbuf[i__ - 229] = ivbuf[contrl_1.lframe + i__ - 229];
495 i__1 = 720 - contrl_1.lframe;
496 for (i__ = 25; i__ <= i__1; ++i__) {
497 lpbuf[i__ - 25] = lpbuf[contrl_1.lframe + i__ - 25];
501 for (i__ = 1; i__ <= i__1; ++i__) {
502 if (osbuf[i__ - 1] > contrl_1.lframe) {
503 osbuf[j - 1] = osbuf[i__ - 1] - contrl_1.lframe;
508 voibuf[0] = voibuf[2];
509 voibuf[1] = voibuf[3];
510 for (i__ = 1; i__ <= 2; ++i__) {
511 vwin[(i__ << 1) - 2] = vwin[((i__ + 1) << 1) - 2] - contrl_1.lframe;
512 vwin[(i__ << 1) - 1] = vwin[((i__ + 1) << 1) - 1] - contrl_1.lframe;
513 awin[(i__ << 1) - 2] = awin[((i__ + 1) << 1) - 2] - contrl_1.lframe;
514 awin[(i__ << 1) - 1] = awin[((i__ + 1) << 1) - 1] - contrl_1.lframe;
525 obound[i__ - 1] = obound[i__];
526 voibuf[i__ * 2] = voibuf[(i__ + 1) * 2];
527 voibuf[(i__ << 1) + 1] = voibuf[((i__ + 1) << 1) + 1];
528 rmsbuf[i__ - 1] = rmsbuf[i__];
529 i__1 = contrl_1.order;
530 for (j = 1; j <= i__1; ++j) {
531 rcbuf[j + i__ * 10 - 11] = rcbuf[j + (i__ + 1) * 10 - 11];
544 i__1 = contrl_1.lframe;
545 for (i__ = 1; i__ <= i__1; ++i__) {
546 inbuf[720 - contrl_1.lframe + i__ - 181] = speech[i__] * 4096.f -
548 temp += inbuf[720 - contrl_1.lframe + i__ - 181];
550 if (temp > (real) contrl_1.lframe) {
553 if (temp < (real) (-contrl_1.lframe)) {
557 i__ = 721 - contrl_1.lframe;
558 preemp_(&inbuf[i__ - 181], &pebuf[i__ - 181], &contrl_1.lframe, &precoef,
560 onset_(pebuf, osbuf, osptr, &c__10, &c__181, &c__720, &contrl_1.lframe, st);
566 placev_(osbuf, osptr, &c__10, &obound[2], vwin, &c__3, &contrl_1.lframe,
567 &c__90, &c__156, &c__307, &c__462);
587 lpfilt_(&inbuf[228], &lpbuf[384], &c__312, &contrl_1.lframe);
592 ivfilt_(&lpbuf[204], ivbuf, &c__312, &contrl_1.lframe, ivrc);
597 tbdm_(ivbuf, &c__156, tau, &c__60, amdf, &minptr, &maxptr, &mintau);
613 for (half = 1; half <= 2; ++half) {
614 voicin_(&vwin[4], inbuf, lpbuf, buflim, &half, &amdf[minptr - 1], &
615 amdf[maxptr - 1], &mintau, ivrc, obound, voibuf, &c__3, st);
619 dyptrk_(amdf, &c__60, &minptr, &voibuf[7], pitch, &midx, st);
620 ipitch = tau[midx - 1];
622 placea_(&ipitch, voibuf, &obound[2], &c__3, vwin, awin, ewin, &
623 contrl_1.lframe, &c__156);
626 lanal = awin[5] + 1 - awin[4];
627 dcbias_(&lanal, &pebuf[awin[4] - 181], abuf);
634 i__1 = ewin[5] - ewin[4] + 1;
635 energy_(&i__1, &abuf[ewin[4] - awin[4]], &rmsbuf[2]);
637 mload_(&contrl_1.order, &c__1, &lanal, abuf, phi, psi);
638 invert_(&contrl_1.order, phi, psi, &rcbuf[20]);
639 rcchk_(&contrl_1.order, &rcbuf[10], &rcbuf[20]);
641 voice[1] = voibuf[2];
642 voice[2] = voibuf[3];
644 i__1 = contrl_1.order;
645 for (i__ = 1; i__ <= i__1; ++i__) {
646 rc[i__] = rcbuf[i__ - 1];
static int inbuf(struct baseio *bio, FILE *fi)
utility used by inchar(), for base_encode()