dvbsrc: avoid redundant delsys querying
authorReynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
Tue, 12 Apr 2016 05:08:03 +0000 (22:08 -0700)
committerReynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
Tue, 12 Apr 2016 22:08:29 +0000 (15:08 -0700)
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.

sys/dvb/gstdvbsrc.c

index 4f4a759..b07b7f9 100644 (file)
@@ -2201,27 +2201,30 @@ gst_dvbsrc_tune_fe (GstDvbSrc * object)
     return FALSE;
   }
 
-  GST_DEBUG_OBJECT (object, "check delivery systems");
-
-  dvb_prop[0].cmd = DTV_ENUM_DELSYS;
-  props.num = 1;
-  props.props = dvb_prop;
+  /* If there's no delivery system set yet, proceed with the autodetected
+   * one, otherwise confirm the one set is supported */
+  if (object->delsys == SYS_UNDEFINED)
+    object->delsys = object->best_guess_delsys;
+  else {
+    GST_DEBUG_OBJECT (object, "Confirming delsys '%u' is supported",
+        object->delsys);
 
-  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));
+    dvb_prop[0].cmd = DTV_ENUM_DELSYS;
+    props.num = 1;
+    props.props = dvb_prop;
 
-    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;
-  } else if (!gst_dvbsrc_check_delsys (&dvb_prop[0], object->delsys)) {
-    GST_WARNING_OBJECT (object, "Delsys fail %u", object->delsys);
-    return FALSE;
+    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);