GNU Radio's SATNOGS Package
fec.h
Go to the documentation of this file.
1/* User include file for libfec
2 * Copyright 2004, Phil Karn, KA9Q
3 * May be used under the terms of the GNU Lesser General Public License (LGPL)
4 */
5
6#ifndef _FEC_H_
7#define _FEC_H_
8
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14/* r=1/2 k=7 convolutional encoder polynomials
15 * The NASA-DSN convention is to use V27POLYA inverted, then V27POLYB
16 * The CCSDS/NASA-GSFC convention is to use V27POLYB, then V27POLYA inverted
17 */
18#define V27POLYA 0x6d
19#define V27POLYB 0x4f
20
23SATNOGS_API int init_viterbi27(void* vp, int starting_state);
24SATNOGS_API int update_viterbi27_blk(void* vp, unsigned char sym[], int npairs);
26 unsigned char* data,
27 unsigned int nbits,
28 unsigned int endstate);
30chainback_viterbi27_unpacked_trunc(void* p, unsigned char* data, unsigned int nbits);
32
33#ifdef __VEC__
34SATNOGS_API void* create_viterbi27_av(int len);
35SATNOGS_API void set_viterbi27_polynomial_av(int polys[2]);
36SATNOGS_API int init_viterbi27_av(void* p, int starting_state);
37SATNOGS_API int chainback_viterbi27_av(void* p,
38 unsigned char* data,
39 unsigned int nbits,
40 unsigned int endstate);
41SATNOGS_API void delete_viterbi27_av(void* p);
42SATNOGS_API int update_viterbi27_blk_av(void* p, unsigned char* syms, int nbits);
43#endif
44
45#ifdef __i386__
46SATNOGS_API void* create_viterbi27_mmx(int len);
47SATNOGS_API void set_viterbi27_polynomial_mmx(int polys[2]);
48SATNOGS_API int init_viterbi27_mmx(void* p, int starting_state);
49SATNOGS_API int chainback_viterbi27_mmx(void* p,
50 unsigned char* data,
51 unsigned int nbits,
52 unsigned int endstate);
53SATNOGS_API void delete_viterbi27_mmx(void* p);
54SATNOGS_API int update_viterbi27_blk_mmx(void* p, unsigned char* syms, int nbits);
55
56SATNOGS_API void* create_viterbi27_sse(int len);
57SATNOGS_API void set_viterbi27_polynomial_sse(int polys[2]);
58SATNOGS_API int init_viterbi27_sse(void* p, int starting_state);
59SATNOGS_API int chainback_viterbi27_sse(void* p,
60 unsigned char* data,
61 unsigned int nbits,
62 unsigned int endstate);
63SATNOGS_API void delete_viterbi27_sse(void* p);
64SATNOGS_API int update_viterbi27_blk_sse(void* p, unsigned char* syms, int nbits);
65
66SATNOGS_API void* create_viterbi27_sse2(int len);
67SATNOGS_API void set_viterbi27_polynomial_sse2(int polys[2]);
68SATNOGS_API int init_viterbi27_sse2(void* p, int starting_state);
69SATNOGS_API int chainback_viterbi27_sse2(void* p,
70 unsigned char* data,
71 unsigned int nbits,
72 unsigned int endstate);
73SATNOGS_API void delete_viterbi27_sse2(void* p);
74SATNOGS_API int update_viterbi27_blk_sse2(void* p, unsigned char* syms, int nbits);
75#endif
76
79SATNOGS_API int init_viterbi27_port(void* p, int starting_state);
81 unsigned char* data,
82 unsigned int nbits,
83 unsigned int endstate);
85chainback_viterbi27_port_unpacked_trunc(void* p, unsigned char* data, unsigned int nbits);
87SATNOGS_API int update_viterbi27_blk_port(void* p, unsigned char* syms, int nbits);
88
89/* r=1/2 k=9 convolutional encoder polynomials */
90#define V29POLYA 0x1af
91#define V29POLYB 0x11d
92
95SATNOGS_API int init_viterbi29(void* vp, int starting_state);
96SATNOGS_API int update_viterbi29_blk(void* vp, unsigned char syms[], int nbits);
98 unsigned char* data,
99 unsigned int nbits,
100 unsigned int endstate);
102
103#ifdef __VEC__
104SATNOGS_API void* create_viterbi29_av(int len);
105SATNOGS_API void set_viterbi29_polynomial_av(int polys[2]);
106SATNOGS_API int init_viterbi29_av(void* p, int starting_state);
107SATNOGS_API int chainback_viterbi29_av(void* p,
108 unsigned char* data,
109 unsigned int nbits,
110 unsigned int endstate);
111SATNOGS_API void delete_viterbi29_av(void* p);
112SATNOGS_API int update_viterbi29_blk_av(void* p, unsigned char* syms, int nbits);
113#endif
114
115#ifdef __i386__
116SATNOGS_API void* create_viterbi29_mmx(int len);
117SATNOGS_API void set_viterbi29_polynomial_mmx(int polys[2]);
118SATNOGS_API int init_viterbi29_mmx(void* p, int starting_state);
119SATNOGS_API int chainback_viterbi29_mmx(void* p,
120 unsigned char* data,
121 unsigned int nbits,
122 unsigned int endstate);
123SATNOGS_API void delete_viterbi29_mmx(void* p);
124SATNOGS_API int update_viterbi29_blk_mmx(void* p, unsigned char* syms, int nbits);
125
126SATNOGS_API void* create_viterbi29_sse(int len);
127SATNOGS_API void set_viterbi29_polynomial_sse(int polys[2]);
128SATNOGS_API int init_viterbi29_sse(void* p, int starting_state);
129SATNOGS_API int chainback_viterbi29_sse(void* p,
130 unsigned char* data,
131 unsigned int nbits,
132 unsigned int endstate);
133SATNOGS_API void delete_viterbi29_sse(void* p);
134SATNOGS_API int update_viterbi29_blk_sse(void* p, unsigned char* syms, int nbits);
135
136SATNOGS_API void* create_viterbi29_sse2(int len);
137SATNOGS_API void set_viterbi29_polynomial_sse2(int polys[2]);
138SATNOGS_API int init_viterbi29_sse2(void* p, int starting_state);
139SATNOGS_API int chainback_viterbi29_sse2(void* p,
140 unsigned char* data,
141 unsigned int nbits,
142 unsigned int endstate);
143SATNOGS_API void delete_viterbi29_sse2(void* p);
144SATNOGS_API int update_viterbi29_blk_sse2(void* p, unsigned char* syms, int nbits);
145#endif
146
149SATNOGS_API int init_viterbi29_port(void* p, int starting_state);
151 unsigned char* data,
152 unsigned int nbits,
153 unsigned int endstate);
155SATNOGS_API int update_viterbi29_blk_port(void* p, unsigned char* syms, int nbits);
156
157/* r=1/3 k=9 convolutional encoder polynomials */
158#define V39POLYA 0x1ed
159#define V39POLYB 0x19b
160#define V39POLYC 0x127
161
164SATNOGS_API int init_viterbi39(void* vp, int starting_state);
165SATNOGS_API int update_viterbi39_blk(void* vp, unsigned char syms[], int nbits);
167 unsigned char* data,
168 unsigned int nbits,
169 unsigned int endstate);
171
172#ifdef __VEC__
173SATNOGS_API void* create_viterbi39_av(int len);
174SATNOGS_API void set_viterbi39_polynomial_av(int polys[3]);
175SATNOGS_API int init_viterbi39_av(void* p, int starting_state);
176SATNOGS_API int chainback_viterbi39_av(void* p,
177 unsigned char* data,
178 unsigned int nbits,
179 unsigned int endstate);
180SATNOGS_API void delete_viterbi39_av(void* p);
181SATNOGS_API int update_viterbi39_blk_av(void* p, unsigned char* syms, int nbits);
182#endif
183
184#ifdef __i386__
185SATNOGS_API void* create_viterbi39_mmx(int len);
186SATNOGS_API void set_viterbi39_polynomial_mmx(int polys[3]);
187SATNOGS_API int init_viterbi39_mmx(void* p, int starting_state);
188SATNOGS_API int chainback_viterbi39_mmx(void* p,
189 unsigned char* data,
190 unsigned int nbits,
191 unsigned int endstate);
192SATNOGS_API void delete_viterbi39_mmx(void* p);
193SATNOGS_API int update_viterbi39_blk_mmx(void* p, unsigned char* syms, int nbits);
194
195SATNOGS_API void* create_viterbi39_sse(int len);
196SATNOGS_API void set_viterbi39_polynomial_sse(int polys[3]);
197SATNOGS_API int init_viterbi39_sse(void* p, int starting_state);
198SATNOGS_API int chainback_viterbi39_sse(void* p,
199 unsigned char* data,
200 unsigned int nbits,
201 unsigned int endstate);
202SATNOGS_API void delete_viterbi39_sse(void* p);
203SATNOGS_API int update_viterbi39_blk_sse(void* p, unsigned char* syms, int nbits);
204
205SATNOGS_API void* create_viterbi39_sse2(int len);
206SATNOGS_API void set_viterbi39_polynomial_sse2(int polys[3]);
207SATNOGS_API int init_viterbi39_sse2(void* p, int starting_state);
208SATNOGS_API int chainback_viterbi39_sse2(void* p,
209 unsigned char* data,
210 unsigned int nbits,
211 unsigned int endstate);
212SATNOGS_API void delete_viterbi39_sse2(void* p);
213SATNOGS_API int update_viterbi39_blk_sse2(void* p, unsigned char* syms, int nbits);
214#endif
215
218SATNOGS_API int init_viterbi39_port(void* p, int starting_state);
220 unsigned char* data,
221 unsigned int nbits,
222 unsigned int endstate);
224SATNOGS_API int update_viterbi39_blk_port(void* p, unsigned char* syms, int nbits);
225
226/* r=1/6 k=15 Cassini convolutional encoder polynomials without symbol inversion
227 * dfree = 56
228 * These bits may be left-right flipped from some textbook representations;
229 * here I have the bits entering the shift register from the right (low) end
230 *
231 * Some other spacecraft use the same code, but with the polynomials in a different order.
232 * E.g., Mars Pathfinder and STEREO swap POLYC and POLYD. All use alternate symbol
233 * inversion, so use set_viterbi615_polynomial() as appropriate.
234 */
235#define V615POLYA 042631
236#define V615POLYB 047245
237#define V615POLYC 056507
238#define V615POLYD 073363
239#define V615POLYE 077267
240#define V615POLYF 064537
241
244SATNOGS_API int init_viterbi615(void* vp, int starting_state);
245SATNOGS_API int update_viterbi615_blk(void* vp, unsigned char* syms, int nbits);
247 unsigned char* data,
248 unsigned int nbits,
249 unsigned int endstate);
251
252#ifdef __VEC__
253SATNOGS_API void* create_viterbi615_av(int len);
254SATNOGS_API void set_viterbi615_polynomial_av(int polys[6]);
255SATNOGS_API int init_viterbi615_av(void* p, int starting_state);
256SATNOGS_API int chainback_viterbi615_av(void* p,
257 unsigned char* data,
258 unsigned int nbits,
259 unsigned int endstate);
260SATNOGS_API void delete_viterbi615_av(void* p);
261SATNOGS_API int update_viterbi615_blk_av(void* p, unsigned char* syms, int nbits);
262#endif
263
264#ifdef __i386__
265SATNOGS_API void* create_viterbi615_mmx(int len);
266SATNOGS_API void set_viterbi615_polynomial_mmx(int polys[6]);
267SATNOGS_API int init_viterbi615_mmx(void* p, int starting_state);
268SATNOGS_API int chainback_viterbi615_mmx(void* p,
269 unsigned char* data,
270 unsigned int nbits,
271 unsigned int endstate);
272SATNOGS_API void delete_viterbi615_mmx(void* p);
273SATNOGS_API int update_viterbi615_blk_mmx(void* p, unsigned char* syms, int nbits);
274
275SATNOGS_API void* create_viterbi615_sse(int len);
276SATNOGS_API void set_viterbi615_polynomial_sse(int polys[6]);
277SATNOGS_API int init_viterbi615_sse(void* p, int starting_state);
278SATNOGS_API int chainback_viterbi615_sse(void* p,
279 unsigned char* data,
280 unsigned int nbits,
281 unsigned int endstate);
282SATNOGS_API void delete_viterbi615_sse(void* p);
283SATNOGS_API int update_viterbi615_blk_sse(void* p, unsigned char* syms, int nbits);
284
285SATNOGS_API void* create_viterbi615_sse2(int len);
286SATNOGS_API void set_viterbi615_polynomial_sse2(int polys[6]);
287SATNOGS_API int init_viterbi615_sse2(void* p, int starting_state);
288SATNOGS_API int chainback_viterbi615_sse2(void* p,
289 unsigned char* data,
290 unsigned int nbits,
291 unsigned int endstate);
292SATNOGS_API void delete_viterbi615_sse2(void* p);
293SATNOGS_API int update_viterbi615_blk_sse2(void* p, unsigned char* syms, int nbits);
294#endif
295
298SATNOGS_API int init_viterbi615_port(void* p, int starting_state);
300 unsigned char* data,
301 unsigned int nbits,
302 unsigned int endstate);
304SATNOGS_API int update_viterbi615_blk_port(void* p, unsigned char* syms, int nbits);
305
306/* General purpose RS codec, 8-bit symbols */
307SATNOGS_API void encode_rs_char(void* rs, unsigned char* data, unsigned char* parity);
308SATNOGS_API int decode_rs_char(void* rs, unsigned char* data, int* eras_pos, int no_eras);
309SATNOGS_API void*
310init_rs_char(int symsize, int gfpoly, int fcr, int prim, int nroots, int pad);
312
313/* General purpose RS codec, integer symbols */
314SATNOGS_API void encode_rs_int(void* rs, int* data, int* parity);
315SATNOGS_API int decode_rs_int(void* rs, int* data, int* eras_pos, int no_eras);
316SATNOGS_API void*
317init_rs_int(int symsize, int gfpoly, int fcr, int prim, int nroots, int pad);
319
320/* CCSDS standard (255,223) RS codec with conventional (*not* dual-basis)
321 * symbol representation
322 */
323SATNOGS_API void encode_rs_8(unsigned char* data, unsigned char* parity, int pad);
324SATNOGS_API int decode_rs_8(unsigned char* data, int* eras_pos, int no_eras, int pad);
325
326/* CCSDS standard (255,223) RS codec with dual-basis symbol representation */
327SATNOGS_API void encode_rs_ccsds(unsigned char* data, unsigned char* parity, int pad);
328SATNOGS_API int decode_rs_ccsds(unsigned char* data, int* eras_pos, int no_eras, int pad);
329
330/* Tables to map from conventional->dual (Taltab) and
331 * dual->conventional (Tal1tab) bases
332 */
333extern unsigned char Taltab[], Tal1tab[];
334
335/* CPU SIMD instruction set available */
336extern enum cpu_mode { UNKNOWN = 0, PORT, MMX, SSE, SSE2, ALTIVEC } Cpu_mode;
337SATNOGS_API void find_cpu_mode(void); /* Call this once at startup to set Cpu_mode */
338
339/* Determine parity of argument: 1 = odd, 0 = even */
340#if defined(__i386__) || defined(__x86_64__)
341static inline int parityb(unsigned char x)
342{
343 __asm__ __volatile__("test %1,%1;setpo %0" : "=q"(x) : "q"(x));
344 return x;
345}
346#else
348
349static inline int parityb(unsigned char x)
350{
351 extern unsigned char Partab[256];
352 extern int P_init;
353 if (!P_init) {
354 partab_init();
355 }
356 return Partab[x];
357}
358#endif
359
360static inline int parity(int x)
361{
362 /* Fold down to one byte */
363 x ^= (x >> 16);
364 x ^= (x >> 8);
365 return parityb(x);
366}
367
368/* Useful utilities for simulation */
369SATNOGS_API double normal_rand(double mean, double std_dev);
370SATNOGS_API unsigned char
371addnoise(int sym, double amp, double gain, double offset, int clip);
372
373extern int Bitcnt[];
374
375/* Dot product functions */
376SATNOGS_API void* initdp(signed short coeffs[], int len);
377SATNOGS_API void freedp(void* dp);
378SATNOGS_API long dotprod(void* dp, signed short a[]);
379
380SATNOGS_API void* initdp_port(signed short coeffs[], int len);
382SATNOGS_API long dotprod_port(void* dp, signed short a[]);
383
384#ifdef __i386__
385SATNOGS_API void* initdp_mmx(signed short coeffs[], int len);
386SATNOGS_API void freedp_mmx(void* dp);
387SATNOGS_API long dotprod_mmx(void* dp, signed short a[]);
388
389SATNOGS_API void* initdp_sse(signed short coeffs[], int len);
390SATNOGS_API void freedp_sse(void* dp);
391SATNOGS_API long dotprod_sse(void* dp, signed short a[]);
392
393SATNOGS_API void* initdp_sse2(signed short coeffs[], int len);
394SATNOGS_API void freedp_sse2(void* dp);
395SATNOGS_API long dotprod_sse2(void* dp, signed short a[]);
396#endif
397
398#ifdef __x86_64__
399SATNOGS_API void* initdp_sse2(signed short coeffs[], int len);
400SATNOGS_API void freedp_sse2(void* dp);
401SATNOGS_API long dotprod_sse2(void* dp, signed short a[]);
402#endif
403
404#ifdef __VEC__
405SATNOGS_API void* initdp_av(signed short coeffs[], int len);
406SATNOGS_API void freedp_av(void* dp);
407SATNOGS_API long dotprod_av(void* dp, signed short a[]);
408#endif
409
410/* Sum of squares - accepts signed shorts, produces unsigned long long */
411SATNOGS_API unsigned long long sumsq(signed short* in, int cnt);
412SATNOGS_API unsigned long long sumsq_port(signed short* in, int cnt);
413
414#ifdef __i386__
415SATNOGS_API unsigned long long sumsq_mmx(signed short* in, int cnt);
416SATNOGS_API unsigned long long sumsq_sse(signed short* in, int cnt);
417SATNOGS_API unsigned long long sumsq_sse2(signed short* in, int cnt);
418#endif
419#ifdef __x86_64__
420SATNOGS_API unsigned long long sumsq_sse2(signed short* in, int cnt);
421#endif
422#ifdef __VEC__
423SATNOGS_API unsigned long long sumsq_av(signed short* in, int cnt);
424#endif
425
426/* Low-level data structures and routines */
427
429
430#ifdef __cplusplus
431}
432#endif
433
434#endif /* _FEC_H_ */
#define SATNOGS_API
Definition: api.h:19
SATNOGS_API int init_viterbi615(void *vp, int starting_state)
SATNOGS_API int chainback_viterbi615(void *vp, unsigned char *data, unsigned int nbits, unsigned int endstate)
SATNOGS_API void * create_viterbi615(int len)
SATNOGS_API void free_rs_char(void *rs)
SATNOGS_API int decode_rs_int(void *rs, int *data, int *eras_pos, int no_eras)
SATNOGS_API int update_viterbi29_blk(void *vp, unsigned char syms[], int nbits)
SATNOGS_API void delete_viterbi29_port(void *p)
SATNOGS_API unsigned long long sumsq_port(signed short *in, int cnt)
SATNOGS_API void * create_viterbi27_port(int len)
SATNOGS_API void delete_viterbi39_port(void *p)
SATNOGS_API void * initdp(signed short coeffs[], int len)
SATNOGS_API int decode_rs_ccsds(unsigned char *data, int *eras_pos, int no_eras, int pad)
static int parity(int x)
Definition: fec.h:360
SATNOGS_API void * create_viterbi29(int len)
SATNOGS_API long dotprod_port(void *dp, signed short a[])
SATNOGS_API void * initdp_port(signed short coeffs[], int len)
SATNOGS_API void set_viterbi27_polynomial_port(int polys[2])
SATNOGS_API void free_rs_int(void *rs)
SATNOGS_API int chainback_viterbi27_port_unpacked_trunc(void *p, unsigned char *data, unsigned int nbits)
SATNOGS_API void encode_rs_ccsds(unsigned char *data, unsigned char *parity, int pad)
SATNOGS_API void delete_viterbi39(void *vp)
SATNOGS_API int init_viterbi29(void *vp, int starting_state)
SATNOGS_API void * init_rs_char(int symsize, int gfpoly, int fcr, int prim, int nroots, int pad)
SATNOGS_API int init_viterbi27_port(void *p, int starting_state)
SATNOGS_API void find_cpu_mode(void)
SATNOGS_API void delete_viterbi615_port(void *p)
SATNOGS_API int chainback_viterbi615_port(void *p, unsigned char *data, unsigned int nbits, unsigned int endstate)
SATNOGS_API void * init_rs_int(int symsize, int gfpoly, int fcr, int prim, int nroots, int pad)
SATNOGS_API int decode_rs_char(void *rs, unsigned char *data, int *eras_pos, int no_eras)
SATNOGS_API int chainback_viterbi29_port(void *p, unsigned char *data, unsigned int nbits, unsigned int endstate)
SATNOGS_API int init_viterbi29_port(void *p, int starting_state)
SATNOGS_API void delete_viterbi27(void *vp)
SATNOGS_API int init_viterbi39(void *vp, int starting_state)
SATNOGS_API int update_viterbi27_blk_port(void *p, unsigned char *syms, int nbits)
SATNOGS_API int update_viterbi29_blk_port(void *p, unsigned char *syms, int nbits)
SATNOGS_API void delete_viterbi29(void *vp)
SATNOGS_API int chainback_viterbi29(void *vp, unsigned char *data, unsigned int nbits, unsigned int endstate)
SATNOGS_API void delete_viterbi27_port(void *p)
SATNOGS_API int decode_rs_8(unsigned char *data, int *eras_pos, int no_eras, int pad)
SATNOGS_API void encode_rs_char(void *rs, unsigned char *data, unsigned char *parity)
SATNOGS_API void * create_viterbi39_port(int len)
SATNOGS_API long dotprod(void *dp, signed short a[])
SATNOGS_API void * create_viterbi27(int len)
SATNOGS_API int update_viterbi615_blk_port(void *p, unsigned char *syms, int nbits)
SATNOGS_API unsigned long long sumsq(signed short *in, int cnt)
SATNOGS_API int update_viterbi27_blk(void *vp, unsigned char sym[], int npairs)
SATNOGS_API void set_viterbi29_polynomial_port(int polys[2])
SATNOGS_API void set_viterbi615_polynomial(int polys[6])
SATNOGS_API int chainback_viterbi27_unpacked_trunc(void *p, unsigned char *data, unsigned int nbits)
SATNOGS_API void freedp_port(void *dp)
SATNOGS_API void * create_viterbi615_port(int len)
cpu_mode
Definition: fec.h:336
@ SSE
Definition: fec.h:336
@ UNKNOWN
Definition: fec.h:336
@ PORT
Definition: fec.h:336
@ SSE2
Definition: fec.h:336
@ MMX
Definition: fec.h:336
@ ALTIVEC
Definition: fec.h:336
SATNOGS_API int chainback_viterbi39_port(void *p, unsigned char *data, unsigned int nbits, unsigned int endstate)
void partab_init()
SATNOGS_API void delete_viterbi615(void *vp)
SATNOGS_API int chainback_viterbi39(void *vp, unsigned char *data, unsigned int nbits, unsigned int endstate)
SATNOGS_API void freedp(void *dp)
SATNOGS_API void set_viterbi39_polynomial(int polys[3])
SATNOGS_API unsigned char addnoise(int sym, double amp, double gain, double offset, int clip)
SATNOGS_API int init_viterbi39_port(void *p, int starting_state)
SATNOGS_API int cpu_features(void)
SATNOGS_API void set_viterbi27_polynomial(int polys[2])
unsigned char Taltab[]
SATNOGS_API int update_viterbi39_blk(void *vp, unsigned char syms[], int nbits)
SATNOGS_API void set_viterbi39_polynomial_port(int polys[3])
SATNOGS_API int update_viterbi615_blk(void *vp, unsigned char *syms, int nbits)
SATNOGS_API void * create_viterbi39(int len)
int Bitcnt[]
SATNOGS_API void * create_viterbi29_port(int len)
SATNOGS_API int chainback_viterbi27(void *vp, unsigned char *data, unsigned int nbits, unsigned int endstate)
static int parityb(unsigned char x)
Definition: fec.h:349
SATNOGS_API int update_viterbi39_blk_port(void *p, unsigned char *syms, int nbits)
SATNOGS_API int init_viterbi27(void *vp, int starting_state)
SATNOGS_API void encode_rs_int(void *rs, int *data, int *parity)
SATNOGS_API void encode_rs_8(unsigned char *data, unsigned char *parity, int pad)
SATNOGS_API double normal_rand(double mean, double std_dev)
SATNOGS_API int chainback_viterbi27_port(void *p, unsigned char *data, unsigned int nbits, unsigned int endstate)
enum cpu_mode Cpu_mode
SATNOGS_API int init_viterbi615_port(void *p, int starting_state)
unsigned char Tal1tab[]
Definition: fec.h:333
SATNOGS_API void set_viterbi29_polynomial(int polys[2])
SATNOGS_API void set_viterbi615_polynomial_port(int polys[6])
rs pad
Definition: init_rs.h:43
rs nroots
Definition: init_rs.h:97
rs fcr
Definition: init_rs.h:95
rs prim
Definition: init_rs.h:96
Definition: rs-common.h:7