vdr  2.0.2
Classes | Macros | Functions | Variables
recording.c File Reference
#include "recording.h"
#include <ctype.h>
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <inttypes.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <unistd.h>
#include "channels.h"
#include "i18n.h"
#include "interface.h"
#include "remux.h"
#include "ringbuffer.h"
#include "skins.h"
#include "tools.h"
#include "videodir.h"

Go to the source code of this file.

Classes

class  cRemoveDeletedRecordingsThread
 
struct  tCharExchange
 
class  cIndexFileGenerator
 
struct  tIndexPes
 
struct  tIndexTs
 

Macros

#define __STDC_FORMAT_MACROS
 
#define SUMMARYFALLBACK
 
#define RECEXT   ".rec"
 
#define DELEXT   ".del"
 
#define DATAFORMATPES   "%4d-%02d-%02d.%02d%*c%02d.%02d.%02d" RECEXT
 
#define NAMEFORMATPES   "%s/%s/" "%4d-%02d-%02d.%02d.%02d.%02d.%02d" RECEXT
 
#define DATAFORMATTS   "%4d-%02d-%02d.%02d.%02d.%d-%d" RECEXT
 
#define NAMEFORMATTS   "%s/%s/" DATAFORMATTS
 
#define RESUMEFILESUFFIX   "/resume%s%s"
 
#define SUMMARYFILESUFFIX   "/summary.vdr"
 
#define INFOFILESUFFIX   "/info"
 
#define MARKSFILESUFFIX   "/marks"
 
#define SORTMODEFILE   ".sort"
 
#define MINDISKSPACE   1024
 
#define REMOVECHECKDELTA   60
 
#define DELETEDLIFETIME   300
 
#define DISKCHECKDELTA   100
 
#define REMOVELATENCY   10
 
#define MARKSUPDATEDELTA   10
 
#define MININDEXAGE   3600
 
#define MAX_LINK_LEVEL   6
 
#define RESUME_NOT_INITIALIZED   (-2)
 
#define IFG_BUFFER_SIZE   KILOBYTE(100)
 
#define INDEXFILESUFFIX   "/index"
 
#define MAXINDEXCATCHUP   8
 
#define INDEXCATCHUPWAIT   100
 
#define MAXWAITFORINDEXFILE   10
 
#define INDEXFILECHECKINTERVAL   500
 
#define INDEXFILETESTINTERVAL   10
 
#define MAXFILESPERRECORDINGPES   255
 
#define RECORDFILESUFFIXPES   "/%03d.vdr"
 
#define MAXFILESPERRECORDINGTS   65535
 
#define RECORDFILESUFFIXTS   "/%05d.ts"
 
#define RECORDFILESUFFIXLEN   20
 

Functions

cRecordings DeletedRecordings (true)
 
void RemoveDeletedRecordings (void)
 
void AssertFreeDiskSpace (int Priority, bool Force)
 
bool NeedsConversion (const char *p)
 
char * ExchangeChars (char *s, bool ToFileSystem)
 
char * LimitNameLengths (char *s, int PathMax, int NameMax)
 
bool GenerateIndex (const char *FileName)
 
cString IndexToHMSF (int Index, bool WithFrame, double FramesPerSecond)
 
int HMSFToIndex (const char *HMSF, double FramesPerSecond)
 
int SecondsToFrames (int Seconds, double FramesPerSecond)
 
int ReadFrame (cUnbufferedFile *f, uchar *b, int Length, int Max)
 
bool HasRecordingsSortMode (const char *Directory)
 
void GetRecordingsSortMode (const char *Directory)
 
void SetRecordingsSortMode (const char *Directory, eRecordingsSortMode SortMode)
 
void IncRecordingsSortMode (const char *Directory)
 

Variables

int DirectoryPathMax = PATH_MAX - 1
 
int DirectoryNameMax = NAME_MAX
 
bool DirectoryEncoding = false
 
int InstanceId = 0
 
static
cRemoveDeletedRecordingsThread 
RemoveDeletedRecordingsThread
 
tCharExchange CharExchange []
 
const char * InvalidChars = "\"\\/:*?|<>#"
 
cRecordings Recordings
 
