vdr 2.6.8
cRecorder Class Reference

#include <recorder.h>

Public Member Functions

 cRecorder (const char *FileName, const cChannel *Channel, int Priority)
 
virtual ~cRecorder ()
 
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)
 
virtual void Receive (const uchar *Data, int Length)
 
virtual void Action (void)
 
- 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

cTsCheckertsChecker
 
cFrameCheckerframeChecker
 
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 22 of file recorder.h.

Constructor & Destructor Documentation

◆ cRecorder()

◆ ~cRecorder()

cRecorder::~cRecorder ( )
virtual

Member Function Documentation

◆ Action()

void cRecorder::Action ( void )
protectedvirtual

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 315 of file recorder.c.

References cFrameDetector::Analyze(), cFrameDetector::AspectRatio(), cRecordingInfo::AspectRatio(), cFrameChecker::CheckFrame(), DEFAULTFRAMESPERSECOND, cRingBufferLinear::Del(), DoubleEqual(), esyslog, fileName, fileSize, firstIframeSeen, frameChecker, frameDetector, cFrameDetector::FrameHeight(), cRecordingInfo::FrameHeight(), cFrameDetector::FramesPerSecond(), cRecordingInfo::FramesPerSecond(), cFrameDetector::FrameWidth(), cRecordingInfo::FrameWidth(), cRingBufferLinear::Get(), cPatPmtGenerator::GetPat(), cPatPmtGenerator::GetPmt(), HandleErrors(), cFrameDetector::IndependentFrame(), index, cRecordingUserCommand::InvokeCommand(), LOCK_RECORDINGS_WRITE, LOG_ERROR_STR, MAXBROKENTIMEOUT, cFileName::Name(), cFrameDetector::NewFrame(), NextFile(), cFileName::Number(), patPmtGenerator, PTSTICKS, recordFile, recordingInfo, recordingName, cFrameChecker::ReportBroken(), cShutdownHandler::RequestEmergencyExit(), ringBuffer, RUC_STARTRECORDING, cThread::Running(), cFrameDetector::ScanType(), cTimeMs::Set(), cFrameChecker::SetFrameDelta(), cRecordingInfo::SetFrameParams(), cRecordingInfo::SetFramesPerSecond(), ShutdownHandler, cFrameDetector::Synced(), cTimeMs::TimedOut(), TS_SIZE, cIndexFile::Write(), cRecordingInfo::Write(), and cUnbufferedFile::Write().

◆ Activate()

void cRecorder::Activate ( bool On)
protectedvirtual

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 274 of file recorder.c.

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

◆ Errors()

int cRecorder::Errors ( void )
inline

Definition at line 57 of file recorder.h.

References errors, and oldErrors.

Referenced by cRecordControl::Stop().

◆ HandleErrors()

◆ NextFile()

bool cRecorder::NextFile ( void )
private

◆ Receive()

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

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 282 of file recorder.c.

References cTsChecker::CheckTs(), firstIframeSeen, cRingBufferLinear::Put(), cRingBuffer::ReportOverflow(), ringBuffer, cThread::Running(), TS_SIZE, and tsChecker.

◆ RunningLowOnDiskSpace()

bool cRecorder::RunningLowOnDiskSpace ( void )
private

Member Data Documentation

◆ errors

int cRecorder::errors
private

Definition at line 39 of file recorder.h.

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

◆ fileName

cFileName* cRecorder::fileName
private

Definition at line 29 of file recorder.h.

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

◆ fileSize

off_t cRecorder::fileSize
private

Definition at line 35 of file recorder.h.

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

◆ firstIframeSeen

bool cRecorder::firstIframeSeen
private

Definition at line 34 of file recorder.h.

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

◆ frameChecker

cFrameChecker* cRecorder::frameChecker
private

Definition at line 25 of file recorder.h.

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

◆ frameDetector

cFrameDetector* cRecorder::frameDetector
private

Definition at line 27 of file recorder.h.

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

◆ index

cIndexFile* cRecorder::index
private

Definition at line 31 of file recorder.h.

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

◆ lastDiskSpaceCheck

time_t cRecorder::lastDiskSpaceCheck
private

Definition at line 36 of file recorder.h.

Referenced by cRecorder(), and RunningLowOnDiskSpace().

◆ lastErrorLog

time_t cRecorder::lastErrorLog
private

Definition at line 37 of file recorder.h.

Referenced by cRecorder(), and HandleErrors().

◆ lastErrors

int cRecorder::lastErrors
private

Definition at line 40 of file recorder.h.

Referenced by cRecorder(), and HandleErrors().

◆ oldErrors

int cRecorder::oldErrors
private

Definition at line 38 of file recorder.h.

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

◆ patPmtGenerator

cPatPmtGenerator cRecorder::patPmtGenerator
private

Definition at line 28 of file recorder.h.

Referenced by Action(), and cRecorder().

◆ recordFile

cUnbufferedFile* cRecorder::recordFile
private

Definition at line 32 of file recorder.h.

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

◆ recordingInfo

cRecordingInfo* cRecorder::recordingInfo
private

Definition at line 30 of file recorder.h.

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

◆ recordingName

char* cRecorder::recordingName
private

Definition at line 33 of file recorder.h.

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

◆ ringBuffer

cRingBufferLinear* cRecorder::ringBuffer
private

Definition at line 26 of file recorder.h.

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

◆ tsChecker

cTsChecker* cRecorder::tsChecker
private

Definition at line 24 of file recorder.h.

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


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