Frisch aus die ML:
--------------------------------------------------------------------------------------------------
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