dvbsrc: avoid redundant delsys querying

There is no need to query the frontend for the list
of supported delivery systems if we are selecting
one from the list of autodetected ones.
This commit is contained in:
Reynaldo H. Verdejo Pinochet 2016-04-11 22:08:03 -07:00
parent 0826e78266
commit 768b0c2696

View file

@ -2201,27 +2201,30 @@ gst_dvbsrc_tune_fe (GstDvbSrc * object)
return FALSE; return FALSE;
} }
GST_DEBUG_OBJECT (object, "check delivery systems"); /* If there's no delivery system set yet, proceed with the autodetected
* one, otherwise confirm the one set is supported */
dvb_prop[0].cmd = DTV_ENUM_DELSYS; if (object->delsys == SYS_UNDEFINED)
props.num = 1;
props.props = dvb_prop;
LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_GET_PROPERTY, &props));
if (err) {
GST_WARNING_OBJECT (object, "Error enumerating delsys: %s",
g_strerror (errno));
return FALSE;
}
/* If there's no delivery system set yet. Choose the
* last from the list of frontend supported ones */
if (object->delsys == SYS_UNDEFINED) {
object->delsys = object->best_guess_delsys; object->delsys = object->best_guess_delsys;
} else if (!gst_dvbsrc_check_delsys (&dvb_prop[0], object->delsys)) { else {
GST_WARNING_OBJECT (object, "Delsys fail %u", object->delsys); GST_DEBUG_OBJECT (object, "Confirming delsys '%u' is supported",
return FALSE; object->delsys);
dvb_prop[0].cmd = DTV_ENUM_DELSYS;
props.num = 1;
props.props = dvb_prop;
LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend,
FE_GET_PROPERTY, &props));
if (err) {
GST_WARNING_OBJECT (object, "Error enumerating delsys: %s",
g_strerror (errno));
return FALSE;
}
if (!gst_dvbsrc_check_delsys (&dvb_prop[0], object->delsys)) {
GST_WARNING_OBJECT (object, "Adapter does not support delsys '%u'",
object->delsys);
return FALSE;
}
} }
gst_dvbsrc_unset_pes_filters (object); gst_dvbsrc_unset_pes_filters (object);