From 8be7f45f67a60e701bf6098780452b64da558dc5 Mon Sep 17 00:00:00 2001 From: Zaheer Abbas Merali Date: Sat, 1 Mar 2008 12:49:13 +0000 Subject: sys/dvb/: Add DVB-C support. Special thanks to Christian Schaller for a testing ground. Original commit message from CVS: * sys/dvb/gstdvbsrc.c: * sys/dvb/parsechannels.c: Add DVB-C support. Special thanks to Christian Schaller for a testing ground. --- sys/dvb/parsechannels.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) (limited to 'sys/dvb/parsechannels.c') diff --git a/sys/dvb/parsechannels.c b/sys/dvb/parsechannels.c index a813d43b..0bb7d898 100644 --- a/sys/dvb/parsechannels.c +++ b/sys/dvb/parsechannels.c @@ -42,6 +42,9 @@ parse_channels_conf_from_file (const gchar * filename) gchar *satellite[] = { "polarity", "diseqc-source", "symbol-rate" }; + gchar *cable[] = { "inversion", "symbol-rate", "code-rate-hp", + "modulation" + }; int i; GHashTable *res = NULL; @@ -86,6 +89,18 @@ parse_channels_conf_from_file (const gchar * filename) g_hash_table_insert (params, g_strdup ("frequency"), g_strdup (fields[1])); parsed = TRUE; + } else if (numfields == 9) { + /* cable */ + int j; + + g_hash_table_insert (params, g_strdup ("type"), g_strdup ("cable")); + for (j = 2; j <= 5; j++) { + g_hash_table_insert (params, g_strdup (cable[j - 2]), + g_strdup (fields[j])); + } + g_hash_table_insert (params, g_strdup ("frequency"), + g_strdup (fields[1])); + parsed = TRUE; } if (parsed) { g_hash_table_insert (params, g_strdup ("sid"), @@ -287,8 +302,57 @@ set_properties_for_channel (GObject * dvbbasebin, const gchar * channel_name) g_object_set (dvbbasebin, "symbol-rate", atoi (val), NULL); else ret = FALSE; - } + } else if (strcmp (type, "cable") == 0) { + gchar *val; + ret = TRUE; + val = g_hash_table_lookup (params, "symbol-rate"); + if (val) + g_object_set (dvbbasebin, "symbol-rate", atoi (val) / 1000, NULL); + val = g_hash_table_lookup (params, "modulation"); + if (strcmp (val, "QPSK") == 0) + g_object_set (dvbbasebin, "modulation", 0, NULL); + else if (strcmp (val, "QAM_16") == 0) + g_object_set (dvbbasebin, "modulation", 1, NULL); + else if (strcmp (val, "QAM_32") == 0) + g_object_set (dvbbasebin, "modulation", 2, NULL); + else if (strcmp (val, "QAM_64") == 0) + g_object_set (dvbbasebin, "modulation", 3, NULL); + else if (strcmp (val, "QAM_128") == 0) + g_object_set (dvbbasebin, "modulation", 4, NULL); + else if (strcmp (val, "QAM_256") == 0) + g_object_set (dvbbasebin, "modulation", 5, NULL); + else + g_object_set (dvbbasebin, "modulation", 6, NULL); + val = g_hash_table_lookup (params, "code-rate-hp"); + if (strcmp (val, "FEC_NONE") == 0) + g_object_set (dvbbasebin, "code-rate-hp", 0, NULL); + else if (strcmp (val, "FEC_1_2") == 0) + g_object_set (dvbbasebin, "code-rate-hp", 1, NULL); + else if (strcmp (val, "FEC_2_3") == 0) + g_object_set (dvbbasebin, "code-rate-hp", 2, NULL); + else if (strcmp (val, "FEC_3_4") == 0) + g_object_set (dvbbasebin, "code-rate-hp", 3, NULL); + else if (strcmp (val, "FEC_4_5") == 0) + g_object_set (dvbbasebin, "code-rate-hp", 4, NULL); + else if (strcmp (val, "FEC_5_6") == 0) + g_object_set (dvbbasebin, "code-rate-hp", 5, NULL); + else if (strcmp (val, "FEC_6_7") == 0) + g_object_set (dvbbasebin, "code-rate-hp", 6, NULL); + else if (strcmp (val, "FEC_7_8") == 0) + g_object_set (dvbbasebin, "code-rate-hp", 7, NULL); + else if (strcmp (val, "FEC_8_9") == 0) + g_object_set (dvbbasebin, "code-rate-hp", 8, NULL); + else + g_object_set (dvbbasebin, "code-rate-hp", 9, NULL); + val = g_hash_table_lookup (params, "inversion"); + if (strcmp (val, "INVERSION_OFF") == 0) + g_object_set (dvbbasebin, "inversion", 0, NULL); + else if (strcmp (val, "INVERSION_ON") == 0) + g_object_set (dvbbasebin, "inversion", 1, NULL); + else + g_object_set (dvbbasebin, "inversion", 2, NULL); + } } destroy_channels_hash (channels); } -- cgit v1.2.1