Merge pull request #1 from lwvmobile/lwvmobile-patch-1

Direct all printing to STDERR
This commit is contained in:
lwvmobile 2022-02-10 15:45:00 -05:00 committed by GitHub
commit 1b890a37cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 147 additions and 138 deletions

View File

@ -1,3 +1,7 @@
1.3.1:
Redirect all printf to stderr ( Change all printf to fprintf(stderr,)
Increment to 1.3.1 to make it easy to differentiate if this particular version is installed
1.3.0:
Initial DSTAR AMBE support
Fixed random number generator
@ -44,9 +48,9 @@
reduced error -> repeat thresholds for reduced noise bursts
ambe3600x2250 now correctly handles "Silence" frames
ambe Tone and Erasure frames are now indicated with T and E in errorbars
1.0.1 Fixed bugs:
cur_mp->repeat was not being copied to prev_mp
1.0.1 Fixed bugs:
cur_mp->repeat was not being copied to prev_mp
logic to check for bad mbe frames was incorrect
1.0 First release

View File

@ -1,12 +1,17 @@
[![Build Status](https://travis-ci.org/szechyjs/mbelib.png?branch=master)](https://travis-ci.org/szechyjs/mbelib)
mbelib 1.3.1
Redirect all printf to stderr ( Change all printf to fprintf(stderr,)
Increment to 1.3.1 to make it easy to differentiate if this particular version is installed
THIS VERSION PURELY FOR ACADEMIC RESEARCH - DON'T USE THIS VERSION!
PATENT NOTICE
This source code is provided for educational purposes only. It is
a written description of how certain voice encoding/decoding
algorythims could be implemented. Executable objects compiled or
algorythims could be implemented. Executable objects compiled or
derived from this package may be covered by one or more patents.
Readers are strongly advised to check for any patent restrictions or
Readers are strongly advised to check for any patent restrictions or
licencing requirements before compiling or using this source code.
mbelib 1.3.0

View File

@ -32,10 +32,10 @@ mbe_dumpAmbe2400Data (char *ambe_d)
ambe = ambe_d;
for (i = 0; i < 49; i++)
{
printf ("%i", *ambe);
fprintf (stderr,"%i", *ambe);
ambe++;
}
printf (" ");
fprintf (stderr," ");
}
void
@ -45,33 +45,33 @@ mbe_dumpAmbe3600x2400Frame (char ambe_fr[4][24])
int j;
// c0
printf ("ambe_fr c0: ");
fprintf (stderr,"ambe_fr c0: ");
for (j = 23; j >= 0; j--)
{
printf ("%i", ambe_fr[0][j]);
fprintf (stderr,"%i", ambe_fr[0][j]);
}
printf (" ");
fprintf (stderr," ");
// c1
printf ("ambe_fr c1: ");
fprintf (stderr,"ambe_fr c1: ");
for (j = 22; j >= 0; j--)
{
printf ("%i", ambe_fr[1][j]);
fprintf (stderr,"%i", ambe_fr[1][j]);
}
printf (" ");
fprintf (stderr," ");
// c2
printf ("ambe_fr c2: ");
fprintf (stderr,"ambe_fr c2: ");
for (j = 10; j >= 0; j--)
{
printf ("%i", ambe_fr[2][j]);
fprintf (stderr,"%i", ambe_fr[2][j]);
}
printf (" ");
fprintf (stderr," ");
// c3
printf ("ambe_fr c3: ");
fprintf (stderr,"ambe_fr c3: ");
for (j = 13; j >= 0; j--)
{
printf ("%i", ambe_fr[3][j]);
fprintf (stderr,"%i", ambe_fr[3][j]);
}
printf (" ");
fprintf (stderr," ");
}
int
@ -157,12 +157,12 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
silence = 0;
#ifdef AMBE_DEBUG
printf ("\n");
fprintf (stderr,"\n");
#endif
// copy repeat from prev_mp
cur_mp->repeat = prev_mp->repeat;
// check if frame is tone or other; this matches section 7.2 on the P25 Half rate vocoder annex doc
b0 = 0;
b0 |= ambe_d[0]<<6;
@ -192,7 +192,7 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
int t6tab[8] = {0,0,0,1,1,1,1,0};
int t5tab[8] = {0,0,1,0,1,1,0,1};
// V V V V V G G G V = verified, G = guessed (and unused by all normal tone indices)
b1 = 0;
b1 = 0;
b1 |= t7tab[((ambe_d[6]<<2)|(ambe_d[7]<<1)|ambe_d[8])]<<7; //t7 128
b1 |= t6tab[((ambe_d[6]<<2)|(ambe_d[7]<<1)|ambe_d[8])]<<6; //t6 64
b1 |= t5tab[((ambe_d[6]<<2)|(ambe_d[7]<<1)|ambe_d[8])]<<5; //t5 32
@ -242,7 +242,7 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
if(silence == 1)
{
#ifdef AMBE_DEBUG
printf ("Silence Frame\n");
fprintf (stderr,"Silence Frame\n");
#endif
cur_mp->w0 = ((float) 2 * M_PI) / (float) 32;
f0 = (float) 1 / (float) 32;
@ -254,16 +254,16 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
}
}
#ifdef AMBE_DEBUG
printf ("Tone Frame\n");
fprintf (stderr,"Tone Frame\n");
#endif
return (3);
}
//fprintf(stderr,"Voice Frame, Pitch = %f\n", powf(2, ((float)b0+195.626)/-46.368)*8000); // was 45.368
//fprintf(stderr,"Voice Frame, rawPitch = %02d, Pitch = %f\n", b0, powf(2, ((-1*(float)(17661/((int)1<<12))) - (2.1336e-2 * ((float)b0+0.5))))*8000);
//fprintf(stderr,"Voice Frame, Pitch = %f, ", powf(2, (-4.311767578125 - (2.1336e-2 * ((float)b0+0.5))))*8000);
// decode fundamental frequency w0 from b0 is already done
if (silence == 0)
{
// w0 from specification document
@ -271,7 +271,7 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
//cur_mp->w0 = f0 * (float) 2 *M_PI;
// w0 from patent filings
//f0 = powf (2, ((float) b0 + (float) 195.626) / -(float) 46.368); // was 45.368
// w0 guess
// w0 guess
f0 = powf(2, (-4.311767578125 - (2.1336e-2 * ((float)b0+0.5))));
cur_mp->w0 = f0 * (float) 2 *M_PI;
}
@ -283,7 +283,7 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
// decode L
if (silence == 0)
{
// L from specification document
// L from specification document
// lookup L in tabl3
L = AmbePlusLtable[b0];
// L formula from patent filings
@ -313,11 +313,11 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
cur_mp->Vl[l] = AmbePlusVuv[b1][jl];
}
#ifdef AMBE_DEBUG
printf ("jl[%i]:%i Vl[%i]:%i\n", l, jl, l, cur_mp->Vl[l]);
fprintf (stderr,"jl[%i]:%i Vl[%i]:%i\n", l, jl, l, cur_mp->Vl[l]);
#endif
}
#ifdef AMBE_DEBUG
printf ("\nb0:%i w0:%f L:%i b1:%i\n", b0, cur_mp->w0, L, b1);
fprintf (stderr,"\nb0:%i w0:%f L:%i b1:%i\n", b0, cur_mp->w0, L, b1);
#endif
// decode gain vector
@ -333,7 +333,7 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
deltaGamma = AmbePlusDg[b2];
cur_mp->gamma = deltaGamma + ((float) 0.5 * prev_mp->gamma);
#ifdef AMBE_DEBUG
printf ("b2: %i, deltaGamma: %f gamma: %f gamma-1: %f\n", b2, deltaGamma, cur_mp->gamma, prev_mp->gamma);
fprintf (stderr,"b2: %i, deltaGamma: %f gamma: %f gamma-1: %f\n", b2, deltaGamma, cur_mp->gamma, prev_mp->gamma);
#endif
@ -370,7 +370,7 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
Gm[8] = AmbePlusPRBA58[b4][3];
#ifdef AMBE_DEBUG
printf ("b3: %i Gm[2]: %f Gm[3]: %f Gm[4]: %f b4: %i Gm[5]: %f Gm[6]: %f Gm[7]: %f Gm[8]: %f\n", b3, Gm[2], Gm[3], Gm[4], b4, Gm[5], Gm[6], Gm[7], Gm[8]);
fprintf (stderr,"b3: %i Gm[2]: %f Gm[3]: %f Gm[4]: %f b4: %i Gm[5]: %f Gm[6]: %f Gm[7]: %f Gm[8]: %f\n", b3, Gm[2], Gm[3], Gm[4], b4, Gm[5], Gm[6], Gm[7], Gm[8]);
#endif
// compute Ri
@ -391,11 +391,11 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
}
Ri[i] = sum;
#ifdef AMBE_DEBUG
printf ("R%i: %f ", i, Ri[i]);
fprintf (stderr,"R%i: %f ", i, Ri[i]);
#endif
}
#ifdef AMBE_DEBUG
printf ("\n");
fprintf (stderr,"\n");
#endif
// generate first to elements of each Ci,k block from PRBA vector
@ -445,8 +445,8 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
Ji[3] = AmbePlusLmprbl[L][2];
Ji[4] = AmbePlusLmprbl[L][3];
#ifdef AMBE_DEBUG
printf ("Ji[1]: %i Ji[2]: %i Ji[3]: %i Ji[4]: %i\n", Ji[1], Ji[2], Ji[3], Ji[4]);
printf ("b5: %i b6: %i b7: %i b8: %i\n", b5, b6, b7, b8);
fprintf (stderr,"Ji[1]: %i Ji[2]: %i Ji[3]: %i Ji[4]: %i\n", Ji[1], Ji[2], Ji[3], Ji[4]);
fprintf (stderr,"b5: %i b6: %i b7: %i b8: %i\n", b5, b6, b7, b8);
#endif
// Load Ci,k with the values from the HOC tables
@ -462,7 +462,7 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
{
Cik[1][k] = AmbePlusHOCb5[b5][k - 3];
#ifdef AMBE_DEBUG
printf ("C1,%i: %f ", k, Cik[1][k]);
fprintf (stderr,"C1,%i: %f ", k, Cik[1][k]);
#endif
}
}
@ -476,7 +476,7 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
{
Cik[2][k] = AmbePlusHOCb6[b6][k - 3];
#ifdef AMBE_DEBUG
printf ("C2,%i: %f ", k, Cik[2][k]);
fprintf (stderr,"C2,%i: %f ", k, Cik[2][k]);
#endif
}
}
@ -490,7 +490,7 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
{
Cik[3][k] = AmbePlusHOCb7[b7][k - 3];
#ifdef AMBE_DEBUG
printf ("C3,%i: %f ", k, Cik[3][k]);
fprintf (stderr,"C3,%i: %f ", k, Cik[3][k]);
#endif
}
}
@ -504,12 +504,12 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
{
Cik[4][k] = AmbePlusHOCb8[b8][k - 3];
#ifdef AMBE_DEBUG
printf ("C4,%i: %f ", k, Cik[4][k]);
fprintf (stderr,"C4,%i: %f ", k, Cik[4][k]);
#endif
}
}
#ifdef AMBE_DEBUG
printf ("\n");
fprintf (stderr,"\n");
#endif
// inverse DCT each Ci,k to give ci,j (Tl)
@ -531,13 +531,13 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
ak = 2;
}
#ifdef AMBE_DEBUG
printf ("j: %i Cik[%i][%i]: %f ", j, i, k, Cik[i][k]);
fprintf (stderr,"j: %i Cik[%i][%i]: %f ", j, i, k, Cik[i][k]);
#endif
sum = sum + ((float) ak * Cik[i][k] * cosf ((M_PI * (float) (k - 1) * ((float) j - (float) 0.5)) / (float) ji));
}
Tl[l] = sum;
#ifdef AMBE_DEBUG
printf ("Tl[%i]: %f\n", l, Tl[l]);
fprintf (stderr,"Tl[%i]: %f\n", l, Tl[l]);
#endif
l++;
}
@ -566,20 +566,20 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
flokl[l] = ((float) prev_mp->L / (float) cur_mp->L) * (float) l;
intkl[l] = (int) (flokl[l]);
#ifdef AMBE_DEBUG
printf ("flok%i: %f, intk%i: %i ", l, flokl[l], l, intkl[l]);
fprintf (stderr,"flok%i: %f, intk%i: %i ", l, flokl[l], l, intkl[l]);
#endif
// eq. 41
deltal[l] = flokl[l] - (float) intkl[l];
#ifdef AMBE_DEBUG
printf ("delta%i: %f ", l, deltal[l]);
fprintf (stderr,"delta%i: %f ", l, deltal[l]);
#endif
// eq 43
Sum43 = Sum43 + ((((float) 1 - deltal[l]) * prev_mp->log2Ml[intkl[l]]) + (deltal[l] * prev_mp->log2Ml[intkl[l] + 1]));
}
Sum43 = (((float) 0.65 / (float) cur_mp->L) * Sum43);
#ifdef AMBE_DEBUG
printf ("\n");
printf ("Sum43: %f\n", Sum43);
fprintf (stderr,"\n");
fprintf (stderr,"Sum43: %f\n", Sum43);
#endif
// Part 2
@ -608,10 +608,10 @@ mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
cur_mp->Ml[l] = unvc * exp ((float) 0.693 * cur_mp->log2Ml[l]);
}
#ifdef AMBE_DEBUG
printf ("flokl[%i]: %f, intkl[%i]: %i ", l, flokl[l], l, intkl[l]);
printf ("deltal[%i]: %f ", l, deltal[l]);
printf ("prev_mp->log2Ml[%i]: %f\n", l, prev_mp->log2Ml[intkl[l]]);
printf ("BigGamma: %f c1: %f c2: %f Sum43: %f Tl[%i]: %f log2Ml[%i]: %f Ml[%i]: %f\n", BigGamma, c1, c2, Sum43, l, Tl[l], l, cur_mp->log2Ml[l], l, cur_mp->Ml[l]);
fprintf (stderr,"flokl[%i]: %f, intkl[%i]: %i ", l, flokl[l], l, intkl[l]);
fprintf (stderr,"deltal[%i]: %f ", l, deltal[l]);
fprintf (stderr,"prev_mp->log2Ml[%i]: %f\n", l, prev_mp->log2Ml[intkl[l]]);
fprintf (stderr,"BigGamma: %f c1: %f c2: %f Sum43: %f Tl[%i]: %f log2Ml[%i]: %f Ml[%i]: %f\n", BigGamma, c1, c2, Sum43, l, Tl[l], l, cur_mp->log2Ml[l], l, cur_mp->Ml[l]);
#endif
}

