Initiating an emergency exit on too many UPT errors per recording

This commit is contained in:
Klaus Schmidinger 2004-02-14 10:43:57 +01:00
parent 06d5342393
commit 96055681fc
4 changed files with 16 additions and 4 deletions

View File

@ -438,6 +438,8 @@ Gregoire Favre <greg@ulima.unil.ch>
for fixing some function headers to make them compile with gcc 3.x
for reporting a bug in taking an active SVDRP connection into account when doing shutdown
for translating OSD texts to the French language
for suggesting to initiate an "emergency exit" if there are UPT errors during a
recording
Sven Grothklags <sven@uni-paderborn.de>
for fixing the cutting mechanism to make it re-sync in case a frame is larger

View File

@ -2652,7 +2652,7 @@ Video Disk Recorder Revision History
actual CAM type as reported by the CAM. The 'ca.conf' file has been stripped
down to the values 0..4.
2004-02-13: Version 1.3.5
2004-02-14: Version 1.3.5
- Fixed reading the EPG preferred language parameter from 'setup.conf'.
- Fixed switching to a visible programme in case the current channel has neither
@ -2663,3 +2663,7 @@ Video Disk Recorder Revision History
transponders on the same frequency, with different polarization, like Hispasat
at S30.0W (thanks to Thomas Bergwinkl for pointing this out). See man vdr(5)
for details about the enhanced channel ID format.
- Since there appears to be no general solution for the UPT error yet, a recording
now initiates an "emergency exit" if the number of UPT errors during one
recording exceeds 10 (suggested by Gregoire Favre). Since the UPT error doesn't
happen on my system, this has not been explicitly tested.

View File

@ -8,7 +8,7 @@
* the Linux DVB driver's 'tuxplayer' example and were rewritten to suit
* VDR's needs.
*
* $Id: remux.c 1.17 2003/09/14 10:34:39 kls Exp $
* $Id: remux.c 1.18 2004/02/14 10:40:37 kls Exp $
*/
/* The calling interface of the 'cRemux::Process()' function is defined
@ -114,6 +114,7 @@
#define SC_PICTURE 0x00 // "picture header"
#define MAXNONUSEFULDATA (10*1024*1024)
#define MAXNUMUPTERRORS 10
class cTS2PES {
private:
@ -459,6 +460,7 @@ cRemux::cRemux(int VPid, int APid1, int APid2, int DPid1, int DPid2, bool ExitOn
dPid1 = DPid1;
dPid2 = DPid2;
exitOnFailure = ExitOnFailure;
numUPTerrors = 0;
synced = false;
skipped = 0;
resultCount = resultDelivered = 0;
@ -618,8 +620,11 @@ XXX*/
if (l < 0)
return NULL; // no useful data found, wait for more
if (pt != NO_PICTURE) {
if (pt < I_FRAME || B_FRAME < pt)
if (pt < I_FRAME || B_FRAME < pt) {
esyslog("ERROR: unknown picture type '%d'", pt);
if (++numUPTerrors > MAXNUMUPTERRORS && exitOnFailure)
cThread::EmergencyExit(true);
}
else if (!synced) {
if (pt == I_FRAME) {
resultDelivered = i; // will drop everything before this position

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: remux.h 1.10 2003/04/26 14:13:11 kls Exp $
* $Id: remux.h 1.11 2004/02/14 10:40:41 kls Exp $
*/
#ifndef __REMUX_H
@ -30,6 +30,7 @@ class cTS2PES;
class cRemux {
private:
bool exitOnFailure;
int numUPTerrors;
bool synced;
int skipped;
int vPid, aPid1, aPid2, dPid1, dPid2;