1 /*
2  * Copyright (C) 2010 mbelib Author
3  * GPG Key ID: 0xEA5EFE2C (9E7A 5527 9CDC EBF7 BF1B  D772 4F98 E863 EA5E FE2C)
4  *
5  * Permission to use, copy, modify, and/or distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15  * PERFORMANCE OF THIS SOFTWARE.
16  */
17 
18 #ifndef _MBELIB_H
19 #define _MBELIB_H
20 
21 #define MBELIB_VERSION "1.3.0"
22 
23 struct mbe_parameters
24 {
25   float w0;
26   int L;
27   int K;
28   int Vl[57];
29   float Ml[57];
30   float log2Ml[57];
31   float PHIl[57];
32   float PSIl[57];
33   float gamma;
34   int un;
35   int repeat;
36 };
37 
38 typedef struct mbe_parameters mbe_parms;
39 
40 /*
41  * Prototypes from ecc.c
42  */
43 void mbe_checkGolayBlock (long int *block);
44 int mbe_golay2312 (char *in, char *out);
45 int mbe_hamming1511 (char *in, char *out);
46 int mbe_7100x4400hamming1511 (char *in, char *out);
47 
48 /*
49  * Prototypes from ambe3600x2400.c
50  */
51 int mbe_eccAmbe3600x2400C0 (char ambe_fr[4][24]);
52 int mbe_eccAmbe3600x2400Data (char ambe_fr[4][24], char *ambe_d);
53 int mbe_decodeAmbe2400Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp);
54 void mbe_demodulateAmbe3600x2400Data (char ambe_fr[4][24]);
55 void mbe_processAmbe2400Dataf (float *aout_buf, int *errs, int *errs2, char *err_str, char ambe_d[49], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
56 void mbe_processAmbe2400Data (short *aout_buf, int *errs, int *errs2, char *err_str, char ambe_d[49], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
57 void mbe_processAmbe3600x2400Framef (float *aout_buf, int *errs, int *errs2, char *err_str, char ambe_fr[4][24], char ambe_d[49], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
58 void mbe_processAmbe3600x2400Frame (short *aout_buf, int *errs, int *errs2, char *err_str, char ambe_fr[4][24], char ambe_d[49], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
59 
60 /*
61  * Prototypes from ambe3600x2450.c
62  */
63 int mbe_eccAmbe3600x2450C0 (char ambe_fr[4][24]);
64 int mbe_eccAmbe3600x2450Data (char ambe_fr[4][24], char *ambe_d);
65 int mbe_decodeAmbe2450Parms (char *ambe_d, mbe_parms * cur_mp, mbe_parms * prev_mp);
66 void mbe_demodulateAmbe3600x2450Data (char ambe_fr[4][24]);
67 void mbe_processAmbe2450Dataf (float *aout_buf, int *errs, int *errs2, char *err_str, char ambe_d[49], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
68 void mbe_processAmbe2450Data (short *aout_buf, int *errs, int *errs2, char *err_str, char ambe_d[49], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
69 void mbe_processAmbe3600x2450Framef (float *aout_buf, int *errs, int *errs2, char *err_str, char ambe_fr[4][24], char ambe_d[49], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
70 void mbe_processAmbe3600x2450Frame (short *aout_buf, int *errs, int *errs2, char *err_str, char ambe_fr[4][24], char ambe_d[49], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
71 
72 /*
73  * Prototypes from imbe7200x4400.c
74  */
75 void mbe_dumpImbe4400Data (char *imbe_d);
76 void mbe_dumpImbe7200x4400Data (char *imbe_d);
77 void mbe_dumpImbe7200x4400Frame (char imbe_fr[8][23]);
78 int mbe_eccImbe7200x4400C0 (char imbe_fr[8][23]);
79 int mbe_eccImbe7200x4400Data (char imbe_fr[8][23], char *imbe_d);
80 int mbe_decodeImbe4400Parms (char *imbe_d, mbe_parms * cur_mp, mbe_parms * prev_mp);
81 void mbe_demodulateImbe7200x4400Data (char imbe[8][23]);
82 void mbe_processImbe4400Dataf (float *aout_buf, int *errs, int *errs2, char *err_str, char imbe_d[88], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
83 void mbe_processImbe4400Data (short *aout_buf, int *errs, int *errs2, char *err_str, char imbe_d[88], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
84 void mbe_processImbe7200x4400Framef (float *aout_buf, int *errs, int *errs2, char *err_str, char imbe_fr[8][23], char imbe_d[88], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
85 void mbe_processImbe7200x4400Frame (short *aout_buf, int *errs, int *errs2, char *err_str, char imbe_fr[8][23], char imbe_d[88], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
86 
87 /*
88  * Prototypes from imbe7100x4400.c
89  */
90 void mbe_dumpImbe7100x4400Data (char *imbe_d);
91 void mbe_dumpImbe7100x4400Frame (char imbe_fr[7][24]);
92 int mbe_eccImbe7100x4400C0 (char imbe_fr[7][24]);
93 int mbe_eccImbe7100x4400Data (char imbe_fr[7][24], char *imbe_d);
94 void mbe_demodulateImbe7100x4400Data (char imbe[7][24]);
95 void mbe_convertImbe7100to7200 (char *imbe_d);
96 void mbe_processImbe7100x4400Framef (float *aout_buf, int *errs, int *errs2, char *err_str, char imbe_fr[7][24], char imbe_d[88], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
97 void mbe_processImbe7100x4400Frame (short *aout_buf, int *errs, int *errs2, char *err_str, char imbe_fr[7][24], char imbe_d[88], mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced, int uvquality);
98 
99 /*
100  * Prototypes from mbelib.c
101  */
102 void mbe_printVersion (char *str);
103 void mbe_moveMbeParms (mbe_parms * cur_mp, mbe_parms * prev_mp);
104 void mbe_useLastMbeParms (mbe_parms * cur_mp, mbe_parms * prev_mp);
105 void mbe_initMbeParms (mbe_parms * cur_mp, mbe_parms * prev_mp, mbe_parms * prev_mp_enhanced);
106 void mbe_spectralAmpEnhance (mbe_parms * cur_mp);
107 void mbe_synthesizeSilencef (float *aout_buf);
108 void mbe_synthesizeSilence (short *aout_buf);
109 void mbe_synthesizeSpeechf (float *aout_buf, mbe_parms * cur_mp, mbe_parms * prev_mp, int uvquality);
110 void mbe_synthesizeSpeech (short *aout_buf, mbe_parms * cur_mp, mbe_parms * prev_mp, int uvquality);
111 void mbe_floattoshort (float *float_buf, short *aout_buf);
112 
113 #endif
114