40 #ifdef P_R_O_T_O_T_Y_P_E_S
41 extern int voicin_(integer *vwin, real *
inbuf, real *lpbuf, integer *buflim, integer *half, real *minamd, real *maxamd, integer *mintau, real *ivrc, integer *obound, integer *voibuf, integer *af,
struct lpc10_encoder_state *st);
49 integer order, lframe;
53 #define contrl_1 contrl_
258 int voicin_(integer *vwin, real *
inbuf, real *
259 lpbuf, integer *buflim, integer *half, real *minamd, real *maxamd,
260 integer *mintau, real *ivrc, integer *obound, integer *voibuf,
266 static real vdc[100] = { 0.f,1714.f,-110.f,
267 334.f,-4096.f,-654.f,3752.f,3769.f,0.f,1181.f,0.f,874.f,-97.f,
268 300.f,-4096.f,-1021.f,2451.f,2527.f,0.f,-500.f,0.f,510.f,-70.f,
269 250.f,-4096.f,-1270.f,2194.f,2491.f,0.f,-1500.f,0.f,500.f,-10.f,
270 200.f,-4096.f,-1300.f,2e3f,2e3f,0.f,-2e3f,0.f,500.f,0.f,0.f,
271 -4096.f,-1300.f,2e3f,2e3f,0.f,-2500.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,
272 0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,
273 0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,
274 0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f };
275 static integer nvdcl = 5;
276 static real vdcl[10] = { 600.f,450.f,300.f,200.f,0.f,0.f,0.f,0.f,0.f,0.f }
280 integer inbuf_offset = 0, lpbuf_offset = 0, i__1, i__2;
284 integer i_nint(real *);
285 double sqrt(doublereal);
289 integer *lbve, *lbue, *fbve, *fbue;
291 integer *ofbue, *sfbue;
293 integer *olbue, *slbue;
301 extern int vparms_(integer *, real *, real *, integer *,
302 integer *, real *, integer *, integer *, integer *, integer *,
303 real *, real *, real *, real *);
474 dither = (&st->dither);
476 maxmin = (&st->maxmin);
477 voice = (&st->voice[0]);
482 ofbue = (&st->ofbue);
483 olbue = (&st->olbue);
484 sfbue = (&st->sfbue);
485 slbue = (&st->slbue);
495 inbuf_offset = buflim[1];
496 inbuf -= inbuf_offset;
499 lpbuf_offset = buflim[3];
500 lpbuf -= lpbuf_offset;
564 *maxmin = *maxamd / max(*minamd,1.f);
567 vparms_(&vwin[1], &inbuf[inbuf_offset], &lpbuf[lpbuf_offset], &buflim[1],
568 half, dither, mintau, &zc, &lbe, &fbe, &qs, &rc1, &ar_b__, &
575 r__1 = (*snr + *fbve / (real) max(*fbue,1)) * 63 / 64.f;
576 *snr = (real) i_nint(&r__1);
577 snr2 = *snr * *fbue / max(*lbue,1);
581 for (snrl = 1; snrl <= i__1; ++snrl) {
582 if (snr2 > vdcl[snrl - 1]) {
590 value[1] = (real) lbe / max(*lbve,1);
591 value[2] = (real) zc;
598 voice[*half + 3] = vdc[snrl * 10 - 1];
599 for (i__ = 1; i__ <= 8; ++i__) {
600 voice[*half + 3] += vdc[i__ + snrl * 10 - 11] * value[i__ - 1];
604 if (voice[*half + 3] > 0.f) {
605 voibuf[*half + 6] = 1;
607 voibuf[*half + 6] = 0;
661 ot = ((obound[1] & 2) != 0 || obound[2] == 1) && (obound[3] & 1) == 0;
663 vstate = (voibuf[3] << 3) + (voibuf[4] << 2) + (voibuf[5] << 1) + voibuf[
665 switch (vstate + 1) {
684 if (ot && voibuf[7] == 1) {
689 if (voibuf[7] == 0 || voice[2] < -voice[3]) {
699 if (voice[1] < -voice[2]) {
707 if (voibuf[1] == 1 || voibuf[7] == 1 || voice[3] > voice[0]) {
724 if (voice[2] < -voice[1]) {
734 if (voibuf[7] == 0 && voice[3] < -voice[2]) {
741 if (ot && voibuf[7] == 0) {
757 if (voibuf[*half + 6] == 0) {
759 i__1 = fbe, i__2 = *ofbue * 3;
760 r__1 = (*sfbue * 63 + (min(i__1,i__2) << 3)) / 64.f;
761 *sfbue = i_nint(&r__1);
765 i__1 = lbe, i__2 = *olbue * 3;
766 r__1 = (*slbue * 63 + (min(i__1,i__2) << 3)) / 64.f;
767 *slbue = i_nint(&r__1);
771 r__1 = (*lbve * 63 + lbe) / 64.f;
772 *lbve = i_nint(&r__1);
773 r__1 = (*fbve * 63 + fbe) / 64.f;
774 *fbve = i_nint(&r__1);
781 r__2 = (real)(sqrt((real) (*lbue * *lbve)) * 64 / 3000);
782 r__1 = max(r__2,1.f);
783 *dither = min(r__1,20.f);
static int inbuf(struct baseio *bio, FILE *fi)
utility used by inchar(), for base_encode()