View File

@ -32,10 +32,10 @@ mbe_dumpAmbe2450Data (char *ambe_d)
ambe = ambe_d;
for (i = 0; i < 49; i++)
{
printf ("%i", *ambe);
fprintf (stderr,"%i", *ambe);
ambe++;
}
printf (" ");
fprintf (stderr," ");
}
void
@ -45,33 +45,33 @@ mbe_dumpAmbe3600x2450Frame (char ambe_fr[4][24])
int j;
// c0
printf ("ambe_fr c0: ");
fprintf (stderr,"ambe_fr c0: ");
for (j = 23; j >= 0; j--)
{
printf ("%i", ambe_fr[0][j]);
fprintf (stderr,"%i", ambe_fr[0][j]);
}
printf (" ");
fprintf (stderr," ");
// c1
printf ("ambe_fr c1: ");
fprintf (stderr,"ambe_fr c1: ");
for (j = 22; j >= 0; j--)
{
printf ("%i", ambe_fr[1][j]);
fprintf (stderr,"%i", ambe_fr[1][j]);
}
printf (" ");
fprintf (stderr," ");
// c2
printf ("ambe_fr c2: ");
fprintf (stderr,"ambe_fr c2: ");
for (j = 10; j >= 0; j--)
{
printf ("%i", ambe_fr[2][j]);
fprintf (stderr,"%i", ambe_fr[2][j]);
}
printf (" ");
fprintf (stderr," ");
// c3
printf ("ambe_fr c3: ");
fprintf (stderr,"ambe_fr c3: ");
for (j = 13; j >= 0; j--)
{
printf ("%i", ambe_fr[3][j]);
fprintf (stderr,"%i", ambe_fr[3][j]);
}
printf (" ");
fprintf (stderr," ");
}
int
@ -157,7 +157,7 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
silence = 0;
#ifdef AMBE_DEBUG
printf ("\n");
fprintf (stderr,"\n");
#endif
// copy repeat from prev_mp
@ -175,14 +175,14 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
if ((b0 >= 120) && (b0 <= 123)) // if w0 bits are 1111000, 1111001, 1111010 or 1111011, frame is erasure
{
#ifdef AMBE_DEBUG
printf ("Erasure Frame\n");
fprintf (stderr,"Erasure Frame\n");
#endif
return (2);
}
else if ((b0 == 124) || (b0 == 125)) // if w0 bits are 1111100 or 1111101, frame is silence
{
#ifdef AMBE_DEBUG
printf ("Silence Frame\n");
fprintf (stderr,"Silence Frame\n");
#endif
silence = 1;
cur_mp->w0 = ((float) 2 * M_PI) / (float) 32;
@ -197,7 +197,7 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
else if ((b0 == 126) || (b0 == 127)) // if w0 bits are 1111110 or 1111111, frame is tone
{
#ifdef AMBE_DEBUG
printf ("Tone Frame\n");
fprintf (stderr,"Tone Frame\n");
#endif
return (3);
}
@ -249,11 +249,11 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
cur_mp->Vl[l] = AmbeVuv[b1][jl];
}
#ifdef AMBE_DEBUG
printf ("jl[%i]:%i Vl[%i]:%i\n", l, jl, l, cur_mp->Vl[l]);
fprintf (stderr,"jl[%i]:%i Vl[%i]:%i\n", l, jl, l, cur_mp->Vl[l]);
#endif
}
#ifdef AMBE_DEBUG
printf ("\nb0:%i w0:%f L:%i b1:%i\n", b0, cur_mp->w0, L, b1);
fprintf (stderr,"\nb0:%i w0:%f L:%i b1:%i\n", b0, cur_mp->w0, L, b1);
#endif
// decode gain vector
@ -268,7 +268,7 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
deltaGamma = AmbeDg[b2];
cur_mp->gamma = deltaGamma + ((float) 0.5 * prev_mp->gamma);
#ifdef AMBE_DEBUG
printf ("b2: %i, deltaGamma: %f gamma: %f gamma-1: %f\n", b2, deltaGamma, cur_mp->gamma, prev_mp->gamma);
fprintf (stderr,"b2: %i, deltaGamma: %f gamma: %f gamma-1: %f\n", b2, deltaGamma, cur_mp->gamma, prev_mp->gamma);
#endif
@ -305,7 +305,7 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
Gm[8] = AmbePRBA58[b4][3];
#ifdef AMBE_DEBUG
printf ("b3: %i Gm[2]: %f Gm[3]: %f Gm[4]: %f b4: %i Gm[5]: %f Gm[6]: %f Gm[7]: %f Gm[8]: %f\n", b3, Gm[2], Gm[3], Gm[4], b4, Gm[5], Gm[6], Gm[7], Gm[8]);
fprintf (stderr,"b3: %i Gm[2]: %f Gm[3]: %f Gm[4]: %f b4: %i Gm[5]: %f Gm[6]: %f Gm[7]: %f Gm[8]: %f\n", b3, Gm[2], Gm[3], Gm[4], b4, Gm[5], Gm[6], Gm[7], Gm[8]);
#endif
// compute Ri
@ -326,11 +326,11 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
}
Ri[i] = sum;
#ifdef AMBE_DEBUG
printf ("R%i: %f ", i, Ri[i]);
fprintf (stderr,"R%i: %f ", i, Ri[i]);
#endif
}
#ifdef AMBE_DEBUG
printf ("\n");
fprintf (stderr,"\n");
#endif
// generate first to elements of each Ci,k block from PRBA vector
@ -380,8 +380,8 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
Ji[3] = AmbeLmprbl[L][2];
Ji[4] = AmbeLmprbl[L][3];
#ifdef AMBE_DEBUG
printf ("Ji[1]: %i Ji[2]: %i Ji[3]: %i Ji[4]: %i\n", Ji[1], Ji[2], Ji[3], Ji[4]);
printf ("b5: %i b6: %i b7: %i b8: %i\n", b5, b6, b7, b8);
fprintf (stderr,"Ji[1]: %i Ji[2]: %i Ji[3]: %i Ji[4]: %i\n", Ji[1], Ji[2], Ji[3], Ji[4]);
fprintf (stderr,"b5: %i b6: %i b7: %i b8: %i\n", b5, b6, b7, b8);
#endif
// Load Ci,k with the values from the HOC tables
@ -397,7 +397,7 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
{
Cik[1][k] = AmbeHOCb5[b5][k - 3];
#ifdef AMBE_DEBUG
printf ("C1,%i: %f ", k, Cik[1][k]);
fprintf (stderr,"C1,%i: %f ", k, Cik[1][k]);
#endif
}
}
@ -411,7 +411,7 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
{
Cik[2][k] = AmbeHOCb6[b6][k - 3];
#ifdef AMBE_DEBUG
printf ("C2,%i: %f ", k, Cik[2][k]);
fprintf (stderr,"C2,%i: %f ", k, Cik[2][k]);
#endif
}
}
@ -425,7 +425,7 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
{
Cik[3][k] = AmbeHOCb7[b7][k - 3];
#ifdef AMBE_DEBUG
printf ("C3,%i: %f ", k, Cik[3][k]);
fprintf (stderr,"C3,%i: %f ", k, Cik[3][k]);
#endif
}
}
@ -439,12 +439,12 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
{
Cik[4][k] = AmbeHOCb8[b8][k - 3];
#ifdef AMBE_DEBUG
printf ("C4,%i: %f ", k, Cik[4][k]);
fprintf (stderr,"C4,%i: %f ", k, Cik[4][k]);
#endif
}
}
#ifdef AMBE_DEBUG
printf ("\n");
fprintf (stderr,"\n");
#endif
// inverse DCT each Ci,k to give ci,j (Tl)
@ -466,13 +466,13 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
ak = 2;
}
#ifdef AMBE_DEBUG
printf ("j: %i Cik[%i][%i]: %f ", j, i, k, Cik[i][k]);
fprintf (stderr,"j: %i Cik[%i][%i]: %f ", j, i, k, Cik[i][k]);
#endif
sum = sum + ((float) ak * Cik[i][k] * cosf ((M_PI * (float) (k - 1) * ((float) j - (float) 0.5)) / (float) ji));
}
Tl[l] = sum;
#ifdef AMBE_DEBUG
printf ("Tl[%i]: %f\n", l, Tl[l]);
fprintf (stderr,"Tl[%i]: %f\n", l, Tl[l]);
#endif
l++;
}
@ -501,20 +501,20 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
flokl[l] = ((float) prev_mp->L / (float) cur_mp->L) * (float) l;
intkl[l] = (int) (flokl[l]);
#ifdef AMBE_DEBUG
printf ("flok%i: %f, intk%i: %i ", l, flokl[l], l, intkl[l]);
fprintf (stderr,"flok%i: %f, intk%i: %i ", l, flokl[l], l, intkl[l]);
#endif
// eq. 41
deltal[l] = flokl[l] - (float) intkl[l];
#ifdef AMBE_DEBUG
printf ("delta%i: %f ", l, deltal[l]);
fprintf (stderr,"delta%i: %f ", l, deltal[l]);
#endif
// eq 43
Sum43 = Sum43 + ((((float) 1 - deltal[l]) * prev_mp->log2Ml[intkl[l]]) + (deltal[l] * prev_mp->log2Ml[intkl[l] + 1]));
}
Sum43 = (((float) 0.65 / (float) cur_mp->L) * Sum43);
#ifdef AMBE_DEBUG
printf ("\n");
printf ("Sum43: %f\n", Sum43);
fprintf (stderr,"\n");
fprintf (stderr,"Sum43: %f\n", Sum43);
#endif
// Part 2
@ -543,10 +543,10 @@ mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
cur_mp->Ml[l] = unvc * exp ((float) 0.693 * cur_mp->log2Ml[l]);
}
#ifdef AMBE_DEBUG
printf ("flokl[%i]: %f, intkl[%i]: %i ", l, flokl[l], l, intkl[l]);
printf ("deltal[%i]: %f ", l, deltal[l]);
printf ("prev_mp->log2Ml[%i]: %f\n", l, prev_mp->log2Ml[intkl[l]]);
printf ("BigGamma: %f c1: %f c2: %f Sum43: %f Tl[%i]: %f log2Ml[%i]: %f Ml[%i]: %f\n", BigGamma, c1, c2, Sum43, l, Tl[l], l, cur_mp->log2Ml[l], l, cur_mp->Ml[l]);
fprintf (stderr,"flokl[%i]: %f, intkl[%i]: %i ", l, flokl[l], l, intkl[l]);
fprintf (stderr,"deltal[%i]: %f ", l, deltal[l]);
fprintf (stderr,"prev_mp->log2Ml[%i]: %f\n", l, prev_mp->log2Ml[intkl[l]]);
fprintf (stderr,"BigGamma: %f c1: %f c2: %f Sum43: %f Tl[%i]: %f log2Ml[%i]: %f Ml[%i]: %f\n", BigGamma, c1, c2, Sum43, l, Tl[l], l, cur_mp->log2Ml[l], l, cur_mp->Ml[l]);
#endif
}

