diff options
author | Stefan Ringel <linuxtv@stefanringel.de> | 2014-03-04 13:19:55 +0100 |
---|---|---|
committer | Edward Hervey <edward@collabora.com> | 2014-03-15 18:33:18 +0100 |
commit | fd8bda1c0384c84fc33922aef1559800d8400e2a (patch) | |
tree | caffd38d5df1a85e177738dfe52377b0398369c2 /sys | |
parent | 5f3270814810ccbc5e01864aa0c2c05bf733d716 (diff) | |
download | gstreamer-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.c | 6 | ||||
-rw-r--r-- | sys/dvb/gstdvbsrc.c | 81 | ||||
-rw-r--r-- | sys/dvb/gstdvbsrc.h | 2 |
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; |