mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Moved the detection of a broken video data stream from the cDevice into the cRecorder
This commit is contained in:
13
recorder.c
13
recorder.c
@@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: recorder.c 1.5 2003/01/25 16:23:36 kls Exp $
|
||||
* $Id: recorder.c 1.6 2003/05/16 13:33:04 kls Exp $
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
@@ -16,6 +16,10 @@
|
||||
// (must be larger than MINVIDEODATA - see remux.h)
|
||||
#define VIDEOBUFSIZE MEGABYTE(5)
|
||||
|
||||
// The maximum time we wait before assuming that a recorded video data stream
|
||||
// is broken:
|
||||
#define MAXBROKENTIMEOUT 30 // seconds
|
||||
|
||||
#define MINFREEDISKSPACE (512) // MB
|
||||
#define DISKCHECKINTERVAL 100 // seconds
|
||||
|
||||
@@ -110,6 +114,7 @@ void cRecorder::Action(void)
|
||||
{
|
||||
dsyslog("recording thread started (pid=%d)", getpid());
|
||||
|
||||
time_t t = time(NULL);
|
||||
active = true;
|
||||
while (active) {
|
||||
int r;
|
||||
@@ -134,6 +139,12 @@ void cRecorder::Action(void)
|
||||
else
|
||||
break;
|
||||
}
|
||||
t = time(NULL);
|
||||
}
|
||||
else if (time(NULL) - t > MAXBROKENTIMEOUT) {
|
||||
esyslog("ERROR: video data stream broken");
|
||||
cThread::EmergencyExit(true);
|
||||
t = time(NULL);
|
||||
}
|
||||
else
|
||||
usleep(1); // this keeps the CPU load low
|
||||
|
||||
Reference in New Issue
Block a user