double MarkFramesPerSecond = DEFAULTFRAMESPERSECOND
 
cMutex MutexMarkFramesPerSecond
 
eRecordingsSortMode RecordingsSortMode = rsmName
 

Macro Definition Documentation

#define __STDC_FORMAT_MACROS

Definition at line 15 of file recording.c.

#define DATAFORMATPES   "%4d-%02d-%02d.%02d%*c%02d.%02d.%02d" RECEXT

Definition at line 44 of file recording.c.

Referenced by cRecording::cRecording().

#define DATAFORMATTS   "%4d-%02d-%02d.%02d.%02d.%d-%d" RECEXT

Definition at line 46 of file recording.c.

Referenced by cRecording::cRecording().

#define DELETEDLIFETIME   300

Definition at line 61 of file recording.c.

Referenced by cRemoveDeletedRecordingsThread::Action(), and RemoveDeletedRecordings().

#define DELEXT   ".del"
#define DISKCHECKDELTA   100

Definition at line 62 of file recording.c.

Referenced by AssertFreeDiskSpace().

#define IFG_BUFFER_SIZE   KILOBYTE(100)

Definition at line 1673 of file recording.c.

Referenced by cIndexFileGenerator::Action().

#define INDEXCATCHUPWAIT   100

Definition at line 1813 of file recording.c.

Referenced by cIndexFile::CatchUp().

#define INDEXFILECHECKINTERVAL   500

Definition at line 1837 of file recording.c.

Referenced by cIndexFile::cIndexFile(), and GenerateIndex().

#define INDEXFILESUFFIX   "/index"

Definition at line 1809 of file recording.c.

Referenced by GenerateIndex(), and cIndexFile::IndexFileName().

#define INDEXFILETESTINTERVAL   10

Definition at line 1838 of file recording.c.

Referenced by cIndexFile::cIndexFile().

#define INFOFILESUFFIX   "/info"
#define MARKSFILESUFFIX   "/marks"

Definition at line 54 of file recording.c.

Referenced by cMarks::Load().

#define MARKSUPDATEDELTA   10

Definition at line 64 of file recording.c.

#define MAX_LINK_LEVEL   6

Definition at line 67 of file recording.c.

Referenced by cRecordings::ScanVideoDir().

#define MAXFILESPERRECORDINGPES   255

Definition at line 2196 of file recording.c.

Referenced by cFileName::SetOffset().

#define MAXFILESPERRECORDINGTS   65535

Definition at line 2198 of file recording.c.

Referenced by cFileName::GetLastPatPmtVersions(), and cFileName::SetOffset().

#define MAXINDEXCATCHUP   8

Definition at line 1812 of file recording.c.

#define MAXWAITFORINDEXFILE   10

Definition at line 1836 of file recording.c.

Referenced by cIndexFile::cIndexFile().

#define MINDISKSPACE   1024

Definition at line 58 of file recording.c.

Referenced by AssertFreeDiskSpace().

#define MININDEXAGE   3600
#define NAMEFORMATPES   "%s/%s/" "%4d-%02d-%02d.%02d.%02d.%02d.%02d" RECEXT

Definition at line 45 of file recording.c.

Referenced by cRecording::FileName().

#define NAMEFORMATTS   "%s/%s/" DATAFORMATTS

Definition at line 47 of file recording.c.

Referenced by cRecording::FileName().

#define RECEXT   ".rec"

Definition at line 33 of file recording.c.

Referenced by cRecording::Delete(), cRecordings::ScanVideoDir(), and cRecording::Undelete().

#define RECORDFILESUFFIXLEN   20

Definition at line 2200 of file recording.c.

Referenced by cFileName::cFileName().

#define RECORDFILESUFFIXPES   "/%03d.vdr"

Definition at line 2197 of file recording.c.

Referenced by cFileName::SetOffset().

#define RECORDFILESUFFIXTS   "/%05d.ts"

Definition at line 2199 of file recording.c.

Referenced by cFileName::GetLastPatPmtVersions(), and cFileName::SetOffset().

#define REMOVECHECKDELTA   60

Definition at line 60 of file recording.c.

