diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2013-03-01 10:02:01 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2013-03-01 10:02:01 +0100 |
commit | df4e5a1072ac23e9caafa2eb7f64510f757e5437 (patch) | |
tree | 62cb67ac472350f819614a74eb236224aa117d64 | |
parent | 5c47a0033e18ace93453807c8eb1972c6bde5953 (diff) | |
download | vdr-df4e5a1072ac23e9caafa2eb7f64510f757e5437.tar.gz vdr-df4e5a1072ac23e9caafa2eb7f64510f757e5437.tar.bz2 |
Now calling DeviceClear() in cTransfer::Receive() if the output device blocks, instead of not retrying for 10 seconds
-rw-r--r-- | CONTRIBUTORS | 3 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | transfer.c | 14 | ||||
-rw-r--r-- | transfer.h | 5 |
4 files changed, 9 insertions, 15 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c3433ff3..9a8b2727 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -694,6 +694,8 @@ Oliver Endriss <o.endriss@gmx.de> for reporting a crash in a plugin using cDeviceHook when VDR ends for reporting that "include" needs to be removed from the DVBDIR setting in the VDR Makefile + for helping to debug a problem with reduced number of retries in Transfer Mode on + SD-FF cards Reinhard Walter Buchner <rw.buchner@freenet.de> for adding some satellites to 'sources.conf' @@ -1009,6 +1011,7 @@ Andreas Mair <amair.sob@googlemail.com> but one of them ends in an additional digit, as in "abc" and "abc2" for reporting multiple occurrences of the same directory in the recordings list ini case there are directories that only differ in non-alphanumeric characters + for reporting a problem with reduced number of retries in Transfer Mode on SD-FF cards Olivier Jacques <jacquesolivier@hotmail.com>) for translating OSD texts to the French language @@ -7675,3 +7675,5 @@ Video Disk Recorder Revision History - Updated the Dutch OSD texts (thanks to Carel Willemse). - Removed all "fuzzy" translations from the files ar.po, hu_HU.po and sr_SR.po, because more often than not they are just wrong. +- Now calling DeviceClear() in cTransfer::Receive() if the output device blocks, instead + of not retrying for 10 seconds (reported by Andreas Mair, with help from Oliver Endriss). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: transfer.c 2.7 2013/01/20 13:40:30 kls Exp $ + * $Id: transfer.c 2.8 2013/03/01 09:50:15 kls Exp $ */ #include "transfer.h" @@ -15,7 +15,6 @@ cTransfer::cTransfer(const cChannel *Channel) :cReceiver(Channel, TRANSFERPRIORITY) { patPmtGenerator.SetChannel(Channel); - retriesExceeded = false; } cTransfer::~cTransfer() @@ -38,7 +37,6 @@ void cTransfer::Activate(bool On) #define MAXRETRIES 5 // max. number of retries for a single TS packet #define RETRYWAIT 5 // time (in ms) between two retries -#define RETRYPAUSE 10000 // time (in ms) for which to pause retrying once a packet has not been accepted void cTransfer::Receive(uchar *Data, int Length) { @@ -48,17 +46,11 @@ void cTransfer::Receive(uchar *Data, int Length) // now and then there may be conditions where the packet just can't be // handled when offered the first time, so that's why we try several times: for (int i = 0; i < MAXRETRIES; i++) { - if (PlayTs(Data, Length) > 0) { - if (retriesExceeded && timer.TimedOut()) - retriesExceeded = false; - return; - } - if (retriesExceeded) // no retries once a packet has not been accepted + if (PlayTs(Data, Length) > 0) return; cCondWait::SleepMs(RETRYWAIT); } - retriesExceeded = true; - timer.Set(RETRYPAUSE); // wait a while before retrying + DeviceClear(); esyslog("ERROR: TS packet not accepted in Transfer Mode"); } } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: transfer.h 2.3 2013/01/20 13:12:38 kls Exp $ + * $Id: transfer.h 2.4 2013/03/01 09:49:46 kls Exp $ */ #ifndef __TRANSFER_H @@ -13,13 +13,10 @@ #include "player.h" #include "receiver.h" #include "remux.h" -#include "tools.h" class cTransfer : public cReceiver, public cPlayer { private: cPatPmtGenerator patPmtGenerator; - bool retriesExceeded; - cTimeMs timer; protected: virtual void Activate(bool On); virtual void Receive(uchar *Data, int Length); |