dvbsrc: mpegts: change bandwidth to DVBv5 values

Signed-off-by: Stefan Ringel <linuxtv@stefanringel.de>

https://bugzilla.gnome.org/show_bug.cgi?id=725463
This commit is contained in:
Stefan Ringel 2014-03-04 13:19:55 +01:00 committed by Edward Hervey
parent 5f32708148
commit fd8bda1c03
6 changed files with 74 additions and 53 deletions

View file

@ -1578,14 +1578,24 @@
<DEFAULT>1</DEFAULT>
</ARG>
<ARG>
<NAME>GstDvbSrc::bandwidth-hz</NAME>
<TYPE>guint</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>bandwidth-hz</NICK>
<BLURB>Bandwidth in Hz (DVB-T).</BLURB>
<DEFAULT>8000000</DEFAULT>
</ARG>
<ARG>
<NAME>GstDvbSrc::bandwidth</NAME>
<TYPE>GstDvbSrcBandwidth</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>bandwidth</NICK>
<BLURB>Bandwidth (DVB-T).</BLURB>
<DEFAULT>7</DEFAULT>
<BLURB>Bandwidth (DVB-T) deprecated</BLURB>
<DEFAULT>8</DEFAULT>
</ARG>
<ARG>

View file

@ -739,19 +739,19 @@ gst_mpegts_descriptor_parse_terrestrial_delivery_system (const
tmp = *data;
switch ((tmp >> 5) & 0x07) {
case 0:
res->bandwidth = GST_MPEGTS_BANDWIDTH_8;
res->bandwidth = 8000000;
break;
case 1:
res->bandwidth = GST_MPEGTS_BANDWIDTH_7;
res->bandwidth = 7000000;
break;
case 2:
res->bandwidth = GST_MPEGTS_BANDWIDTH_6;
res->bandwidth = 6000000;
break;
case 3:
res->bandwidth = GST_MPEGTS_BANDWIDTH_5;
res->bandwidth = 5000000;
break;
default:
res->bandwidth = GST_MPEGTS_BANDWIDTH_AUTO;
res->bandwidth = 0;
break;
}

View file

@ -405,16 +405,6 @@ GstMpegTsDescriptor * gst_mpegts_descriptor_from_dvb_subtitling (const gchar *la
/* GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM (0x5A) */
typedef struct _GstMpegTsTerrestrialDeliverySystemDescriptor GstMpegTsTerrestrialDeliverySystemDescriptor;
typedef enum {
GST_MPEGTS_BANDWIDTH_8 = 0,
GST_MPEGTS_BANDWIDTH_7,
GST_MPEGTS_BANDWIDTH_6,
GST_MPEGTS_BANDWIDTH_AUTO,
GST_MPEGTS_BANDWIDTH_5,
GST_MPEGTS_BANDWIDTH_10,
GST_MPEGTS_BANDWIDTH_1_172
} GstMpegTsTerrestrialBandwidth;
typedef enum {
GST_MPEGTS_TRANSMISSION_MODE_2K = 0,
GST_MPEGTS_TRANSMISSION_MODE_8K,
@ -452,7 +442,7 @@ typedef enum {
/**
* GstMpegTsTerrestrialDeliverySystemDescriptor:
* @frequency: the frequency in Hz (Hertz)
* @bandwidth: the bandwidth
* @bandwidth: the bandwidth in Hz (Hertz)
* @priority: %TRUE High Priority %FALSE Low Priority
* @time_slicing: %TRUE no time slicing %FALSE time slicing
* @mpe_fec: %TRUE no mpe-fec is used %FALSE mpe-fec is use
@ -470,7 +460,7 @@ typedef enum {
struct _GstMpegTsTerrestrialDeliverySystemDescriptor
{
guint32 frequency;
GstMpegTsTerrestrialBandwidth bandwidth;
guint32 bandwidth;
gboolean priority;
gboolean time_slicing;
gboolean mpe_fec;

View file

@ -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:

View file

@ -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);

View file

@ -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;