Referenced by RemoveDeletedRecordings().

#define REMOVELATENCY   10

Definition at line 63 of file recording.c.

Referenced by AssertFreeDiskSpace().

#define RESUME_NOT_INITIALIZED   (-2)
#define RESUMEFILESUFFIX   "/resume%s%s"

Definition at line 49 of file recording.c.

Referenced by cResumeFile::cResumeFile().

#define SORTMODEFILE   ".sort"
#define SUMMARYFALLBACK

Definition at line 31 of file recording.c.

#define SUMMARYFILESUFFIX   "/summary.vdr"

Definition at line 51 of file recording.c.

Referenced by cRecording::cRecording().

Function Documentation

void AssertFreeDiskSpace ( int  Priority = 0,
bool  Force = false 
)
cRecordings DeletedRecordings ( true  )
char* ExchangeChars ( char *  s,
bool  ToFileSystem 
)
bool GenerateIndex ( const char *  FileName)
void GetRecordingsSortMode ( const char *  Directory)
bool HasRecordingsSortMode ( const char *  Directory)

Definition at line 2411 of file recording.c.

References AddDirectory(), and SORTMODEFILE.

Referenced by cRecordControl::cRecordControl().

int HMSFToIndex ( const char *  HMSF,
double  FramesPerSecond 
)

Definition at line 2375 of file recording.c.

Referenced by cSVDRP::CmdPLAY(), and cMark::Parse().

void IncRecordingsSortMode ( const char *  Directory)
cString IndexToHMSF ( int  Index,
bool  WithFrame,
double  FramesPerSecond 
)
char* LimitNameLengths ( char *  s,
int  PathMax,
int  NameMax 
)

Definition at line 623 of file recording.c.

References FOLDERDELIMCHAR, NeedsConversion(), and SI::Utf8CharLen().

Referenced by cRecording::FileName().

bool NeedsConversion ( const char *  p)

Definition at line 545 of file recording.c.

References DirectoryEncoding, FOLDERDELIMCHAR, and InvalidChars.

Referenced by ExchangeChars(), and LimitNameLengths().

int ReadFrame ( cUnbufferedFile f,
uchar b,
int  Length,
int  Max 
)

Definition at line 2393 of file recording.c.

References esyslog, LOG_ERROR, and cUnbufferedFile::Read().

Referenced by cDvbPlayer::Goto(), and cCuttingThread::LoadFrame().

void RemoveDeletedRecordings ( void  )
int SecondsToFrames ( int  Seconds,
double  FramesPerSecond 
)
void SetRecordingsSortMode ( const char *  Directory,
eRecordingsSortMode  SortMode 
)

Variable Documentation

tCharExchange CharExchange[]
Initial value:
= {
{ FOLDERDELIMCHAR, '/' },
{ '/', FOLDERDELIMCHAR },
{ ' ', '_' },
{ '\'', '\'' },
{ '\'', '\x01' },
{ '/', '\x02' },
{ 0, 0 }
}

Definition at line 532 of file recording.c.

bool DirectoryEncoding = false

Definition at line 71 of file recording.c.

Referenced by ExchangeChars(), main(), and NeedsConversion().

int DirectoryNameMax = NAME_MAX

Definition at line 70 of file recording.c.

Referenced by cRecording::FileName(), and main().

int DirectoryPathMax = PATH_MAX - 1

Definition at line 69 of file recording.c.

Referenced by cRecording::FileName(), and main().

int InstanceId = 0

Definition at line 72 of file recording.c.

Referenced by cRecording::cRecording(), and main().

const char* InvalidChars = "\"\\/:*?|<>#"

Definition at line 543 of file recording.c.

Referenced by NeedsConversion().

double MarkFramesPerSecond = DEFAULTFRAMESPERSECOND

Definition at line 1454 of file recording.c.

Referenced by cMark::Parse(), and cMarks::Update().

cMutex MutexMarkFramesPerSecond

Definition at line 1455 of file recording.c.

cRecordings Recordings
eRecordingsSortMode RecordingsSortMode = rsmName
cRemoveDeletedRecordingsThread RemoveDeletedRecordingsThread
static

Definition at line 117 of file recording.c.