mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	- Added Norwegian language texts (thanks to Jørgen Tvedt). - Increased the usleep value in cDvbOsd::Cmd() to 5000 in order to work on systems with the KURT/utime-patch (thanks to Guido Fiala). - Changed the check whether the driver is loaded in runvdr to check for the 'dvb' module (the last one loaded). - Fixed repeat function with LIRC (thanks to Stefan Huelswitt). - Increased the upper limit for the symbol rate to 30000 (thanks to Ulrich Röder). - Made the position of the channel display configurable (thanks to Stefan Huelswitt). - Made the width and height of the OSD configurable (thanks to Stefan Huelswitt). - DiSEqC support can now be generally enabled/disabled in the Setup menu. This may be necessary if your multiswitch gets irritated by the default DiSEqC codes '0' (thanks to Markus Lang). - Fixed replaying in case there is no index file. - Fixed jumping to an editing mark when replay has been paused. - Avoiding unnecessary code execution in the replay progress display (thanks to Guido Fiala). - When entering time values the digits that still have to be entered are now shown as '-' (as in "1-:--"). - When setting an editing mark while the progress display is not active, the display will now be turned on for a short while to indicate the successful setting of the mark. - Updated 'channels.conf' for Premiere World (thanks to Helmut Schächner). Check your timers if you use this channels.conf file, since the sequence of several PW channels has been changed. - Changed the color of "Info" messages to "black on green" and that of the confirmation messages (like "Delete...") to "black on yellow". - Fixed display with DEBUG_OSD (it still crashes sometimes, esp. when replaying, but I can't seem to find what causes this... any ideas anybody?). - Avoiding audio/video distortions in 'Transfer Mode' by no longer actually tuning the primary interface (which can't receive this channel, anyway). Apparently the driver gets irritated when the channel is switched and a replay session is started immediately after that. - Increased timeout until reporting "video data stream broken" when recording. - Explicitly switching back to the previously active channel after ending a replay session (to have it shown correctly in case it was in 'Transfer Mode').
		
			
				
	
	
		
			147 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /***************************************************************************
 | |
|                           eit.h  -  description
 | |
|                              -------------------
 | |
|     begin                : Fri Aug 25 2000
 | |
|     copyright            : (C) 2000 by Robert Schneider
 | |
|     email                : Robert.Schneider@web.de
 | |
|  ***************************************************************************/
 | |
| 
 | |
| /***************************************************************************
 | |
|  *                                                                         *
 | |
|  *   This program is free software; you can redistribute it and/or modify  *
 | |
|  *   it under the terms of the GNU General Public License as published by  *
 | |
|  *   the Free Software Foundation; either version 2 of the License, or     *
 | |
|  *   (at your option) any later version.                                   *
 | |
|  *                                                                         *
 | |
|  * $Id: eit.h 1.7 2001/05/25 12:56:53 kls Exp $
 | |
|  ***************************************************************************/
 | |
| 
 | |
| #ifndef __EIT_H
 | |
| #define __EIT_H
 | |
| 
 | |
| #include "thread.h"
 | |
| #include "tools.h"
 | |
| 
 | |
| class cEventInfo : public cListObject {
 | |
|   friend class cSchedule;
 | |
|   friend class cEIT;
 | |
| private:
 | |
|   unsigned short uServiceID;        // Service ID of program for that event
 | |
|   bool bIsFollowing;                // true if this is the next event on this channel
 | |
|   bool bIsPresent;                  // true if this is the present event running
 | |
|   char *pExtendedDescription;       // Extended description of this event
 | |
|   char *pSubtitle;                  // Subtitle of event
 | |
|   char *pTitle;                     // Title of event
 | |
|   unsigned short uEventID;          // Event ID of this event
 | |
|   long lDuration;                   // duration of event in seconds
 | |
|   time_t tTime;                     // Start time
 | |
|   u_char cExtendedDescriptorNumber; // current extended descriptor number that has to be inserted
 | |
|   int nChannelNumber;               // the actual channel number from VDR's channel list (used in cMenuSchedule for sorting by channel number)
 | |
| protected:
 | |
|   void SetFollowing(bool foll);
 | |
|   void SetPresent(bool pres);
 | |
|   bool SetTitle(char *string);
 | |
|   void SetServiceID(unsigned short servid);
 | |
|   void SetEventID(unsigned short evid);
 | |
|   void SetDuration(long l);
 | |
|   void SetTime(time_t t);
 | |
|   bool AddExtendedDescription(char *string);
 | |
|   bool SetSubtitle(char *string);
 | |
|   void IncreaseExtendedDescriptorNumber(void);
 | |
|   cEventInfo(unsigned short serviceid, unsigned short eventid);
 | |
| public:
 | |
|   ~cEventInfo();
 | |
|   const char *GetTimeString(void) const;
 | |
|   const char *GetEndTimeString(void) const;
 | |
|   const char *GetDate(void) const;
 | |
|   bool IsFollowing(void) const;
 | |
|   bool IsPresent(void) const;
 | |
|   const char *GetExtendedDescription(void) const;
 | |
|   const char *GetSubtitle(void) const;
 | |
|   const char *GetTitle(void) const;
 | |
|   unsigned short GetEventID(void) const;
 | |
|   long GetDuration(void) const;
 | |
|   time_t GetTime(void) const;
 | |
|   u_char GetExtendedDescriptorNumber(void) const;
 | |
|   unsigned short GetServiceID(void) const;
 | |
|   int GetChannelNumber(void) const { return nChannelNumber; }
 | |
|   void SetChannelNumber(int ChannelNumber) const { ((cEventInfo *)this)->nChannelNumber = ChannelNumber; } // doesn't modify the EIT data, so it's ok to make it 'const'
 | |
|   void Dump(FILE *f, const char *Prefix = "") const;
 | |
|   };
 | |
| 
 | |
| class cSchedule : public cListObject  {
 | |
|   friend class cSchedules;
 | |
|   friend class cEIT;
 | |
| private:
 | |
|   cEventInfo *pPresent;
 | |
|   cEventInfo *pFollowing;
 | |
|   unsigned short uServiceID;
 | |
|   cList<cEventInfo> Events;
 | |
| protected:
 | |
|   void SetServiceID(unsigned short servid);
 | |
|   bool SetFollowingEvent(cEventInfo *pEvent);
 | |
|   bool SetPresentEvent(cEventInfo *pEvent);
 | |
|   void Cleanup(time_t tTime);
 | |
|   void Cleanup(void);
 | |
|   cSchedule(unsigned short servid = 0);
 | |
| public:
 | |
|   ~cSchedule();
 | |
|   const cEventInfo *GetPresentEvent(void) const;
 | |
|   const cEventInfo *GetFollowingEvent(void) const;
 | |
|   unsigned short GetServiceID(void) const;
 | |
|   const cEventInfo *GetEvent(unsigned short uEventID) const;
 | |
|   const cEventInfo *GetEvent(time_t tTime) const;
 | |
|   const cEventInfo *GetEventNumber(int n) const { return Events.Get(n); }
 | |
|   int NumEvents(void) const { return Events.Count(); }
 | |
|   void Dump(FILE *f, const char *Prefix = "") const;
 | |
|   };
 | |
| 
 | |
| class cSchedules : public cList<cSchedule> {
 | |
|   friend class cSIProcessor;
 | |
| private:
 | |
|   const cSchedule *pCurrentSchedule;
 | |
|   unsigned short uCurrentServiceID;
 | |
| protected:
 | |
|   bool SetCurrentServiceID(unsigned short servid);
 | |
|   void Cleanup();
 | |
| public:
 | |
|   cSchedules(void);
 | |
|   ~cSchedules();
 | |
|   const cSchedule *GetSchedule(unsigned short servid) const;
 | |
|   const cSchedule *GetSchedule(void) const;
 | |
|   void Dump(FILE *f, const char *Prefix = "") const;
 | |
| };
 | |
| 
 | |
| typedef struct sip_filter {
 | |
| 
 | |
|   u_char pid;
 | |
|   u_char tid;
 | |
|   int handle;
 | |
|   bool inuse;
 | |
| 
 | |
| }SIP_FILTER;
 | |
| 
 | |
| class cSIProcessor : public cThread {
 | |
| private:
 | |
|   static int numSIProcessors;
 | |
|   static cSchedules *schedules;
 | |
|   static cMutex schedulesMutex;
 | |
|   bool masterSIProcessor;
 | |
|   bool useTStime;
 | |
|   SIP_FILTER *filters;
 | |
|   char *fileName;
 | |
|   bool active;
 | |
|   void Action(void);
 | |
|   bool AddFilter(u_char pid, u_char tid);
 | |
|   bool ShutDownFilters(void);
 | |
| public:
 | |
|   cSIProcessor(const char *FileName);
 | |
|   ~cSIProcessor();
 | |
|   void SetStatus(bool On);
 | |
|   bool SetUseTSTime(bool use);
 | |
|   bool SetCurrentServiceID(unsigned short servid);
 | |
|   const cSchedules *Schedules(void) { return schedules; }
 | |
|   };
 | |
| 
 | |
| #endif
 |