mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
dvbsrc: factor out transmission mode check against delsys
This commit is contained in:
parent
15e21fee71
commit
f0d7a8cb89
1 changed files with 34 additions and 17 deletions
|
@ -557,6 +557,7 @@ static gboolean gst_dvbsrc_tune_fe (GstDvbSrc * object);
|
||||||
static void gst_dvbsrc_set_pes_filters (GstDvbSrc * object);
|
static void gst_dvbsrc_set_pes_filters (GstDvbSrc * object);
|
||||||
static void gst_dvbsrc_unset_pes_filters (GstDvbSrc * object);
|
static void gst_dvbsrc_unset_pes_filters (GstDvbSrc * object);
|
||||||
static gboolean gst_dvbsrc_is_valid_modulation (guint delsys, guint mod);
|
static gboolean gst_dvbsrc_is_valid_modulation (guint delsys, guint mod);
|
||||||
|
static gboolean gst_dvbsrc_is_valid_trans_mode (guint delsys, guint mode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This loop should be safe enough considering:
|
* This loop should be safe enough considering:
|
||||||
|
@ -2051,6 +2052,33 @@ gst_dvbsrc_is_seekable (GstBaseSrc * bsrc)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_dvbsrc_is_valid_trans_mode (guint delsys, guint mode)
|
||||||
|
{
|
||||||
|
/* FIXME: check valid transmission modes for other broadcast standards */
|
||||||
|
switch (delsys) {
|
||||||
|
case SYS_DVBT:
|
||||||
|
if (mode == TRANSMISSION_MODE_AUTO || mode == TRANSMISSION_MODE_2K ||
|
||||||
|
mode == TRANSMISSION_MODE_8K) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SYS_DVBT2:
|
||||||
|
if (mode == TRANSMISSION_MODE_AUTO || mode == TRANSMISSION_MODE_1K ||
|
||||||
|
mode == TRANSMISSION_MODE_2K || mode == TRANSMISSION_MODE_4K ||
|
||||||
|
mode == TRANSMISSION_MODE_8K || mode == TRANSMISSION_MODE_16K ||
|
||||||
|
mode == TRANSMISSION_MODE_32K) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
GST_FIXME ("No delsys/transmission-mode sanity checks implemented for "
|
||||||
|
"this delivery system");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_dvbsrc_is_valid_modulation (guint delsys, guint mod)
|
gst_dvbsrc_is_valid_modulation (guint delsys, guint mod)
|
||||||
{
|
{
|
||||||
|
@ -2469,29 +2497,12 @@ gst_dvbsrc_set_fe_params (GstDvbSrc * object, struct dtv_properties *props)
|
||||||
case SYS_DVBT:
|
case SYS_DVBT:
|
||||||
case SYS_DVBT2:
|
case SYS_DVBT2:
|
||||||
if (object->delsys == SYS_DVBT) {
|
if (object->delsys == SYS_DVBT) {
|
||||||
if (object->transmission_mode != TRANSMISSION_MODE_AUTO &&
|
|
||||||
object->transmission_mode != TRANSMISSION_MODE_2K &&
|
|
||||||
object->transmission_mode != TRANSMISSION_MODE_8K) {
|
|
||||||
GST_WARNING_OBJECT (object, "Wrong DVB-T parameter combination: "
|
|
||||||
"transmission mode should be either AUTO, 2K or 8K");
|
|
||||||
}
|
|
||||||
if (object->bandwidth != 6000000 && object->bandwidth != 7000000 &&
|
if (object->bandwidth != 6000000 && object->bandwidth != 7000000 &&
|
||||||
object->bandwidth != 8000000) {
|
object->bandwidth != 8000000) {
|
||||||
GST_WARNING_OBJECT (object, "Wrong DVB-T parameter value: bandwidth "
|
GST_WARNING_OBJECT (object, "Wrong DVB-T parameter value: bandwidth "
|
||||||
"is %d but only 6, 7 and 8 MHz are allowed", object->bandwidth);
|
"is %d but only 6, 7 and 8 MHz are allowed", object->bandwidth);
|
||||||
}
|
}
|
||||||
} else if (object->delsys == SYS_DVBT2) {
|
} else if (object->delsys == SYS_DVBT2) {
|
||||||
if (object->transmission_mode != TRANSMISSION_MODE_AUTO &&
|
|
||||||
object->transmission_mode != TRANSMISSION_MODE_1K &&
|
|
||||||
object->transmission_mode != TRANSMISSION_MODE_2K &&
|
|
||||||
object->transmission_mode != TRANSMISSION_MODE_4K &&
|
|
||||||
object->transmission_mode != TRANSMISSION_MODE_8K &&
|
|
||||||
object->transmission_mode != TRANSMISSION_MODE_16K &&
|
|
||||||
object->transmission_mode != TRANSMISSION_MODE_32K) {
|
|
||||||
GST_WARNING_OBJECT (object, "Wrong DVB-T2 parameter combination: "
|
|
||||||
"transmission mode should be either AUTO, 1K, 2K, 4K, 8K, 16K "
|
|
||||||
"or 32K");
|
|
||||||
}
|
|
||||||
if (object->stream_id > 255) {
|
if (object->stream_id > 255) {
|
||||||
GST_WARNING_OBJECT (object, "Wrong DVB-T2 stream ID '%d'. Value "
|
GST_WARNING_OBJECT (object, "Wrong DVB-T2 stream ID '%d'. Value "
|
||||||
"can't be greater than 255", object->stream_id);
|
"can't be greater than 255", object->stream_id);
|
||||||
|
@ -2633,6 +2644,12 @@ gst_dvbsrc_set_fe_params (GstDvbSrc * object, struct dtv_properties *props)
|
||||||
"Attempting invalid modulation '%u' for delivery system '%u'",
|
"Attempting invalid modulation '%u' for delivery system '%u'",
|
||||||
object->modulation, object->delsys);
|
object->modulation, object->delsys);
|
||||||
}
|
}
|
||||||
|
if (!gst_dvbsrc_is_valid_trans_mode (object->delsys,
|
||||||
|
object->transmission_mode)) {
|
||||||
|
GST_WARNING_OBJECT (object,
|
||||||
|
"Attempting invalid transmission mode '%u' for delivery system '%u'",
|
||||||
|
object->transmission_mode, object->delsys);
|
||||||
|
}
|
||||||
|
|
||||||
set_prop (props->props, &n, DTV_TUNE, 0);
|
set_prop (props->props, &n, DTV_TUNE, 0);
|
||||||
props->num = n;
|
props->num = n;
|
||||||
|
|
Loading…
Reference in a new issue