vdr 2.7.6
cRecorder Class Reference

#include <recorder.h>

Public Member Functions

 cRecorder (const char *FileName, const cChannel *Channel, int Priority)
 
virtual ~cRecorder () override
 
int Errors (void)
 
- Public Member Functions inherited from cReceiver
 cReceiver (const cChannel *Channel=NULL, int Priority=MINPRIORITY)
 
virtual ~cReceiver ()
 
int Priority (void)
 
void SetPriority (int Priority)
 
bool AddPid (int Pid)
 
bool AddPids (const int *Pids)
 
bool AddPids (int Pid1, int Pid2, int Pid3=0, int Pid4=0, int Pid5=0, int Pid6=0, int Pid7=0, int Pid8=0, int Pid9=0)
 
bool SetPids (const cChannel *Channel)
 
void DelPid (int Pid)
 
void DelPids (const int *Pids)
 
tChannelID ChannelID (void)
 
int NumPids (void) const
 
bool IsAttached (void)
 

Protected Member Functions

virtual void Activate (bool On) override
 
virtual void Receive (const uchar *Data, int Length) override
 
virtual void Action (void) override
 
- Protected Member Functions inherited from cReceiver
cDeviceDevice (void)
 
void Detach (void)
 

Private Member Functions

bool RunningLowOnDiskSpace (void)
 
bool NextFile (void)
 
void HandleErrors (bool Force=false)
 
- Private Member Functions inherited from cThread
 cThread (const char *Description=NULL, bool LowPriority=false)
 
virtual ~cThread ()
 
