summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward.hervey@collabora.co.uk>2012-06-19 10:35:48 +0200
committerEdward Hervey <edward.hervey@collabora.co.uk>2012-06-19 10:35:48 +0200
commit56487d38bd42c97ae11882f50e8763d70ca4c389 (patch)
tree40dc4534184a7e723202d1765dfc2bf40472ab61
parent1dd3544b8dba445160fdeddef98c5678744ee749 (diff)
dvb: Detect more issues with configuration file
Report useful errors when: * file is present but empty * requested channel is not present
-rw-r--r--sys/dvb/parsechannels.c474
1 files changed, 251 insertions, 223 deletions
diff --git a/sys/dvb/parsechannels.c b/sys/dvb/parsechannels.c
index 60fab097e..715071c77 100644
--- a/sys/dvb/parsechannels.c
+++ b/sys/dvb/parsechannels.c
@@ -29,7 +29,12 @@
#include "parsechannels.h"
-/* this will do zap style channels.conf only for the moment*/
+/* TODO:
+ * Store the channels hash table around instead of constantly parsing it
+ * Detect when the file changed on disk
+ */
+
+/* this will do zap style channels.conf only for the moment */
static GHashTable *
parse_channels_conf_from_file (GstElement * dvbbasebin, const gchar * filename)
{
@@ -47,7 +52,7 @@ parse_channels_conf_from_file (GstElement * dvbbasebin, const gchar * filename)
const gchar *cable[] = { "inversion", "symbol-rate", "code-rate-hp",
"modulation"
};
- int i;
+ int i, parsedchannels = 0;
GHashTable *res;
GError *err = NULL;
@@ -119,6 +124,7 @@ parse_channels_conf_from_file (GstElement * dvbbasebin, const gchar * filename)
g_hash_table_insert (params, g_strdup ("sid"),
g_strdup (fields[numfields - 1]));
g_hash_table_insert (res, g_strdup (fields[0]), params);
+ parsedchannels++;
}
g_strfreev (fields);
}
@@ -127,6 +133,9 @@ parse_channels_conf_from_file (GstElement * dvbbasebin, const gchar * filename)
g_strfreev (lines);
g_free (contents);
+ if (parsedchannels == 0)
+ goto no_channels;
+
return res;
open_fail:
@@ -137,6 +146,14 @@ open_fail:
g_clear_error (&err);
return NULL;
}
+
+no_channels:
+ {
+ GST_ELEMENT_ERROR (dvbbasebin, RESOURCE, READ, (NULL),
+ ("Channels configuration file doesn't contain any channels"));
+ g_hash_table_unref (res);
+ return NULL;
+ }
}
static gboolean
@@ -159,8 +176,10 @@ gboolean
set_properties_for_channel (GstElement * dvbbasebin, const gchar * channel_name)
{
gboolean ret = FALSE;
- GHashTable *channels;
+ GHashTable *channels, *params;
gchar *filename;
+ gchar *type;
+ const gchar *adapter;
filename = g_strdup (g_getenv ("GST_DVB_CHANNELS_CONF"));
if (filename == NULL) {
@@ -173,227 +192,236 @@ set_properties_for_channel (GstElement * dvbbasebin, const gchar * channel_name)
channels = parse_channels_conf_from_file (dvbbasebin, filename);
g_free (filename);
- if (channels) {
- GHashTable *params = g_hash_table_lookup (channels,
- channel_name);
-
- if (params) {
- gchar *type;
- const gchar *adapter;
-
- g_object_set (dvbbasebin, "program-numbers",
- g_hash_table_lookup (params, "sid"), NULL);
- /* check if it is terrestrial or satellite */
- adapter = g_getenv ("GST_DVB_ADAPTER");
- if (adapter)
- g_object_set (dvbbasebin, "adapter", atoi (adapter), NULL);
- g_object_set (dvbbasebin, "frequency",
- atoi (g_hash_table_lookup (params, "frequency")), NULL);
- type = g_hash_table_lookup (params, "type");
- if (strcmp (type, "terrestrial") == 0) {
- gchar *val;
-
- 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);
-
- val = g_hash_table_lookup (params, "bandwidth");
- if (strcmp (val, "BANDWIDTH_8_MHZ") == 0)
- g_object_set (dvbbasebin, "bandwidth", 0, NULL);
- else if (strcmp (val, "BANDWIDTH_7_MHZ") == 0)
- g_object_set (dvbbasebin, "bandwidth", 1, NULL);
- else if (strcmp (val, "BANDWIDTH_6_MHZ") == 0)
- g_object_set (dvbbasebin, "bandwidth", 2, NULL);
- else
- g_object_set (dvbbasebin, "bandwidth", 3, 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, "code-rate-lp");
- if (strcmp (val, "FEC_NONE") == 0)
- g_object_set (dvbbasebin, "code-rate-lp", 0, NULL);
- else if (strcmp (val, "FEC_1_2") == 0)
- g_object_set (dvbbasebin, "code-rate-lp", 1, NULL);
- else if (strcmp (val, "FEC_2_3") == 0)
- g_object_set (dvbbasebin, "code-rate-lp", 2, NULL);
- else if (strcmp (val, "FEC_3_4") == 0)
- g_object_set (dvbbasebin, "code-rate-lp", 3, NULL);
- else if (strcmp (val, "FEC_4_5") == 0)
- g_object_set (dvbbasebin, "code-rate-lp", 4, NULL);
- else if (strcmp (val, "FEC_5_6") == 0)
- g_object_set (dvbbasebin, "code-rate-lp", 5, NULL);
- else if (strcmp (val, "FEC_6_7") == 0)
- g_object_set (dvbbasebin, "code-rate-lp", 6, NULL);
- else if (strcmp (val, "FEC_7_8") == 0)
- g_object_set (dvbbasebin, "code-rate-lp", 7, NULL);
- else if (strcmp (val, "FEC_8_9") == 0)
- g_object_set (dvbbasebin, "code-rate-lp", 8, NULL);
- else
- g_object_set (dvbbasebin, "code-rate-lp", 9, 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, "transmission-mode");
- if (strcmp (val, "TRANSMISSION_MODE_2K") == 0)
- g_object_set (dvbbasebin, "trans-mode", 0, NULL);
- else if (strcmp (val, "TRANSMISSION_MODE_8K") == 0)
- g_object_set (dvbbasebin, "trans-mode", 1, NULL);
- else
- g_object_set (dvbbasebin, "trans-mode", 2, NULL);
-
- val = g_hash_table_lookup (params, "guard");
- if (strcmp (val, "GUARD_INTERVAL_1_32") == 0)
- g_object_set (dvbbasebin, "guard", 0, NULL);
- else if (strcmp (val, "GUARD_INTERVAL_1_16") == 0)
- g_object_set (dvbbasebin, "guard", 1, NULL);
- else if (strcmp (val, "GUARD_INTERVAL_1_8") == 0)
- g_object_set (dvbbasebin, "guard", 2, NULL);
- else if (strcmp (val, "GUARD_INTERVAL_1_4") == 0)
- g_object_set (dvbbasebin, "guard", 3, NULL);
- else
- g_object_set (dvbbasebin, "guard", 4, NULL);
-
- val = g_hash_table_lookup (params, "hierarchy");
- if (strcmp (val, "HIERARCHY_NONE") == 0)
- g_object_set (dvbbasebin, "hierarchy", 0, NULL);
- else if (strcmp (val, "HIERARCHY_1") == 0)
- g_object_set (dvbbasebin, "hierarchy", 1, NULL);
- else if (strcmp (val, "HIERARCHY_2") == 0)
- g_object_set (dvbbasebin, "hierarchy", 2, NULL);
- else if (strcmp (val, "HIERARCHY_4") == 0)
- g_object_set (dvbbasebin, "hierarchy", 3, NULL);
- else
- g_object_set (dvbbasebin, "hierarchy", 4, NULL);
-
- ret = TRUE;
- } else if (strcmp (type, "satellite") == 0) {
- gchar *val;
-
- ret = TRUE;
-
- val = g_hash_table_lookup (params, "polarity");
- if (val)
- g_object_set (dvbbasebin, "polarity", val, NULL);
- else
- ret = FALSE;
-
- val = g_hash_table_lookup (params, "diseqc-source");
- if (val)
- g_object_set (dvbbasebin, "diseqc-source", atoi (val), NULL);
-
- val = g_hash_table_lookup (params, "symbol-rate");
- if (val)
- 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);
- } else if (strcmp (type, "atsc") == 0) {
- gchar *val;
-
- ret = TRUE;
-
- val = g_hash_table_lookup (params, "modulation");
- if (strcmp (val, "QAM_64") == 0)
- g_object_set (dvbbasebin, "modulation", 3, NULL);
- else if (strcmp (val, "QAM_256") == 0)
- g_object_set (dvbbasebin, "modulation", 5, NULL);
- else if (strcmp (val, "8VSB") == 0)
- g_object_set (dvbbasebin, "modulation", 7, NULL);
- else if (strcmp (val, "16VSB") == 0)
- g_object_set (dvbbasebin, "modulation", 8, NULL);
- else
- ret = FALSE;
- }
- }
- destroy_channels_hash (channels);
+ if (!channels)
+ goto beach;
+
+ params = g_hash_table_lookup (channels, channel_name);
+
+ if (!params)
+ goto unknown_channel;
+
+ g_object_set (dvbbasebin, "program-numbers",
+ g_hash_table_lookup (params, "sid"), NULL);
+ /* check if it is terrestrial or satellite */
+ adapter = g_getenv ("GST_DVB_ADAPTER");
+ if (adapter)
+ g_object_set (dvbbasebin, "adapter", atoi (adapter), NULL);
+ g_object_set (dvbbasebin, "frequency",
+ atoi (g_hash_table_lookup (params, "frequency")), NULL);
+ type = g_hash_table_lookup (params, "type");
+ if (strcmp (type, "terrestrial") == 0) {
+ gchar *val;
+
+ 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);
+
+ val = g_hash_table_lookup (params, "bandwidth");
+ if (strcmp (val, "BANDWIDTH_8_MHZ") == 0)
+ g_object_set (dvbbasebin, "bandwidth", 0, NULL);
+ else if (strcmp (val, "BANDWIDTH_7_MHZ") == 0)
+ g_object_set (dvbbasebin, "bandwidth", 1, NULL);
+ else if (strcmp (val, "BANDWIDTH_6_MHZ") == 0)
+ g_object_set (dvbbasebin, "bandwidth", 2, NULL);
+ else
+ g_object_set (dvbbasebin, "bandwidth", 3, 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, "code-rate-lp");
+ if (strcmp (val, "FEC_NONE") == 0)
+ g_object_set (dvbbasebin, "code-rate-lp", 0, NULL);
+ else if (strcmp (val, "FEC_1_2") == 0)
+ g_object_set (dvbbasebin, "code-rate-lp", 1, NULL);
+ else if (strcmp (val, "FEC_2_3") == 0)
+ g_object_set (dvbbasebin, "code-rate-lp", 2, NULL);
+ else if (strcmp (val, "FEC_3_4") == 0)
+ g_object_set (dvbbasebin, "code-rate-lp", 3, NULL);
+ else if (strcmp (val, "FEC_4_5") == 0)
+ g_object_set (dvbbasebin, "code-rate-lp", 4, NULL);
+ else if (strcmp (val, "FEC_5_6") == 0)
+ g_object_set (dvbbasebin, "code-rate-lp", 5, NULL);
+ else if (strcmp (val, "FEC_6_7") == 0)
+ g_object_set (dvbbasebin, "code-rate-lp", 6, NULL);
+ else if (strcmp (val, "FEC_7_8") == 0)
+ g_object_set (dvbbasebin, "code-rate-lp", 7, NULL);
+ else if (strcmp (val, "FEC_8_9") == 0)
+ g_object_set (dvbbasebin, "code-rate-lp", 8, NULL);
+ else
+ g_object_set (dvbbasebin, "code-rate-lp", 9, 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, "transmission-mode");
+ if (strcmp (val, "TRANSMISSION_MODE_2K") == 0)
+ g_object_set (dvbbasebin, "trans-mode", 0, NULL);
+ else if (strcmp (val, "TRANSMISSION_MODE_8K") == 0)
+ g_object_set (dvbbasebin, "trans-mode", 1, NULL);
+ else
+ g_object_set (dvbbasebin, "trans-mode", 2, NULL);
+
+ val = g_hash_table_lookup (params, "guard");
+ if (strcmp (val, "GUARD_INTERVAL_1_32") == 0)
+ g_object_set (dvbbasebin, "guard", 0, NULL);
+ else if (strcmp (val, "GUARD_INTERVAL_1_16") == 0)
+ g_object_set (dvbbasebin, "guard", 1, NULL);
+ else if (strcmp (val, "GUARD_INTERVAL_1_8") == 0)
+ g_object_set (dvbbasebin, "guard", 2, NULL);
+ else if (strcmp (val, "GUARD_INTERVAL_1_4") == 0)
+ g_object_set (dvbbasebin, "guard", 3, NULL);
+ else
+ g_object_set (dvbbasebin, "guard", 4, NULL);
+
+ val = g_hash_table_lookup (params, "hierarchy");
+ if (strcmp (val, "HIERARCHY_NONE") == 0)
+ g_object_set (dvbbasebin, "hierarchy", 0, NULL);
+ else if (strcmp (val, "HIERARCHY_1") == 0)
+ g_object_set (dvbbasebin, "hierarchy", 1, NULL);
+ else if (strcmp (val, "HIERARCHY_2") == 0)
+ g_object_set (dvbbasebin, "hierarchy", 2, NULL);
+ else if (strcmp (val, "HIERARCHY_4") == 0)
+ g_object_set (dvbbasebin, "hierarchy", 3, NULL);
+ else
+ g_object_set (dvbbasebin, "hierarchy", 4, NULL);
+
+ ret = TRUE;
+ } else if (strcmp (type, "satellite") == 0) {
+ gchar *val;
+
+ ret = TRUE;
+
+ val = g_hash_table_lookup (params, "polarity");
+ if (val)
+ g_object_set (dvbbasebin, "polarity", val, NULL);
+ else
+ ret = FALSE;
+
+ val = g_hash_table_lookup (params, "diseqc-source");
+ if (val)
+ g_object_set (dvbbasebin, "diseqc-source", atoi (val), NULL);
+
+ val = g_hash_table_lookup (params, "symbol-rate");
+ if (val)
+ 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);
+ } else if (strcmp (type, "atsc") == 0) {
+ gchar *val;
+
+ ret = TRUE;
+
+ val = g_hash_table_lookup (params, "modulation");
+ if (strcmp (val, "QAM_64") == 0)
+ g_object_set (dvbbasebin, "modulation", 3, NULL);
+ else if (strcmp (val, "QAM_256") == 0)
+ g_object_set (dvbbasebin, "modulation", 5, NULL);
+ else if (strcmp (val, "8VSB") == 0)
+ g_object_set (dvbbasebin, "modulation", 7, NULL);
+ else if (strcmp (val, "16VSB") == 0)
+ g_object_set (dvbbasebin, "modulation", 8, NULL);
+ else
+ ret = FALSE;
}
+ destroy_channels_hash (channels);
+
+beach:
return ret;
+
+unknown_channel:
+ {
+ GST_ELEMENT_ERROR (dvbbasebin, RESOURCE, READ, (NULL),
+ ("Couldn't find configuration properties for channel \"%s\"",
+ channel_name));
+ destroy_channels_hash (channels);
+ return FALSE;
+ }
}