From 8f5deb8327301c34642c6f403d0c7997f67de717 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 8 Feb 2004 11:13:36 +0100 Subject: [PATCH] Preliminary fix for the "Unknown picture type error" --- CONTRIBUTORS | 1 + HISTORY | 4 ++++ dvbdevice.c | 7 ++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index aa4a0d10..e603f52d 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -685,6 +685,7 @@ Sascha Volkenandt for reporting a problem with cReceivers that use a ring buffer and didn't immediately return from their Receive() function if the buffer runs full for reporting a crash in case there is no DVB hardware present + for his support in debugging the the "Unknown picture type error" Malcolm Caldwell for modifying LOF handling to allow for C-band reception diff --git a/HISTORY b/HISTORY index dde28ea6..857e0c84 100644 --- a/HISTORY +++ b/HISTORY @@ -2638,3 +2638,7 @@ Video Disk Recorder Revision History Schultz). Linked channels are detected and added to 'channels.conf', but currently they are not yet presented to the user other than being in the normal channel list (this will come later). +- Preliminary fix for the "Unknown picture type error" (thanks to Sascha + Volkenandt for his support in debugging this one). This may slow down switching + between channels on different transponders for now, but a better solution will + come later. diff --git a/dvbdevice.c b/dvbdevice.c index 01a9a6c6..cd6abbe0 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.c 1.79 2004/01/25 13:50:21 kls Exp $ + * $Id: dvbdevice.c 1.80 2004/02/08 11:11:10 kls Exp $ */ #include "dvbdevice.h" @@ -751,6 +751,11 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView) dvbTuner->Set(Channel, DoTune, !EITScanner.UsesDevice(this)); //XXX 1.3: this is an ugly hack - find a cleaner solution//XXX + //XXX TODO preliminary fix for the "Unknown picture type" error + time_t t0 = time(NULL); + while (!dvbTuner->Locked() && time(NULL) - t0 < 5) + usleep(100); + //XXX // PID settings: if (TurnOnLivePIDs) {