mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Initiating an emergency exit on too many UPT errors per recording
This commit is contained in:
parent
06d5342393
commit
96055681fc
@ -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
|
||||
|
6
HISTORY
6
HISTORY
@ -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.
|
||||
|
9
remux.c
9
remux.c
@ -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
|
||||
|
3
remux.h
3
remux.h
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user