From 0c96d6b62650790dc83ce6621eb664e51f39719b Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 4 Sep 2011 15:42:00 +0200 Subject: Version 1.7.21 Original announce message: VDR developer version 1.7.21 is now available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.21.tar.bz2 A 'diff' against the previous version is available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.20-1.7.21.diff MD5 checksums: 7300bfd997db1a848bd774fefe4aec80 vdr-1.7.21.tar.bz2 c4e745939f31543dd607b97d58fc86be vdr-1.7.20-1.7.21.diff WARNING: ======== This is a developer version. Even though I use it in my productive environment. I strongly recommend that you only use it under controlled conditions and for testing and debugging. This version contains functions to determine the "signal strength" and "signal quality" through cDevice. If you are using a DVB card that contains an stb0899 frontend chip (like the TT-budget S2-3200) you may want to apply the patches from ftp://ftp.tvdr.de/vdr/Developer/Driver-Patches to the LinuxDVB driver source in order to receive useful results from that frontend. From the HISTORY file: - Fixed detecting frames for channels that split frames into several payloads (reported by Derek Kelly). - Now initializing Setup.InitialChannel to an empty string to avoid problems in case there is no setup.conf. - The start time of an edited recording is now set to the time of the first editing mark (thanks to Udo Richter). This obsoletes the CUTTIME patch. - Direct access to the members start, priority, lifetime, and deleted of cRecording as well as to position and comment of cMark is now deprecated. Plugin authors should switch to the new access functions for these members. For now the macro __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS is defined in recording.h, which exposes these members, so that existing plugins will still compile. Comment out this #define to check whether a particular plugin needs to be modified. This #define may be removed in a future version. - The new functions cRecording::NumFrames() and cRecording::LengthInSeconds() return the number of frames and length (in seconds) of a recording (suggested by Steffen Barszus). - The subtitle PIDs are now stored in the channels.conf file as an extension to the TPID field (thanks to Rolf Ahrenberg). - The new function cDevice::ProvidesEIT() is used to determine whether a device can provide EIT data and will thus be used in cEITScanner::Process() to receive EIT data from the channels it can receive (suggested by Rolf Ahrenberg). Note that by default it is assumed that a device can't provide EIT data, and only the builtin cDvbDevice returns true from this function. - The Audio and Subtitles options are now available through the Green and Yellow keys in the Setup/DVB menu (thanks to Rolf Ahrenberg). This is mainly for remote controls that don't have dedicated keys for these functions. - The SVDRP command HITK now accepts multiple keys (up to 31). - The Recordings menu now displays the length (in hours:minutes) of each recording (thanks to Rolf Ahrenberg). Note that the "new" indicator has been moved from the recording time to the length column. This new format is also used by the SVDRP command LSTR, so in case you have an application that parses the LSTR output, you will need to adjust it to the new format. - The dvbsddevice plugin now supports the new option --outputonly, which disables receiving on SD FF devices and uses the device only for output (thanks to Udo Richter). - Fixed detecting frames on radio channels (reported by Chris Mayo). - Revoked the changes to cFrameDetector that have been introduced in version 1.7.19. Detecting frames in case the Picture Start Code or Access Unit Delimiter extends over TS packet boundaries is now done by locally skipping TS packets in cFrameDetector. --- recording.h | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'recording.h') diff --git a/recording.h b/recording.h index 578dd45..37979ec 100644 --- a/recording.h +++ b/recording.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.h 2.22 2011/08/13 12:51:23 kls Exp $ + * $Id: recording.h 2.25 2011/08/21 13:10:39 kls Exp $ */ #ifndef __RECORDING_H @@ -22,6 +22,8 @@ #define TIMERMACRO_TITLE "TITLE" #define TIMERMACRO_EPISODE "EPISODE" +#define __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS // Code enclosed with this macro is deprecated and may be removed in a future version + extern bool VfatFileSystem; extern int InstanceId; @@ -87,6 +89,7 @@ private: mutable char *fileName; mutable char *name; mutable int fileSizeMB; + mutable int numFrames; int channel; int instanceId; bool isPesRecording; @@ -97,14 +100,21 @@ private: static char *StripEpisodeName(char *s); char *SortName(void) const; int GetResume(void) const; +#ifdef __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS public: +#endif time_t start; int priority; int lifetime; time_t deleted; +public: cRecording(cTimer *Timer, const cEvent *Event); cRecording(const char *FileName); virtual ~cRecording(); + time_t Start(void) const { return start; } + int Priority(void) const { return priority; } + int Lifetime(void) const { return lifetime; } + time_t Deleted(void) const { return deleted; } virtual int Compare(const cListObject &ListObject) const; const char *Name(void) const { return name; } const char *FileName(void) const; @@ -114,11 +124,24 @@ public: int HierarchyLevels(void) const; void ResetResume(void) const; double FramesPerSecond(void) const { return framesPerSecond; } + int NumFrames(void) const; + ///< Returns the number of frames in this recording. + ///< If the number of frames is unknown, -1 will be returned. + int LengthInSeconds(void) const; + ///< Returns the length (in seconds) of this recording, or -1 in case of error. bool IsNew(void) const { return GetResume() <= 0; } bool IsEdited(void) const; bool IsPesRecording(void) const { return isPesRecording; } void ReadInfo(void); bool WriteInfo(void); + void SetStartTime(time_t Start); + ///< Sets the start time of this recording to the given value. + ///< If a filename has already been set for this recording, it will be + ///< deleted and a new one will be generated (using the new start time) + ///< at the next call to FileName(). + ///< Use this function with care - it does not check whether a recording with + ///< this new name already exists, and if there is one, results may be + ///< unexpected! bool Delete(void); ///< Changes the file name so that it will no longer be visible in the "Recordings" menu ///< Returns false in case of error @@ -176,13 +199,21 @@ extern cRecordings DeletedRecordings; #define DEFAULTFRAMESPERSECOND 25.0 class cMark : public cListObject { + friend class cMarks; // for sorting private: double framesPerSecond; +#ifdef __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS public: +#endif int position; - char *comment; + cString comment; +public: cMark(int Position = 0, const char *Comment = NULL, double FramesPerSecond = DEFAULTFRAMESPERSECOND); virtual ~cMark(); + int Position(void) const { return position; } + const char *Comment(void) const { return comment; } + void SetPosition(int Position) { position = Position; } + void SetComment(const char *Comment) { comment = Comment; } cString ToText(void); bool Parse(const char *s); bool Save(FILE *f); -- cgit v1.2.3