View File

@ -33,9 +33,9 @@ mbe_dumpImbe7100x4400Data (char *imbe_d)
{
if ((i == 7) || (i == 19) || (i == 31) || (i == 43) || (i == 54) || (i == 65))
{
printf (" ");
fprintf (stderr," ");
}
printf ("%i", *imbe);
fprintf (stderr,"%i", *imbe);
imbe++;
}
}
@ -51,21 +51,21 @@ mbe_dumpImbe7100x4400Frame (char imbe_fr[7][24])
{
if (j == 11)
{
printf (" ");
fprintf (stderr," ");
}
printf ("%i", imbe_fr[0][j]);
fprintf (stderr,"%i", imbe_fr[0][j]);
}
printf (" ");
fprintf (stderr," ");
for (j = 23; j >= 0; j--)
{
if (j == 11)
{
printf (" ");
fprintf (stderr," ");
}
printf ("%i", imbe_fr[1][j]);
fprintf (stderr,"%i", imbe_fr[1][j]);
}
printf (" ");
fprintf (stderr," ");
for (i = 2; i < 4; i++)
{
@ -73,11 +73,11 @@ mbe_dumpImbe7100x4400Frame (char imbe_fr[7][24])
{
if (j == 10)
{
printf (" ");
fprintf (stderr," ");
}
printf ("%i", imbe_fr[i][j]);
fprintf (stderr,"%i", imbe_fr[i][j]);
}
printf (" ");
fprintf (stderr," ");
}
for (i = 4; i < 6; i++)
{
@ -85,15 +85,15 @@ mbe_dumpImbe7100x4400Frame (char imbe_fr[7][24])
{
if (j == 3)
{
printf (" ");
fprintf (stderr," ");
}
printf ("%i", imbe_fr[i][j]);
fprintf (stderr,"%i", imbe_fr[i][j]);
}
printf (" ");
fprintf (stderr," ");
}
for (j = 22; j >= 0; j--)
{
printf ("%i", imbe_fr[6][j]);
fprintf (stderr,"%i", imbe_fr[6][j]);
}
}