void SetDescription (const char *Description,...) __attribute__((format(printf
 
void bool Start (void)
 
bool Active (void)
 
void SetPriority (int Priority)
 
void SetIOPriority (int Priority)
 
void Lock (void)
 
void Unlock (void)
 
bool Running (void)
 
void Cancel (int WaitSeconds=0)
 

Private Attributes

cRingBufferLinearringBuffer
 
cFrameDetectorframeDetector
 
cPatPmtGenerator patPmtGenerator
 
cFileNamefileName
 
cRecordingInforecordingInfo
 
cIndexFileindex
 
cUnbufferedFilerecordFile
 
char * recordingName
 
bool firstIframeSeen
 
off_t fileSize
 
time_t lastDiskSpaceCheck
 
time_t lastErrorLog
 
int oldErrors
 
int errors
 
int lastErrors
 

Additional Inherited Members

- Static Private Member Functions inherited from cThread
static tThreadId ThreadId (void)
 
static tThreadId IsMainThread (void)
 
static void SetMainThreadId (void)
 

Detailed Description

Definition at line 19 of file recorder.h.

Constructor & Destructor Documentation

◆ cRecorder()

cRecorder::cRecorder ( const char * FileName,
const cChannel * Channel,
int Priority )

◆ ~cRecorder()

cRecorder::~cRecorder ( )
overridevirtual

Definition at line 74 of file recorder.c.

References cReceiver::Detach(), fileName, frameDetector, index, recordingName, and ringBuffer.

Member Function Documentation

◆ Action()

void cRecorder::Action ( void )
overrideprotectedvirtual

A derived cThread class must implement the code it wants to execute as a separate thread in this function.

If this is a loop, it must check Running() repeatedly to see whether it's time to stop.

Implements cThread.

Definition at line 166 of file recorder.c.

References DEFAULTFRAMESPERSECOND, DoubleEqual(), errors, esyslog, fileName, fileSize, firstIframeSeen, frameDetector, HandleErrors(), index, cRecordingUserCommand::InvokeCommand(), LOCK_RECORDINGS_WRITE, LOG_ERROR_STR, MAXBROKENTIMEOUT, NextFile(), oldErrors, patPmtGenerator, recordFile, recordingInfo, recordingName, ringBuffer, RUC_STARTRECORDING, cThread::Running(), cTimeMs::Set(), ShutdownHandler, cTimeMs::TimedOut(), and TS_SIZE.

◆ Activate()

void cRecorder::Activate ( bool On)
overrideprotectedvirtual

If you override Activate() you need to call Detach() (which is a member of the cReceiver class) from your own destructor in order to properly get a call to Activate(false) when your object is destroyed.

Reimplemented from cReceiver.

Definition at line 127 of file recorder.c.

References cThread::Cancel(), and cThread::Start().

◆ Errors()

int cRecorder::Errors ( void )
inline

Definition at line 52 of file recorder.h.

References errors, and oldErrors.

◆ HandleErrors()

void cRecorder::HandleErrors ( bool Force = false)
private

◆ NextFile()

bool cRecorder::NextFile ( void )
private

Definition at line 116 of file recorder.c.

References fileName, fileSize, frameDetector, MEGABYTE, recordFile, RunningLowOnDiskSpace(), and Setup.

Referenced by Action().

◆ Receive()

void cRecorder::Receive ( const uchar * Data,
int Length )
overrideprotectedvirtual

This function is called from the cDevice we are attached to, and delivers one TS packet from the set of PIDs the cReceiver has requested.

The data packet must be accepted immediately, and the call must return as soon as possible, without any unnecessary delay. Each TS packet will be delivered only ONCE, so the cReceiver must make sure that it will be able to buffer the data if necessary.

Implements cReceiver.

Definition at line 135 of file recorder.c.

References ringBuffer, cThread::Running(), and TS_SIZE.

◆ RunningLowOnDiskSpace()

bool cRecorder::RunningLowOnDiskSpace ( void )
private

Definition at line 103 of file recorder.c.

References DISKCHECKINTERVAL, dsyslog, fileName, FreeDiskSpaceMB(), lastDiskSpaceCheck, and MINFREEDISKSPACE.

Referenced by NextFile().

Member Data Documentation

◆ errors

int cRecorder::errors
private

Definition at line 34 of file recorder.h.

Referenced by Action(), cRecorder(), Errors(), and HandleErrors().

◆ fileName

cFileName* cRecorder::fileName
private

Definition at line 24 of file recorder.h.

Referenced by Action(), cRecorder(), NextFile(), RunningLowOnDiskSpace(), and ~cRecorder().

◆ fileSize

off_t cRecorder::fileSize
private

Definition at line 30 of file recorder.h.

Referenced by Action(), cRecorder(), and NextFile().

◆ firstIframeSeen

bool cRecorder::firstIframeSeen
private

Definition at line 29 of file recorder.h.

Referenced by Action(), and cRecorder().

◆ frameDetector

cFrameDetector* cRecorder::frameDetector
private

Definition at line 22 of file recorder.h.

Referenced by Action(), cRecorder(), NextFile(), and ~cRecorder().

◆ index

cIndexFile* cRecorder::index
private

Definition at line 26 of file recorder.h.

Referenced by Action(), cRecorder(), and ~cRecorder().

◆ lastDiskSpaceCheck

time_t cRecorder::lastDiskSpaceCheck
private

Definition at line 31 of file recorder.h.

Referenced by cRecorder(), and RunningLowOnDiskSpace().

◆ lastErrorLog

time_t cRecorder::lastErrorLog
private

Definition at line 32 of file recorder.h.

Referenced by cRecorder(), and HandleErrors().

◆ lastErrors

int cRecorder::lastErrors
private

Definition at line 35 of file recorder.h.

Referenced by cRecorder(), and HandleErrors().

◆ oldErrors

int cRecorder::oldErrors
private

Definition at line 33 of file recorder.h.

Referenced by Action(), cRecorder(), Errors(), and HandleErrors().

◆ patPmtGenerator

cPatPmtGenerator cRecorder::patPmtGenerator
private

Definition at line 23 of file recorder.h.

Referenced by Action(), and cRecorder().

◆ recordFile

cUnbufferedFile* cRecorder::recordFile
private

Definition at line 27 of file recorder.h.

Referenced by Action(), cRecorder(), and NextFile().

◆ recordingInfo

cRecordingInfo* cRecorder::recordingInfo
private

Definition at line 25 of file recorder.h.

Referenced by Action(), cRecorder(), and HandleErrors().

◆ recordingName

char* cRecorder::recordingName
private

Definition at line 28 of file recorder.h.

Referenced by Action(), cRecorder(), HandleErrors(), and ~cRecorder().

◆ ringBuffer

cRingBufferLinear* cRecorder::ringBuffer
private

Definition at line 21 of file recorder.h.

Referenced by Action(), cRecorder(), Receive(), and ~cRecorder().


The documentation for this class was generated from the following files: