diff --git a/src/leansdr/dvb.h b/src/leansdr/dvb.h index 897c277..449a781 100644 --- a/src/leansdr/dvb.h +++ b/src/leansdr/dvb.h @@ -515,6 +515,11 @@ namespace leansdr { DVBS_G1, DVBS_G2, // X1Y1 DVBS_G2<<1, DVBS_G1<<2 // Y2X3 }; + static const uint16_t polys_fec45[] = { // Non standard + DVBS_G1, DVBS_G2, // X1Y1 + DVBS_G2<<1, DVBS_G1<<2, // Y2X3 + DVBS_G1<<3 // X4 + }; static const uint16_t polys_fec56[] = { DVBS_G1, DVBS_G2, // X1Y1 DVBS_G2<<1, DVBS_G1<<2, // Y2X3 @@ -539,6 +544,7 @@ namespace leansdr { [FEC34] = { 3, 4, polys_fec34 }, [FEC56] = { 5, 6, polys_fec56 }, [FEC78] = { 7, 8, polys_fec78 }, + [FEC45] = { 4, 5, polys_fec45 }, // Non-standard }; struct dvb_convol : runnable { @@ -1173,6 +1179,11 @@ namespace leansdr { typedef trellis trellis_34; typedef viterbi_dec dvb_dec_34; + // 4/5: 6 bits of state, 4 bits in, 5 bits out (non-standard) + typedef bitpath path_45; + typedef trellis trellis_45; + typedef viterbi_dec dvb_dec_45; + // 5/6: 6 bits of state, 5 bits in, 6 bits out typedef bitpath path_56; typedef trellis trellis_56; @@ -1285,6 +1296,11 @@ namespace leansdr { trell->init_convolutional(fec->polys); for ( int s=0; sinit_convolutional(fec->polys); + for ( int s=0; sinit_convolutional(fec->polys);