View File

@ -32,7 +32,7 @@ mbe_dumpImbe4400Data (char *imbe_d)
imbe = imbe_d;
for (i = 0; i < 88; i++)
{
printf ("%i", *imbe);
fprintf (stderr,"%i", *imbe);
imbe++;
}
}
@ -49,9 +49,9 @@ mbe_dumpImbe7200x4400Data (char *imbe_d)
{
if ((i == 12) || (i == 24) || (i == 36) || (i == 48) || (i == 59) || (i == 70) || (i == 81))
{
printf (" ");
fprintf (stderr," ");
}
printf ("%i", *imbe);
fprintf (stderr,"%i", *imbe);
imbe++;
}
}
@ -67,21 +67,21 @@ mbe_dumpImbe7200x4400Frame (char imbe_fr[8][23])
{
for (j = 22; j >= 0; j--)
{
printf ("%i", imbe_fr[i][j]);
fprintf (stderr,"%i", imbe_fr[i][j]);
}
printf (" ");
fprintf (stderr," ");
}
for (i = 4; i < 7; i++)
{
for (j = 14; j >= 0; j--)
{
printf ("%i", imbe_fr[i][j]);
fprintf (stderr,"%i", imbe_fr[i][j]);
}
printf (" ");
fprintf (stderr," ");
}
for (j = 6; j >= 0; j--)
{
printf ("%i", imbe_fr[7][j]);
fprintf (stderr,"%i", imbe_fr[7][j]);
}
}
@ -196,13 +196,13 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
if ((b0 >= 216) && (b0 <= 219))
{
#ifdef IMBE_DEBUG
printf ("Silence\n");
fprintf (stderr,"Silence\n");
#endif
}
else
{
#ifdef IMBE_DEBUG
printf ("Invalid fundamental frequency\n");
fprintf (stderr,"Invalid fundamental frequency\n");
#endif
}
return (1);
@ -215,7 +215,7 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
if ((L > 56) || (L < 9))
{
#ifdef IMBE_DEBUG
printf ("invalid L: %i\n", L);
fprintf (stderr,"invalid L: %i\n", L);
#endif
return (1);
}
@ -235,7 +235,7 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
}
#ifdef IMBE_DEBUG
printf ("b0:%i L:%i K:%i\n", b0, L, K);
fprintf (stderr,"b0:%i L:%i K:%i\n", b0, L, K);
#endif
// read bits from imbe_d into b0..bL+1
@ -245,7 +245,7 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
{
bb[*bo1][*bo2] = imbe_d[i];
#ifdef IMBE_DEBUG
printf ("bo1: %i,bo2: %i, ", *bo1, *bo2);
fprintf (stderr,"bo1: %i,bo2: %i, ", *bo1, *bo2);
#endif
bo1 += 2;
bo2 += 2;
@ -286,11 +286,11 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
b2 = strtol (tmpstr, NULL, 2);
Gm[1] = B2[b2];
#ifdef IMBE_DEBUG
printf ("G1: %e, %s, %i\n", Gm[1], tmpstr, b2);
fprintf (stderr,"G1: %e, %s, %i\n", Gm[1], tmpstr, b2);
#endif
#ifdef IMBE_DEBUG
printf ("tmpstr: %s b2: %i g1: %e\n", tmpstr, b2, Gm[1]);
fprintf (stderr,"tmpstr: %s b2: %i g1: %e\n", tmpstr, b2, Gm[1]);
#endif
// decode G2..G6 (from b3..b7) with annex E
@ -310,7 +310,7 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
bm = strtol (tmpstr, NULL, 2);
Gm[i] = (*ba2 * ((float) bm - powf (2, (*ba1 - 1)) + (float) 0.5));
#ifdef IMBE_DEBUG
printf ("G%i: %e, %s, %i, ba1: %e, ba2: %e\n", i, Gm[i], tmpstr, bm, *ba1, *ba2);
fprintf (stderr,"G%i: %e, %s, %i, ba1: %e, ba2: %e\n", i, Gm[i], tmpstr, bm, *ba1, *ba2);
#endif
ba1 += 2;
ba2 += 2;
@ -332,16 +332,16 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
}
sum = sum + ((float) am * Gm[m] * cosf ((M_PI * (float) (m - 1) * ((float) i - 0.5)) / (float) 6));
#ifdef IMBE_DEBUG
printf ("sum: %e ", sum);
fprintf (stderr,"sum: %e ", sum);
#endif
}
Ri[i] = sum;
#ifdef IMBE_DEBUG
printf ("R%i: %e\n", i, Ri[i]);
fprintf (stderr,"R%i: %e\n", i, Ri[i]);
#endif
}
#ifdef IMBE_DEBUG
printf ("R1: %e\n", Ri[1]);
fprintf (stderr,"R1: %e\n", Ri[1]);
#endif
// load b8..bL+1 into Ci,k
@ -395,10 +395,10 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
}
}
#ifdef IMBE_DEBUG
printf ("T1: %e\n", Tl[1]);
fprintf (stderr,"T1: %e\n", Tl[1]);
#endif
// determine log2Ml by applying ci,j to previous log2Ml
// determine log2Ml by applying ci,j to previous log2Ml
if (cur_mp->L <= 15)
{
rho = 0.4;
@ -431,12 +431,12 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
flokl[l] = ((float) prev_mp->L / (float) cur_mp->L) * (float) l;
intkl[l] = (int) (flokl[l]);
#ifdef IMBE_DEBUG
printf ("flokl: %e, intkl: %i ", flokl[l], intkl[l]);
fprintf (stderr,"flokl: %e, intkl: %i ", flokl[l], intkl[l]);
#endif
// eq. 76
deltal[l] = flokl[l] - (float) intkl[l];
#ifdef IMBE_DEBUG
printf ("deltal: %e ", deltal[l]);
fprintf (stderr,"deltal: %e ", deltal[l]);
#endif
// eq 77
Sum77 = Sum77 + ((((float) 1 - deltal[l]) * prev_mp->log2Ml[intkl[l]]) + (deltal[l] * prev_mp->log2Ml[intkl[l] + 1]));
@ -444,7 +444,7 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
Sum77 = ((rho / (float) cur_mp->L) * Sum77);
#ifdef IMBE_DEBUG
printf ("Sum77: %e\n", Sum77);
fprintf (stderr,"Sum77: %e\n", Sum77);
#endif
// Part 2
@ -455,7 +455,7 @@ mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp)
cur_mp->log2Ml[l] = Tl[l] + c1 + c2 - Sum77;
cur_mp->Ml[l] = powf (2, cur_mp->log2Ml[l]);
#ifdef IMBE_DEBUG
printf ("rho: %e c1: %e c2: %e Sum77: %e T%i: %e log2M%i: %e M%i: %e\n", rho, c1, c2, Sum77, l, Tl[l], l, cur_mp->log2Ml[l], l, cur_mp->Ml[l]);
fprintf (stderr,"rho: %e c1: %e c2: %e Sum77: %e T%i: %e log2M%i: %e M%i: %e\n", rho, c1, c2, Sum77, l, Tl[l], l, cur_mp->log2Ml[l], l, cur_mp->Ml[l]);
#endif
}

