From: smp79 Date: Thu, 21 Dec 2023 21:33:53 +0000 (+0300) Subject: linuxdvb: add DVB-S2X parameters X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2151348f7198061a22de3cfc4f4407634554003b;p=thirdparty%2Ftvheadend.git linuxdvb: add DVB-S2X parameters --- diff --git a/src/input/mpegts/dvb.h b/src/input/mpegts/dvb.h index 3f9411eb5..311e27cd5 100644 --- a/src/input/mpegts/dvb.h +++ b/src/input/mpegts/dvb.h @@ -446,6 +446,7 @@ typedef enum dvb_fe_code_rate { DVB_FEC_AUTO, DVB_FEC_1_2 = 102, DVB_FEC_1_3 = 103, + DVB_FEC_1_4 = 104, DVB_FEC_1_5 = 105, DVB_FEC_2_3 = 203, DVB_FEC_2_5 = 205, @@ -491,6 +492,8 @@ typedef enum dvb_fe_modulation { DVB_MOD_QAM_64 = 3064, DVB_MOD_QAM_128 = 3128, DVB_MOD_QAM_256 = 3256, + DVB_MOD_QAM_1024 = 31024, + DVB_MOD_QAM_4096 = 34096, DVB_MOD_VSB_8 = 4008, DVB_MOD_VSB_16 = 4016, DVB_MOD_PSK_8 = 5008, @@ -567,6 +570,9 @@ typedef enum dvb_fe_pilot { typedef enum dvb_fe_rolloff { DVB_ROLLOFF_NONE = 0, DVB_ROLLOFF_AUTO, + DVB_ROLLOFF_5 = 50, + DVB_ROLLOFF_10 = 100, + DVB_ROLLOFF_15 = 150, DVB_ROLLOFF_20 = 200, DVB_ROLLOFF_25 = 250, DVB_ROLLOFF_35 = 350, diff --git a/src/input/mpegts/dvb_support.c b/src/input/mpegts/dvb_support.c index d73673126..762ddb341 100644 --- a/src/input/mpegts/dvb_support.c +++ b/src/input/mpegts/dvb_support.c @@ -744,6 +744,9 @@ const char *dvb_rolloff2str(int p) int dvb_str2rolloff(const char *p) { static int rolloff_table[] = { + DVB_ROLLOFF_5, + DVB_ROLLOFF_10, + DVB_ROLLOFF_15, DVB_ROLLOFF_20, DVB_ROLLOFF_25, DVB_ROLLOFF_35, @@ -851,6 +854,7 @@ int dvb_str2fec(const char *p) static int fec_table[] = { DVB_FEC_1_2, DVB_FEC_1_3, + DVB_FEC_1_4, DVB_FEC_1_5, DVB_FEC_2_3, DVB_FEC_2_5, @@ -911,6 +915,10 @@ static const struct strtab qamtab[] = { { "QAM128", DVB_MOD_QAM_128 }, { "QAM/256", DVB_MOD_QAM_256 }, { "QAM256", DVB_MOD_QAM_256 }, + { "QAM/1024", DVB_MOD_QAM_1024 }, + { "QAM1024", DVB_MOD_QAM_1024 }, + { "QAM/4096", DVB_MOD_QAM_4096 }, + { "QAM4096", DVB_MOD_QAM_4096 }, { "VSB/8", DVB_MOD_VSB_8 }, { "8VSB", DVB_MOD_VSB_8 }, { "VSB/16", DVB_MOD_VSB_16 }, diff --git a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c index 8db3ef42c..cea504252 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c +++ b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c @@ -1621,6 +1621,28 @@ linuxdvb_frontend_tune0 { .t = DVB_FEC_8_9, .l = FEC_8_9 }, #if DVB_VER_ATLEAST(5,0) { .t = DVB_FEC_9_10, .l = FEC_9_10 }, +#endif +#if DVB_VER_ATLEAST(5,12) + { .t = DVB_FEC_1_3, .l = FEC_1_3 }, + { .t = DVB_FEC_1_4, .l = FEC_1_4 }, + { .t = DVB_FEC_4_15, .l = FEC_4_15 }, + { .t = DVB_FEC_5_9, .l = FEC_5_9 }, + { .t = DVB_FEC_7_9, .l = FEC_7_9 }, + { .t = DVB_FEC_7_15, .l = FEC_7_15 }, + { .t = DVB_FEC_8_15, .l = FEC_8_15 }, + { .t = DVB_FEC_9_20, .l = FEC_9_20 }, + { .t = DVB_FEC_11_15, .l = FEC_11_15 }, + { .t = DVB_FEC_11_20, .l = FEC_11_20 }, + { .t = DVB_FEC_11_45, .l = FEC_11_45 }, + { .t = DVB_FEC_13_18, .l = FEC_13_18 }, + { .t = DVB_FEC_13_45, .l = FEC_13_45 }, + { .t = DVB_FEC_14_45, .l = FEC_14_45 }, + { .t = DVB_FEC_23_36, .l = FEC_23_36 }, + { .t = DVB_FEC_25_36, .l = FEC_25_36 }, + { .t = DVB_FEC_26_45, .l = FEC_26_45 }, + { .t = DVB_FEC_28_45, .l = FEC_28_45 }, + { .t = DVB_FEC_32_45, .l = FEC_32_45 }, + { .t = DVB_FEC_77_90, .l = FEC_77_90 }, #endif { .t = TABLE_EOD } }; @@ -1645,6 +1667,15 @@ linuxdvb_frontend_tune0 #endif #if DVB_VER_ATLEAST(5,7) { .t = DVB_MOD_QAM_4_NR, .l = QAM_4_NR }, +#endif +#if DVB_VER_ATLEAST(5,12) + { .t = DVB_MOD_QAM_1024, .l = QAM_1024 }, + { .t = DVB_MOD_QAM_4096, .l = QAM_4096 }, + { .t = DVB_MOD_APSK_8_L, .l = APSK_8_L }, + { .t = DVB_MOD_APSK_16_L, .l = APSK_16_L}, + { .t = DVB_MOD_APSK_32_L, .l = APSK_32_L}, + { .t = DVB_MOD_APSK_64, .l = APSK_64 }, + { .t = DVB_MOD_APSK_64_L, .l = APSK_64_L}, #endif { .t = TABLE_EOD } }; @@ -1689,7 +1720,7 @@ linuxdvb_frontend_tune0 { .t = DVB_HIERARCHY_4, .l = HIERARCHY_4 }, { .t = TABLE_EOD } }; -#if DVB_API_VERSION >= 5 +#if DVB_VER_ATLEAST(5,0) static linuxdvb_tbl_t pilot_tbl[] = { { .t = DVB_PILOT_AUTO, .l = PILOT_AUTO }, { .t = DVB_PILOT_ON, .l = PILOT_ON }, @@ -1698,6 +1729,11 @@ linuxdvb_frontend_tune0 }; static linuxdvb_tbl_t rolloff_tbl[] = { { .t = DVB_HIERARCHY_AUTO, .l = ROLLOFF_AUTO }, +#if DVB_VER_ATLEAST(5,12) + { .t = DVB_ROLLOFF_5, .l = ROLLOFF_5 }, + { .t = DVB_ROLLOFF_10, .l = ROLLOFF_10 }, + { .t = DVB_ROLLOFF_15, .l = ROLLOFF_15 }, +#endif { .t = DVB_ROLLOFF_20, .l = ROLLOFF_20 }, { .t = DVB_ROLLOFF_25, .l = ROLLOFF_25 }, { .t = DVB_ROLLOFF_35, .l = ROLLOFF_35 }, diff --git a/src/input/mpegts/mpegts_mux_dvb.c b/src/input/mpegts/mpegts_mux_dvb.c index 726e3aa39..454019dba 100644 --- a/src/input/mpegts/mpegts_mux_dvb.c +++ b/src/input/mpegts/mpegts_mux_dvb.c @@ -362,12 +362,20 @@ dvb_mux_class_X(dvbs, qpsk, fec_inner, fec, fec, DVB_FEC_AUTO, DVB_FEC_NONE, DVB_FEC_1_2, DVB_FEC_2_3, DVB_FEC_3_4, DVB_FEC_3_5, DVB_FEC_4_5, DVB_FEC_5_6, DVB_FEC_7_8, DVB_FEC_8_9, - DVB_FEC_9_10); + DVB_FEC_9_10, DVB_FEC_1_3, DVB_FEC_1_4, DVB_FEC_4_15, + DVB_FEC_5_9, DVB_FEC_7_9, DVB_FEC_7_15, DVB_FEC_8_15, + DVB_FEC_9_20, DVB_FEC_11_15, DVB_FEC_11_20, DVB_FEC_11_45, + DVB_FEC_13_18, DVB_FEC_13_45, DVB_FEC_14_45, DVB_FEC_23_36, + DVB_FEC_25_36, DVB_FEC_26_45, DVB_FEC_28_45, DVB_FEC_32_45, + DVB_FEC_77_90); dvb_mux_class_R(dvbs, modulation, qam, qam, - DVB_MOD_AUTO, DVB_MOD_QPSK, DVB_MOD_QAM_16, - DVB_MOD_PSK_8, DVB_MOD_APSK_16, DVB_MOD_APSK_32); + DVB_MOD_AUTO, DVB_MOD_QPSK, DVB_MOD_QAM_16, DVB_MOD_QAM_1024, + DVB_MOD_QAM_4096, DVB_MOD_PSK_8, DVB_MOD_APSK_16, DVB_MOD_APSK_32, + DVB_MOD_APSK_64, DVB_MOD_APSK_8_L, DVB_MOD_APSK_16_L, + DVB_MOD_APSK_32_L, DVB_MOD_APSK_64_L); dvb_mux_class_R(dvbs, rolloff, rolloff, rolloff, - DVB_ROLLOFF_35, DVB_ROLLOFF_20, DVB_ROLLOFF_25); + DVB_HIERARCHY_AUTO, DVB_ROLLOFF_5, DVB_ROLLOFF_10, DVB_ROLLOFF_15, + DVB_ROLLOFF_20, DVB_ROLLOFF_25, DVB_ROLLOFF_35); dvb_mux_class_R(dvbs, pilot, pilot, pilot, DVB_PILOT_AUTO, DVB_PILOT_ON, DVB_PILOT_OFF); dvb_mux_class_X(dvbs, qpsk, polarisation, polarisation, pol,