Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] UPT error - The solution (maybe)



After some lengthy debugging on Sascha Volkenandt's machine, where
the UPT error was easily reproducable, I believe I have finally
found a cure for it.

It would appear that the root of the problem is that VDR sets the PIDs
even if the tuner doesn't have a lock yet.

The following patch is a quick hack to fix this:

--- dvbdevice.c 2004/01/25 13:50:21     1.79
+++ dvbdevice.c 2004/02/06 15:44:57
@@ -751,6 +751,11 @@
 
   dvbTuner->Set(Channel, DoTune, !EITScanner.UsesDevice(this)); //XXX 1.3: this is an ugly hack - find a cleaner solution//XXX
 
+  //XXX
+  time_t t0 = time(NULL);
+  while (!dvbTuner->Locked() && time(NULL) - t0 < 5)
+        fprintf(stderr, ".");
+  //XXX
   // PID settings:
 
   if (TurnOnLivePIDs) {

You can apply it to VDR 1.3.3 as well as 1.2.6 (line numbers may be different
there, just search for "PID settings" and insert the lines). 

Also, in VDR 1.2.6 the line 

  bool Locked(void) { return tunerStatus == tsLocked; }

in cDvbTuner needs to be changed to

  bool Locked(void) { return tunerStatus >= tsLocked; }

Those of you who are plagued by the UPT error, please apply the
above fix and let me know whether or not you still get the UPT
error.

Klaus


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe vdr" as subject.



Home | Main Index | Thread Index