diff --git a/CHANGELOG b/CHANGELOG index b8e9d61..b8c8f11 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 diff --git a/README.md b/README.md index db8cf29..1740705 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/ambe3600x2400.c b/ambe3600x2400.c index c4ed4c2..73d11fc 100644 --- a/ambe3600x2400.c +++ b/ambe3600x2400.c @@ -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 } diff --git a/ambe3600x2450.c b/ambe3600x2450.c index 020dc8f..5122f04 100644 --- a/ambe3600x2450.c +++ b/ambe3600x2450.c @@ -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 } diff --git a/imbe7100x4400.c b/imbe7100x4400.c index fce99c0..28a2882 100644 --- a/imbe7100x4400.c +++ b/imbe7100x4400.c @@ -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]); } } diff --git a/imbe7200x4400.c b/imbe7200x4400.c index a93726f..e3fa243 100644 --- a/imbe7200x4400.c +++ b/imbe7200x4400.c @@ -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 } diff --git a/mbelib.c b/mbelib.c index d43dd7c..186fc60 100644 --- a/mbelib.c +++ b/mbelib.c @@ -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; } diff --git a/mbelib.h b/mbelib.h index cf0f402..67daf36 100644 --- a/mbelib.h +++ b/mbelib.h @@ -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 {