View File

@ -240,7 +240,7 @@ mbe_synthesizeSpeechf (float *aout_buf, mbe_parms * cur_mp, mbe_parms * prev_mp,
if ((uvquality < 1) || (uvquality > 64))
{
printf ("\nmbelib: Error - uvquality must be within the range 1 - 64, setting to default value of 3\n");
fprintf (stderr,"\nmbelib: Error - uvquality must be within the range 1 - 64, setting to default value of 3\n");
uvquality = 3;
}
@ -482,14 +482,14 @@ mbe_floattoshort (float *float_buf, short *aout_buf)
if (audio > 32760)
{
#ifdef MBE_DEBUG
printf ("audio clip: %f\n", audio);
fprintf (stderr,"audio clip: %f\n", audio);
#endif
audio = 32760;
}
else if (audio < -32760)
{
#ifdef MBE_DEBUG
printf ("audio clip: %f\n", audio);
fprintf (stderr,"audio clip: %f\n", audio);
#endif
audio = -32760;
}

View File

@ -17,8 +17,8 @@
#ifndef _MBELIB_H
#define _MBELIB_H
#define MBELIB_VERSION "1.3.0"
//increment to 1.3.1 to easily differentiate this version when reporting
#define MBELIB_VERSION "1.3.1"
struct mbe_parameters
{