The length (as number of frames) of a recording's index file can now be determined by a call to cIndexFile::GetLength()

This commit is contained in:
Klaus Schmidinger 2011-08-13 12:45:42 +02:00
parent ef611229f3
commit 3000906715
4 changed files with 18 additions and 2 deletions

View File

@ -2228,6 +2228,8 @@ Christoph Haubrich <christoph1.haubrich@arcor.de>
the same PID
for adding HD stream content identifiers to vdr.5
for reporting that Setup.InitialChannel was dereferenced without checking for NULL
for suggesting to implement a function to determine the length of a recording's
index file
Pekka Mauno <pekka.mauno@iki.fi>
for fixing cSchedule::GetFollowingEvent() in case there is currently no present

View File

@ -6679,3 +6679,5 @@ Video Disk Recorder Revision History
- Now scanning new transponders before old ones, to make sure transponder changes
are recognized (thanks to Reinhard Nissl).
- Implemented static cIndexFile::IndexFileName().
- The length (as number of frames) of a recording's index file can now be determined
by a call to cIndexFile::GetLength() (suggested by Christoph Haubrich).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: recording.c 2.32 2011/08/13 10:59:32 kls Exp $
* $Id: recording.c 2.33 2011/08/13 12:37:25 kls Exp $
*/
#include "recording.h"
@ -1816,6 +1816,15 @@ void cIndexFile::Delete(void)
}
}
int cIndexFile::GetLength(const char *FileName, bool IsPesRecording)
{
struct stat buf;
cString s = IndexFileName(FileName, IsPesRecording);
if (*s && stat(s, &buf) == 0)
return buf.st_size / (IsPesRecording ? sizeof(tIndexTs) : sizeof(tIndexPes));
return -1;
}
bool GenerateIndex(const char *FileName)
{
if (DirectoryOk(FileName)) {

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: recording.h 2.20 2011/08/13 09:52:25 kls Exp $
* $Id: recording.h 2.21 2011/08/13 12:36:54 kls Exp $
*/
#ifndef __RECORDING_H
@ -260,6 +260,9 @@ public:
bool StoreResume(int Index) { return resumeFile.Save(Index); }
bool IsStillRecording(void);
void Delete(void);
static int GetLength(const char *FileName, bool IsPesRecording = false);
///< Calculates the recording length (numer of frames) without actually reading the index file.
///< Returns -1 in case of error.
};
class cFileName {