From 780cd3d52f1ca4654d62ec7a30902bd6fc83e597 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 28 Jul 2001 11:26:45 +0200 Subject: [PATCH] Avoiding audio/video distortions in 'Transfer Mode' --- HISTORY | 3 ++- dvbapi.c | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/HISTORY b/HISTORY index 09698be0..e782f354 100644 --- a/HISTORY +++ b/HISTORY @@ -570,7 +570,7 @@ Video Disk Recorder Revision History - Fixed handling a channel group separator at the very beginning of the 'channels.conf' file. -2001-07-27: Version 0.85 +2001-07-29: Version 0.85 - Added Norwegian language texts (thanks to Jørgen Tvedt). - Increased the usleep value in cDvbOsd::Cmd() to 5000 in order to work on @@ -586,3 +586,4 @@ Video Disk Recorder Revision History - DiSEqC support can now be generally enabled/disabled in the Setup menu. This may be necessary if your multiswitch gets irritated by the default DiSEqC codes '0' (thanks to Markus Lang). +- Avoiding audio/video distortions in 'Transfer Mode'. diff --git a/dvbapi.c b/dvbapi.c index 4fa5589d..fbb8b62d 100644 --- a/dvbapi.c +++ b/dvbapi.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbapi.c 1.90 2001/07/27 13:33:56 kls Exp $ + * $Id: dvbapi.c 1.91 2001/07/28 11:23:59 kls Exp $ */ #include "dvbapi.h" @@ -1163,8 +1163,10 @@ void cTransferBuffer::Output(void) uchar b[MINVIDEODATA]; while (Busy()) { if (!gotBufferReserve) { - if (Available() < MAXFRAMESIZE) + if (Available() < MAXFRAMESIZE) { usleep(100000); // allow the buffer to collect some reserve + continue; + } else gotBufferReserve = true; } @@ -2256,6 +2258,7 @@ bool cDvbApi::SetChannel(int ChannelNumber, int FrequencyMHz, char Polarization, if (CaDvbApi) { if (!CaDvbApi->Recording()) { if (CaDvbApi->SetChannel(ChannelNumber, FrequencyMHz, Polarization, Diseqc, Srate, Vpid, Apid1, Apid2, Dpid1, Dpid2, Tpid, Ca, Pnr)) { + usleep(500000); // avoids distortions (apparently switching into replay mode immediately after tuning causes problems) SetModeReplay(); transferringFromDvbApi = CaDvbApi->StartTransfer(fd_video); }