mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Now calling DeviceClear() in cTransfer::Receive() if the output device blocks, instead of not retrying for 10 seconds
This commit is contained in:
parent
5c47a0033e
commit
df4e5a1072
@ -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
|
||||
|
2
HISTORY
2
HISTORY
@ -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).
|
||||
|
14
transfer.c
14
transfer.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user