mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
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:
parent
5f32708148
commit
fd8bda1c03
6 changed files with 74 additions and 53 deletions
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue