summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorStefan Ringel <linuxtv@stefanringel.de>2014-03-04 13:19:55 +0100
committerEdward Hervey <edward@collabora.com>2014-03-15 18:33:18 +0100
commitfd8bda1c0384c84fc33922aef1559800d8400e2a (patch)
treecaffd38d5df1a85e177738dfe52377b0398369c2 /sys
parent5f3270814810ccbc5e01864aa0c2c05bf733d716 (diff)
downloadgstreamer-plugins-bad-fd8bda1c0384c84fc33922aef1559800d8400e2a.tar.gz
dvbsrc: mpegts: change bandwidth to DVBv5 values
Signed-off-by: Stefan Ringel <linuxtv@stefanringel.de> https://bugzilla.gnome.org/show_bug.cgi?id=725463
Diffstat (limited to 'sys')
-rw-r--r--sys/dvb/dvbbasebin.c6
-rw-r--r--sys/dvb/gstdvbsrc.c81
-rw-r--r--sys/dvb/gstdvbsrc.h2
3 files changed, 55 insertions, 34 deletions
diff --git a/sys/dvb/dvbbasebin.c b/sys/dvb/dvbbasebin.c
index 1900b141f..24153fefd 100644
--- a/sys/dvb/dvbbasebin.c
+++ b/sys/dvb/dvbbasebin.c
@@ -74,7 +74,8 @@ enum
PROP_DELSYS,
PROP_PILOT,
PROP_ROLLOFF,
- PROP_STREAM_ID
+ PROP_STREAM_ID,
+ PROP_BANDWIDTH_HZ
/* FILL ME */
};
@@ -222,6 +223,7 @@ dvb_base_bin_class_init (DvbBaseBinClass * klass)
{PROP_PILOT, "pilot"},
{PROP_ROLLOFF, "rolloff"},
{PROP_STREAM_ID, "stream-id"},
+ {PROP_BANDWIDTH_HZ, "bandwidth-hz"},
{0, NULL}
};
@@ -465,6 +467,7 @@ dvb_base_bin_set_property (GObject * object, guint prop_id,
case PROP_PILOT:
case PROP_ROLLOFF:
case PROP_STREAM_ID:
+ case PROP_BANDWIDTH_HZ:
/* FIXME: check if we can tune (state < PLAYING || program-numbers == "") */
g_object_set_property (G_OBJECT (dvbbasebin->dvbsrc), pspec->name, value);
break;
@@ -502,6 +505,7 @@ dvb_base_bin_get_property (GObject * object, guint prop_id,
case PROP_PILOT:
case PROP_ROLLOFF:
case PROP_STREAM_ID:
+ case PROP_BANDWIDTH_HZ:
g_object_get_property (G_OBJECT (dvbbasebin->dvbsrc), pspec->name, value);
break;
case PROP_PROGRAM_NUMBERS:
diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c
index 761706f52..d4a849ec4 100644
--- a/sys/dvb/gstdvbsrc.c
+++ b/sys/dvb/gstdvbsrc.c
@@ -95,7 +95,8 @@ enum
ARG_DVBSRC_DELSYS,
ARG_DVBSRC_PILOT,
ARG_DVBSRC_ROLLOFF,
- ARG_DVBSRC_STREAM_ID
+ ARG_DVBSRC_STREAM_ID,
+ ARG_DVBSRC_BANDWIDTH_HZ
};
#define DEFAULT_ADAPTER 0
@@ -105,7 +106,8 @@ enum
#define DEFAULT_POLARITY "H"
#define DEFAULT_PIDS "8192"
#define DEFAULT_SYMBOL_RATE 0
-#define DEFAULT_BANDWIDTH BANDWIDTH_7_MHZ
+#define DEFAULT_BANDWIDTH_HZ 8000000
+#define DEFAULT_BANDWIDTH BANDWIDTH_8_MHZ
#define DEFAULT_CODE_RATE_HP FEC_AUTO
#define DEFAULT_CODE_RATE_LP FEC_1_2
#define DEFAULT_GUARD GUARD_INTERVAL_1_16
@@ -473,11 +475,15 @@ gst_dvbsrc_class_init (GstDvbSrcClass * klass)
/* DVB-T, additional properties */
+ g_object_class_install_property (gobject_class, ARG_DVBSRC_BANDWIDTH_HZ,
+ g_param_spec_uint ("bandwidth-hz", "bandwidth-hz",
+ "Bandwidth in Hz (DVB-T)",
+ 0, G_MAXUINT, DEFAULT_BANDWIDTH_HZ, G_PARAM_READWRITE));
+
g_object_class_install_property (gobject_class, ARG_DVBSRC_BANDWIDTH,
- g_param_spec_enum ("bandwidth",
- "bandwidth",
- "Bandwidth (DVB-T)", GST_TYPE_DVBSRC_BANDWIDTH, DEFAULT_BANDWIDTH,
- G_PARAM_READWRITE));
+ g_param_spec_enum ("bandwidth", "bandwidth",
+ "Bandwidth (DVB-T) deprecated",
+ GST_TYPE_DVBSRC_BANDWIDTH, DEFAULT_BANDWIDTH, G_PARAM_READWRITE));
/* FIXME: DVB-C, DVB-S, DVB-S2 named it as innerFEC */
g_object_class_install_property (gobject_class, ARG_DVBSRC_CODE_RATE_HP,
@@ -710,8 +716,25 @@ gst_dvbsrc_set_property (GObject * _object, guint prop_id,
object->sym_rate);
break;
+ case ARG_DVBSRC_BANDWIDTH_HZ:
+ object->bandwidth = g_value_get_uint (value);
+ break;
case ARG_DVBSRC_BANDWIDTH:
- object->bandwidth = g_value_get_enum (value);
+ switch (g_value_get_enum (value)) {
+ case BANDWIDTH_8_MHZ:
+ object->bandwidth = 8000000;
+ break;
+ case BANDWIDTH_7_MHZ:
+ object->bandwidth = 7000000;
+ break;
+ case BANDWIDTH_6_MHZ:
+ object->bandwidth = 6000000;
+ break;
+ default:
+ /* we don't know which bandwidth are set */
+ object->bandwidth = 0;
+ break;
+ }
break;
case ARG_DVBSRC_CODE_RATE_HP:
object->code_rate_hp = g_value_get_enum (value);
@@ -803,9 +826,25 @@ gst_dvbsrc_get_property (GObject * _object, guint prop_id,
case ARG_DVBSRC_DISEQC_SRC:
g_value_set_int (value, object->diseqc_src);
break;
- case ARG_DVBSRC_BANDWIDTH:
- g_value_set_enum (value, object->bandwidth);
+ case ARG_DVBSRC_BANDWIDTH_HZ:
+ g_value_set_uint (value, object->bandwidth);
break;
+ case ARG_DVBSRC_BANDWIDTH:{
+ int tmp;
+ if (object->bandwidth == 0)
+ tmp = BANDWIDTH_AUTO;
+ else if (object->bandwidth <= 6000000)
+ tmp = BANDWIDTH_6_MHZ;
+ else if (object->bandwidth <= 7000000)
+ tmp = BANDWIDTH_7_MHZ;
+ else if (object->bandwidth <= 8000000)
+ tmp = BANDWIDTH_8_MHZ;
+ else
+ tmp = BANDWIDTH_AUTO;
+
+ g_value_set_enum (value, tmp);
+ break;
+ }
case ARG_DVBSRC_CODE_RATE_HP:
g_value_set_enum (value, object->code_rate_hp);
break;
@@ -1476,7 +1515,6 @@ gst_dvbsrc_tune (GstDvbSrc * object)
int j;
unsigned int freq = object->freq;
unsigned int sym_rate = object->sym_rate * 1000;
- unsigned int bandwidth;
int inversion = object->inversion;
/* found in mail archive on linuxtv.org
@@ -1577,28 +1615,7 @@ gst_dvbsrc_tune (GstDvbSrc * object)
break;
case SYS_DVBT:
case SYS_DVBT2:
- bandwidth = 0;
- if (object->bandwidth != BANDWIDTH_AUTO) {
- /* Presumably not specifying bandwidth with s2api is equivalent
- * to BANDWIDTH_AUTO.
- */
- switch (object->bandwidth) {
- case BANDWIDTH_8_MHZ:
- bandwidth = 8000000;
- break;
- case BANDWIDTH_7_MHZ:
- bandwidth = 7000000;
- break;
- case BANDWIDTH_6_MHZ:
- bandwidth = 6000000;
- break;
- default:
- break;
- }
- }
- if (bandwidth) {
- set_prop (dvb_prop, &n, DTV_BANDWIDTH_HZ, bandwidth);
- }
+ set_prop (dvb_prop, &n, DTV_BANDWIDTH_HZ, object->bandwidth);
set_prop (dvb_prop, &n, DTV_CODE_RATE_HP, object->code_rate_hp);
set_prop (dvb_prop, &n, DTV_CODE_RATE_LP, object->code_rate_lp);
set_prop (dvb_prop, &n, DTV_MODULATION, object->modulation);
diff --git a/sys/dvb/gstdvbsrc.h b/sys/dvb/gstdvbsrc.h
index e7cfbb8b0..dbd5b2aa2 100644
--- a/sys/dvb/gstdvbsrc.h
+++ b/sys/dvb/gstdvbsrc.h
@@ -62,7 +62,7 @@ struct _GstDvbSrc
int diseqc_src;
gboolean send_diseqc;
- int bandwidth;
+ guint bandwidth;
int code_rate_hp;
int code_rate_lp;
int modulation;