mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			8274 lines
		
	
	
		
			477 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			8274 lines
		
	
	
		
			477 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Video Disk Recorder Revision History
 | ||
| ------------------------------------
 | ||
| 
 | ||
| 2000-02-19: Version 0.01
 | ||
| 
 | ||
| - Initial revision.
 | ||
| 
 | ||
| 2000-03-11: Version 0.02
 | ||
| 
 | ||
| - Fixed compilation with only DEBUG_REMOTE=1.
 | ||
| - Menus now use colors.
 | ||
| - Support for "Red", "Green", "Yellow", "Blue" buttons.
 | ||
| - Channels and Timers can now be added, deleted and moved.
 | ||
| - Basic record/play file handling support (no actual record/playback yet).
 | ||
| 
 | ||
| 2000-04-15: Version 0.03
 | ||
| 
 | ||
| - Actual record/replay now works.
 | ||
| - Dropped the idea of different "recording qualities" (a 36GB harddisk is
 | ||
|   able to store some 18 hours in full quality, so we don't really need that).
 | ||
| - Termination signals are now caught and the program cleans up before exiting.
 | ||
| - Support for CICAM.
 | ||
| 
 | ||
| 2000-04-24: Version 0.04
 | ||
| 
 | ||
| - Changed name from 'osm' to 'vdr' to avoid mixups with the 'oms' program that
 | ||
|   appears to be in use with DVD replay.
 | ||
| - Implemented a channel display in the top menu line.
 | ||
| - Implemented replay progress display (press "Ok" when replaying to bring it up).
 | ||
| - Implemented direct channel selecting by pressing the numeric keys.
 | ||
| - Added several 'const' keywords to please stricter compilers.
 | ||
| - The repeat function for the remote control no longer adapts dynamically
 | ||
|   to the timing of the RCU (this sometimes caused the repeat function to
 | ||
|   kick in too early).
 | ||
| - Channel selection is now blocked when recording or replaying.
 | ||
| - Improved process handling.
 | ||
| 
 | ||
| 2000-05-27: Version 0.05
 | ||
| 
 | ||
| - Support for more than one DVB card.
 | ||
| - Simultaneous record and replay (with two DVB cards).
 | ||
| - Instant recordings no longer get the name "instant". They now get the name
 | ||
|   of the channel, with a prepended '@' character.
 | ||
| - Timers that are not given an explicit Name now use the channel name with
 | ||
|   a prepended '@' character.
 | ||
| - If an instant recording is currently active, the "Main" menu now contains
 | ||
|   an option to stop that recording.
 | ||
| - Timers are now only processed when the menu is not active. So after editing
 | ||
|   a timer the effect will take place only after the menu has been closed.
 | ||
|   In order to avoid missing a timer event by inadvertently leaving the menu
 | ||
|   open, the menu will be closed automatically after about two minutes of
 | ||
|   inactivity.
 | ||
| - If a recording is currently being replayed, the "Main" menu now contains an
 | ||
|   option to stop replaying.
 | ||
| - Displaying the recording DVB interface status in the decimal points of the
 | ||
|   RCU display.
 | ||
| - Reduced the number of remote control keys. Modified the key assignments for
 | ||
|   the PC keyboard to better resemble the "up-down-left-right-ok" layout on
 | ||
|   menu controlling remote control units.
 | ||
| 
 | ||
| 2000-07-25: Version 0.6
 | ||
| 
 | ||
| - Added support for LIRC remote control (thanks to Carsten Koch!).
 | ||
|   There are now three different remote control modes: KBD (PC-Keyboard), RCU
 | ||
|   and LIRC. See the INSTALL file for information on how to enable either of
 | ||
|   these modes. The default mode is now KBD, not RCU as before (to make it
 | ||
|   work immediately even if there is no actual remote control).
 | ||
| - Fixed small bug in dvbapi.c that was causing some channels (many on hotbird)
 | ||
|   not to be correctly tuned (thanks to Plamen Ganev!).
 | ||
| - Now clearing the replay buffer in search forward/back, which results in
 | ||
|   faster reaction.
 | ||
| - The 'Recordings' menu is now listed alphabetically (thanks to Carsten Koch!).
 | ||
| - The new 'epg2timers' tool (thanks to Carsten Koch!) can be used to convert
 | ||
|   an EPG "merkliste" page (http://www.tvtv.de) to vdr timer entries.
 | ||
| - The new 'xtvrc2vdr' tool (thanks to Plamen Ganev!) can be used to convert
 | ||
|   'xtvrc' channel files into 'vdr' format.
 | ||
| - When more than one timer matches at the same time, the first one in the list
 | ||
|   with the highest 'Priority' is selected.
 | ||
| - The MANUAL section on "Programming the Timer" has been filled in.
 | ||
| - The year in the "Recordings" menu as well as in the progress display during
 | ||
|   replay has been reduced to 2 digits to allow more space for the recording's
 | ||
|   title. In the internal file structure the year is still stored with 4 digits,
 | ||
|   so there will be no problem at the next turn of the century ;-)
 | ||
| - Channel names and timer filenames can now contain blanks. To avoid problems
 | ||
|   with file names that contain blanks, all blanks in recording file names are
 | ||
|   converted to underscores.
 | ||
| - The polarization can now be given in uppercase or lowercase characters in
 | ||
|   'channels.conf'.
 | ||
| - Fixed buffer initialization to work with DVB driver version 0.6.
 | ||
| - Implemented the "Simple Video Disk Recorder Protocol" (SVDRP) to control
 | ||
|   the VDR over a network connection.
 | ||
| - Implemented command line option handling.
 | ||
| - The program can now run in full background mode by using the --daemon option.
 | ||
| - Added a "summary" field to the timers (thanks to Carsten Koch!).
 | ||
|   This field can contain a descriptive text of the programme and will be
 | ||
|   displayed when the "Blue" button is pressed on a recording that was created by
 | ||
|   this timer. If the text contains the special character '|', a newline will
 | ||
|   be inserted at that place.  When pressing "Ok" on a timer that contains a
 | ||
|   summary field, the summary will be displayed. To edit such a timer the "Red"
 | ||
|   key must be pressed. Timers without a summary still go into Edit mode when
 | ||
|   pressing "Ok".  The summary field can only be filled in directly by editing
 | ||
|   the 'timers.conf' file with a text editor, or by defining/modifying the timer
 | ||
|   via the SVDRP interface.
 | ||
| 
 | ||
| 2000-08-06: Version 0.61
 | ||
| 
 | ||
| - When scrolling through a list it now moves a full page up or down when the
 | ||
|   cursor reaches the top or bottom of the menu (thanks to Heino Goldenstein!).
 | ||
| - Added missing '#include <sys/stat.h>' to recording.c.
 | ||
| - The video directory can now be defined with the command line option -v.
 | ||
| - There can now be more than one video directory (in case you have several
 | ||
|   disks).
 | ||
| - Fixed learning key codes for PC keyboard.
 | ||
| - New command line option '-l' to set the log level.
 | ||
| - Times in timers.conf are now always printed with 4 digits (leading '0').
 | ||
| - Slow forward/back mode (thanks to Guido Fiala!).
 | ||
| - The "Up" key in replay mode no longer restarts replay at the very beginning,
 | ||
|   but rather resumes normal replay mode after a "pause", "forward" or "backward"
 | ||
|   operation. Use the "Skip -60s" function repeatedly to go back to the beginning
 | ||
|   of the recording.
 | ||
| - Improved reaction on user input in fast/slow forward/back modes.
 | ||
| - No more upper limit for the value of 'Pnr'.
 | ||
| - Checking if the video card is really a DVB card.
 | ||
| - New SVDRP command UPDT to update an existing timer (or add a new one if it
 | ||
|   doesn't yet exist).
 | ||
| - New version of the 'epg2timers' tool (with a modified channel list).
 | ||
| - Bugfix in closing window in DEBUG_OSD mode.
 | ||
| 
 | ||
| 2000-09-03: Version 0.62
 | ||
| 
 | ||
| - The Makefile now defines DVBDIR to easily point to where the DVB driver
 | ||
|   source is located.
 | ||
| - When switching channels the current/next information is now displayed if
 | ||
|   available (thanks to Robert Schneider). Since there is now more information
 | ||
|   to read when switching channels, the timeout for displaying it has been
 | ||
|   increased from 2 to 5 seconds (remember that this info can always be recalled
 | ||
|   by pressing the "Ok" button).
 | ||
|   For this feature to work it is necessary that the 'Pnr' parameter in the
 | ||
|   channel setup ('channels.conf') is set to the proper value. This has been
 | ||
|   done for some of the channels in the default 'channels.conf'. Some other
 | ||
|   parameters in the default 'channels.conf' have also been updated, so please
 | ||
|   make sure your timers still use the correct channels!
 | ||
| 
 | ||
| 2000-09-10: Version 0.63
 | ||
| 
 | ||
| - The new "Setup" menu allows the user to configure several parameters to his/her
 | ||
|   personal taste (see MANUAL for details).
 | ||
| - Workaround for a driver timing problem in cDvbApi::Cmd(), which sometimes caused
 | ||
|   the OSD to no longer be displayed (thanks to Niels de Carpentier).
 | ||
| - Added the '-m486' option to the compiler call.
 | ||
| - If a channel name contains a colon (':') it is now replaced with a '|' in
 | ||
|   'channels.conf'.
 | ||
| - Not everybody appears to like the "page scrolling" mechanism introduced by
 | ||
|   Heino Goldenstein in version 0.61, so this is now configurable via the "Setup"
 | ||
|   menu.
 | ||
| - The new 'dvbrc2vdr' tool (thanks to Plamen Ganev!) can be used to convert
 | ||
|   'dvbrc' channel files into 'vdr' format.
 | ||
| - Channels can now be "grouped" (thanks to Plamen Ganev!). See MANUAL for details.
 | ||
|   There is currently no mechanism to define and maintain "Channel groups" via
 | ||
|   the menu, so you'll have to insert "Channel group" control lines into your
 | ||
|   'channels.conf' file manually (for example with a text editor).
 | ||
| - Started a new file named FORMATS with a description of the various file
 | ||
|   formats used by VDR.
 | ||
| - The "Primary DVB interface" can now be chosen via the "Setup" menu.
 | ||
| - Display of the "current/next" information when switching channels can now
 | ||
|   be disabled via the "Setup" menu.
 | ||
| - The "current/next" display now only shows those lines that actually contain
 | ||
|   information.
 | ||
| - When directly selecting a channel by entering the channel number, the digits
 | ||
|   entered so far together with the name of that channel are displayed on the
 | ||
|   OSD (suggested by Martin Hammerschmid).
 | ||
| 
 | ||
| 2000-09-20: Version 0.64
 | ||
| 
 | ||
| - NOTE: If you are using DVB driver version 0.7 you need to load the dvb.o
 | ||
|   module with option outstream=0, so your insmod statement should read
 | ||
|   'insmod dvb.o outstream=0'. This is currently necessary because 'vdr'
 | ||
|   still works with AV_PES data.
 | ||
| - Video files now have the 'group read' bit set.
 | ||
| - Fixed handling errors in 'readstring()'.
 | ||
| - Handling SIGPIPE and re-establishing handler after intercepting a signal.
 | ||
| - The configuration files are now by default read from the video directory.
 | ||
|   This can be changed by using the new '-c' option. Make sure you copy your
 | ||
|   current '*.conf' files to your video directory ('/video' by default), or
 | ||
|   use "-c ." to get the old behaviour of loading the configuration files
 | ||
|   from the current directory.
 | ||
| - Waiting for input is now handled by a common function, which improves
 | ||
|   response time on user actions. As a consequence the EIT data may sometimes
 | ||
|   not be displayed, but this will change later when cEIT runs as a separate
 | ||
|   thread.
 | ||
| - The new SVDRP command 'HITK' (thanks to Guido Fiala!) can be used to 'hit'
 | ||
|   a remote control key.  Establish an SVDRP connection and enter HITK without
 | ||
|   a parameter for a list of all valid key names.
 | ||
| - The new SVDRP command 'GRAB' (thanks to Guido Fiala!) can be used to grab
 | ||
|   the current frame and save it to a file.
 | ||
| - The new SVDRP commands 'OVL*' can be used to control video overlays (thanks
 | ||
|   to Guido Fiala!). This is mainly for use in the 'kvdr' tool (see the 'kvdr'
 | ||
|   page at http://www.s.netic.de/gfiala).
 | ||
| - If the name of the video directory used with the '-v' option had trailing
 | ||
|   slashes, the recording file names have been damaged. Trailing slashes are
 | ||
|   now silently removed.
 | ||
| - Fixed a buffer overflow in EIT parsing.
 | ||
| - Added a security warning regarding SVDRP to the INSTALL file.
 | ||
| - Fixed 'confirm' dialog.
 | ||
| - The daemon mode (option '-d') now no longer works with REMOTE=KBD (there
 | ||
|   is no stdin in daemon mode, so KBD makes no sense - plus it sometimes
 | ||
|   crashed).
 | ||
| 
 | ||
| 2000-10-03: Version 0.65
 | ||
| 
 | ||
| - Modified LIRC interface to better handle repeat function.
 | ||
| - Faster OSD by first writing into a bitmap and then sending the entire bitmap
 | ||
|   to the DVB driver at once (requires the patch 'dvb.c.071.diff' to be applied
 | ||
|   against the version 0.71 DVB driver file 'dvb.c').
 | ||
| - When switching channels the channel is now immediately displayed, and the
 | ||
|   current/next information is shown as soon as it becomes available.
 | ||
| - No longer displaying the year in the 'Recordings' menu to save space for the
 | ||
|   title.
 | ||
| - The 'Recordings' menu now displays a '*' to indicate new recordings.
 | ||
| - Added the description of the timers.conf file to the FORMATS file (thanks to
 | ||
|   Bastian Guse).
 | ||
| - Displaying as much as possible of the current/next info (dropping characters
 | ||
|   that would display only partially).
 | ||
| - In normal viewing mode the '0' key now toggles between the current and the
 | ||
|   previous channel.
 | ||
| 
 | ||
| 2000-10-08: Version 0.66
 | ||
| 
 | ||
| - Remote control data is now received in a separate thread, which makes things
 | ||
|   a lot smoother.
 | ||
| - Repeat and release of remote control keys is now explicitly distinguished.
 | ||
| - In replay mode the search forward/back and skip functions now have two modes:
 | ||
|   Pressing the key shortly and releasing it starts the function, and pressing it
 | ||
|   again stops it. Pressing and holding down the key starts the function and
 | ||
|   releasing the key stops it.
 | ||
| - The '@' character that marks an "instant recording" can now be turned off
 | ||
|   in the "Setup" menu (thanks to Matthias Schniedermeyer).
 | ||
| - Pressing the "Back" button while replaying now stops replaying and brings up
 | ||
|   the "Recordings" menu (suggested by Carsten Koch). This can be used to easily
 | ||
|   delete a recording after watching it, or to switch to a different recording.
 | ||
| - The "Recordings" menu now places the cursor on the last replayed recording, if
 | ||
|   that file still exists.
 | ||
| - The "Blue" button in the "Main" menu can now be used to "Resume" a previously
 | ||
|   stopped replay session (suggested by Martin Hammerschmid).
 | ||
| - The low and high LNB frequencies can now be changed in the "Setup" menu.
 | ||
| 
 | ||
| 2000-11-01: Version 0.67
 | ||
| 
 | ||
| - The EIT information is now gathered in a separate thread.
 | ||
| - The system time can now be synchronized to the time broadcast in the DVB data
 | ||
|   stream. This can be enabled in the "Setup" menu by setting "SetSystemTime" to
 | ||
|   1.  Note that this works only if VDR is running under a user ID that has
 | ||
|   permission to set the system time.
 | ||
| - The new item "Schedule" in the "Main" menu opens VDR's EPG (thanks to Robert
 | ||
|   Schneider). See the MANUAL file for a detailed description.
 | ||
| - The new setup parameters MarginStart and MarginStop define how long (in
 | ||
|   minutes) before the official start time of a broadcast VDR shall begin
 | ||
|   recording, and how long after the official end time it shall stop recording.
 | ||
|   These are used when a recording is programmed from the "Schedules" menu.
 | ||
| - The delay value in the dvb.c.071.diff patch to the driver has been increased
 | ||
|   to '3', because on some systems the OSD was not displayed correctly. If you
 | ||
|   are running an already patched version 0.71 driver and encounter problems
 | ||
|   with the OSD, please make sure the parameter in the ddelay call is '3', not
 | ||
|   '2'.
 | ||
| - Fixed initializing the RCU remote control code (didn't work after switching
 | ||
|   on the system).
 | ||
| - Problematic characters in recording names (which can come from timers that
 | ||
|   are programmed via the "Schedules" menu) are now replaced by suitable
 | ||
|   substitutes.
 | ||
| 
 | ||
| 2000-11-19: Version 0.68
 | ||
| 
 | ||
| - Date and time in the title of an event info page are now always right adjusted.
 | ||
| - The 'current channel' is now handled device specific (in case there is more
 | ||
|   than one DVB card).
 | ||
| - The 'SetSystemTime' option in the "Setup" menu is now shown as "yes/no".
 | ||
| - Implemented "internationalization" (see 'i18n.c' for information on how to
 | ||
|   add new languages). Thanks to Miha Setina for translating the OSD texts to
 | ||
|   the Slovenian language.
 | ||
| - Fixed learning keys on the PC keyboard (display oscillated).
 | ||
| - Fixed a timing problem with OSD refresh and SVDRP.
 | ||
| - Avoiding multiple definitions of the same timer in the "Schedule" menu (this
 | ||
|   could happen when pressing the "Red" button while editing the timer).
 | ||
| - There can now be a configuration file named 'commands.conf' that defines
 | ||
|   commands that can be executed through the "Main" menu's "Commands" option
 | ||
|   (see FORMATS for details on how to define these commands).
 | ||
| - Added a 'fixed' font for use with the output of system commands.
 | ||
| - The 'Priority' parameter of the timers is now also used to interrupt a low
 | ||
|   priority timer recording if a higher priority timer wants to record.
 | ||
| - A timer recording on a DVB card with a CAM module will now be interrupted
 | ||
|   by a timer that needs to use this specific DVB card to record an encrypted
 | ||
|   channel, if the timer currently occupying this DVB card doesn't need the
 | ||
|   CAM module (and thus can continue recording on a different DVB card).
 | ||
| - The "Yellow" button in the "What's on now/next?" menus now displays the
 | ||
|   schedule of the current channel from that menu.
 | ||
| - All DVB cards in a multi-card system now write their EIT information into the
 | ||
|   same data structure.
 | ||
| - If there is more than one DVB card in the system, the non-primary cards are
 | ||
|   now used to periodically scan through the channels in order to keep the
 | ||
|   EPG info up-to-date. Scanning kicks in after 60 seconds of user inactivity
 | ||
|   (timeout in order to keep user interactions instantaneously) and each channel
 | ||
|   that has the 'pnr' parameter defined in 'channels.conf' is switched to for
 | ||
|   20 seconds. If there is only one DVB card in the system, that card will start
 | ||
|   scanning after 5 hours (configurable through the "Setup" menu) of user inactivity
 | ||
|   and will switch back to the channel it originally displayed at the first sign of
 | ||
|   user activity. Any scanning will only occur if that particular card is not
 | ||
|   currently recording or replaying.
 | ||
| - Now shifting the 'Subtitle' info into the 'ExtendedDescription' on stations
 | ||
|   that don't send the EIT information correctly (like, e.g., 'VOX').
 | ||
| - Implemented a 10 seconds latency when removing files.
 | ||
| - Fixed unwanted reaction on the "Green" and "Yellow" button in the "Event" display.
 | ||
| - Implemented 'Transfer Mode' to display video data from the DVB card that actually
 | ||
|   can receive a certain channel on the primary interface. This is currently in
 | ||
|   an early state and may still cause some problems, but it appears to work nice
 | ||
|   already.
 | ||
| 
 | ||
| 2001-01-18: Version 0.70
 | ||
| 
 | ||
| - VDR now requires driver version 0.8.1 or higher.
 | ||
| - Recordings are now saved in PES mode. Note that you now need to install the
 | ||
|   driver *WITHOUT* 'outstream=0'! This is the default when you 'make insmod' in
 | ||
|   the DVB/driver directory.
 | ||
|   Old recordings (in AV_PES mode) can still be replayed (as long as the driver
 | ||
|   still supports replaying AV_PES files). The only limitation with this is that
 | ||
|   in fast forward/back mode the picture may be slightly distorted and there may
 | ||
|   be sound fragments.
 | ||
| - The EPG data is now dumped into the file /video/epg.data every ten minutes.
 | ||
|   Use the Perl script 'epg2html.pl' to convert the raw EPG data into a simple
 | ||
|   HTML programme listing.
 | ||
| - Fixed handling of channel switching with the "Blue" button in the "What's on
 | ||
|   now/next?" menus.
 | ||
| - Fixed saving the MarginStop setup parameter.
 | ||
| - Fixed missing initialization in cConfig.
 | ||
| - Implemented "On Disk Editing".
 | ||
| - There is no more default 'timers.conf' file.
 | ||
| - Added Italian language texts (thanks to Alberto Carraro).
 | ||
| - Fixed starting a replay session when the program is currently in 'Transfer
 | ||
|   Mode'.
 | ||
| - Fixed setting/modifying timers via SVDRP with empty summary fields.
 | ||
| - Fixed a problem with recordings that have a single quote character in their
 | ||
|   name (this is now mapped to 0x01).
 | ||
| - Changed the value for Diseqc to '0' in the default 'channels.conf'.
 | ||
| - Fixed displaying channels and recording status in the RCU's LED display when
 | ||
|   a recording is interrupted due to higher priority.
 | ||
| - Implemented safe writing of config files (first writes into a temporary file
 | ||
|   and then renames it).
 | ||
| - In case the video data stream is broken the log message will come only every
 | ||
|   5 seconds.
 | ||
| - The current channel is now saved in the 'setup.conf' file when VDR is canceled,
 | ||
|   and will be restored next time it is started (thanks to Deti Fliegl).
 | ||
| - The EIT scanning thread is now locked when switching channels to avoid problems.
 | ||
| - Encrypted channels can now be selected even without knowing the PNR (however, it
 | ||
|   is still necessary for the EPG info).
 | ||
| 
 | ||
| 2001-02-24: Version 0.71
 | ||
| 
 | ||
| - Fixed 'Transfer Mode' in cases where a non-primary interface was switched to
 | ||
|   a channel that only the primary interface can receive (which could happen in
 | ||
|   the EPG scanner).
 | ||
| - The EPG scanner now starts with the first channel (it used to start with the
 | ||
|   second channel).
 | ||
| - Reactivated setting the PNR.
 | ||
| - Adapted the frame scanning to the new muxing of the driver.
 | ||
| - The new compile time option REMOTE=NONE can be used to compile VDR without
 | ||
|   any remote control support (for applications where it shall be controlled
 | ||
|   exclusively via SVDRP).
 | ||
| - The new command line option -D can be used to define which DVB interfaces
 | ||
|   a certain instance of VDR shall use.
 | ||
| - The "Left" and "Right" keys are now used to page up and down in lists (thanks
 | ||
|   to Martin Hammerschmid). Since the "Timers" menu already uses these keys to
 | ||
|   (de)activate timers, this functionality is not available there.
 | ||
| - The "Main" and "Commands" menu now support "hotkeys", which means that if the
 | ||
|   first non-blank character of a menu item is a digit in the range 1..9, that
 | ||
|   item can be selected by pressing the respective numeric key on the remote
 | ||
|   control.
 | ||
| - The channel data in 'channels.conf' now contains the teletext PID (thanks to
 | ||
|   Dave Chapman). Existing files will be read normally (and the teletext PID set
 | ||
|   to 0), but once they are written back (due to some channel editing) the file
 | ||
|   will have the new format.
 | ||
| - The EPG scanner now scans each transponder only once per cycle.
 | ||
| - Deleted recordings are now automatically removed from disk after a while (not
 | ||
|   only when disk space is being needed for a new recording).
 | ||
| - Fixed repeat function in LIRC remote control.
 | ||
| - Changed the MAXDVBAPI macro in dvbapi.c to 4 in order to directly support the
 | ||
|   maximum possible number of DVB cards.
 | ||
| - The 'Ca' parameter in the default 'channels.conf' has been changed from '2'
 | ||
|   to '3' because the VDR prototype now has 3 DVB cards (and currently the CAM
 | ||
|   module only works if it is inserted into the last DVB card).
 | ||
| - The "Now", "Next" and "Schedule" menus now remember the current channel and
 | ||
|   restore the list when switching between them.
 | ||
| - The "Green" button in the "Recordings" menu can now be used to rewind a
 | ||
|   recording and play it from the very beginning.
 | ||
| - Fixed handling ':' in timer filenames and '\n' in timer summaries (see FORMATS).
 | ||
| - When removing recordings empty directories are now removed from the video
 | ||
|   directory.
 | ||
| - Added the "schnitt" tools from Matthias Schniedermeyer.
 | ||
| - New SVDRP command MESG to display a short message on the OSD.
 | ||
| - The Perl script 'svdrpsend.pl' can be used to send SVDRP commands to VDR.
 | ||
| - SVDRP can now immediately reuse the same port if VDR is restarted.
 | ||
| - SVDRP now has a timeout after which the connection is automatically closed
 | ||
|   (default is 300 seconds, can be changed in "Setup").
 | ||
| - The compile time switch VFAT can be used to make VDR avoid the ':' character
 | ||
|   in file names (VFAT can't handle them). Do 'make VFAT=1' to enable this.
 | ||
| - Support for DVB-C (thanks to Hans-Peter Raschke and Peter Hofmann).
 | ||
|   See the INSTALL file for more information about the use of VDR with cable.
 | ||
| - Fixed an occasional segfault in the EIT processor.
 | ||
| - A value of '0' for the EPGScanTimeout setup parameter now completely turns off
 | ||
|   scanning for EPG data on both single and multiple card systems.
 | ||
| - New setup parameter "PrimaryLimit" that allows to prevent timers from using the
 | ||
|   primary DVB interface in multi card systems. Default value is 0, which means
 | ||
|   that every timer may use the primary interface.
 | ||
| - The 'active' field of a timer will now be explicitly set to '1' if the user
 | ||
|   modifies an active timer (see FORMATS for details).
 | ||
| - The new command line option -w can be used to activate a watchdog that makes
 | ||
|   VDR exit in case the main program loop does not respond for more than the
 | ||
|   given number of seconds. This is mainly useful in combination with the new
 | ||
|   'runvdr' script that restarts VDR in case is has exited.
 | ||
| 
 | ||
| 2001-04-01: Version 0.72
 | ||
| 
 | ||
| - Fixed SVDRP commands LSTC and LSTT to make them return an error message if
 | ||
|   no channels or timers are defined.
 | ||
| - Enhanced 'channels.conf.cable' (thanks to Hans-Peter Raschke).
 | ||
| - Fixed switching to another channel via the EPG while a recording is being
 | ||
|   replayed.
 | ||
| - Fixed a memory leak in the EIT processor that happened when the system time
 | ||
|   was set.
 | ||
| - Removed some redundant code from the cListBase destructor.
 | ||
| - Fixed internationalization of some "Main" menu texts.
 | ||
| - Updated 'channels.conf' after the recent changes of Premiere World (thanks
 | ||
|   to Axel Gruber).
 | ||
| - Redesigned the ring buffer to make it work with two separate threads for
 | ||
|   input and output (also prepared for using a remultiplexer).
 | ||
| - Fixed setting system time from transponders.
 | ||
| - Fixed a segfault in the Schedule menu in case there is no EPG information.
 | ||
| - The 'runvdr' script now kills any leftover vdr threads before restarting it.
 | ||
| - Fixed a problem with Daylight Saving Time when displaying the times of
 | ||
|   recordings.
 | ||
| - Added Dutch language texts (thanks to Arnold Niessen).
 | ||
| - The new command line option -t can be used to set the controlling terminal
 | ||
|   (thanks to J<>rgen Sauer). This is especially useful when starting VDR through
 | ||
|   an entry in /etc/inittab (see INSTALL).
 | ||
| - Since the CAM module only works if it is installed in the "highest" DVB card,
 | ||
|   recordings now search for a free DVB card from lowest to highest index (as
 | ||
|   opposed to the previous "highest to lowest" search) in order to not use the
 | ||
|   CAM card for FTA recordings unless necessary. This is only important for
 | ||
|   systems with three or more DVB cards.
 | ||
| - Added the "statdvb2vdr" tool from Hans-Peter Raschke.
 | ||
| - Fixed a segfault that sometimes happened when killing VDR.
 | ||
| - VDR now returns an exit status of '2' in case of an error at startup, instead
 | ||
|   of terminating with 'abort()' (which caused a core dump).
 | ||
| - SVDRP now also works with clients that don't do line buffering (like the
 | ||
|   Windows 'telnet').
 | ||
| - Empty lines in config files no longer cause error messages.
 | ||
| - New SVDRP command LSTE to list the EPG data.
 | ||
| - The SVDRP HELP command now prints the topics in several columns.
 | ||
| 
 | ||
| 2001-06-02: Version 0.80
 | ||
| 
 | ||
| - VDR now requires driver version 0.9.0 or higher.
 | ||
| - Switched to the "new API" (thanks to Dave Chapman for his great support in
 | ||
|   this task).
 | ||
| - New setup parameter "LnbSLOF" that defines the switching frequency of the LNB.
 | ||
| - Fixed a bug in the EPG scanner with more than one DVB card.
 | ||
| - Fixed checking for free disk space, so that it works with NFS mounted drives.
 | ||
| - Files are now created with mode 644.
 | ||
| - Fixed checking the exit status in the 'runvdr' script.
 | ||
| - Activated loading the driver in 'runvdr'. Please read the comments in 'runvdr'
 | ||
|   for details.
 | ||
| - The new "emergency exit" feature automatically triggers a restart of VDR (if
 | ||
|   used with 'runvdr', otherwise it simply exists) if
 | ||
|   * tuning the channel for a recording fails
 | ||
|   * no useful data is received within the first 1MB of a recording
 | ||
|   * no data is received within a recording for more than 5 seconds
 | ||
|   This should make sure that a recording is successfully restarted after any
 | ||
|   problems.
 | ||
| - Processing the EIT data is now disabled during replay and 'Transfer Mode' in
 | ||
|   order to avoid video and audio glitches (there appears to be a bandwidth
 | ||
|   problem somewhere in the driver/firmware/hardware).
 | ||
| - Due to the reduced amount of OSD memory provided by the driver the number of
 | ||
|   lines in the OSD had to be reduced by 2. By rearranging some of the display
 | ||
|   items the amount of visible information remained the same as before, though.
 | ||
|   If your DVB card has even less memory (which would result in only the
 | ||
|   channel switching display and the replay progress display being visible, but
 | ||
|   no "Main" menu), try reducing the constant 'MenuLines' in dvbapi.h (currently
 | ||
|   '13') even further.
 | ||
| - There are two new setup parameters to define the "Default Priority" and
 | ||
|   "Default Lifetime" when creating a new timer event.
 | ||
| - The meaning of the "Lifetime" parameter has been modified: a value of '99'
 | ||
|   now means that the recording will live "forever", and a value of '0' means
 | ||
|   that the recording has no guaranteed lifetime and will be deleted whenever
 | ||
|   a new recording with higher priority needs disk space.
 | ||
| - Updated version of Matthias Schniedermeyer's 'schnitt' tools.
 | ||
| - New 'master-timer' tool (thanks to Matthias Schniedermeyer).
 | ||
| 
 | ||
| 2001-06-12: Version 0.81
 | ||
| 
 | ||
| - Fixed handling the case where the driver reports EAGAIN during recording,
 | ||
|   but no data comes within 5 seconds.
 | ||
| - Fixed EPG scanning on single DVB card systems.
 | ||
| - There can now be two audio PIDs per channel, which can be toggled via the
 | ||
|   "Green" button in the "Main" menu. The "Edit Channel" menu therefore now
 | ||
|   has two audio PID fields (Apid1 and Apid2). By default, Apid2 is 0, which
 | ||
|   means there is no alternate audio track.
 | ||
| - Fixed replaying in case the driver reports EAGAIN.
 | ||
| - Now 'runvdr' checks if the driver is already loaded (thanks to Henning
 | ||
|   Holtschneider).
 | ||
| - Fixed removing recordings with Lifetime = 99.
 | ||
| - Improved channel switching.
 | ||
| 
 | ||
| 2001-06-16: Version 0.82
 | ||
| 
 | ||
| - Increased timeout until reporting "broken video data stream" when recording.
 | ||
| - Increased amount of non-useful data received by cRemux before assuming the
 | ||
|   recording will fail.
 | ||
| - If there are two audio PIDs defined for a channel, both audio tracks will
 | ||
|   now be recorded and can be selectively replayed later. See the FORMATS file
 | ||
|   for details on how these different audio tracks are stored in the recorded
 | ||
|   files. In order for this to work properly you need to use a driver version
 | ||
|   dated 2001-06-16 or later, where the default PES filter buffer size has been
 | ||
|   reduced. This will create packets for the second audio track that are small
 | ||
|   enough to multiplex smoothly with the video data.
 | ||
| - Fixed a bug in the editing mechanism (didn't work with recordings that
 | ||
|   consist of more than one data file).
 | ||
| - The compile time switch VFAT has been fixed to recognize the ':' character
 | ||
|   in recording names, too.
 | ||
| - Setting all PIDs to 0x1FFF before switching channel.
 | ||
| - New setup parameter "VideoFormat" to define the aspect ratio of the tv set
 | ||
|   in use (4:3 or 16:9).
 | ||
| 
 | ||
| 2001-06-26: Version 0.83
 | ||
| 
 | ||
| - Avoiding "Device or resource busy" error message when setting PIDs.
 | ||
| - Added Portuguese language texts (thanks to Paulo Lopes).
 | ||
| - Recording and replaying Dolby Digital (AC3) sound.
 | ||
| - No longer getting stuck when a channel doesn't sync while switching
 | ||
|   with the 'Up' and 'Down' keys.
 | ||
| 
 | ||
| 2001-07-22: Version 0.84
 | ||
| 
 | ||
| - Fixed video packet scanning to make it recognize the whole range of
 | ||
|   allowed video packet ids.
 | ||
| - Added an additional "emergency exit" in case channel switching doesn't
 | ||
|   work several times in a row (when will the driver finally become stable
 | ||
|   enough to allow rock solid channel switching??).
 | ||
| - No longer sending a Diseqc command if the Diseqc value for a given channel
 | ||
|   is '0'. Previously this caused problems with some multi-switches (thanks to
 | ||
|   Markus Lang and Ulrich R<>der).
 | ||
| - When switching channels by entering the channel number via the numeric keys
 | ||
|   on the remote control, the channel number displayed is now followed by the
 | ||
|   '-' character to indicate that additional digits can be entered.
 | ||
| - Increased the timeout for numeric channel switching from 500ms to 1s.
 | ||
| - Fixed handling the "Green" button in the "Schedules" menu for channels that
 | ||
|   have a second audio PID.
 | ||
| - Fixed high system load when displaying a still picture in replay.
 | ||
| - Fixed a hanging SVDRP connection if the client dies without issuing QUIT.
 | ||
| - Increased the frame buffer size to 192KB.
 | ||
| - Removed a superfluous VIDEO_FREEZE call in the replay buffer.
 | ||
| - Added French language texts (thanks to Jean-Claude Repetto).
 | ||
| - Modified OSD to use 2bpp windows (4 colors) in order to work with less
 | ||
|   memory, allow a larger OSD window and be faster. The group separators in the
 | ||
|   "Channels" menu had to be given a different color.
 | ||
| - Moved the channel display to the bottom of the screen.
 | ||
| - Displaying the frame counter in the replay progress display only when editing
 | ||
|   a mark.
 | ||
| - Fixed handling characters above 0xEF in SVDRP.
 | ||
| - Fixed a possible crash in parsing incorrect lines in 'channels.conf'.
 | ||
| - New channel settings for Premiere World (Dolby Digital PIDs not yet
 | ||
|   available).
 | ||
| - Increased the buffer for key names received from LIRC (thanks to Andre
 | ||
|   Valentin).
 | ||
| - Fixed handling a channel group separator at the very beginning of the
 | ||
|   'channels.conf' file.
 | ||
| 
 | ||
| 2001-07-29: Version 0.85
 | ||
| 
 | ||
| - 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 Mel Sch<63>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').
 | ||
| 
 | ||
| 2001-08-06: Version 0.90
 | ||
| 
 | ||
| - Modified the display of the channel group separators (thanks to Markus Lang
 | ||
|   for this suggestion).
 | ||
| - Added support for replaying DVDs (thanks to Andreas Schultz). See INSTALL for
 | ||
|   instructions on how to compile VDR with DVD support.
 | ||
| - Fixed replay progress display in case replay is paused while watching an
 | ||
|   ongoing recording.
 | ||
| - Ringbuffer uses semaphores to signal empty/full conditions.
 | ||
| - Fixed calculating the timeout value in cFile::FileReady() (thanks to
 | ||
|   Wolfgang Henselmann-Weiss).
 | ||
| 
 | ||
| 2001-08-12: Version 0.91
 | ||
| 
 | ||
| - Fixed displaying colored button texts that are too long.
 | ||
| - Suppressing replay progress display when replaying a DVD.
 | ||
| - Updated channels.conf.cable (thanks to Uwe Scheffler).
 | ||
| - Updated French OSD texts (thanks to Jean-Claude Repetto).
 | ||
| - Improved AC3 decoding when replaying DVDs (thanks to Matjaz Thaler).
 | ||
| - Fixed handling DVB card indexes when using only one card in a multi-card
 | ||
|   system.
 | ||
| - Changed the 'Eject DVD' button text to a simple 'Eject' (the German text
 | ||
|   was too long...).
 | ||
| - Made the font file generation more stable (thanks to Artur Skawina).
 | ||
| - Changed the default value for the "DiSEqC" setup parameter to "off".
 | ||
| - The new command line option '-E' can be used to define where the EPG data
 | ||
|   shall be written to. This is especially useful if VDR runs in a system
 | ||
|   that turns off the video disk when it is not used, and therefore needs
 | ||
|   to write the EPG file to a ramdisk (or turn off writing it altogether).
 | ||
|   See 'vdr --help' for details.
 | ||
| - Making sure the disk is up and running before starting recording (this
 | ||
|   is important for systems that turn off the video disk when it is not used).
 | ||
| - Added the "Jump" function in replay mode (thanks to Stefan Huelswitt).
 | ||
|   See the description of the "Red" key in MANUAL under "Replay Control" for
 | ||
|   details.
 | ||
| - Fixed displaying editing marks when toggling a mark in "pause" mode.
 | ||
| - If there is no free DVB device to record, the log message will now be given
 | ||
|   only once.
 | ||
| - Made I/O more robust by handling EINTR (thanks to Werner Fink).
 | ||
| 
 | ||
| 2001-08-18: Version 0.92
 | ||
| 
 | ||
| - The "channel not sync'ed" log message now also lists the card number.
 | ||
| - Now using the EIT services from 'libdtv' (thanks to Rolf Hakenes), which
 | ||
|   provides EPG information for NVOD ("Near Video On Demand") channels.
 | ||
| - Doing some bug fixing on the EPG data (some tv stations apparently have
 | ||
|   their own idea on how to fill in the data...). The level up to which EPG
 | ||
|   bugs are fixed can be controlled with the EPGBugfixLevel parameter in the
 | ||
|   "Setup" menu (see MANUAL for details, and cEventInfo::FixEpgBugs() in eit.c
 | ||
|   for the actual implementation).
 | ||
| - Fixed broken recordings after a driver buffer overflow.
 | ||
| - Fixed the chirping sound after Pause/Play of a DVD (thanks to Andreas
 | ||
|   Schultz).
 | ||
| 
 | ||
| 2001-08-26: Version 0.93
 | ||
| 
 | ||
| - The menus and the channel display now show the current date and time.
 | ||
| - The new Setup parameter MaxVideoFileSize can be used to customize the
 | ||
|   maximum size of the recorded video files.
 | ||
| - Fixed a bug in handling repeating timers that record over midnight (the
 | ||
|   calculation of matching timers has been completely rewritten).
 | ||
| - Timers that are currently recording are now marked with '#' in the "Timers"
 | ||
|   menu.
 | ||
| - Timers are now sorted in the "Timers" menu, showing the sequence in which
 | ||
|   they will be recording. This can be disabled in the "Setup" menu. Note
 | ||
|   that the "Mark" button doesn't work if timers are displayed sorted.
 | ||
| 
 | ||
| 2001-09-02: Version 0.94
 | ||
| 
 | ||
| - Implemented automatic shutdown (see INSTALL and MANUAL for details).
 | ||
| - New SVDRP command NEXT to show the next timer event.
 | ||
| - The new remote control key "Power" can be used to turn the VDR machine
 | ||
|   off (this requires the presence of the '-s' option).
 | ||
| - Fixed code for the default "Ok" button on the PC keyboard (was 0x162 on
 | ||
|   the "good old" keyboards (with the F-keys at the left side), while it changed
 | ||
|   to 0x15E on the newer keyboards).
 | ||
| - When a recording is edited, the summary information (if present) is now
 | ||
|   also copied.
 | ||
| - When a recording is running on the primary interface, any attempt to change
 | ||
|   the current channel will now lead to a "Channel locked" message.
 | ||
| - The main program loop now first checks whether any timer recordings are
 | ||
|   finished, before starting a new timer recording. This is important in case
 | ||
|   one timer ends at the same time another timer starts.
 | ||
| - New setup parameter OSDMessageTime to define how long an OSD message shall
 | ||
|   be displayed.
 | ||
| - The "File" parameter of a timer can now contain the '~' character to store
 | ||
|   the recording in a hierarchical directory structure. The '~' character has
 | ||
|   been chosen since the file system's directory delimiter '/' may be part of
 | ||
|   a regular programme name (showing the directory hierarchy in the "Recordings"
 | ||
|   menu will follow later).
 | ||
| - Repeating timers now create recordings that contain the 'Subtitle' information
 | ||
|   from the EPG data in their file name. Typically (on tv stations that care
 | ||
|   about their viewers) this contains the episode title of a series. The
 | ||
|   subtitle is appended to the timer's file name, separated by a '~' character,
 | ||
|   so that it results in all recordings of this timer being collected in a
 | ||
|   common subdirectory. You can disable this with the 'UseSubtitle' parameter
 | ||
|   in the "Setup" menu.
 | ||
| - The summary information is now taken from the EPG data at the actual time of
 | ||
|   recording (no longer at the time the timer is created in the "Schedule" menu).
 | ||
|   If a timer already has summary data, that data will be used. If you have
 | ||
|   repeating timers in your 'timers.conf', you may want to make sure they do
 | ||
|   NOT contain any summary information (that's the last field in the timer
 | ||
|   definitions). Use your favourite text editor to delete that information.
 | ||
|   That way every recording will store the actual summary data at the time of
 | ||
|   the recording.
 | ||
| 
 | ||
| 2001-09-16: Version 0.95
 | ||
| 
 | ||
| - Fixed behaviour in case the shutdown didn't take place (there were many
 | ||
|   "next timer event at..." messages in that case).
 | ||
| - Reduced the default value for MinEventTimeout to 30 minutes.
 | ||
| - Fixed detecting manual start in shutdown feature.
 | ||
| - An error message is now displayed in case the 'Transfer Mode' can't be
 | ||
|   started because the necessary DVB card is currently recording (or there
 | ||
|   is no DVB card that can access this channel).
 | ||
| - Fixed toggling channels with the '0' key in case the "Ok" button has been
 | ||
|   pressed to display the current/next information.
 | ||
| - Pressing the "Power" key now always initiates the shutdown sequence (after
 | ||
|   user confirmation in case of a recording timer), event if there is currently
 | ||
|   a menu or a replay session active. Note the additional remarks in INSTALL
 | ||
|   regarding the values of the two parameters given to the shutdown program
 | ||
|   in case of a currently recording timer.
 | ||
| - Switching through channel groups with the "Left" and "Right" keys now
 | ||
|   always starts at the group that contains the current channel.
 | ||
| - Implemented "Multi Speed Mode" (thanks to Stefan Huelswitt).
 | ||
| - Implemented backtracing to hit the right spot after fast forward/rewind
 | ||
|   (thanks to Stefan Huelswitt).
 | ||
| - Implemented replay mode display (thanks to Stefan Huelswitt, with a few
 | ||
|   rewrites by kls).
 | ||
| - Changed the size of all input buffers used to parse config files or receive
 | ||
|   SVDRP commands to the same value of 10KB. This allows long strings to be
 | ||
|   used in the 'summary' field of a timer, for instance.
 | ||
| - The pipe to the Dolby Digital replay command (option '-a') now closes all
 | ||
|   unused file descriptors in the child process to avoid crashing when the
 | ||
|   OSD is used (thanks to Andreas Vitting).
 | ||
| - Switched to the driver's new tuning API (VDR now requires a driver version
 | ||
|   dated 2001-09-14 or higher).
 | ||
| - Changed obsolete macro VIDEO_WINDOW_CHROMAKEY to VID_TYPE_CHROMAKEY (thanks
 | ||
|   to Guido Fiala).
 | ||
| - New version of the "Master-Timer" tool (thanks to Matthias Schniedermeyer).
 | ||
| - Better error handling when writing configuration files.
 | ||
| - Fixed putting the final editing mark into the edited version's marks file.
 | ||
| - Fixed manipulating an editing mark at the very end of a recording.
 | ||
| - Fixed starting a new replay immediately after stopping a previous one (had
 | ||
|   caused a mix between live video and replay).
 | ||
| - Three new keys ("Volume+", Volume-" and "Mute") to control the DVB card's
 | ||
|   audio output volume.
 | ||
| - New version of the 'epg2timers' tool (thanks to Carsten Koch).
 | ||
| 
 | ||
| 2001-09-23: Version 0.96
 | ||
| 
 | ||
| - Made VDR compile with libdvdread-0.9.1 (thanks to Andreas Schultz).
 | ||
|   Note that you now _need_ version 0.9.1 of libdvdread to compile VDR with
 | ||
|   DVD support!
 | ||
| - Several fixes to the replay mode display (thanks to Stefan Huelswitt):
 | ||
|   no more replay mode display when pressing the "Green" or "Yellow" button
 | ||
|   (Skip +/-60s); fixed timeout when pressing '0' to set an editing mark while
 | ||
|   the progress display is not shown; mode display is shown after progress
 | ||
|   display is closed; pressing "Ok" while the mode display is on brings up
 | ||
|   the progress display; no more unnecessary display of "normal play mode".
 | ||
| - Supplying the new frontend parameter 'Inversion' (currently it is always
 | ||
|   set to INVERSION_AUTO, which should work with all channels on Astra).
 | ||
| - Removing unnecessary double quotes from EPG Subtitle in EPGBugfixLevel >=1.
 | ||
| - EPG info is now updated if the contents changes but the ID remains the same.
 | ||
| - Fixed handling SVDRP commands with more than one blank between the command
 | ||
|   word and the options.
 | ||
| - The current volume setting is now saved to setup.conf and restored at the
 | ||
|   next program start.
 | ||
| - New command line option '-r' to define a command that gets called before and
 | ||
|   after each recording (see INSTALL for details).
 | ||
| - Implemented a check to see whether the system time is running linearly.
 | ||
| - Writing the current time (as seen by VDR) into the log file when starting
 | ||
|   a timer recording (this may help debugging cases where timers don't start
 | ||
|   at the expected time).
 | ||
| - Made the volume, mute and power keys work when a menu is active, too (thanks
 | ||
|   to Matthias Weingart).
 | ||
| 
 | ||
| 2001-10-21: Version 0.97
 | ||
| 
 | ||
| - Implemented a lock file to prevent more than one instance of VDR from removing
 | ||
|   files from the video directory at the same time.
 | ||
| - The new setup parameter SplitEditedFiles can be used to control whether or
 | ||
|   not the result of an editing process shall be written into separate files.
 | ||
| - Fixed handling repeat function when using LIRC (thanks to Matthias Weingart).
 | ||
| - The shutdown program (defined with the '-s' option) now also gets the channel
 | ||
|   number and recording title of the timer (see INSTALL).
 | ||
| - New channel data for 'Premiere One', 'Premiere X-Action', 'Fox Kids T<>rkce'
 | ||
|   and 'N24' (thanks to Andreas Share, Ulrich R<>der, Uwe Scheffler and Simon
 | ||
|   Bauschulte). Note that if you are using the default 'channels.conf' or
 | ||
|   'channels.conf.cable' files you may need to check any exiting timers to see
 | ||
|   whether they still use the correct channel number.
 | ||
| - Fixed the "EPG bugfix" (sometimes had duplicate information in Subtitle and
 | ||
|   Extended Description).
 | ||
| - Fixed checking for valid video device when setting the video mode.
 | ||
| - The external command 'sort' is no longer required. VDR now sorts the list of
 | ||
|   recordings itself, making sure that recordings that stem from repeating timers
 | ||
|   are sorted chronologically. Sorting is done according to the setting of the
 | ||
|   current locale, so you may want to make sure LC_COLLATE is set to the desired
 | ||
|   value (see INSTALL).
 | ||
| - Fixed handling 'newline' characters in EPG texts (thanks to Rolf Hakenes for
 | ||
|   an improved version of his 'libdtv').
 | ||
|   Newline characters are always mapped to a single "blank" in VDR, because they
 | ||
|   would otherwise disturb the Title and Subtitle layout in the channel display
 | ||
|   (where these are assumed to be single line texts) and would have to be
 | ||
|   specially handled in the 'epg.data' file and the LSTE command in SVDRP.
 | ||
| - Mapping ` ("backtick") characters in EPG texts to ' (single quote).
 | ||
| - Fixed timers starting and ending at unexpected times. 'localtime()' was not
 | ||
|   thread safe, now using localtime_r().
 | ||
| - Removed the "system time seen..." message.
 | ||
| - Fixed a bug in the replay mode display when pressing the Green or Yellow
 | ||
|   button while in trick mode (thanks to Stefan Huelswitt)
 | ||
| - Closing all open file descriptors when calling external programs.
 | ||
| - The menu timeout now also works when pressing the "Back" button during replay
 | ||
|   to enter the "Recordings" menu.
 | ||
| - Updated 'channels.conf' for the "Bundesliga" channels of Premiere World
 | ||
|   (thanks to Mel Sch<63>chner).
 | ||
| - Fixed reading timers.conf and channels.conf that contain blanks after numeric
 | ||
|   values.
 | ||
| - Fixed handling trick modes near the beginning and end of a recording.
 | ||
| - Pressing the "Back" button while replaying a DVD now leads to the DVD menu.
 | ||
| 
 | ||
| 2001-11-04: Version 0.98
 | ||
| 
 | ||
| - Completed storing the current audio volume in the setup.conf file (thanks
 | ||
|   to Andy Grobb).
 | ||
| - Fixed closing the progress display with the "Back" key when in trick mode
 | ||
|   and Setup.ShowReplayMode is enabled (thanks to Stefan Huelswitt).
 | ||
| - New SVDRP commands LSTR and DELR to list and delete recordings (thanks to
 | ||
|   Thomas Heiligenmann).
 | ||
| - Fixed a crash when pressing the '2' button while replaying a DVD.
 | ||
| - Updated 'channels.conf' for the "Bundesliga" channels of Premiere World
 | ||
|   (thanks to Mel Sch<63>chner).
 | ||
| - Changed the tuning code to use FrontendInfo to detect the type of DVB card.
 | ||
| - Removed the recursion stuff from cThread (cMutex already does this).
 | ||
| - Fixed handling the repeat function in the channel display.
 | ||
| - Avoiding multiple EPG entries for the same event (thanks to Rolf Hakenes
 | ||
|   for some valuable information on how to do this).
 | ||
| - A recording on the primary interface can now be stopped to make it continue
 | ||
|   on an other free DVB card (if one is free at the moment). See MANUAL for
 | ||
|   details.
 | ||
| - Added some missing teletext PIDs (thanks to Norbert Schmidt).
 | ||
| - Added PTS to the converted PCM audio when replaying a DVD (thanks to Andreas
 | ||
|   Schultz). Now the audio and video of a DVD replayed over the DVB card's A/V
 | ||
|   out should always be in sync.
 | ||
| - Fixed handling the "Power" key in case Setup.MinUserInactivity is set to 0 to
 | ||
|   disable automatic shutdown.
 | ||
| - Added a fifth parameter to the 'shutdown' call that indicates the reason for
 | ||
|   this shutdown request (see INSTALL).
 | ||
| - Fixed releasing 'index' memory after recording or playback.
 | ||
| - Fixed ejecting a DVD while it is being replayed.
 | ||
| - Removed all video overlay stuff from cDvbApi and SVDRP. Guido Fiala's new
 | ||
|   'kvdr' version 0.4 now does these things itself. As a consequence of this you
 | ||
|   will now need to use kvdr 0.4 or later.
 | ||
| - The device /dev/video is now opened only if necessary (to GRAB an image),
 | ||
|   allowing other programs (like 'kvdr', for instance) to use that device.
 | ||
| 
 | ||
| 2001-11-25: Version 0.99pre1
 | ||
| 
 | ||
| - Fixed several channel definitions in 'channels.conf' (thanks to Thilo
 | ||
|   Wunderlich).
 | ||
| - Added MPEG audio support for DVD (thanks to Andreas Schultz).
 | ||
| - Implemented DVB-T support (thanks to Dave Chapman).
 | ||
|   This currently works only for UK channels.
 | ||
| - Removed the range limits for the Frequency and Srate parameters of channel
 | ||
|   definitions.
 | ||
| - Changed the maximum value for PIDs in channels.conf from 0xFFFE to 0x1FFF.
 | ||
| - Fixed DVD audio sync problems (thanks to Andreas Schultz).
 | ||
| - Fixed external AC3 replay for DVDs (thanks to Andreas Schultz).
 | ||
| 
 | ||
| 2002-01-27: Version 0.99pre2
 | ||
| 
 | ||
| - Fixed setting the OSD size in the 'Confirm' interface call (thanks to
 | ||
|   Deti Fliegl).
 | ||
| - Removed the 'read incomplete section...' error message in the EIT processor.
 | ||
| - Fixed channel data for "DW TV" (thanks to Axel Gruber).
 | ||
| - Added DPID to "PREMIERE MOVIE 1" in channels.conf.cable (thanks to Stephan
 | ||
|   Schreiber).
 | ||
| - Prepared the OSD functions for multiple overlapping windows.
 | ||
| - Removed the check to see whether the system time is running linearly.
 | ||
| - Improved performance of SVDRP command entry.
 | ||
| - Removed EPGBugfixLevel '3' - after more than a year Pro-7 finally managed to
 | ||
|   broadcast the correct timestamps for EPG events between 0:00 and 6:00!
 | ||
| - Fixed failing watchdog timer if program hangs in OSD activities (thanks to
 | ||
|   Carsten Koch).
 | ||
| - No longer requiring 'libncurses' if compiling without DEBUG_OSD=1 and
 | ||
|   REMOTE=KBD (thanks to Lauri Pesonen).
 | ||
| - The "Recordings" menu now displays a hierarchical structure if there are
 | ||
|   subdirectories for the recordings. This can be controlled through the
 | ||
|   "RecordingDirs" parameter in the "Setup" menu.
 | ||
|   See "MANUAL/Replaying a Recording" for details.
 | ||
| - Improved speed of setting the Help button texts.
 | ||
| - Fixed handling file names that contain single quotes (') or dollar signs ($)
 | ||
|   in the call to the shutdown command (option '-s') and the recording command
 | ||
|   (option '-r').
 | ||
| - Improved error handling in the editing process; the resulting file will be
 | ||
|   deleted if an error occurred.
 | ||
| - A message is now prompted at the end of the editing process, indicating
 | ||
|   whether the process succeeded or failed.
 | ||
| - Fixed setting the LastActivity timestamp after a shutdown prompt (thanks to
 | ||
|   Sergei Haller).
 | ||
| - A message is now prompted if free disk space becomes low during recording.
 | ||
| - The editing process now calls AssertFreeDiskSpace() to remove deleted
 | ||
|   recordings if the disk becomes full.
 | ||
| - The "Main" menu now displays in its title the used disk space (in percent)
 | ||
|   and the estimated free disk space (in hh:mm), assuming a data rate of 30 MB
 | ||
|   per minute.
 | ||
| - Activating the "Recordings" menu now displays "scanning recordings..." to
 | ||
|   give the user some feedback in case this takes longer.
 | ||
| - Status messages are now displayed centered.
 | ||
| - Removed the 'Tools' subdirectory from the VDR archive. All contributed tools
 | ||
|   can now be found at ftp://ftp.tvdr.de/vdr/Tools.
 | ||
| 
 | ||
| 2002-01-29: Version 0.99pre3
 | ||
| 
 | ||
| - Fixed handling improper buffer lengths in the EIT parser (thanks to Deti
 | ||
|   Fliegl).
 | ||
| 
 | ||
| 2002-01-30: Version 0.99pre4
 | ||
| 
 | ||
| - Fixed handling improperly formatted EIT data (thanks to Rolf Hakenes).
 | ||
| 
 | ||
| 2002-02-03: Version 0.99pre5
 | ||
| 
 | ||
| - Updated channel settings for 'N24' (thanks to Andreas Gebel).
 | ||
| - Fixed handling hierarchical recordings menu in case of directories starting
 | ||
|   with the same sequence of characters.
 | ||
| - Fixed handling timers on the 29th, 30th or 31st of a month in case the next
 | ||
|   month has less than 31 days.
 | ||
| - Added a description of the sort order of individual episodes in the
 | ||
|   recordings menu to the MANUAL.
 | ||
| - Removed the EPG bugfix for "Title / Subtitle" cleanup. Apparently Pro-7 has
 | ||
|   finally stopped this nasty habit.
 | ||
| - Added some EPG bugfix statistics (printed to the log file every time the EPG
 | ||
|   data is cleaned up and when VDR is terminated). Maybe somebody in charge of
 | ||
|   the EPG data at the listed channels will read this and take the necessary
 | ||
|   actions to fix these things...
 | ||
| - Changed the [dei]syslog macros in tools.h to use a variable number of args,
 | ||
|   thus making it safe to use them in nested 'if/else' statements.
 | ||
| - Fixed error handling in establishing an SVDRP connection (thanks to Davide
 | ||
|   Achilli for pointing out this one).
 | ||
| - The new configuration file 'svdrphosts.conf' is now used to define which
 | ||
|   hosts may access the SVDRP port (by default only 'localhost' has access).
 | ||
|   See FORMATS for details.
 | ||
| - The special keywords TITLE and EPISODE can now be used in timer file names
 | ||
|   (see MANUAL and FORMATS for details).
 | ||
| - The new setup parameter NameInstantRecord can be used to define how an
 | ||
|   instant recording will be named (see MANUAL for details).
 | ||
| - When looking for the EPG record of the timer that starts a recording, now
 | ||
|   that record is taken which covers the time calculated as
 | ||
|   'start + (Setup.MarginStart * 2) + 1)' in order to have a better chance of
 | ||
|   hitting the right record in case of an instant recording. Timers that start
 | ||
|   further in the future should always be programmed via the "Schedules" menu.
 | ||
| - The special VPIDs '0' and '1' are now used to enable recording radio channels.
 | ||
|   Actually '0' should be enough, but '1' must be used with encrypted channels
 | ||
|   (driver bug?). Note, though, that since VDR is mainly a *video recorder*, some
 | ||
|   features like, e. g.,  the progress display, may not work as expected with
 | ||
|   radio recordings. Thanks to Michael Paar.
 | ||
| - Fixed a problem with the ERR macro defined by ncurses.h (thanks to Artur
 | ||
|   Skawina).
 | ||
| 
 | ||
| 2002-02-10: Version 0.99
 | ||
| 
 | ||
| - Fixed a bug in moving timers or channels to the last position in the list
 | ||
|   (thanks to Matthias Schniedermeyer for helping to debug this one).
 | ||
| - Changed the estimated data rate for calculating the remaining disk capacity
 | ||
|   to 25.75 MB/min.
 | ||
| - Only reporting the 'EPG bugfix statistics' if there really were any fixes.
 | ||
| - Added Finnish language texts (thanks to Hannu Savolainen).
 | ||
| - Reverted to the previous way of searching for the EPG record of the current
 | ||
|   recording in case of a repeating timer (i.e. taking the one that is in the
 | ||
|   middle between start and end time).
 | ||
| - Added a typedef for 'in_addr_t' to make it work with glibc < 2.2 (thanks to
 | ||
|   J<>rgen Schmidt).
 | ||
| - When the last entry in a "Recordings" menu page is deleted, that page is now
 | ||
|   automatically closed (suggested by Uwe Freese).
 | ||
| - Changed the default name for instant recordings to "TITLE EPISODE" (avoiding
 | ||
|   the '-').
 | ||
| - If Setup.ShowInfoOnChSwitch is set to "no", the box for the EPG display is no
 | ||
|   longer shown (thanks to Andy Grobb).
 | ||
| - If compiled with VFAT=1, characters that can't be handled by a VFAT system are
 | ||
|   now encoded to '#XX'.
 | ||
| - When the user presses the "Power" button and there is a timer about to start
 | ||
|   recording within Setup.MinEventTimeout minutes, there is now a confirmation
 | ||
|   prompt telling the user that there is an upcoming timer event.
 | ||
| - If a recording has no episode title, the trailing '~' is no longer shown in
 | ||
|   the progress display.
 | ||
| 
 | ||
| 2002-02-24: Version 1.0.0pre1
 | ||
| 
 | ||
| - Added scanning for EPG data for another 4 days on channels that support this
 | ||
|   (thanks to Oleg Assovski).
 | ||
| - Removed '#define VFAT 1' from recording.c (was a leftover from testing).
 | ||
| - Fixed the "Low disk space!" message (thanks to Sergei Haller).
 | ||
| - Added the TPID to Hessen-3 in 'channels.conf' (thanks to Sergei Haller).
 | ||
| - Fixed a crash when replaying with DEBUG_OSD=1 (thanks to Stefan Huelswitt).
 | ||
| - Implemented the "First day" parameter for repeating timers. See FORMATS for
 | ||
|   information about the enhanced 'timers.conf' file format, and MANUAL for
 | ||
|   a description of the new item in the "Edit Timer" menu and the enhanced
 | ||
|   functionality of the "Blue" button in the "Timers" menu.
 | ||
| - When deleting a recording that is currently still being recorded, the related
 | ||
|   timer will now automatically be terminated. If this is a repeating timer, it
 | ||
|   will receive a "First day" setting that skips the timer for this day.
 | ||
| - Fixed closing all unused file descriptors when opening a pipe (thanks to
 | ||
|   Werner Fink).
 | ||
| - Instant recordings now take the EPG data from the point in time at 5 minutes
 | ||
|   from the start time of the recording. In order for this to work the 'active'
 | ||
|   parameter of a timer now uses the second bit to indicate that this is an
 | ||
|   "instant" recording (see FORMATS for details).
 | ||
| - Fixed the SVDRP GRAB command in case the video device can't be opened (thanks
 | ||
|   to Adrian Stabiszewski).
 | ||
| - At startup the data written into 'epg.data' is now read into the EPG data
 | ||
|   structures. In order for this to work, the 'E' record has been extended to
 | ||
|   (optionally) contain the 'table ID' (see FORMATS for details).
 | ||
| - The new SVDRP command PUTE can be used to put EPG data into the EPG list.
 | ||
|   See FORMATS for details about the required data format.
 | ||
| - Taking the German umlauts 'as is' when compiled with VFAT.
 | ||
| - The new Setup parameter RecordDolbyDigital can be used to generally turn off
 | ||
|   recording the Dolby Digital audio channels in case you want to save disk space
 | ||
|   or don't have the equipment to replay Dolby Digital audio.
 | ||
| - Reading the 'setup.conf' file no longer terminates in case of an error, but
 | ||
|   rather attempts to read the rest of the file.
 | ||
| - Removed DVD support from the core VDR source, since the current version from
 | ||
|   Andreas Schultz is already much further developed (DVD menu navigation) and
 | ||
|   the concept of "additional players" in VDR is going to change in version 1.1.0,
 | ||
|   where a new "plugin" interface shall allow the easy implementation of new
 | ||
|   players without having to patch the core VDR source. Until then, Andreas has
 | ||
|   agreed to provide his DVD support as a completely external patch.
 | ||
| - The contents of the distribution archive now contains the directory name with
 | ||
|   the current version number, as in 'vdr-1.0.0pre1/...' in order to avoid
 | ||
|   inadvertently overwriting an existing VDR directory with a new version.
 | ||
| - Added a missing error message in SVDRP command LSTC in case the given channel
 | ||
|   can't be found.
 | ||
| 
 | ||
| 2002-02-25: Version 1.0.0pre2
 | ||
| 
 | ||
| - Fixed a crash in case there is no 'epg.data' at program start (thanks to
 | ||
|   Andreas Schultz).
 | ||
| 
 | ||
| 2002-03-03: Version 1.0.0pre3
 | ||
| 
 | ||
| - Fixed parsing 'E' records in epg2html.pl.
 | ||
| - Fixed a deadlock when switching channels via Schedule/Now|Next/Switch (reported
 | ||
|   by Martin Hammerschmid).
 | ||
| - Changed the meaning of the 'Ca' parameter in 'channels.conf'. Each channel can
 | ||
|   now define which decryption method it needs in order to be accessed. The new
 | ||
|   configuration file 'ca.conf' contains the defined values, and the default
 | ||
|   'channels.conf' has been modified to contain the new values for 'Premiere World'
 | ||
|   and 'ORF'. If you use the default 'channels.conf' and have the conditional
 | ||
|   access hardware to receive encrypted channels, please make sure you copy the
 | ||
|   file 'ca.conf' into your /video directory (or wherever your configuration files
 | ||
|   are located) and go into the "Setup" menu and set the CICAM values according
 | ||
|   to your hardware setup. Currently there are two possible CICAM entries per
 | ||
|   DVB card, so any card can implement up to two different conditional access
 | ||
|   modes (besides the default "Free To Air" mode, which is always assumed to be
 | ||
|   available on any DVB card).
 | ||
| - Updated French language texts (thanks to Jean-Claude Repetto).
 | ||
| 
 | ||
| 2002-03-17: Version 1.0.0pre4
 | ||
| 
 | ||
| - Added 'Ca' code 201 for 'Cryptoworks, GOD-DIGITAL' to 'ca.conf' (thanks to
 | ||
|   Bernd Schweikert).
 | ||
| - Fixed avoiding the primary DVB interface in case Setup.PrimaryLimit is 0.
 | ||
| - Fixed handling CICAM settings if the first one of a DVB card was FTA.
 | ||
| - Fixed reacting on changes in CICAM settings (needed to restart VDR before).
 | ||
| - The "Blue" button in the "Main" menu now works as "Stop" button if a recording
 | ||
|   is currently being replayed.
 | ||
| - New command line option '-m' to mute audio of the primary DVB device at
 | ||
|   startup (suggested by Mirko G<>nther).
 | ||
| - The new SVDRP command VOLU can be used to control the audio volume (suggested
 | ||
|   by Mirko G<>nther).
 | ||
| - Fixed resetting 'mute' state when setting the volume to a non-zero value.
 | ||
| - Added log messages when deleting recordings in case the disk runs full while
 | ||
|   recording.
 | ||
| - Fixed closing a pipe (used for replaying Dolby Digital audio), which
 | ||
|   sometimes left 'zombie' processes behind (thanks to Werner Fink for helping
 | ||
|   to debug this one).
 | ||
| - Now starting the Dolby Digital output thread only if the recording actually
 | ||
|   contains Dolby Digital audio data (thanks to Werner Fink).
 | ||
| - Implemented OSD for Volume and Mute (works only if there is no other OSD
 | ||
|   activity, but this should be no problem for normal use).
 | ||
| - Changed the MANUAL description of the "Conditional Access" setup parameters
 | ||
|   to reflect the actual "CICAM DVBn m" notation in the "Setup" menu.
 | ||
| - The new Setup parameter "Use time from transponder" can be used to define which
 | ||
|   transponder shall be used to set the system time (see MANUAL for details).
 | ||
|   If you have been using the SetSystemTime option previously, you now MUST
 | ||
|   select a channel that you trust to have a reliable time base.
 | ||
| - Grouped the Setup parameters into several sub-menus, so that each group of
 | ||
|   parameters fits on a single screen - unless the height of the OSD has been
 | ||
|   set to a small value (based on code from Markus Lang).
 | ||
| - Changed the title of the "Main" menu to "VDR".
 | ||
| - Fixed displaying a system message while the replay mode is being shown.
 | ||
| - Physically removing a deleted recording if one with the same name shall be
 | ||
|   deleted again.
 | ||
| - The "Left" and "Right" keys are now used to page up and down in text displays
 | ||
|   (like the EPG descriptions or the results of commands executed from the
 | ||
|   "Commands" menu).
 | ||
| - Fixed high CPU usage in 'Transfer Mode'.
 | ||
| - Replaced 'killproc' with 'killall' in 'runvdr', since apparently 'killproc'
 | ||
|   is not available by default on some Linux distributions, whereas 'killall' is.
 | ||
|   Please check if your system provides 'killall' - if it doesn't, please change
 | ||
|   this back in 'runvdr' and report this (thanks to Achim Lange).
 | ||
| - The "Commands" menu now automatically assigns number keys as hotkeys to the
 | ||
|   commands. If you have preceded your commands with digits you may want to
 | ||
|   remove these from your 'commands.conf' file.
 | ||
| - The new Setup item "Restart" can be used to force a complete restart of VDR,
 | ||
|   including reloading the driver. Note that this can only work if VDR and the
 | ||
|   driver are wrapped into a mechanism that actually performs this action if VDR
 | ||
|   exits. The 'runvdr' script can be used for this purpose.
 | ||
| - Refined texts of the "Setup" menu.
 | ||
| 
 | ||
| 2002-04-01: Version 1.0.0pre5
 | ||
| 
 | ||
| - Fixed restoring CICAM setup values for a fourth DVB card (thanks to Klaus Wolf).
 | ||
| - Completed internationalization of OSD texts (thanks to Hannu Savolainen,
 | ||
|   Arnold Niessen, Paulo Lopes, Jean-Claude Repetto, Alberto Carraro, Matjaz
 | ||
|   Thaler and Truls Slevigen).
 | ||
| - Improved file I/O in case of EINTR, which may occur e.g. with heavy system
 | ||
|   load (thanks to Werner Fink).
 | ||
| - Now writing the title of a recording into the 'summary.vdr' file.
 | ||
| - Workaround for displaying still frames with the unpatched LinuxDVB driver
 | ||
|   (if anybody ever finds out why the unpatched driver doesn't display VDR's
 | ||
|   still frames, please let me know).
 | ||
| - When executing a command from the "Commands" menu, the title of that command
 | ||
|   is now immediately shown in the status line (followed by "...") to give the
 | ||
|   user some feedback that the command is being executed, which is especially
 | ||
|   important if this takes some time.
 | ||
| - Fixed scrolling the "Channels" menu in case the cursor ends up on a group
 | ||
|   delimiter (thanks to Bernd Zierath for helping to debug this one).
 | ||
| - Added manual pages vdr(1) and vdr(5) (which made the FORMATS file obsolete).
 | ||
| - New command command line option '-V' to display the VDR version.
 | ||
| - Adjusting column width for channel numbers in case there are more than 999
 | ||
|   channels.
 | ||
| - Checking the return value of '...FileReady...' calls in dvbapi.c for better
 | ||
|   performance under heavy system load.
 | ||
| - New 'make' target 'install', which copies the manual pages and executables
 | ||
|   to their appropriate system locations and creates the /video directory if
 | ||
|   it doesn't exist yet.
 | ||
| - Automatic hotkey assignment is now suppressed if the first entry in
 | ||
|   'commands.conf' starts with a digit in the range '1'...'9', followed by a blank.
 | ||
| - Fixed a bug in switching back the replay mode display in time shift mode
 | ||
|   (thanks to Achim Lange for reporting this one).
 | ||
| - Fixed a bug in the "First day" timer parameter for timers that record over
 | ||
|   midnight.
 | ||
| - Added units to Setup parameters.
 | ||
| - Changed time entry in the 'Jump' command during replay, so that it is filled
 | ||
|   up from right to left.
 | ||
| - Now using statfs() to determine the amount of free disk space, which avoids
 | ||
|   the use of an external 'df' command (thanks to Ruben Nunez Francisco).
 | ||
| - Fixed skipping the next hit of a repeating timer (thanks to Rainer Zocholl
 | ||
|   for reporting this one).
 | ||
| - Fixed a bug when a timer records over midnight of a day that had a change in
 | ||
|   Daylight Saving Time (thanks to Mirko D<>lle for reporting this one).
 | ||
| - Added Polish language texts (thanks to Michael Rakowski).
 | ||
| - Fixed a bug in parsing group separators in channels.conf (thanks to Henning
 | ||
|   Holtschneider for reporting this one).
 | ||
| - Changed the default 'Ok' key when using the PC keyboard from '5' (in the
 | ||
|   numeric block) to 'Enter', because the '5' key didn't work on keyboards with
 | ||
|   the F-keys on top.
 | ||
| - Fixed a bug in the EPG bugfix mechanism if the extended description is shorter
 | ||
|   than 3 characters (thanks to Andreas Schultz).
 | ||
| 
 | ||
| 2002-04-07: Version 1.0.0
 | ||
| 
 | ||
| - Fixed a problem with wrong EPG data in the Schedules menu (thanks to Tobias
 | ||
|   Kerner, problem was initially reported by Michel Moster, but somehow I had
 | ||
|   misplaced his message...).
 | ||
| - Added Spanish language texts (thanks to Ruben Nunez Francisco).
 | ||
| - Fixed resetting the "First day" timer parameter once the timer actually starts
 | ||
|   recording.
 | ||
| - Fixed the still picture workaround in case the progress display is active
 | ||
|   (thanks to Gerald Raaf).
 | ||
| - Fixed a problem with accessing the epg.data file before it is fully written
 | ||
|   (thanks to Thilo Wunderlich for reporting this one).
 | ||
| - Now the EPG scan skips channels that have their 'Ca' parameter explicitly set
 | ||
|   to an other DVB card (suggested by Sergei Haller).
 | ||
| - Fixed a possible hangup when reading a broken epg.data file (thanks to Henning
 | ||
|   Holtschneider for pointing out this one).
 | ||
| - Fixed a bug in the editing process in case a previously edited file with the
 | ||
|   same name was manually deleted on a system with more than one video directory
 | ||
|   (thanks to Dirk Wiebel for reporting this one).
 | ||
| 
 | ||
| 2002-04-21: Version 1.0.1
 | ||
| 
 | ||
| - Added some DVB-T channels for Berlin (Germany) to channels.conf.terr (thanks to
 | ||
|   Andreas Roedl).
 | ||
| - Implemented enhanced string editing with upper-/lowercase, insert/overwrite
 | ||
|   and delete (thanks to Sergei Haller).
 | ||
| - Fixed color palette handling on "big endian" systems (thanks to Jean Martin
 | ||
|   for pointing out this one).
 | ||
| - Updated the "Blue Movie" channels to the new "Premiere Erotik" (thanks to
 | ||
|   Thilo Wunderlich). NOTE: this adds a new channel to 'channels.conf', so that
 | ||
|   any timers referencing a channel with a number higher than 102 should be
 | ||
|   checked and adapted if necessary (this only applies if you are using the default
 | ||
|   'channels.conf').
 | ||
| - Improved thread locking in the ring buffer to avoid possible race conditions
 | ||
|   under heavy load (thanks to Werner Fink).
 | ||
| - Fixed a crash when selecting the "Jump" function directly after setting an
 | ||
|   editing mark (thanks to Steffen Koch for reporting and Stefan Huelswitt for
 | ||
|   fixing this one).
 | ||
| - Fixed some missing ',' in i18n.c (thanks to Matthias Hilbig).
 | ||
| - Fixed a possible endless loop in shifting recordings between DVB cards (thanks
 | ||
|   to Stefan Huelswitt for reporting this one).
 | ||
| - Updated the Premiere World Formula 1 channels in 'channels.conf' (thanks to Mel
 | ||
|   Sch<63>chner).
 | ||
| - No longer setting PIDs 0x1FFF, which apparently fixes problems with CAMs and
 | ||
|   AC3 sound only working the first time (thanks to Stefan Huelswitt).
 | ||
| - Now encoding '.' at the end of a directory name in case of VFAT=1, since Windows
 | ||
|   can't handle these (thanks to Simon Dean for reporting this one).
 | ||
| 
 | ||
| 2002-05-05: Version 1.0.2
 | ||
| 
 | ||
| - Now taking an active video cutting process into account when doing shutdown or
 | ||
|   housekeeping (thanks to Stefan Huelswitt).
 | ||
| - The default duration of an instant recording has been increased to 3 hours and
 | ||
|   is now configurable in the "Setup/Recording" menu.
 | ||
| - Added Greek language texts (thanks to Dimitrios Dimitrakos).
 | ||
| - Fixed the unit of the "SVDRP timeout" setup parameter (thanks to Marcus Kuba
 | ||
|   for reporting this one).
 | ||
| - Fixed a crash on systems with disks that have a block size larger than 1MB
 | ||
|   (thanks to Ulrich Petri for helping to debug this one).
 | ||
| - Updated 'channels.conf' for the new PW settings (thanks to Andreas Share,
 | ||
|   Carsten Koch, Gerald Raaf and Mel Sch<63>chner). Note that all channels with numbers
 | ||
|   over 50 may have moved, so you should carefully check any timers you have set!
 | ||
| - Updated 'channels.conf.cable' for the new PW settings (thanks to Oliver Lorei
 | ||
|   Stephan Schreiber and Uwe Scheffler). Note that all channels may have moved, so
 | ||
|   you should carefully check any timers you have set!
 | ||
|   For future updates of this file somebody with digital cable should take the role
 | ||
|   of the "maintainer" and send me updated versions based on the file that comes
 | ||
|   with the most recent version of VDR. I will then simply replace the entire file
 | ||
|   'channels.conf.cable' whenever a new version is sent to me.
 | ||
| - Fixed skipping forward in time shift mode near the end of the recording (thanks
 | ||
|   to Andreas B<>ttger for reporting this one).
 | ||
| 
 | ||
| 2002-05-09: Version 1.1.0
 | ||
| 
 | ||
| - Begin of the 1.1 development branch. THIS IS NOT A STABLE VERSION!
 | ||
|   The current stable version for every day use is still the 1.0 branch.
 | ||
| - First step towards a universal plugin interface. See the file PLUGINS.html
 | ||
|   for a detailed description. The man page vdr(1) describes the new options '-L'
 | ||
|   and '-P' used to load plugins. This first step implements the complete "outer"
 | ||
|   shell for plugins. The "inner" access to VDR data structures will follow.
 | ||
| - The VDR version number is now displayed in the title line of the "Setup" menu.
 | ||
| 
 | ||
| 2002-05-11: Version 1.1.1
 | ||
| 
 | ||
| - Separated the actual DVB hardware OSD implementation from the abstract OSD
 | ||
|   interface. 'osdbase.c/.h' now implements the abstract OSD, while 'dvbosd.c/.h'
 | ||
|   is the actual implementation for the DVB hardware. This is in preparation for
 | ||
|   allowing additional kinds of OSD hardware implementations.
 | ||
| - Fixed leftover references to the file FORMATS in MANUAL and svdrp.c (thanks to
 | ||
|   Onno Kreuzinger for reporting this one).
 | ||
| - Avoiding ambiguities in the cList template class in case one defines a "list of
 | ||
|   lists" (thanks to Stefan Huelswitt).
 | ||
| - Simplified the basic cMenuSetupPage class for easier use in plugins.
 | ||
| - Added setup parameters and a Setup menu to the 'hello' plugin example.
 | ||
| - Fixed logging error message for unknown config parameters in plugins.
 | ||
| - Rearranged cleanup sequence at the end of the main program.
 | ||
| - Adapted PLUGINS.html to use the actual code examples from the 'hello' plugin.
 | ||
| 
 | ||
| 2002-05-13: Version 1.1.2
 | ||
| 
 | ||
| - Changed the cPlugin::Start() function to return a boolean value that indicates
 | ||
|   if the plugin will not be able to perform its task (suggested by Stefan Huelswitt).
 | ||
| - Added the cPlugin::Housekeeping() function (suggested by Stefan Huelswitt).
 | ||
| - Updated channels.conf.cable (thanks to Uwe Scheffler).
 | ||
| - Added 'insert' capabilities to cList (suggested by Stefan Huelswitt).
 | ||
| - Changed the 'package' target in the plugin's Makefile to produce a package that
 | ||
|   expands to a directory with just the plugin name and version number (suggested
 | ||
|   by Stefan Huelswitt).
 | ||
| - Made the config directory available to plugins (suggested by Stefan Huelswitt).
 | ||
|   See PLUGINS.html, section "Configuration files" for details.
 | ||
| - Improved the [eid]syslog() macros, so that the LOG_... macros don't need to be
 | ||
|   given any more.
 | ||
| 
 | ||
| 2002-05-26: Version 1.0.3
 | ||
| 
 | ||
| - Updated 'Premiere Sport 2' in channels.conf (thanks to Rudi Hofer).
 | ||
| - Fixed some function headers to make them compile with gcc 3.x (thanks to
 | ||
|   Gregoire Favre).
 | ||
| - Fixed the cutting mechanism to make it re-sync in case a frame is larger than the
 | ||
|   buffer (thanks to Sven Grothklags).
 | ||
| - Added Swedish language texts (thanks to Tomas Prybil).
 | ||
| 
 | ||
| 2002-06-10: Version 1.0.4
 | ||
| 
 | ||
| - Added Romanian language texts (thanks to Paul Lacatus).
 | ||
| - Removed compiler option '-m486' to make it work on non-Intel platforms (thanks
 | ||
|   to Alastair McKinstry for pointing this out).
 | ||
| 
 | ||
| 2002-06-16: Version 1.1.3
 | ||
| 
 | ||
| - Improved the VDR Makefile to avoid a warning if the '.dependencies' file does
 | ||
|   not exist, and also using $(MAKE) to call recursive makes.
 | ||
| - Changed the name of the 'package' target in the plugin Makefiles to 'dist'
 | ||
|   (following the suggestions in the "GNU Make" manual). If you already have started
 | ||
|   a plugin project, you may want to change this in your Makefile accordingly.
 | ||
| - Improved the plugin Makefile to avoid a warning if the '.dependencies' file does
 | ||
|   not exist, and also using $(shell...) to get the version numbers. If you already have
 | ||
|   started a plugin project, you may want to change this in your Makefile accordingly.
 | ||
| - Fixed some function headers to make them compile with gcc 3.x (thanks to
 | ||
|   Gregoire Favre).
 | ||
| - Fixed the cutting mechanism to make it re-sync in case a frame is larger than the
 | ||
|   buffer (thanks to Sven Grothklags).
 | ||
| - Added an error message if the directory specified in the '-L' option can't be
 | ||
|   accessed (suggested by Stefan Huelswitt).
 | ||
| - Rearranged OSD class names to make 'cOsd' available for the main OSD interface.
 | ||
| - Completely moved OSD handling out of the cDvbApi class, into the new cOsd.
 | ||
| - Implemented cStatus to allow plugins to set up a status monitor.
 | ||
|   See PLUGINS.html for details.
 | ||
| - Moved the cEITScanner out of dvbapi.h/.c, into the new eitscan.h/.c.
 | ||
| - Added Swedish language texts (thanks to Tomas Prybil).
 | ||
| - Fixed parsing 'E' records in epg2html.pl (thanks to Matthias Fechner for pointing
 | ||
|   out this one).
 | ||
| - Removed compiler option '-m486' to make it work on non-Intel platforms. If you
 | ||
|   have already started a plugin project, you may want to make sure you remove this
 | ||
|   option from your existing Makefile.
 | ||
| - Completely rearranged the recording and replay functions to make them available
 | ||
|   to plugins.
 | ||
| - Replay is now done in a single thread (no more syncing between input and output
 | ||
|   thread necessary).
 | ||
| - It is now possible to record several channels on the same transponder with "budget
 | ||
|   cards". VDR automatically attaches a recording timer to a card that already
 | ||
|   records on the appropriate transponder. How many parallel recordings can actually
 | ||
|   be done depends on the computer's performance. Currently any number of recordings
 | ||
|   gets attached to a card, so you should carefully plan your timers to not exceed
 | ||
|   the limit. On a K6-II/450 it was possible to record three channels from transponder
 | ||
|   12480 with a single WinTV NOVA-S.
 | ||
| - Timers that record two successive shows on the same channel may now overlap and
 | ||
|   will use the same DVB card. During the time where both timers record the data
 | ||
|   is simply saved to both files.
 | ||
| - The following limitations apply to this version:
 | ||
|   + 'Transfer Mode' doesn't work yet.
 | ||
|   + The '-a' option (for Dolby Digital audio) doesn't work yet.
 | ||
|   + Switching between different language tracks doesn't work yet.
 | ||
|   + Cutting doesn't work yet.
 | ||
| 
 | ||
| 2002-06-23: Version 1.1.4
 | ||
| 
 | ||
| - Added Hungarian language texts (thanks to Istvan Koenigsberger and Guido Josten).
 | ||
| - Activated cutting.
 | ||
| - Activated 'Transfer Mode'.
 | ||
| - Moved handling of the Menu key entirely into vdr.c.
 | ||
| - Switched VDR's own player to the new cPlayer/cControl structures.
 | ||
| - Switched handling 'Transfer Mode' to the new cPlayer/cControl structures.
 | ||
| - The following limitations apply to this version:
 | ||
|   + The '-a' option (for Dolby Digital audio) doesn't work yet.
 | ||
|   + Switching between different language tracks doesn't work yet.
 | ||
| 
 | ||
| 2002-07-21: Version 1.1.5
 | ||
| 
 | ||
| - Added direct access to the index data of cPalette (needed for displaying SPUs,
 | ||
|   thanks to Andreas Schultz).
 | ||
| - The status monitor function cStatus::Replaying() now gets a 'cControl *' argument instead
 | ||
|   of a 'cDvbPlayerControl *' in order to allow additional players to call this function.
 | ||
|   cPlayer and cControl have been given the functions GetIndex() and GetReplayMode() to
 | ||
|   allow access to the player's status.
 | ||
| - Added cOsd::OpenRaw() to create a raw OSD (needed for displaying SPUs).
 | ||
| - Changed the semantics of the Name parameter in cStatus::Recording() and
 | ||
|   cStatus::Replaying(). It is no longer the full directory name of the recording,
 | ||
|   but rather just the basic name. This has been changed to allow players that can't
 | ||
|   provide a name to simply use a string that describes the player type (like, e.g.,
 | ||
|   "DVD").
 | ||
| - Fixed a hangup when switching to the next file during replay.
 | ||
| - Fixed a possible race condition in the cDvbPlayer (thanks to Andreas Schultz
 | ||
|   for pointing out this one).
 | ||
| - Disabled channels on Transponder 12070 in 'channels.conf', which apparently no longer transmits.
 | ||
| 
 | ||
| 2002-08-04: Version 1.1.6
 | ||
| 
 | ||
| - Re-visited the race condition fix in the cDvbPlayer (thanks again to Andreas
 | ||
|   Schultz).
 | ||
| - Changed the VFAT handling to allow users who normally use it but have forgotten
 | ||
|   to set it when compiling a new version of VDR to at least see their recordings
 | ||
|   made with VFAT enabled (thanks to Christian Rienecker).
 | ||
| - Added some missing teletext PIDs (thanks to Joerg Riechardt).
 | ||
| - Fixed PID handling for cReceiver.
 | ||
| - Added a missing #include to ringbuffer.c (thanks to Martin Hammerschmid).
 | ||
| - Now using CC, CFLAGS, CXX and CXXFLAGS in Makefile.
 | ||
| - Changed the cDevice class to allow plugins to implement their own devices (see
 | ||
|   PLUGINS.html for details).
 | ||
| 
 | ||
| 2002-08-16: Version 1.1.7
 | ||
| 
 | ||
| - Adapted VDR to the NEWSTRUCT driver. To use the new driver, compile VDR with
 | ||
|   'make NEWSTRUCT=1' (thanks to Holger W<>chtler for some valuable advice).
 | ||
|   By default it currently still uses the old driver.
 | ||
| - Added some missing #includes (thanks to Martin Hammerschmid).
 | ||
| - Changed the log error message "can't record MPEG1!" to "error in data stream!",
 | ||
|   since the mentioning of MPEG1 has irritated many people.
 | ||
| - Consistently using malloc/free and new/delete (thanks to Andreas Schultz).
 | ||
| - Temporarily made cDevice::ProvidesCa() virtual (Andreas Schultz needs this
 | ||
|   in his DXR3 plugin).
 | ||
| - cDevice no longer exposes a file handle to cPlayer. A derived cPlayer class
 | ||
|   can now call DevicePoll() to see whether the replay device is ready for
 | ||
|   further data. A derived cDevice class must implement Poll() and shall
 | ||
|   check if any of its file handles is ready for data.
 | ||
| - Implemented several replay modes to allow players that play only audio (thanks
 | ||
|   to Stefan Huelswitt).
 | ||
| - Improved cCondVar::Wait() and implemented cCondVar::TimedWait() (thanks to
 | ||
|   Stefan Huelswitt).
 | ||
| - VDR no longer gives up if there is no DVB device. It continues to work if
 | ||
|   there is at least one device, either a DVB device found by the core VDR code
 | ||
|   itself, or a device implemented by a plugin.
 | ||
| 
 | ||
| 2002-08-25: Version 1.1.8
 | ||
| 
 | ||
| - Fixed replaying the last few seconds of a recording.
 | ||
| - Added some missing #includes to files in libdtv for gcc 3.2 (thanks to J<>rgen
 | ||
|   Zimmermann).
 | ||
| - Added cDevice::NewOsd() to allow a derived cDevice class to implement its own
 | ||
|   OSD capabilities (thanks to Andreas Schultz).
 | ||
| - Added cPalette::AllColors() for plugins that need to get the color entries of
 | ||
|   a cPalette (see osdbase.h).
 | ||
| - The new SVDRP command CLRE can be used to clear the entire EPG data (suggested
 | ||
|   by Matthias Schniedermeyer).
 | ||
| - Fixed handling one-shot timers that were already recording and had their start
 | ||
|   time changed into the future (thanks to Matthias Schniedermeyer for reporting
 | ||
|   this one).
 | ||
| 
 | ||
| 2002-09-08: Version 1.1.9
 | ||
| 
 | ||
| - Fixed the 'newplugin' script to make it name the target for creating the
 | ||
|   distribution package 'dist', as stated in the PLUGINS.html documentation.
 | ||
|   If you have already created a plugin source directory and Makefile you may
 | ||
|   want to check it and replace the 'package' target with 'dist' if necessary.
 | ||
| - Changed device handling for being able to do simultaneous recording and
 | ||
|   replay on the same device (Time Shifting). In order for this to work you need
 | ||
|   to use a driver with a firmware version that has this feature implemented.
 | ||
| - cDevice::ProvidesCa() is no longer virtual. The new function
 | ||
|   cDevice::ProvidesChannel() is now used to determine whether a device can
 | ||
|   receive a given channel, and by default this function returns false. So a
 | ||
|   device that is a pure replaying device doesn't need to do anything here.
 | ||
| - Increased the recorder buffer size to 5MB in order to be able to better handle
 | ||
|   multiple recordings.
 | ||
| - Implemented cTSBuffer for better handling TS packet buffering in derived
 | ||
|   cDevice classes.
 | ||
| - Changed the interface if cDevice::GetTSPacket() to avoid unnecessary copying
 | ||
|   of data.
 | ||
| - Removed cDevice::Channel(), since this makes no more sense with devices
 | ||
|   receiving multiple channels.
 | ||
| - Switching through channels with the 'Up' and 'Down' keys now skips channels
 | ||
|   that are currently not available (for instance because all devices are
 | ||
|   recording and these channels are on different transponders).
 | ||
| - Implemented an SPU decoder (thanks to Andreas Schultz).
 | ||
| - Fixed a crash when entering an integer value outside the limits (thanks to
 | ||
|   Stefan Huelswitt for reporting this one).
 | ||
| - Added play mode pmAudioOnlyBlack (thanks to Stefan Huelswitt).
 | ||
| 
 | ||
| 2002-09-15: Version 1.1.10
 | ||
| 
 | ||
| - Removed a superfluous error message from cLockFile::Unlock() (reported by
 | ||
|   Helmut Auer).
 | ||
| - Fixed starting a recording of the current channel with only one DVB card
 | ||
|   (thanks to Stefan Huelswitt for his help).
 | ||
| - A previous 'Transfer Mode' is now automatically re-started after a replay
 | ||
|   stops.
 | ||
| - Only calling cStatus::MsgChannelSwitch() if a channel is actually going to
 | ||
|   be switched or has actually been switched successfully (thanks to Stefan
 | ||
|   Huelswitt).
 | ||
| - The EPG now drops events from "other" streams that have a duration of 86400
 | ||
|   seconds or more (this avoids bogus entries like "PROGRAMMES ALLEMANDS").
 | ||
| - Fixed opening /dev/video in cDvbDevice::GrabImage() in case of NEWSTRUCT
 | ||
|   driver (thanks to Andreas Schultz).
 | ||
| - Added a missing StripAudioPackets() to cDvbPlayer::Action() (thanks to
 | ||
|   Stefan Huelswitt).
 | ||
| - Added an EPG bugfix for the latest VOX EPG data format.
 | ||
| 
 | ||
| 2002-09-29: Version 1.1.11
 | ||
| 
 | ||
| - Fixed an incomplete initialization of the filter parameters in eit.c (thanks
 | ||
|   to Jeremy Hall).
 | ||
| - Fixed the 'newplugin' script for use with the NEWSTRUCT driver (thanks to
 | ||
|   Andreas Schultz for reporting this one). If you have already created a plugin
 | ||
|   directory and Makefile with 'newplugin', please apply the following patch to it:
 | ||
| 
 | ||
|   -------------------------------------------------------
 | ||
|   --- Makefile    2002/06/10 16:24:06     1.4
 | ||
|   +++ Makefile    2002/09/17 15:36:36     1.5
 | ||
|   @@ -15,7 +15,12 @@
 | ||
| 
 | ||
|    ### The directory environment:
 | ||
| 
 | ||
|   +ifdef NEWSTRUCT
 | ||
|   +DVBDIR = ../../../../DVB/include
 | ||
|   +DEFINES += -DNEWSTRUCT
 | ||
|   +else
 | ||
|    DVBDIR = ../../../../DVB/ost/include
 | ||
|   +endif
 | ||
|    VDRDIR = ../../..
 | ||
|    VDRINC = $(VDRDIR)/include
 | ||
|    LIBDIR = ../../lib
 | ||
|   @@ -34,7 +39,7 @@
 | ||
| 
 | ||
|    INCLUDES = -I$(VDRINC) -I$(DVBDIR)
 | ||
| 
 | ||
|   -DEFINES = -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
 | ||
|   +DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
 | ||
| 
 | ||
|    ### The object files (add further files here):
 | ||
|   -------------------------------------------------------
 | ||
| 
 | ||
|   This is the diff for the 'setup' example that comes with VDR, so your line
 | ||
|   numbers may be different.
 | ||
| - Added a missing 'public' keyword in device.h (thanks to Martin Hammerschmid).
 | ||
| - Fixed a race condition when starting 'Transfer Mode'.
 | ||
| - Rearranged the remote control key handling to allow plugins to implement
 | ||
|   additional types of remote controls (see PLUGINS.html, section "Remote Control").
 | ||
|   The previously used files 'keys.conf' and 'keys-pc.conf' have been replaced
 | ||
|   by the file 'remote.conf', which holds the key definitions of all remote controls.
 | ||
| - The LIRC remote control keys are now handled just like the keyboard and RCU keys.
 | ||
|   This means that you can use the lircd.conf file as is for your remote control,
 | ||
|   without the need of editing it to make the key names the same as used in VDR.
 | ||
|   When first starting VDR it will go into the "Learning keys" mode and ask you
 | ||
|   to press the various keys. The resulting key assignment will be stored in
 | ||
|   the file 'remote.conf'.
 | ||
|   Since I have no way of testing the LIRC support, I hope I didn't break it in
 | ||
|   the process...
 | ||
| - While learning the remote control keys it is now possible to press the 'Menu'
 | ||
|   key to skip the definition of keys that are not available on your particular
 | ||
|   RC unit.
 | ||
| - Fixed handling DVD subtitles in the SPU decoder (thanks to Andreas Schultz).
 | ||
| - Avoiding restarts due to 'panic level' when switching channels on the primary
 | ||
|   device during EPG scan.
 | ||
| 
 | ||
| 2002-10-06: Version 1.1.12
 | ||
| 
 | ||
| - Fixed a missing Flush() call in the remote control learning procedure (thanks
 | ||
|   to Oliver Endriss).
 | ||
| - Modified channel handling to cover all parameters necessary for DVB-C and DVB-T
 | ||
|   (see man vdr(5) for the meaning of the additional parameters stored in the field
 | ||
|   previously named 'polarisation'). Thanks to Uwe Scheffler and Andy Carter for testing.
 | ||
|   If you have a system with different kinds of DVB cards, like DVB-T and DVB-C,
 | ||
|   for instance, there is no more need to distinguish the channels through the
 | ||
|   'Ca' parameter in order to assign them to the various DVB cards. This is now
 | ||
|   taken care of by the "source" parameter. So a channel marked as "terrestrial",
 | ||
|   for example, will only be received on DVB-T cards.
 | ||
|   Note that the cChannel class has been moved into a separate file (channels.[ch]),
 | ||
|   and that all data members have been made private and are now only accessible
 | ||
|   through member functions. You may have to change any plugin code that accesses
 | ||
|   cChannel data accordingly.
 | ||
| - The new configuration file 'sources.conf' contains the various signal sources
 | ||
|   (satellites, cable and terrestrial) which are used in 'channels.conf' and
 | ||
|   'diseqc.conf' (thanks to Reinhard Walter Buchner for adding some satellites to
 | ||
|   'sources.conf' and Oliver Endriss and Lauri Tischler for testing and debugging).
 | ||
| - The 'diseqc' parameter in the channel definitions has been redefined to hold the
 | ||
|   "source" of the given channel (which can be either a satellite, cable or terrestrial).
 | ||
|   For compatibility with channels.conf files from older versions, numeric values in
 | ||
|   this parameter will be tolerated, but they have no meaning. If you want to use
 | ||
|   DiSEqC you will need to replace these old values with the proper source identifiers
 | ||
|   defined in the new configuration file 'sources.conf'. See how this is done in the
 | ||
|   'channels.conf' file that comes with the VDR package.
 | ||
| - The new configuration file 'diseqc.conf' can be used to set up the individual
 | ||
|   diseqc configuration (see man vdr(5) for a description of the file format).
 | ||
| - The "Edit channel" menu has a new entry "Source:" in which the source of this
 | ||
|   channel can be selected (either a satellite, cable or terrestrial). The set of
 | ||
|   parameters at the end of this menu will change according to the type of source.
 | ||
| - The "Use DiSEqC" parameter in the "Setup/LNB" menu has been moved to the beginning
 | ||
|   of the list and disables the rest of the parameters when set to "yes", since these
 | ||
|   are now only meaningful if DiSEqC is _not_ used.
 | ||
| - Removed some unnecessary #includes from eit.c and changed cMenuRecordings::Del()
 | ||
|   to cMenuRecordings::Delete() to avoid warnings in gcc-3.2 (thanks to Andreas
 | ||
|   Schultz for pointing this out).
 | ||
| - Improved skipping channels that are (currently) not available (thanks to Stefan
 | ||
|   Huelswitt).
 | ||
| - Updated channels.conf.terr and channels.conf.cable (thanks to Uwe Scheffler).
 | ||
| - Fixed a bug when pressing the "Blue" button in the main menu without having
 | ||
|   displayed it (thanks to Oliver Endriss for reporting this one).
 | ||
| 
 | ||
| 2002-10-13: Version 1.1.13
 | ||
| 
 | ||
| - Added cDevice::DeviceNumber() to get the number of a device, not counting any
 | ||
|   gaps that might be in the index count.
 | ||
| - Fixed fetching the current/next information to handle cases where the duration
 | ||
|   of an event is set wrongly and would last beyond the start time of the next
 | ||
|   event.
 | ||
| - Adapted type names to the new HEAD version of the driver (which the previous
 | ||
|   NEWSTRUCT branch has been merged into). Note that to use this driver version
 | ||
|   you still need to add NEWSTRUCT=1 to the make call when building VDR. You
 | ||
|   need a HEAD version of the LinuxDVB driver dated 2002-10-11 or later to compile
 | ||
|   VDR with NEWSTRUCT=1.
 | ||
| - Fixed radio channels in channels.conf.cable (thanks to Robert Schiele and Uwe
 | ||
|   Scheffler).
 | ||
| - Fixed switching the video format in the Setup/DVB menu (thanks to Uwe Scheffler
 | ||
|   for reporting this one).
 | ||
| - Reactivated full handling of second audio PID (even in 'Transfer Mode').
 | ||
| - Fixed a crash when closing down with remote control plugins (thanks to Oliver
 | ||
|   Endriss helping to debug this one).
 | ||
| - Commands in the file 'commands.conf' can now have a '?' at the end of their
 | ||
|   title, which will result in a confirmation prompt before executing the
 | ||
|   command.
 | ||
| - Changed a few leftover 'new char[...]' to MALLOC(char, ...).
 | ||
| - If a command executed from the "Commands" menu doesn't return any output, the
 | ||
|   OSD will now be closed automatically.
 | ||
| - The SVDRP command PUTE now triggers an immediate write of the 'epg.data' file
 | ||
|   (suggested by Gerhard Steiner).
 | ||
| - The new configuration file 'reccmds.conf' can be used to define commands that
 | ||
|   shall be executed from the "Recordings" menu; see MANUAL and 'man vdr(5)' for
 | ||
|   details (suggested by Gerhard Steiner).
 | ||
| 
 | ||
| 2002-10-27: Version 1.1.14
 | ||
| 
 | ||
| - Fixed some faulty default parameter initializations (thanks to Robert Schiele).
 | ||
| - Added further satellites to 'sources.conf' (thanks to Reinhard Walter Buchner
 | ||
|   and Oliver Endriss).
 | ||
| - Updated Finnish OSD texts (thanks to Jaakko Hyv<79>tti).
 | ||
| - Fixed a small glitch when switching channels (thanks to Dennis Noordsij for
 | ||
|   reporting this one).
 | ||
| - Fixed handling multiple 'CaCaps' entries in 'setup.conf'.
 | ||
| - Group separators in 'channels.conf' may now be given like ':@201 My Channels',
 | ||
|   where '@201' indicates the number to be given to the next channel. This can be
 | ||
|   used to create 'gaps' in the channel numbering (see 'man 5 vdr'). BE CAREFUL
 | ||
|   TO UPDATE YOUR 'timers.conf' ACCORDINGLY IF INSERTING THIS NEW FEATURE INTO YOUR
 | ||
|   'channels.conf' FILE!
 | ||
| - Timers now internally have a pointer to their channel (this is necessary to
 | ||
|   handle gaps in channel numbers, and in preparation for unique channel ids).
 | ||
| - Fixed slow reaction on SVDRP input (thanks to Guido Fiala for reporting this one).
 | ||
| - Added KI.KA to channels.conf.cable (thanks to Robert Schiele).
 | ||
| - Frequency values for cable and terrestrial channels in 'channels.conf' can
 | ||
|   now be given either in MHz, kHz or Hz. The actual value given will be multiplied
 | ||
|   by 1000 until it is larger than 1000000.
 | ||
| - Fixed skipping unavailable channels when zapping downwards.
 | ||
| - Fixed checking the Ca() status of a cDevice (thanks to Stefan Huelswitt).
 | ||
| - Fixed switching audio tracks in 'Transfer Mode' on the primary DVB device
 | ||
|   (thanks to Steffen Barszus and Stefan Huelswitt for reporting this one and
 | ||
|   helping to fix it).
 | ||
| - Fixed channel switching in case of an active 'Transfer Mode' on the primary
 | ||
|   device ('Transfer Mode' is now launched with priority '-1').
 | ||
| - Fixed a ternary expression in dvbspu.c.
 | ||
| - Fixed handling 'Transfer Mode' on single device systems when recording an
 | ||
|   encrypted channel (thanks to Stefan Huelswitt).
 | ||
| - Fixed blocking replaying in case an encrypted channel is being recorded on
 | ||
|   the primary device.
 | ||
| - Now the name of the remote control is displayed when learning the keys.
 | ||
| - Fixed learning remote control keys in case there is more than one remote
 | ||
|   control (thanks to Oliver Endriss for reporting this one).
 | ||
| - Implemented additional dedicated keys for "Play", "Pause", "Stop", "Record",
 | ||
|   "FastFwd", "FastRew", "Channel+" and "Channel-". If your remote control supports
 | ||
|   any of these keys you can delete your 'remote.conf' file and restart VDR to
 | ||
|   go through the key learning procedure again in order to assign these new keys.
 | ||
|   See MANUAL for more information.
 | ||
|   Authors of player plugins should update their ProcessKey() functions so that
 | ||
|   the new player keys have the same functionality as the "Up", "Down", "Left",
 | ||
|   "Right" and "Blue" keys, respectively. Note that the existing functionality
 | ||
|   of these keys should by all means be retained, since VDR (and any plugins)
 | ||
|   shall be fully usable with just the basic set of keys. These new keys are only
 | ||
|   for additional comfort in case the remote control in use supports them.
 | ||
| - Implemented new keys to directly access the VDR main menu functions "Schedule",
 | ||
|   "Channels", "Timers", "Recordings", "Setup" and "Commands". If your remote
 | ||
|   control provides keys you want to assign these functions to, you can delete
 | ||
|   your 'remote.conf' file and restart VDR to  go through the key learning procedure
 | ||
|   again in order to assign these new keys. See MANUAL for more information.
 | ||
| - The new configuration file 'keymacros.conf' can be used to assign macros to
 | ||
|   the color buttons in normal viewing mode, as well as to up to 9 user defined
 | ||
|   keys. See MANUAL and man vdr(5) for more information. The default 'keymacros.conf'
 | ||
|   implements the functionality of the "color button patch".
 | ||
| - Fixed a crash when learning the keys of several remote controls and pressing
 | ||
|   buttons of those that have already been learned (thanks to Oliver Endriss for
 | ||
|   reporting this one).
 | ||
| 
 | ||
| 2002-11-03: Version 1.1.15
 | ||
| 
 | ||
| - Completely switched to the new CVS HEAD version of the linux-dvb driver.
 | ||
|   The NEWSTRUCT compile time switch is now obsolete. The required driver is now
 | ||
|   the CVS HEAD version dated 2002-11-01 or later.
 | ||
| - Adjusted the INSTALL file to the 1.1.x version.
 | ||
| - Only accepting key presses from the current remote control when learning (thanks to
 | ||
|   Oliver Endriss).
 | ||
| - Fixed the EPG scanner, which broke 'Transfer Mode' as soon as it kicked in
 | ||
|   (thanks to Oliver Endriss for reporting this one).
 | ||
| - Fixed handling audio tracks in cDvbDevice.
 | ||
| - Updated channels.conf.terr (thanks to Uwe Scheffler).
 | ||
| - Fixed displaying the group separators in the channel display (thanks to Martin
 | ||
|   Hammerschmid for pointing out this one).
 | ||
| - The Makefile now includes the file Make.config (if present in the VDR source
 | ||
|   directory), which allows the user to overwrite several settings with individual
 | ||
|   values (suggested by Andreas Schultz). The VDR distribution archive does not
 | ||
|   contain this file in order to not overwrite a user defined file. There is a
 | ||
|   Make.config.template which contains the default values of the macros the user
 | ||
|   can overwrite.
 | ||
| - Since there have been changes to the 'newplugin' script authors of plugins
 | ||
|   may want to newly create their plugins' Makefiles with the new version of this
 | ||
|   script, and adapt them to their individual needs (make sure you don't overwrite
 | ||
|   your existing plugin directory - make a backup copy first!).
 | ||
| - Fixed reading EPG data via the SVDRP command PUTE (it changed the current
 | ||
|   service ID).
 | ||
| - Fixed closing all dup'ed file descriptors in cPipe.
 | ||
| - Implemented a plugin interface for additional audio processing (see PLUGINS.html
 | ||
|   under "Dolby Digital").
 | ||
|   The functionality of the '-a' command line option has been reactivated.
 | ||
|   Since the author doesn't have any Dolby Digital equipment this may or may not
 | ||
|   work as expected. There may still be some places where a call to cAudios::Clear()
 | ||
|   or cAudios::Mute() is necessary. Those with Dolby Digital equipment should please
 | ||
|   take a look at this and maybe send patches.
 | ||
|   Replaying Dolby Digital in ways other than through VDR's '-a' option will have to
 | ||
|   be implemented as plugins. Those who have written patches for VDR version 1.0.x
 | ||
|   should convert their work into the proper plugins for version 1.1.x.
 | ||
|   Note to authors of cPlayer derived plugins: please read the modified comments
 | ||
|   in device.h regarding the member functions cDevice::Clear(), cDevice::Mute() and
 | ||
|   cDevice::PlayAudio(). Derived classes must call these base class member functions
 | ||
|   to make sure all registered cAudio objects are properly handled. Also note that
 | ||
|   the return type of cDevice::PlayAudio() has been changed to 'void', since this
 | ||
|   function always has to accept the entire data block immediately and there is
 | ||
|   nothing that could be reasonably done in case an error occurs in one of the
 | ||
|   cAudio objects.
 | ||
| - Now checking the driver's DVB_API_VERSION in dvbdevice.h. Since VDR now requires
 | ||
|   a driver dated 2002-11-01 or later the MIN_DVB_DRIVER_VERSION_FOR_TIMESHIFT and
 | ||
|   DVB_DRIVER_VERSION stuff has been replaced with DO_REC_AND_PLAY_ON_PRIMARY_DEVICE,
 | ||
|   which can be used to disable simultaneous recording and replaying on the primary
 | ||
|   DVB device in case there are problems with this.
 | ||
| 
 | ||
| 2002-11-10: Version 1.1.16
 | ||
| 
 | ||
| - Fixed saving the polarization parameter of channels that have a number in the
 | ||
|   'source' parameter (thanks to Peter Seyringer for reporting this one).
 | ||
| - Updated 'channels.conf.terr' (thanks to Andy Carter).
 | ||
| - Updated 'channels.conf.cable' (thanks to Achim Lange).
 | ||
| - First step towards a "unique channel ID". The channel ID is a human readable
 | ||
|   string, made up from several parameters of the channel's definition in the file
 | ||
|   'channels.conf' (see man vdr(5) for details).
 | ||
|   In order for the "unique channel ID" to work, all channel definitions now must
 | ||
|   be unique with respect to the combination of their Source, Frequency and SID
 | ||
|   parameters. You may have to fix your 'channels.conf' manually if there are error
 | ||
|   messages in the log file when loading it. BE SURE TO MAKE A BACKUP COPY OF YOUR
 | ||
|   'channels.conf' AND 'timers.conf' FILE BEFORE SWITCHING TO THIS VERSION, AND CHECK
 | ||
|   VERY CAREFULLY WHETHER YOUR TIMERS ARE STILL SET TO THE RIGHT CHANNELS!
 | ||
|   When reading an existing 'timers.conf', the channels will be identified as before
 | ||
|   by their numbers. As soon as this file is written back, the channel numbers will
 | ||
|   be replaced by the channel IDs. After that it is possible to manually edit the
 | ||
|   'channels.conf' file and rearrange the channels without breaking the timers.
 | ||
|   Note that you can still define new timers manually by using the channel number.
 | ||
|   VDR will correctly identify the 'channel' parameter in a timer definition and
 | ||
|   use it as a channel number or a channel ID, respectively. Also, the SVDRP commands
 | ||
|   that return timer definitions will list them with channel numbers in order to
 | ||
|   stay compatible with existing applications.
 | ||
|   The channel ID is also used in the 'epg.data' file to allow EPG information from
 | ||
|   different sources to be stored, which would previously have been mixed up in case
 | ||
|   they were using the same 'service ID'. Note that the contents of an existing
 | ||
|   'epg.data' file from a previous version will be silently ignored, since it doesn't
 | ||
|   contain the new channel IDs. When inserting EPG data into VDR via SVDRP you now also
 | ||
|   need to use the channel IDs.
 | ||
|   Currently the EPG data received from the DVB data stream only uses the 'Source'
 | ||
|   and 'Service ID' part of the channel ID. This makes it work for channels with
 | ||
|   the same service IDs on different sources (like satellites, cable or terrestrial).
 | ||
|   However, it doesn't work yet if the service IDs are not unique within a specific
 | ||
|   source. This will be fixed later.
 | ||
| - Added missing SID parameters to 'channels.conf'. Some channels have been removed
 | ||
|   since they are apparently no longer broadcasted.
 | ||
| - Removed dropping EPG events from "other" streams that have a duration of 86400
 | ||
|   seconds or more (was introduced in version 1.1.10). This has become obsolete by
 | ||
|   the modification in version 1.1.13, which fixed fetching the current/next information
 | ||
|   to handle cases where the duration of an event is set wrongly and would last beyond
 | ||
|   the start time of the next event. Besides, the change in 1.1.10 broke handling EPG
 | ||
|   data for NVOD channels.
 | ||
| - Fixed a compiler warning regarding cMenuChannels::Del() and MenuTimers::Del() hiding
 | ||
|   the base class virtual functions.
 | ||
| 
 | ||
| 2002-11-24: Version 1.1.17
 | ||
| 
 | ||
| - Added new entries to 'ca.conf'.
 | ||
| - Fixed closing unused PID handles (thanks to Stefan Schluenss for reporting this
 | ||
|   one).
 | ||
| - Added more examples to 'diseqc.conf' (thanks to Oliver Endriss).
 | ||
| - Fixed disabling multiple recordings on a single DVB card (comment out the definition
 | ||
|   of the macros DO_REC_AND_PLAY_ON_PRIMARY_DEVICE and DO_MULTIPLE_RECORDINGS in
 | ||
|   dvbdevice.c).
 | ||
| - Plugins can now have their very own OSD setup in the object they return from
 | ||
|   a call to cPlugin::MainMenuAction(). In order to implement this, the return type
 | ||
|   of cPlugin::MainMenuAction() had to be changed from (cOsdMenu *) to (cOsdObject *).
 | ||
|   So in case you are compiling an existing plugin with this version of VDR and you
 | ||
|   get an error message, simply change cOsdMenu to cOsdObject in the plugin's source
 | ||
|   for the MainMenuAction() function.
 | ||
|   Plugin authors who have so far (ab)used the cControl mechanism to implement their
 | ||
|   own raw OSD should take a look at the new demo plugin 'osddemo'. It implements
 | ||
|   a very primitive game that shows how a plugin can have its own raw OSD. Especially
 | ||
|   look into cLineGame and see how it implements the Show() function. See also
 | ||
|   the chapter on "User interaction" in PLUGINS.html.
 | ||
| - Added three new fields to the lines in 'channels.conf': NID, TID and RID. NID and
 | ||
|   TID are the Network and Transport Stream IDs, respectively. RID is an additional ID
 | ||
|   that can be used to tell apart channels that would otherwise be indistinguishable.
 | ||
|   This is typically the case with radio channels, which may have the same NID, TID
 | ||
|   and SID, but different "radio IDs". This new field is therefore called RID ("radio
 | ||
|   ID"). Currently NID and TID are not yet used by VDR and should always be 0. The
 | ||
|   RID is actually used when building the "unique channel ID", so if you have channels
 | ||
|   in your 'channels.conf' file that cause error messages when loading, you can set
 | ||
|   the RIDs of these channels to different values.
 | ||
|   When reading an old 'channels.conf' these new fields will be automatically
 | ||
|   initialized to 0 and once the file is written back to disk they will be appended
 | ||
|   to the channel definitions.
 | ||
|   Thanks to R<>gis Bossut for pointing out that with some providers the channels can
 | ||
|   only be distinguished through the RID.
 | ||
| - The "unique channel ID" now contains an optional 5th part (the RID). See man vdr(5).
 | ||
| - Updated 'channels.conf.cable' and made some channels unique using the new RID
 | ||
|   (thanks to Andreas Kool for pointing out the problems).
 | ||
| - Made some channels unique in 'channels.conf.terr' using the new RID.
 | ||
| - Extended the '-l' option to allow logging to LOG_LOCALn (n=0..7) by writing, for
 | ||
|   instance, '-l 3.7' (suggested by J<>rgen Schmidt).
 | ||
| - Now deleting stale lock files if they have a time stamp that is outside the window
 | ||
|   'now +/- LOCKFILESTALETIME'. This improves things in cases where the system time
 | ||
|   makes far jumps, so that a lock file might end up with a time stamp that lies
 | ||
|   in the distant future (thanks to Oliver Endriss).
 | ||
| 
 | ||
| 2002-12-01: Version 1.1.18
 | ||
| 
 | ||
| - Fixed missing initialization of 'number' in cChannel (thanks to Martin Hammerschmid
 | ||
|   for reporting this one).
 | ||
| - Fixed a misplaced ')' in the fix about the stale lock files (thanks again to
 | ||
|   Oliver Endriss for pointing this out - it was my fault).
 | ||
| - Group delimiters in the 'channels.conf' file that have no text (like a simple ":"
 | ||
|   or ":@201") no longer show up in the Channels menu (suggested by Guy Roussin).
 | ||
| - Added "Tele 5" to 'channels.conf' (thanks to Georg Hitsch).
 | ||
| - Changed the source directory name for plugins from 'SRC' to 'src' (suggested by
 | ||
|   Clemens Kirchgatterer).
 | ||
| - Removed transponders 10788, 11739 and 12266 from 'channels.conf' (apparently they
 | ||
|   are no longer active).
 | ||
| - Deactivated some templates in tools.h in case some plugin needs to use the STL
 | ||
|   (suggested by Gerald Berwolf).
 | ||
| - Timers now accept channel IDs even if the 'source' is 0 (thanks to Stefan Huelswitt
 | ||
|   for reporting this one).
 | ||
| - Now taking an active SVDRP connection into account when doing shutdown or
 | ||
|   housekeeping (suggested by Emil Naepflein).
 | ||
| - Macros in 'keymacros.conf' can now use "@plugin" to directly access the main menu
 | ||
|   function of a given plugin (see man vdr(5) for details).
 | ||
| - The new plugin 'sky' can be used to integrate a Sky Digibox into the VDR system,
 | ||
|   using a Kfir MPEG2 encoder card (see PLUGINS/src/sky/README for details).
 | ||
| 
 | ||
| 2002-12-08: Version 1.1.19
 | ||
| 
 | ||
| - The character '|' in description texts of EPG records is now interpreted as a
 | ||
|   newline character (suggested by Gerhard Steiner).
 | ||
| - Updated 'channels.conf.cable' (thanks to Andreas Kool).
 | ||
| - Improved handling of repeated remote keys.
 | ||
| - The RCU now only sets the channel number display when there are no incoming remote
 | ||
|   control keys, which improves reaction on repeated keys.
 | ||
| - The actual tuning is now done in a separate thread, which makes zapping through the
 | ||
|   channels a lot faster and no longer gets stuck on channels that don't broadcast.
 | ||
|   This also makes "Motor-DiSEqC" work (thanks to Reinhard Walter Buchner for his help
 | ||
|   in testing this). Since switching channels now no longer explicitly waits for a
 | ||
|   channel lock in the foreground thread, the "panic level" mechanism is no longer
 | ||
|   used (maybe we don't need it any more, anyway).
 | ||
| - The keyboard is now by default always active to control VDR. The 'make' option
 | ||
|   REMOTE=KBD is therefore obsolete. When compiling VDR with REMOTE=RCU or REMOTE=LIRC,
 | ||
|   the keyboard can thus now be active together with the remote control. If you want
 | ||
|   to build VDR _without_ keyboard support you can set NO_KBD=1 in the 'make' call.
 | ||
|   Since the keyboard codes are now different from the ones used previously (which
 | ||
|   were mapped by the 'ncurses' library) you will need to go through the "Learning
 | ||
|   keys" procedure again. To do so, either delete the file /video/remote.conf or
 | ||
|   remove the KBD.* entries from it before starting this version of VDR.
 | ||
|   (Thanks to Thomas Sailer for pointing out how to set the terminal parameters to
 | ||
|   read from the keyboard).
 | ||
| - The 'ncurses' library is now only necessary when compiling VDR with DEBUG_OSD=1.
 | ||
| 
 | ||
| 2002-12-15: Version 1.1.20
 | ||
| 
 | ||
| - Now checking if there is a connection to the keyboard (thanks to Jaakko Hyv<79>tti)
 | ||
|   and only creating the KBD remote control if VDR is running in the foreground.
 | ||
| - Fixed taking an active SVDRP connection into account when doing shutdown (thanks
 | ||
|   to Gregoire Favre for reporting this one).
 | ||
| - Changed setting of CXX and CXXFLAGS variables in Makefile, so that an externally
 | ||
|   defined value will be taken if present (suggested by Robert Schiele).
 | ||
|   Plugin authors should please change the lines
 | ||
| 
 | ||
|   CXX      = g++
 | ||
|   CXXFLAGS = -O2 -Wall -Woverloaded-virtual
 | ||
| 
 | ||
|   in their Makefile to
 | ||
| 
 | ||
|   CXX      ?= g++
 | ||
|   CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual
 | ||
| 
 | ||
| - Fixed recording overlapping timers on the same channel in case
 | ||
|   DO_REC_AND_PLAY_ON_PRIMARY_DEVICE and/or DO_MULTIPLE_RECORDINGS is not defined
 | ||
|   (thanks to Jaakko Hyv<79>tti).
 | ||
| - No longer stopping/restarting the DMX when switching audio channels (thanks to
 | ||
|   Sven Goethel).
 | ||
| - Fixed high CPU load in 'Transfer Mode' (thanks to Oliver Endriss).
 | ||
| - If a PC keyboard is used as remote control, the string entry fields in the
 | ||
|   menus now accept character input directly (however, this works only for keys that
 | ||
|   are not otherwise defined as remote control keys). Also, plugins can switch the
 | ||
|   cKbdRemote class into "raw mode", where all keyboard input will be made available
 | ||
|   through the new 'kKbd' key code and none of it will be processed as normal remote
 | ||
|   control functions (thanks to Jan Rieger for suggestions and testing).
 | ||
| - Fixed deleting characters in string entry fields in 'insert' mode.
 | ||
| - Now using "Doxygen" to generate source documentation (thanks to Walter Stroebel
 | ||
|   for providing an initial 'Doxyfile' configuration and adjusting some comments).
 | ||
|   See INSTALL for information how to do this. Some function descriptions have
 | ||
|   already been adapted to Doxygen, more will follow.
 | ||
| 
 | ||
| 2003-01-10: Version 1.1.21
 | ||
| 
 | ||
| - Fixed the 'channels.conf' entries for "Studio Universal" and "Disney Channel".
 | ||
| - Fixed handling channels in the "Channels" menu in case there are ':@nnn' group
 | ||
|   separators without names (thanks to Guy Roussin for reporting this one).
 | ||
| - The SVDRP command CHAN now also accepts channel IDs.
 | ||
| - Increased the timeout until an index file is considered no longer to be written
 | ||
|   (sometimes in time shift with heavy system load the index file was closed too
 | ||
|   early by the replay thread).
 | ||
| - Implemented "Link Layer" based CAM support, which hopefully will solve the
 | ||
|   problems with CAMs we had in the past. To use this you need the driver version
 | ||
|   2002-01-08 or higher (with the new firmware supporting the "Link Layer" protocol).
 | ||
| - Added an EPG bugfix that moves the Subtitle data to the Extended Description in
 | ||
|   case the latter is empty and the Subtitle exceeds some useful length.
 | ||
| - Since several channels put very long strings into the Subtitle part of their
 | ||
|   EPG data, that string is now limited in length when used in a recording's
 | ||
|   file name.
 | ||
| 
 | ||
| 2003-01-26: Version 1.1.22
 | ||
| 
 | ||
| - Added 'Hrvatska radiotelevizija' and 'RTV Slovenija' to ca.conf (thanks to
 | ||
|   Paul Gohn).
 | ||
| - Implemented actual user input for CAM enquiry menus.
 | ||
| - Since disk file systems apparently don't honor the O_NONBLOCK flag to read from
 | ||
|   a file in non-blocking mode the cDvbPlayer now uses a non blocking file reader
 | ||
|   class to make sure replay remains smooth even under heavy system load.
 | ||
| - Increased the maximum possible packet size in remux.c to avoid corrupted streams
 | ||
|   with broadcasters that send extremely large PES packets (thanks to Teemu Rantanen).
 | ||
| - Added TS error checking to remux.c (thanks to Teemu Rantanen).
 | ||
| - Modified cRingBufferLinear to avoid excessive memmove() calls in 'Transfer Mode'
 | ||
|   and during recordings, which dramatically reduces CPU load. Thanks to Teemu
 | ||
|   Rantanen for pinpointing the problem with the excessive memmove() calls.
 | ||
| - Updated 'channels.conf' (thanks to Achim Lange).
 | ||
| - Added/improved Swedish language texts (thanks to Jan Ekholm).
 | ||
| - Fixed the description of the "Scroll pages" OSD setup parameter ('yes' and 'no'
 | ||
|   were mixed up).
 | ||
| - Fixed handling the LOG_LOCALn parameters in the -l option (thanks to Dimitrios
 | ||
|   Dimitrakos).
 | ||
| - Changed EIT processing to always read a full section.
 | ||
| - Fixed handling user defined CFLAGS in libdtv/libvdr/Makefile (thanks to Clemens
 | ||
|   Kirchgatterer and Robert Schiele).
 | ||
| - Fixed skipping unavailable channels in the EPG scanner.
 | ||
| 
 | ||
| 2003-02-02: Version 1.1.23
 | ||
| 
 | ||
| - Fixed a new/delete malloc/free mismatch in ringbuffer.c (thanks to Stefan
 | ||
|   Huelswitt for reporting this one).
 | ||
| - Improved CAM handling.
 | ||
| 
 | ||
| 2003-02-09: Version 1.1.24
 | ||
| 
 | ||
| - Improved CAM handling (thanks to Reinhard Walter Buchner for a great deal of help
 | ||
|   in debugging this). It is now possible to insert the CAM in any of the two slots,
 | ||
|   to insert and remove it while VDR is running and even to have two CAMs inserted.
 | ||
| - Turning SI filtering off and on when switching channels.
 | ||
| - Timers are now processed even if an OSD menu is open (except for menus that
 | ||
|   explicitly handle timers).
 | ||
| 
 | ||
| 2003-02-16: Version 1.1.25
 | ||
| 
 | ||
| - Fixed high CPU load during replay (thanks to Marcel Wiesweg for pointing out this
 | ||
|   one).
 | ||
| - Fixed margin handling in cRingBufferLinear.
 | ||
| - Now polling the output device in 'Transfer Mode' and retrying to put packets
 | ||
|   into the ring buffer.
 | ||
| - Resetting the CAM slot in case communication breaks down.
 | ||
| - Improved keyboard detection (thanks to Werner Fink).
 | ||
| - Updated 'channels.conf.terr' (thanks to Andy Carter).
 | ||
| - Fixed broken support for raw OSDs of plugins (thanks to Marcel Wiesweg for
 | ||
|   reporting this one).
 | ||
| - Broken CAM connections are now restored automatically.
 | ||
| 
 | ||
| 2003-03-19: Version 1.1.26
 | ||
| 
 | ||
| - Removed signal handling and usleep(5000) from cDvbOsd::Cmd() (apparently this
 | ||
|   is no longer necessary with DVB driver 1.0.0pre2 or later).
 | ||
| - If the primary device (as defined in setup.conf) doesn't have an MPEG decoder
 | ||
|   (and thus can't be used as a primary device) VDR now scans all devices at
 | ||
|   startup and uses the first one (if any) that actually has an MPEG decoder.
 | ||
|   That way this will also work automatically if the primary device is implemented
 | ||
|   by a plugin.
 | ||
| - Fixed a possible deadlock when using the "Blue" button in the "Schedules" menu
 | ||
|   to switch to an other channel (thanks to Torsten Herz).
 | ||
| - Fixed the EPG bugfix code number for the MAX_USEFUL_SUBTITLE_LENGTH fix (thanks to
 | ||
|   Torsten Herz for reporting this one).
 | ||
| - Modified the EPG scanner to avoid CPU load peaks (thanks to Steffen Becker for
 | ||
|   reporting this one).
 | ||
| - Fixed support for Viaccess CAMs (thanks to Axel Gruber for helping to debug this).
 | ||
| 
 | ||
| 2003-04-13: Version 1.1.27
 | ||
| 
 | ||
| - The CAM is now accessed only if the current channel actually has a non-zero Ca
 | ||
|   value, and CAM access is completely suppressed during replay, which avoids
 | ||
|   problems in case the CAM is attached to the primary DVB device.
 | ||
| - The "Left" and "Right" buttons now set the cursor to the first or last list item
 | ||
|   even if the list consist only of a single page, like, for instance, the Main menu
 | ||
|   (thanks to Oliver Endriss).
 | ||
| - Made the log message "OSD window width must be a multiple of 4..." a debug message
 | ||
|   instead of an error message, so it can be avoided by using a log level less than 3.
 | ||
| - Updated Greek language texts (thanks to Dimitrios Dimitrakos).
 | ||
| - Fixed faulty behaviour of the "Mute" key in case the channel display is visible
 | ||
|   (thanks to Florian Bartels for reporting this one and Sascha Volkenandt for
 | ||
|   helping to fix it).
 | ||
| - Modified LOF handling to allow for C-band reception (thanks to Malcolm Caldwell).
 | ||
| - Added some missing cAudio handling calls (thanks to Werner Fink).
 | ||
| - Replaced the 'for' loops in StripAudioPackets() with memset() calls (thanks to
 | ||
|   Werner Fink).
 | ||
| - Further increased the timeout until an index file is considered no longer to be
 | ||
|   written.
 | ||
| - Fixed a crash in case the index file can't be accessed any more during replay
 | ||
|   (thanks to Stefan Huelswitt for reporting this one).
 | ||
| - Fixed displaying messages in the status line in case they exceed the OSD width
 | ||
|   (thanks to Gerhard Steiner for reporting this one).
 | ||
| - Avoiding high CPU load in case the connection to LIRC gets lost (thanks to
 | ||
|   Ludwig Nussel).
 | ||
| - Fixed handling repeat function with LIRC (thanks to Ludwig Nussel).
 | ||
| - Fixed handling min/max borders when entering integer values (thanks to Andy
 | ||
|   Grobb for reporting this one).
 | ||
| - Implemented a "resume ID" which allows several users to each have their own
 | ||
|   resume.vdr files (thanks to Martin Hammerschmid). This parameter can be set in
 | ||
|   the "Setup/Replay" menu (see MANUAL for details).
 | ||
| - Now using 'libdtv' version 0.0.5 (thanks to Rolf Hakenes for the new version
 | ||
|   and Stefan Huelswitt for adapting VDR to it).
 | ||
| - If no device with an MPEG decoder can be found at startup, the first device
 | ||
|   is now used as primary device (just to have some device).
 | ||
| - Adjusted some Premiere channels in 'channels.conf' (thanks to Thomas Koch).
 | ||
| - Updated 'channels.conf.cable' (thanks to Stefan Hu<48>feldt).
 | ||
| - The 'epg.data' file is now read after all plugins have been started (thanks
 | ||
|   to Sascha Volkenandt).
 | ||
| - The LIRC remote control no longer tries to learn keys if it can't connect to
 | ||
|   the LIRC daemon (thanks to Ludwig Nussel for reporting this one). The same
 | ||
|   applies to the RCU remote control in case of errors during startup.
 | ||
| - Fixed handling of Ca parameters with values <= MAXDEVICES, which don't indicate
 | ||
|   an actual encrypted channel (thanks to Stefan Huelswitt for reporting this one).
 | ||
| 
 | ||
| 2003-04-21: Version 1.1.28
 | ||
| 
 | ||
| - Using masks in EIT filtering to reduce the number of filters (thanks to Andreas
 | ||
|   Schultz).
 | ||
| - Fixed handling Ca descriptors (thanks to Stefan Huelswitt).
 | ||
| - Now only those Ca descriptors are sent to a CAM that are actually understood
 | ||
|   by that CAM.
 | ||
| - Re-enabled CAM communication during replay and on non-Ca channels. This requires
 | ||
|   a DVB driver with firmware version 2613 or later.
 | ||
| - It is now possible to do simultaneous recording and replay with a single DVB
 | ||
|   card, even with encrypted channels. This requires the use of the Link Layer
 | ||
|   firmware, version 2613 or higher; the -icam firmware is still limited to live
 | ||
|   encrypted channels only. Finally we have time shift for encrypted channels on
 | ||
|   single card systems!
 | ||
| - Enhanced detection of pending user I/O from CAMs to avoid sluggish reaction
 | ||
|   to remote control keypresses.
 | ||
| - Implemented "pause live video". You can now press "Menu/Yellow" or "Pause" on
 | ||
|   your remote control while watching live video to start an instant recording
 | ||
|   of the current programme and immediately start replaying that recording.
 | ||
| 
 | ||
| 2003-04-27: Version 1.1.29
 | ||
| 
 | ||
| - Fixed detecting broken connection to the LIRC daemon (thanks to Ludwig Nussel).
 | ||
| - Now sending CA descriptors to the CAM in the same sequence as they were originally
 | ||
|   received (thanks to Stefan Huelswitt).
 | ||
| - The PCR PID can now be set separately from the video PID. The syntax in the
 | ||
|   'channels.conf' file is, for example, ...:164+17:..., where 164 is the video PID
 | ||
|   and 17 is the PCR PID. The separator is a '+' sign, not a comma or semicolon as
 | ||
|   with the audio PIDs, because this is not an alternate PID, but rather an
 | ||
|   additional, necessary PID. In order to use this feature you need a driver version
 | ||
|   dated 2003-04-27 or higher (setting the PCR PID didn't work in earlier versions).
 | ||
| - Fixed deleting the last recording in the "Recordings" menu, which started pausing
 | ||
|   live video (thanks to Christoph Friederich for reporting this one).
 | ||
| - Now setting the "broken link" flag for GOPs at the beginning of a new video
 | ||
|   sequence, which avoids artifacts when cutting (thanks to Stefan Huelswitt).
 | ||
| - Removed the Mute() call from cDvbDevice::StillPicture() (suggested by Andreas
 | ||
|   Schultz).
 | ||
| - Updated 'channels.conf.terr' for Berlin (thanks to Andreas Brachold).
 | ||
| - Extended logging info when starting/stopping timers to show the channel number,
 | ||
|   start/stop time and the file name (suggested by Manuel Hartl).
 | ||
| - Added a note regarding non-VDR files in the /videoX directories to INSTALL
 | ||
|   (suggested by Benjamin Harling).
 | ||
| - Skipping keys that come in too fast from LIRC (thanks to Christian Jacobsen).
 | ||
| - Avoiding short display of the main menu if a plugin displays its own OSD and
 | ||
|   is started through a user defined key macro (thanks to Andreas Mair for reporting
 | ||
|   this one).
 | ||
| - Reduced the time to wait for EPG data when starting a recording to 3 seconds.
 | ||
| - The new SVDRP command STAT can be used to request information about the disk
 | ||
|   usage (thanks to Thomas Koch).
 | ||
| - Fixed faulty calculation of section length in eit.c (thanks to Teemu Rantanen).
 | ||
| 
 | ||
| 2003-05-04: Version 1.1.30
 | ||
| 
 | ||
| - Fixed minimum lifespan of deleted recordings (thanks to Jaakko Hyv<79>tti).
 | ||
| - Updated French OSD texts (thanks to Olivier Jacques).
 | ||
| - Fixed paging through lists with repeated Left/Right keys.
 | ||
| - Fixed setting the PCR-PID in case it is equal to one of the other PIDs (thanks
 | ||
|   to Oliver Endriss for reporting this one).
 | ||
| - Fixed double call to MainMenuAction() of a plugin if invoked via a hotkey (thanks
 | ||
|   to Kai Moeller for reporting this one).
 | ||
| - Fixed handling dedicated keys.
 | ||
| - Now turning off live PIDs when replaying. This avoids short spikes from other
 | ||
|   channels when switching between Transfer Mode channels, and also lets an ongoing
 | ||
|   replay continue even if a recording is started on the primary device.
 | ||
| - The RCU channel display no longer changes when a recording on a different
 | ||
|   channel starts on the primary device.
 | ||
| - Restoring the current channel in case a recording has switched the transponder.
 | ||
|   If all devices are busy and none of them can provide the current channel, the
 | ||
|   message "Channel not available!" will be displayed.
 | ||
| - Removed the (no longer necessary) 'panic' stuff from cThread.
 | ||
| - Added cStatus::OsdItem() to provide the entire list of menu items to a plugin
 | ||
|   (thanks to Carsten Siebholz).
 | ||
| - The red ("Record") and yellow ("Pause") button in the "Main" menu are no longer
 | ||
|   available when replaying.
 | ||
| 
 | ||
| 2003-05-11: Version 1.1.31
 | ||
| 
 | ||
| - Introduced the new function cPlugin::Initialize(), in order to be able to separate
 | ||
|   the startup of a plugin into an "early" (Initialize()) and "late" (Start()) phase
 | ||
|   (suggested by Andreas Schultz). Plugin authors should please read the section
 | ||
|   about "Getting started" in PLUGINS.html and adapt their code if applicable.
 | ||
| - Implemented the CableDeliverySystemDescriptor and TerrestrialDeliverySystemDescriptor
 | ||
|   in libdtv (thanks to Sven Grothklags and Andreas Schultz).
 | ||
| - Fixed keeping live video active in case the primary device doesn't have an MPEG
 | ||
|   decoder (thanks to Wolfgang Goeller for reporting this one).
 | ||
| - Implemented cDevice::ActualDevice(), which returns the actual receiving device in
 | ||
|   case of 'Transfer Mode', or the primary device otherwise. This may be useful for
 | ||
|   plugins that want to attach a cReceiver to the device where the current live video
 | ||
|   is actually coming from.
 | ||
| - Added VDRVERSNUM to config.h, which can be used by the preprocessor to check the
 | ||
|   actual VDR version (suggested by Stefan Huelswitt).
 | ||
| - Removed the WaitForPut/WaitForGet stuff from cRingBuffer, since it appears to
 | ||
|   no longer be necessary due to the implementation of cNonBlockingFileReader in
 | ||
|   dvbplayer.c. Also, the long timeout in WaitForPut caused problems with cReceivers
 | ||
|   that use a ring buffer and didn't immediately return from their Receive() function
 | ||
|   if the buffer runs full (thanks to Sascha Volkenandt for reporting this one).
 | ||
| - Fixed handling EPG data where the "extended event descriptor" comes before the
 | ||
|   "short event" or a "time shifted event" (thanks to Jonan Santiago).
 | ||
| - Disabled the "Received stuffing section in EIT" log message.
 | ||
| - Updated 'channels.conf.terr' for Berlin (thanks to Juri Haberland).
 | ||
| - Avoiding short display of the "Main" menu when pressing the "Recordings" button
 | ||
|   or the "Back" button during replay.
 | ||
| - Further increased the timeout until an index file is considered no longer to be
 | ||
|   written.
 | ||
| - Implemented separate PausePriority and PauseLifetime parameters for the recordings
 | ||
|   created when pausing live video (suggested by Alfred Zastrow).
 | ||
| - Changed C++ style comments in libdtv into C style to avoid warnings in gcc 3.x
 | ||
|   (thanks to Andreas Schultz).
 | ||
| 
 | ||
| 2003-05-18: Version 1.1.32
 | ||
| 
 | ||
| - Removed a faulty parameter initialization in menu.c (thanks to Lauri Tischler for
 | ||
|   reporting this one).
 | ||
| - Re-implemented the WaitForPut/WaitForGet stuff in cRingBuffer, since some plugins
 | ||
|   actually need this. By default the buffer does not wait; if a plugin needs the
 | ||
|   waiting functionality it can call the new SetTimeouts() function.
 | ||
| - Moved the call to cPlugin::Start() further up in vdr.c, to make sure it gets
 | ||
|   called before trying to learn the keys (problem reported by Oliver Endriss).
 | ||
| - No longer starting the editing process if no marks have been set (thanks to
 | ||
|   Matthias Raus for reporting this one).
 | ||
| - Added Catalan language texts (thanks to Marc Rovira Vall and Ramon Roca).
 | ||
|   Plugin authors may want to add the new entries to their I18N texts and contact
 | ||
|   the translators to have their texts translated. Note that there are now 16
 | ||
|   different OSD languages, so please make sure you have 16 versions for each of
 | ||
|   your texts.
 | ||
| - Moved the detection of a broken video data stream from the cDevice into the
 | ||
|   cRecorder to avoid problems with cReceivers that want to receive from PIDs
 | ||
|   that are currently not transmitting (thanks to Marcel Wiesweg for reporting
 | ||
|   this one).
 | ||
| - Fixed setting the locking pid after a timed wait (thanks to Andreas Schultz).
 | ||
| - Avoiding spurious section filter settings after a channel switch.
 | ||
| - Updated 'channels.conf.cable' (thanks to Stefan Hu<48>feldt).
 | ||
| - Fixed reading 'epg.data' for channels with non-zero RID (thanks to Oliver
 | ||
|   Endriss for reporting this one).
 | ||
| - Fixed EPG bugfix statistics to avoid log entries for undefined channels (thanks
 | ||
|   to Lars Bl<42>ser for reporting this one).
 | ||
| - No longer waiting inside cIndexFile::CatchUp() to avoid shortly blocking replay
 | ||
|   at the end of a recording.
 | ||
| 
 | ||
| 2003-05-25: Version 1.1.33
 | ||
| 
 | ||
| - Modified handling of audio packets in cDvbPlayer for better sync with external
 | ||
|   AC3 replay (thanks to Werner Fink).
 | ||
| - Fixed a memory leak in cNonBlockingFileReader (thanks to Stefan Huelswitt).
 | ||
| - Completed the French OSD texts (thanks to Gregoire Favre).
 | ||
| - Completed the Finnish OSD texts (thanks to Niko Tarnanen and Rolf Ahrenberg).
 | ||
| - Fixed I/O handling in case an explicit controlling terminal is given (thanks
 | ||
|   to Oliver Endriss).
 | ||
| - Fixed resume file handling in case the resume.vdr file can't be written
 | ||
|   (thanks to Gerhard Steiner).
 | ||
| - Fixed cutting a recording if there is only a single editing mark (thanks to
 | ||
|   Ralf Klueber for reporting this one).
 | ||
| - Fixed volume display in case a plugin has its own OSD open (thanks to Marcel
 | ||
|   Wiesweg).
 | ||
| - Fixed channel switching in the EPG scanner on single device systems.
 | ||
| - Completed the Swedish OSD texts (thanks to Tomas Prybil).
 | ||
| - Now switching to the channel used by the most recently started timer in case
 | ||
|   the original current channel becomes unavailable due to a recording on a
 | ||
|   different transponder. If this fails, a channel up/down switch is attempted as
 | ||
|   a fallback solution (thanks to Lauri Tischler for reporting this one, and to
 | ||
|   Hermann Gausterer for suggesting to switch to the recording channel).
 | ||
| - Fixed cReplayControl::Show() to avoid a compiler warning in g++ 3.2.3 (thanks
 | ||
|   to Jan Ekholm for reporting this one).
 | ||
| - Completed the Slovenian OSD texts (thanks to Matjaz Thaler).
 | ||
| - Changed the DEFAULTPRIORITY in device.c to -1, so that the primary device
 | ||
|   will be used for FTA recordings in case the CAM is connected to a non-primary
 | ||
|   device (thanks to Reinhard Walter Buchner for reporting this one).
 | ||
| - The cCiHandler now closes its file handle when it gets destroyed.
 | ||
| - Checking for duplicate recordings with the same file name and disabling the
 | ||
|   second timer (thanks to Peter Bieringer for reporting this one).
 | ||
| - Fixed handling newly created timers in case they are not confirmed with "Ok"
 | ||
|   (thanks to Gerhard Steiner for reporting this one).
 | ||
| - It is now possible to directly delete a timer that is currently recording
 | ||
|   (thanks to Alexander Damhuis for reporting this one).
 | ||
| 
 | ||
| 2003-05-30: Version 1.2.0pre1
 | ||
| 
 | ||
| - Some corrections to the French OSD texts (thanks to Olivier Jacques).
 | ||
| - Fixed some missing commas in i18n.c (thanks to Dimitrios Dimitrakos for
 | ||
|   reporting this problem).
 | ||
| - Some corrections to the Finnish OSD texts (thanks to Niko Tarnanen and Rolf
 | ||
|   Ahrenberg).
 | ||
| - Completed the Italian OSD texts (thanks to Antonio Ospite).
 | ||
| - Fixed breaking off replay in case the user hits "Play" or "Pause" too soon after
 | ||
|   going into "Pause live video" mode (thanks to Karim Afifi for reporting this one).
 | ||
| - Some corrections to the Catalan OSD texts (thanks to Jordi Vil<69>).
 | ||
| - Single event timers are now deleted if the recording they are doing is
 | ||
|   deleted before the timer ends.
 | ||
| - Fixed an uninitialized variable in cDisplayChannel (thanks to Stefan Huelswitt).
 | ||
| - Fixed a possible access of invalid file handles in cSIProcessor::Action()
 | ||
|   (thanks to Stefan Huelswitt).
 | ||
| 
 | ||
| 2003-06-01: Version 1.2.0
 | ||
| 
 | ||
| - Completed Greek language texts (thanks to Dimitrios Dimitrakos).
 | ||
| - Completed Polish language texts (thanks to Michael Rakowski).
 | ||
| - Added a note about NPTL ("Native Posix Thread Library") to the INSTALL file
 | ||
|   (thanks to Jon Burgess for pointing this out).
 | ||
| - Some corrections to the Finnish OSD texts (thanks to Jaakko Hyv<79>tti).
 | ||
| - Officially released as version 1.2.0.
 | ||
| 
 | ||
| 2003-06-09: Version 1.2.1
 | ||
| 
 | ||
| - Fixed OSD access in case none of the devices provides one (thanks to Axel
 | ||
|   Gruber for reporting this one).
 | ||
| - Fixed editing channels ('timers.conf' was not written after a channel has
 | ||
|   been modified, which could result in errors upon the next start of VDR).
 | ||
| - Fixed a crash when canceling a newly created timer (thanks to Thomas Schmidt
 | ||
|   for reporting this one).
 | ||
| - Completed Hungarian language texts (thanks to Istvan Koenigsberger and Guido
 | ||
|   Josten).
 | ||
| - Fixed device handling in the CICAM menu in case a VDR instance was started
 | ||
|   with a specific device using the -D option (thanks to Gerald Raaf for reporting
 | ||
|   this one).
 | ||
| - Initializing the current channel to '1' to avoid a crash in creating a new
 | ||
|   timer in case there is no device in the system that can actually receive any
 | ||
|   channel (thanks to Malcolm Caldwell for reporting this one).
 | ||
| - Some corrections to the Finnish OSD texts (thanks to Niko Tarnanen and Rolf
 | ||
|   Ahrenberg).
 | ||
| 
 | ||
| 2003-08-03: Version 1.2.2
 | ||
| 
 | ||
| - Fixed a bug in channel switching after Left/Right has been pressed (thanks to
 | ||
|   Michael Walle for reporting this one).
 | ||
| - Improved channel switching in case of numerical input by switching as soon as
 | ||
|   the channel is unique (suggested by Jaakko Hyv<79>tti).
 | ||
| - Fixed creating a new channel in the "Channels" menu in case the 'channels.conf'
 | ||
|   contains ':@nnn' lines with no text (thanks to Guy Roussin for reporting this
 | ||
|   one).
 | ||
| - Changed the behaviour of the '0' key in normal viewing mode so that a channel
 | ||
|   only qualifies as "previous" if it has been selected for at least 3 seconds
 | ||
|   (suggested by Thomas Keil).
 | ||
| - Now clearing the channel info display when entering numeric keys to switch
 | ||
|   channels (suggested by Guy Roussin).
 | ||
| - Added missing I18N entry for "Ppid" (thanks to Rolf Ahrenberg).
 | ||
| - Fixed handling the color buttons in the "Edit channel" menu (thanks to Thomas
 | ||
|   Keil for reporting this one).
 | ||
| - Fixed an occasional "Broken pipe" error in SVDRP connections (thanks to Gerhard
 | ||
|   Steiner for reporting this one).
 | ||
| - Fixed checking CA capabilities with the dvb-kernel driver (thanks to Kenneth
 | ||
|   Aafl<66>y).
 | ||
| - Fixed selecting the device, because sometimes an FTA recording terminated a
 | ||
|   CA recording (thanks to Emil Naepflein).
 | ||
| - Fixed a possible crash in case a VFAT file system is used without compiling VDR
 | ||
|   with VFAT=1 (thanks to Ernst F<>rst for reporting this one).
 | ||
| - Now the program uses the values of VIDEODIR and PLUGINDIR defined in Makefile
 | ||
|   or Make.config as defaults (thanks to Steffen Barszus).
 | ||
| - Added the usual menu timeout to the CAM menus.
 | ||
| 
 | ||
| 2003-08-17: Version 1.2.3 (not officially released)
 | ||
| 
 | ||
| - Fixed the TS to PES repacker so that it works with MPEG1 streams (thanks to
 | ||
|   Andreas Kool).
 | ||
| - Fixed keeping track of the current channel number when moving channels in
 | ||
|   the "Channels" menu (thanks to Mirko G<>nther for reporting this one).
 | ||
| - Made the plugin library directory configurable via Make.config (thanks to
 | ||
|   Ludwig Nussel).
 | ||
| - Fixed scaling SPU bitmaps in Letterbox mode when playing NTSC material.
 | ||
|   In order to do this, the cDevice was given a new member function GetVideoSystem().
 | ||
| - Fixed two warnings when compiling with gcc 3.3.1 (thanks to Alfred Zastrow for
 | ||
|   reporting this).
 | ||
| - Made crc32() a static function in libdtv/libsi/si_parser.c to avoid a name clash
 | ||
|   when using other libraries that also implement a function by that name (thanks
 | ||
|   to Reinhard Nissl for reporting this one).
 | ||
| - Fixed staying off the end of an ongoing recording while replaying in time shift
 | ||
|   mode (thanks to Rainer Zocholl for reporting this one).
 | ||
| - VDR now stops with exit status 2 if one of the configuration files can't be
 | ||
|   read correctly at program startup (suggested by Rainer Zocholl).
 | ||
| - Fixed a crash when starting "Pause live video" twice within the same minute on
 | ||
|   the same channel.
 | ||
| - Fixed freezing replay if a timer starts while in Transfer Mode from the device
 | ||
|   used by the timer, and the timer needs a different transponder (thanks to
 | ||
|   Richard Robson for reporting this one).
 | ||
| - Fixed toggling channels with the '0' key (thanks to Mirko G<>nther for reporting
 | ||
|   this one).
 | ||
| - Made the "Zap timeout" (the time until a channel counts as "previous" for
 | ||
|   switching with '0') a setup variable, available in "Setup/Miscellaneous"
 | ||
|   (suggested by Helmut Auer).
 | ||
| - Removing deleted recordings faster than normal when cutting, to avoid running
 | ||
|   out of disk space (thanks to Manfred Schmidt-Voigt for reporting this one).
 | ||
| 
 | ||
| 2003-08-26: Version 1.2.4 (not officially released)
 | ||
| 
 | ||
| - Fixed 'runvdr' to stay in the loop only if VDR returns an exit status of '1'.
 | ||
| - Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Empty values in setup.conf are no longer treated as an error (thanks to Andreas
 | ||
|   Kool for reporting this one).
 | ||
| - Added a note about the config files of plugins to INSTALL (thanks to Thomas
 | ||
|   Keil).
 | ||
| - VDR now continues to start up, even if there is an error in setup.conf.
 | ||
| - Fixed a bug in resetting OSD color palettes (thanks to Torsten Herz).
 | ||
| - Fixed starting a recording on the primary device if there is a replay session
 | ||
|   active (thanks to Javier Marcet for reporting this one).
 | ||
| - Avoiding an unnecessary stop of an ongoing Transfer Mode when starting a
 | ||
|   recording on the primary device.
 | ||
| 
 | ||
| 2003-08-31: Version 1.2.5pre1
 | ||
| 
 | ||
| - Now explicitly handling exit value 0 and 2 in 'runvdr'.
 | ||
| - Added a missing 'w' to the allowed characters for Finnish and Swedish (thanks
 | ||
|   to Lauri Tischler and Ragnar Sundblad).
 | ||
| - Added channels for DVB-T Hannover (Germany) to channels.conf.terr (thanks to
 | ||
|   Peter Waechtler).
 | ||
| - Fixed a hangup in SVDRP when the client disappears without sending QUIT (thanks
 | ||
|   to Robert Bartl for reporting this one). The problem was introduced in version
 | ||
|   1.2.2 through the fix for an occasional "Broken pipe" error in SVDRP connections.
 | ||
| - Updated 'channels.conf.terr' for Berlin.
 | ||
| - Fixed displaying still pictures, now using the driver's VIDEO_STILLPICTURE call
 | ||
|   directly (thanks to Oliver Endriss). This also improves navigating through DVD
 | ||
|   menus with the DVD plugin. If this causes problems with your particular system
 | ||
|   (maybe because you are using the 'analogtv' plugin) you can reactivate the
 | ||
|   previous behaviour by commenting out the line
 | ||
|   #define VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES
 | ||
|   in VDR/dvbdevice.c.
 | ||
|   Note that you need driver version 2003-08-23 or later for this to work!
 | ||
| - Fixed handling extra blanks in plugin command lines.
 | ||
| - Actually implemented the SVDRP command DELC.
 | ||
| - Now clearing the player device if there are too many poll timeouts in 'Transfer
 | ||
|   Mode', which avoids buffer overflows and black screens in such cases.
 | ||
| 
 | ||
| 2003-09-07: Version 1.2.5pre2
 | ||
| 
 | ||
| - Updated VIVA, VIVA Plus, MTV Central and MTV 2 in channels.conf (thanks to
 | ||
|   Sebastian Frei).
 | ||
| - Changed "Studio Universal" to "Sci-Fi" in channels.conf.
 | ||
| - Fixed a crash when using the --terminal option without having access to the
 | ||
|   given terminal (thanks to Steffen Barszus for helping to debug this one).
 | ||
| - Added a note about the driver version needed for the still picture fix from
 | ||
|   version 1.2.5pre1 to work properly (thanks to Oliver Endriss for pointing
 | ||
|   this out).
 | ||
| - Fixed setting the primary device in case none of the devices provides an MPEG
 | ||
|   decoder (thanks to Rene Bartsch for reporting this one).
 | ||
| - Fixed handling the "Red" button in the "Schedules" menu in case there are no
 | ||
|   events listed for a particular channel (thanks to Christoph Hermanns for
 | ||
|   reporting this one).
 | ||
| - When setting an editing mark while in "Pause" mode, replay now immediately
 | ||
|   jumps to the marked frame (thanks to Oskar Signell for pointing out this
 | ||
|   problem).
 | ||
| - The DVB devices no longer send CA descriptors to the CAM while the EPG scanner
 | ||
|   is active (sometimes the CAMs got irritated when the device tuned to channels
 | ||
|   they couldn't handle).
 | ||
| 
 | ||
| 2003-09-14: Version 1.2.5pre3
 | ||
| 
 | ||
| - Fixed dropping out of replay mode while viewing a recording that is still
 | ||
|   going on (thanks to Oliver Endriss for reporting and helping to debug this
 | ||
|   one).
 | ||
| - Fixed handling ':' characters in channel names when reading channels.conf
 | ||
|   (thanks to Reinhard Nissl for reporting this one).
 | ||
| - Fixed the URL to the 'Doxygen' tool in INSTALL (thanks to Dirk Essl).
 | ||
| - Removed the obsolete chapter "Stopping a recording on the primary DVB interface"
 | ||
|   from MANUAL.
 | ||
| - Completed Dutch language texts (thanks to Hans Dingemans).
 | ||
| - Made 'diseqc.conf' a required file only if Setup.DiSEqC is activated (thanks to
 | ||
|   Thomas Schmidt).
 | ||
| - VDR now starts up even if 'keymacros.conf' references a plugin that is currently
 | ||
|   not loaded (suggested by Alexander Wetzel).
 | ||
| - Fixed checking for VIDEO_STREAM_S in cRemux::SetBrokenLink() (thanks to Oliver
 | ||
|   Endriss).
 | ||
| - Added 'repeat' function to keys '7' and '9' ("jump to mark") in replay mode
 | ||
|   (suggested by Oliver Endriss).
 | ||
| - Made cOsdMenu::Display() virtual, which allows plugins to do some additional
 | ||
|   processing after calling the base class function (suggested by Jan Rieger).
 | ||
| - Updated 'ca.conf' (thanks to Marco Franceschetti).
 | ||
| 
 | ||
| 2003-09-17: Version 1.2.5
 | ||
| 
 | ||
| - Updated 'channels.conf.cable' (thanks to Stefan Hu<48>feldt).
 | ||
| 
 | ||
| 2003-10-17: Version 1.2.6pre1
 | ||
| 
 | ||
| - Updated the required driver version in INSTALL (thanks to Jens Groth for
 | ||
|   reporting this one).
 | ||
| - Fixed missing channel info after an incomplete channel group switch (thanks
 | ||
|   to Andreas Trauer).
 | ||
| - Fixed handling a channels.conf that contains a ":@nnn" line as its last entry
 | ||
|   (thanks to Ralf Klueber).
 | ||
| - Fixed detecting the /dev/videoN devices for GRAB in case there are others
 | ||
|   before the DVB devices (thanks to Andreas Kool).
 | ||
| - Updated 'channels.conf.terr' for Berlin (thanks to Markus Hardt).
 | ||
| - Fixed handling rc key learning in case cRemote::Initialize() returns 'false'
 | ||
|   (thanks to Oliver Endriss).
 | ||
| - Fixed initializing the highlight area in cDvbSpuDecoder (thanks to Sven Goethel).
 | ||
| - Now trying to get a timer's channel without RID when loading 'timers.conf'
 | ||
|   (thanks to Thomas Rausch).
 | ||
| - Removed the unused 0x73 (TOT) filter in eit.c (thanks to Andreas Trauer).
 | ||
| - Fixed extracting the ES data in cDvbDevice::StillPicture() (thanks to Stefan
 | ||
|   Huelswitt).
 | ||
| - Added MPEG1 handling to cDvbDevice::StillPicture() (thanks to Thomas
 | ||
|   Heiligenmann).
 | ||
| - Changed the default "Lifetime" to 99, which means that recordings will
 | ||
|   never be deleted automatically in case the disk runs full (suggested by
 | ||
|   Oliver Endriss). Note that in an existing VDR installation the current
 | ||
|   value as set in 'setup.conf' will still be used - this change only affects
 | ||
|   new VDR installations.
 | ||
| - Edited recordings will now never be deleted automatically if the disk runs
 | ||
|   full (suggested by Emil Naepflein).
 | ||
| - Channel IDs are now checked when reading 'channels.conf' to avoid later
 | ||
|   problems with timers.
 | ||
| 
 | ||
| 2003-10-19: Version 1.2.6pre2
 | ||
| 
 | ||
| - Improved cDvbDevice::StillPicture() (thanks to Thomas Heiligenmann).
 | ||
| 
 | ||
| 2003-10-24: Version 1.2.6pre3
 | ||
| 
 | ||
| - Improved cDvbDevice::StillPicture() (thanks to Oliver Endriss).
 | ||
| - Continuing learning remote control keys in case one rc fails (thanks to
 | ||
|   Oliver Endriss).
 | ||
| - Fixed handling comments in editing marks.
 | ||
| 
 | ||
| 2003-10-26: Version 1.2.6pre4
 | ||
| 
 | ||
| - Fixed handling CAM menus in case the CAM connection fails while the menu
 | ||
|   is being presented (thanks to Thomas v. Keller for reporting this one).
 | ||
| - Added missing 'const' to some cChannel member functions (thanks to Torsten
 | ||
|   Herz).
 | ||
| 
 | ||
| 2003-11-08: Version 1.2.6pre5
 | ||
| 
 | ||
| - Added cDevice::GetSTC() (suggested by Sven Goethel).
 | ||
| - Added Asia-Pacific satellites to 'sources.conf' (thanks to Richard Scobie).
 | ||
| - Added North American satellites to 'sources.conf' (thanks to Luke Jenkins).
 | ||
| - Fixed getting the list of recordings in case VDR is started from a directory
 | ||
|   where it doesn't have access to (thanks to Dirk Mueller).
 | ||
| 
 | ||
| 2003-11-09: Version 1.2.6pre6
 | ||
| 
 | ||
| - Fixed handling Priority -1 in cDvbDevice::ProvidesChannel() (thanks to
 | ||
|   Torsten Herz).
 | ||
| - Fixed processing EPG data in case there is no title (thanks to Torsten Herz).
 | ||
| 
 | ||
| 2003-11-14: Version 1.2.6
 | ||
| 
 | ||
| - Final release of version 1.2.6.
 | ||
| 
 | ||
| 2004-01-04: Version 1.3.0
 | ||
| 
 | ||
| - Changed thread handling to make it work with NPTL ("Native Posix Thread Library").
 | ||
|   Thanks to Jon Burgess, Andreas Schultz, Werner Fink and Stefan Huelswitt.
 | ||
| - The cThread class now accepts a 'Description' parameter, which is used to log
 | ||
|   the beginning and end of the thread, together with its process and thread id.
 | ||
|   For descriptions that need additional parameters you can use the function
 | ||
|   cThread::SetDescription(), which accepts 'printf()' like arguments.
 | ||
|   Existing plugins that use threads should be changed to use this functionality
 | ||
|   instead of explicit 'dsyslog()' calls inside their Action() function in order
 | ||
|   to support logging the thread ids.
 | ||
| - Added "Slovak Link" and "Czech Link" to 'ca.conf' (thanks to Emil Petersky).
 | ||
|   However, 'ca.conf' is now pretty much obsolete due to the automatic CA handling.
 | ||
| - Mutexes are now created with PTHREAD_MUTEX_ERRORCHECK_NP, which makes the
 | ||
|   'lockingTid' stuff obsolete (thanks to Stefan Huelswitt).
 | ||
| - Changed font handling to allow language specific character sets.
 | ||
| - Adopted the small font character set from the "Elchi" patch (originally
 | ||
|   provided by Alessio Sangalli).
 | ||
| - Greek language texts now use iso8859-7 character set (thanks to Dimitrios
 | ||
|   Dimitrakos).
 | ||
| - Rearranged section data handling, so that the actual data handling can be done
 | ||
|   separately, even from within plugins.
 | ||
| - The EPG data structures have been moved from eit.[hc] to epg.[hc] and have been
 | ||
|   adapted to the general VDR coding style. Plugins that use these data structures
 | ||
|   may need to change some function names (which should be obvious).
 | ||
|   The name 'subtitle' has been changed to 'shortText' to avoid clashes with actual
 | ||
|   subtitles that are part of a movie. The name 'extendedDescription' has been
 | ||
|   shortened to 'description'.
 | ||
| - Replaced 'libdtv' with 'libsi' (thanks to Marcel Wiesweg), which is thread
 | ||
|   safe and can be used by multiple section filters simultaneously.
 | ||
| - Added 'cRwLock' to 'thread.[hc]'. Note that all plugin Makefiles need to
 | ||
|   define _GNU_SOURCE for this to work (see the example plugin Makefiles and
 | ||
|   'newplugin').
 | ||
| - Fixed a problem with crc32 in SI handling on 64bit systems (thanks to Pedro
 | ||
|   Miguel Sequeira de Justo Teixeira for reporting this one).
 | ||
| - Fixed an alignment problem in CAM access on 64bit systems  (thanks to Pedro
 | ||
|   Miguel Sequeira de Justo Teixeira for reporting this one).
 | ||
| - Added 'StreamType' setting to CAM communication, which is important for
 | ||
|   Aston/SECA CAMs (thanks to Antonino Sergi).
 | ||
| - Now the CA descriptors are sent to the CAM in the 'program' or 'ES level'
 | ||
|   sections, depending on where they are found in the PMT (thanks to Hans-Peter
 | ||
|   Raschke for reporting this one). This should make SkyCrypt CAMs work.
 | ||
| - Now using the 'version number' of EPG events to avoid unnecessary work.
 | ||
| - Channel data is now automatically derived from the DVB data stream (inspired
 | ||
|   by the 'autopid' patch from Andreas Schultz).
 | ||
| - The current channel is now automatically re-tuned if the PIDs or other settings
 | ||
|   change. If a recording is going on on a channel that has a change in its
 | ||
|   settings, the recording will be stopped and immediately restarted to use the
 | ||
|   new channel settings.
 | ||
| - EPG events now use the complete channel ID with NID, TID and SID.
 | ||
| - Channel names in 'channels.conf' can now have a short form, as provided
 | ||
|   by some tv stations (see man vdr(5)). Currently channels that provide short
 | ||
|   names in addition to long ones are listed in the OSD as "short,long name",
 | ||
|   as in "RTL,RTL Television". The short names will be used explicitly later.
 | ||
| - The Ca parameter in 'channels.conf' has been extended and now contains all the
 | ||
|   CA system ids for the given channel. When switching to a channel VDR now tests
 | ||
|   for a device that provides one of these CA system ids. The devices automatically
 | ||
|   get their supported ids from the CI handler.
 | ||
| - The values in 'ca.conf' are currently without any real meaning. Whether or not
 | ||
|   a channel with conditional access can be received is now determined automatically
 | ||
|   by evaluating its CA descriptors and comparing them to the CA system ids
 | ||
|   provided by the installed CAM. Only the special values 1-16 are used to assign
 | ||
|   a channel to a particular device.
 | ||
| - Increased the maximum number of possible OSD colors to 256.
 | ||
| - Limited the line length in the EPG bugfix report, which appears to fix a buffer
 | ||
|   overflow that caused a crash when cleaning up the EPG data (at 05:00 in the
 | ||
|   morning).
 | ||
| 
 | ||
| 2004-01-11: Version 1.3.1
 | ||
| 
 | ||
| - Fixed a lockup in the EPG scanner when no non-primary device was available
 | ||
|   (thanks to Martin Holst for reporting this one).
 | ||
| - Fixed a compiler warning about virtual cConfig::Load() functions (thanks to
 | ||
|   Lauri Tischler for reporting this one).
 | ||
| - Fixed a warning about character comparison in libsi/si.c (thanks to Lauri
 | ||
|   Tischler for reporting this one).
 | ||
| - The new parameter "Update channels" in the "Setup/DVB" menu can be used to
 | ||
|   control if and how channels will be automatically updated (see MANUAL).
 | ||
|   This has already been part of the 'autopid' patch by Andreas Schultz and has
 | ||
|   now been adopted.
 | ||
| - Fixed a crash in case there is no DVB hardware present (thanks to Sascha
 | ||
|   Volkenandt for reporting this one).
 | ||
| - Changed calculation of channel ids to make it work for tv stations that use
 | ||
|   the undefined NID value 0 (thanks to Teemu Rantanen for reporting this one).
 | ||
| - Enhanced the SDT filter to handle multi part sections.
 | ||
| - Added support for selecting preferred EPG languages (based upon a patch by
 | ||
|   Teemu Rantanen).
 | ||
| - Fixed a 'const' in libsi/si.h (thanks to Marcel Wiesweg).
 | ||
| - Fixed the 'su' call in 'runvdr' to make it work on systems that require the
 | ||
|   user name to appear before the command option (thanks to Robert Huitl).
 | ||
| - Fixed testing for matching section filters in case they are turned off (thanks
 | ||
|   to Marcel Wiesweg).
 | ||
| - In case of incomplete sections an error message is now logged only every 10
 | ||
|   seconds.
 | ||
| - Fixed a possible NULL pointer access in cEITScanner::Process() (thanks to
 | ||
|   Andreas Kool).
 | ||
| - The actual transponder data is now taken from the NIT and existing channels
 | ||
|   are adjusted if necessary. If the NIT contains new transponders, they are
 | ||
|   scanned for channels during the next EPG scan. Note that only the satellite
 | ||
|   branches are tested, cable and terrestrial need to be tested by somebody who
 | ||
|   actually has such equipment.
 | ||
| 
 | ||
| 2004-01-18: Version 1.3.2
 | ||
| 
 | ||
| - Fixed resetting the EPG data versions after changing the preferred languages
 | ||
|   (thanks to Teemu Rantanen for reporting this one and helping to debug it).
 | ||
| - Added LinkageDescriptor handling to 'libsi' (thanks to Marcel Wiesweg).
 | ||
| - Added Russian language texts (thanks to Vyacheslav Dikonov).
 | ||
|   Plugin authors may want to add the new entries to their I18N texts and contact
 | ||
|   the translators to have their texts translated. Note that there are now 17
 | ||
|   different OSD languages, so please make sure you have 17 versions for each of
 | ||
|   your texts.
 | ||
| - Some corrections and additions to the Finnish OSD texts (thanks to Rolf
 | ||
|   Ahrenberg and Niko Tarnanen).
 | ||
| - Fixed a wrong 'delta' value in the call to the shutdown script (thanks to
 | ||
|   Stephan Epstein for reporting this one).
 | ||
| - Activated detection of radio channels (to avoid reports about "channels not
 | ||
|   being detected that used to be detected with the 'scan' utility or the
 | ||
|   original 'autopid' patch ;-).
 | ||
| - Channels with a zero VPID no longer write a PPID into channels.conf.
 | ||
| - Short channel names are now only stored if they actually differ from the
 | ||
|   full name.
 | ||
| - The EPG scan now scans newly found transponders together with already existing
 | ||
|   ones.
 | ||
| - The "Red" button in the "Setup/EPG" menu can now be used to force an EPG
 | ||
|   scan on a single DVB card system (see MANUAL for details).
 | ||
| - The new SVDRP command 'SCAN' can be used to force  an EPG scan on a single
 | ||
|   DVB card system (see MANUAL under Setup/EPG for details).
 | ||
| - Fixed handling PID changes in 'Transfer Mode'.
 | ||
| - Excess blanks in channel names read from the SDT are now removed.
 | ||
| - Fixed wrong parameter settings when scanning NITs for terrestrial transponders
 | ||
|   (thanks to Christian Tramnitz for pointing out this one).
 | ||
| - Fixed some out of bounds parameter settings when scanning NITs for cable
 | ||
|   and satellite transponders.
 | ||
| - Added 'libsi' include files to the 'include' directory, so that plugins can
 | ||
|   use them (thanks to Marcel Wiesweg).
 | ||
| - Now only processing NITs that contain the transponder they are actually
 | ||
|   broadcast on.
 | ||
| - Fixed setting the source type for newly detected terrestrial transponders
 | ||
|   (thanks to Christian Tramnitz for his support in debugging this).
 | ||
| 
 | ||
| 2004-01-25: Version 1.3.3
 | ||
| 
 | ||
| - Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Added ISO639LanguageDescriptor to 'libsi'.
 | ||
| - Changed the 'languageCode' members in the descriptor classes of 'libsi' to
 | ||
|   'char[4]' and setting the 4th byte to 0 for easier handling.
 | ||
| - Fixed frequency handling when setting the CA descriptors in cDvbTuner::Action()
 | ||
|   (thanks to Jan Ekholm for reporting and helping to debug this one).
 | ||
| - Now setting CA descriptors even if "Setup/DVB/Update channels" is less than 2.
 | ||
| - There can now be up to 32 audio and Dolby PIDs (however, currently still only
 | ||
|   the first two are used throughout the rest of the program).
 | ||
| - The audio and Dolby PIDs in 'channels.conf' now can have an optional language
 | ||
|   code (see man vdr(5)). Currently this is only stored and not yet used otherwise.
 | ||
| - Added a call to cStatus::MsgOsdCurrentItem() to cMenuEditItem::SetValue()
 | ||
|   (thanks to Martin Hammerschmid).
 | ||
| 
 | ||
| 2004-02-08: Version 1.3.4
 | ||
| 
 | ||
| - Fixed handling language codes in case there is no audio or Dolby PID.
 | ||
| - Fixed handling CA ids (was broken in 1.3.3).
 | ||
| - Fixed the SVDRP command 'STAT DISK' to avoid a 'division by 0' in case the
 | ||
|   disk is full (thanks to Jens Rosenboom).
 | ||
| - Fixed handling bitmap indexes for 256 color mode (thanks to Andreas Regel).
 | ||
| - Now handling "linked services" (based on the 'autopid' patch from Andreas
 | ||
|   Schultz). Linked channels are detected and added to 'channels.conf', but
 | ||
|   currently they are not yet presented to the user other than being in the
 | ||
|   normal channel list (this will come later).
 | ||
| - Preliminary fix for the "Unknown picture type error" (thanks to Sascha
 | ||
|   Volkenandt for his support in debugging this one). This may slow down switching
 | ||
|   between channels on different transponders for now, but a better solution will
 | ||
|   come later.
 | ||
| - Fixed the validity check for channel IDs, because some providers use TIDs with
 | ||
|   value 0 (thanks to Thomas Bergwinkl).
 | ||
| - Enabled switching to a channel even if it has no Vpid or Apid set, because these
 | ||
|   might be automatically set when tuned to that transponder.
 | ||
| - No longer closing the Channels menu after trying to switch to a channel that
 | ||
|   is currently not available.
 | ||
| - Removed the now obsolete CaCaps stuff. The Setup/CICAM menu now displays the
 | ||
|   actual CAM type as reported by the CAM. The 'ca.conf' file has been stripped
 | ||
|   down to the values 0..4.
 | ||
| 
 | ||
| 2004-02-29: Version 1.3.5
 | ||
| 
 | ||
| - Fixed reading the EPG preferred language parameter from 'setup.conf'.
 | ||
| - Fixed switching to a visible programme in case the current channel has neither
 | ||
|   a video nor an audio PID.
 | ||
| - Fixed editing channels (SID now range checked) and creating new channels (NID,
 | ||
|   TID and RID are now set to 0).
 | ||
| - Fixed transponder handling to make it work with satellites that provide two
 | ||
|   transponders on the same frequency, with different polarization, like Hispasat
 | ||
|   at S30.0W (thanks to Thomas Bergwinkl for pointing this out). See man vdr(5)
 | ||
|   for details about the enhanced channel ID format.
 | ||
| - Since there appears to be no general solution for the UPT error yet, a recording
 | ||
|   now initiates an "emergency exit" if the number of UPT errors during one
 | ||
|   recording exceeds 10 (suggested by Gregoire Favre). Since the UPT error doesn't
 | ||
|   happen on my system, this has not been explicitly tested.
 | ||
|   The "preliminary fix" for the UPT error in VDR/dvbdevice.c has been disabled
 | ||
|   by default, since it makes channel switching unpleasantly slow. If you want
 | ||
|   to have that workaround back, you can uncomment the line
 | ||
|   //#define WAIT_FOR_LOCK_AFTER_TUNING 1
 | ||
|   in VDR/dvbdevice.c.
 | ||
| - Adapted the 'sky' plugin to use the actual channel IDs, and to fetch EPG data
 | ||
|   from www.bleb.org.
 | ||
| - Limited automatic retuning to devices that actually provide the transponder
 | ||
|   (necessary for the 'sky' plugin).
 | ||
| - Fixed handling receivers in the 'sky' plugin, so that a recording on the same
 | ||
|   channel won't interrupt an ongoing Transfer Mode.
 | ||
| - Added subtable ID and TSDT handling to 'libsi' (thanks to Marcel Wiesweg).
 | ||
| - Fixed some Russian OSD texts (thanks to Vyacheslav Dikonov).
 | ||
| - Added the 'running status' to the EPG events. This is necessary for implementing
 | ||
|   the VPS function for recording.
 | ||
| - Removed the obsolete 'present' and 'following' handling from the EPG data.
 | ||
| - The EPG data is now always kept sorted chronologically in the internal data
 | ||
|   structures. This also means that any EPG data retrieved through the SVRDP
 | ||
|   command LSTE is guaranteed to be sorted by start time.
 | ||
| - Now using the 'running status' in the channel display, so that a programme
 | ||
|   that has an end time that is before the current time, but is still running,
 | ||
|   will still be shown in the display (provided the broadcasters handle the
 | ||
|   'running status' flag correctly). This also applies to programmes that have
 | ||
|   a start time that is in the future, but are already running.
 | ||
| - Implemented an "EPG linger time", which can be set to have older EPG information
 | ||
|   still displayed in the "Schedule" menu (thanks to Jaakko Hyv<79>tti).
 | ||
| - Added PDCDescriptor handling to 'libsi'.
 | ||
| - Implemented handling the VPS timestamps (aka "Programme Identification Label")
 | ||
|   for full VPS support for timers (provided the tv stations actually broadcast
 | ||
|   this information). The VPS time is displayed in the event info page if it exists
 | ||
|   and is different than the event's start time.
 | ||
| - Extended the SVDRP command LSTE to allow limiting the listed data to a given
 | ||
|   channel, the present or following events, or events at a given time (thanks to
 | ||
|   Thomas Heiligenmann).
 | ||
| - Fixed a typo in libsi/si.h (thanks to St<53>phane Est<73>-Gracias).
 | ||
| - Timers can now be set to use the VPS information to control recording a programme.
 | ||
|   The new setup options "Recording/Use VPS" and "Recording/VPS margin", as well as
 | ||
|   the "VPS" option in the individual timers, can be used to control this feature
 | ||
|   (see MANUAL for details).
 | ||
|   Note that this feature will certainly need a lot of testing before it can be
 | ||
|   called "safe"!
 | ||
| - The "Schedule" and "What's on now/next?" menus now have an additional column
 | ||
|   which displays information on whether there is a timer defined for an event,
 | ||
|   whether an event has a VPS time that's different than its start time, and
 | ||
|   whether an event is currently running (see MANUAL under "The "Schedule" Menu"
 | ||
|   for details).
 | ||
| 
 | ||
| 2004-03-14: Version 1.3.6
 | ||
| 
 | ||
| - Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed some descriptor handling in 'libsi' (thanks to St<53>phane Est<73>-Gracias).
 | ||
| - Fixed handling the current menu item (thanks to Marc Hoppe).
 | ||
| - Fixed assigning events to timers (they no longer get "stuck").
 | ||
| - Added log entries whenever the running status of an event changes (currently
 | ||
|   only logging the first 30 channels).
 | ||
| - Fixed handling timers in VPS margin if the EPG scan is turned on (the EPG scan
 | ||
|   switched the device away from the channel, so it wouldn't see the change of
 | ||
|   the running status).
 | ||
| - Fixed handling "itemized" texts in EPG data (thanks to St<53>phane Est<73>-Gracias
 | ||
|   for pointing out this problem, and Marcel Wiesweg for improving 'libsi').
 | ||
| - Fixed handling VPS times at year boundaries.
 | ||
| - Avoiding too many consecutive "ring buffer overflow" messages (which only
 | ||
|   slowed down performance even more).
 | ||
| - Taking the Sid into account when detecting version changes in processing the
 | ||
|   PMT (thanks to St<53>phane Est<73>-Gracias for pointing out this problem).
 | ||
| - Completed the Russian OSD texts (thanks to Vyacheslav Dikonov).
 | ||
| - Any newline characters in the 'description' of EPG events are now preserved
 | ||
|   to allow texts to be displayed the way the tv stations have formatted them.
 | ||
|   This was also necessary to better display itemized texts.
 | ||
| - Fixed detecting the running status in case an empty EPG event is broadcast (thanks
 | ||
|   to Michael Pennewi<77> for pointing this out).
 | ||
| - Improved performance when paging through very long menu lists.
 | ||
| - Removed cSchedule::GetEventNumber() and cSchedule::NumEvents(). There is now
 | ||
|   cSchedule::Events() that returns the list of events directly.
 | ||
| - Avoiding occasional bad responsiveness to user interaction caused by assigning
 | ||
|   events to timers.
 | ||
| - Now explicitly turning on the LNB power at startup, because newer drivers don't
 | ||
|   do this any more (thanks to Oliver Endriss for pointing this out).
 | ||
| 
 | ||
| 2004-05-16: Version 1.3.7
 | ||
| 
 | ||
| - Fixed a memory leak in thread handling when using NPTL (thanks to Jon Burgess).
 | ||
| - Fixed handling Setup.RecordDolbyDigital, which was broken since version 1.1.6.
 | ||
| - Fixed handling text lengths for itemized EPG texts (thanks to Marcel Wiesweg).
 | ||
| - Fixed the help for LSTE and LSTR (was broken in 1.3.6).
 | ||
| - Improved iso8859-7 fonts (thanks to Dimitrios Dimitrakos).
 | ||
| - Added some 3-letter language codes (thanks to Marcus M<>nnig).
 | ||
| - Added language code handling to the subtitling descriptor in 'libsi' (thanks to
 | ||
|   Pekka Virtanen).
 | ||
| - Moved several menu item classes from menu.c to menuitems.[hc] to make them
 | ||
|   available for plugins.
 | ||
| - The epg2html.pl script now handles '|' in description texts.
 | ||
| - The new setup option "OSD/Use small font" can be used to control the use of
 | ||
|   the small font (see MANUAL for details).
 | ||
| - Swapped osd.[hc] and osdbase.[hc] to have the virtual OSD base class named cOsd.
 | ||
|   Plugins may need to adjust their #include statements.
 | ||
| - Colors are now given as AARRGGBB instead of AABBGGRR. The values are mapped to
 | ||
|   the driver's (wrong) sequence in dvbosd.c (this should really be fixed in the
 | ||
|   driver, together with the endian problem).
 | ||
| - The new OSD setup parameters "Left" and "Top" can be used to define the top left
 | ||
|   corner of the OSD.
 | ||
| - The OSD size parameters are now in pixel (as opposed to formerly characters).
 | ||
|   When reading a 'setup.conf' file from an older version of VDR, the OSDwidth
 | ||
|   and OSDheight values will be converted to pixel automatically.
 | ||
| - The OSD is now fully device independent. See the comments in VDR/osd.h and the
 | ||
|   description in PLUGINS.html for information on how a plugin can implement an OSD
 | ||
|   display on arbitrary hardware.
 | ||
| - The OSD (actually its cBitmap class) can now handle XPM files. There are several
 | ||
|   XPM files in the VDR/symbols directory which can be used by skins (some of these
 | ||
|   have been taken from the "elchi" patch). See VDR/skinsttng.c for examples on how
 | ||
|   to use these.
 | ||
| - Due to the changes in the OSD handling the DEBUG_OSD option for a textual OSD
 | ||
|   has been dropped. There will be a plugin that implements a skin with this
 | ||
|   functionality later.
 | ||
| - The entire OSD display can now be implemented via "skins". See VDR/skins.[hc],
 | ||
|   VDR/skinclassic.[hc], VDR/skinsttng.[hc] and PLUGINS.html for information on how
 | ||
|   a plugin can implement its own skin. By default VDR comes with a "Classic" skin
 | ||
|   that implements the OSD display known from previous versions, and the new skin
 | ||
|   named "ST:TNG Panels", which is also the default skin now. The actual skin can
 | ||
|   be selected through "Setup/OSD/Skin".
 | ||
| - The colors used in a skin can now be configured using "themes". See PLUGINS.html
 | ||
|   for information on how a skin can make use of themes, and man vdr(5) for the
 | ||
|   structure of a theme file. The actual theme to use can be selected through
 | ||
|   "Setup/OSD/Theme".
 | ||
| - Added Croatian language texts (thanks to Drazen Dupor).
 | ||
|   NOTE: there is apparently a problem with the newly introduced iso8859-2 font,
 | ||
|   because as soon as Setup/OSD/Language is set to Croatian (currently the last one
 | ||
|   in the list) everything freezes and the vdr processes have to be killed with -9
 | ||
|   and the driver needs to be reloaded. Maybe somebody else can find out what's
 | ||
|   going wrong here...
 | ||
| - Added missing NULL checks when accessing sectionHandler in device.c (thanks to
 | ||
|   Pekka Virtanen).
 | ||
| - Fixed setting the time from the DVB data stream (thanks to Helmut Auer for
 | ||
|   pointing out a frequency/transponder handling mixup). This now also takes the
 | ||
|   actual source (sat, cable etc.) into account. Please go into "Setup/EPG" and
 | ||
|   set the "Set system time" and "Use time from transponder" parameters accordingly
 | ||
|   (this is necessary even if you have already set them before!).
 | ||
| 
 | ||
| 2004-05-23: Version 1.3.8
 | ||
| 
 | ||
| - Fixed a crash when switching the skin and having selected a non-default theme
 | ||
|   that is not available for the newly selected skin (thanks to Sascha Volkenandt
 | ||
|   for reporting this one).
 | ||
| - Fixed some issues with gcc 3.4 (thanks to Prakash K. Cheemplavam and Marcel
 | ||
|   Wiesweg).
 | ||
| - Added a hint to PLUGINS.html about how to name a plugin that implements a skin.
 | ||
| - Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Single shot timers and events now show the day of week (adopted with some changes
 | ||
|   from the "elchi" patch, originally introduced by Oskar Signell). Plugins that use
 | ||
|   cEvent::GetDateString() should note that this function now returns a longer
 | ||
|   string, including the day of week. The new function const char *WeekDayName(time_t t)
 | ||
|   can be called with a time_t value to get the day of week for that time.
 | ||
| - When processing XPM data, the color name "None" is now mapped to #00000000, which
 | ||
|   is "fully transparent" (suggested by Sascha Volkenandt).
 | ||
| - Fixed the OSD alignment in the SPU decoder (thanks to Miko Wohlgemuth for reporting
 | ||
|   this one and helping to test the fix).
 | ||
| - Fixed freezing picture when a recording starts on a system that always uses
 | ||
|   'Transfer Mode' (thanks to Michal Dobrzynski for reporting this one).
 | ||
| - Fixed a memory leak in NIT processing (thanks to Marcel Wiesweg).
 | ||
| - Added a few missing initializations (thanks to Marcel Wiesweg).
 | ||
| - Moved the declaration of cMenuText to VDR/menu.h to make it available to plugins.
 | ||
|   It now also has a SetText() function that can be used to dynamically set the text
 | ||
|   in an already existing cMenuText (both suggested by Stefan Huelswitt).
 | ||
| - Added play mode pmVideoOnly (thanks to Marcel Wiesweg).
 | ||
| - Added a missing cStatus::MsgOsdClear() to cDisplayChannel::~cDisplayChannel()
 | ||
|   (thanks to Oliver Endriss).
 | ||
| - No longer displaying unused color buttons in the "Classic VDR" skin (thanks to
 | ||
|   Oliver Endriss for reporting this one).
 | ||
| - Added some missing cStatus::MsgOsdTextItem() calls (thanks to Oliver Endriss for
 | ||
|   reporting this one).
 | ||
| 
 | ||
| 2004-05-31: Version 1.3.9
 | ||
| 
 | ||
| - Completed Croatian language texts (thanks to Drazen Dupor).
 | ||
| - New iso8859-2 font to fix the problem with program freezes (thanks to Drazen Dupor).
 | ||
| - Implemented a default cRemote::Initialize() that waits 10 seconds for a keypress
 | ||
|   in order to prevent a "hangup" in case, e.g., the LIRC driver is not loaded (thanks
 | ||
|   to Helmut Auer).
 | ||
| - Updated 'channels.conf.terr' for Hannover (thanks to Peter Waechtler).
 | ||
| - cBitmap::DrawBitmap() now also resets the palette if the entire bitmap area is
 | ||
|   covered (suggested by Sascha Volkenandt).
 | ||
| - Fixed setting the title in the replay display of the "Classic VDR" skin in case
 | ||
|   a shorter title is set after a longer one (thanks to Stefan Huelswitt for
 | ||
|   reporting this one).
 | ||
| - Now using more separate areas in the "ST:TNG Panels" skin to allow a theme to
 | ||
|   use more independent clrMenu* colors.
 | ||
| - Fixed removing the "scanning recordings..." message in case the video directory
 | ||
|   is empty (thanks to Andreas Regel for reporting this one).
 | ||
| - Added SetMessage() functions to the Replay and Channel skin functions. Plugins
 | ||
|   that implement skins will need to implement these functions. This fixes a missing
 | ||
|   "Editing process finished" message (thanks to Oliver Endriss for reporting this
 | ||
|   one).
 | ||
| - Fixed the height of the channel display in the "Classic VDR" skin.
 | ||
| - Fixed handling descriptor loops in 'libsi', which had sometimes caused invalid
 | ||
|   CA ids to be added to the channel definitions (thanks to Wayne Keer for reporting
 | ||
|   this one, and Marcel Wiesweg for fixing it).
 | ||
| - Fixed handling colors in cDvbSpuPalette::yuv2rgb() (thanks to Marco Schl<68><6C>ler).
 | ||
| - Made some functions of cFont virtual to allow implementing dummy fonts for the
 | ||
|   'curses' skin.
 | ||
| - The new plugin 'skincurses' re-implements the functionality that was previously
 | ||
|   available by compiling VDR with DEBUG_OSD. Some things may not yet work as they
 | ||
|   should, but it's a starting point.
 | ||
| 
 | ||
| 2004-06-06: Version 1.3.10
 | ||
| 
 | ||
| - Fixed some default parameters in 'skincurses'.
 | ||
| - Fixed cBitmap::DrawPixel(), which messed with other bitmaps' palettes in case
 | ||
|   the pixel coordinates were outside this bitmap (thanks to Sascha Volkenandt for
 | ||
|   reporting this one).
 | ||
| - The cBitmap::DrawText() function now doesn't set any background pixels if the
 | ||
|   given background color is clrTransparent. This allows drawing "transparent"
 | ||
|   texts (suggested by Sascha Volkenandt).
 | ||
| - The cBitmap::SetXpm() function now ignores unused "none" color entries, which
 | ||
|   some broken graphics tools write into XPM files (suggested by Sascha Volkenandt).
 | ||
| - No longer setting lnb voltage if the frontend is not DVB-S (thanks to Marco
 | ||
|   Schl<68><6C>ler).
 | ||
| - Fixed displaying the current channel when switching via the SVDRP command CHAN
 | ||
|   (thanks to J<>rgen Schmitz for reporting this one).
 | ||
| - Fixed missing audio after replaying a DVD (thanks to Marco Schl<68><6C>ler).
 | ||
| - Added a note about the default assignment of the color keys to MANUAL.
 | ||
| - Added a note about NPTL ("Native Posix Thread Library") to the INSTALL file
 | ||
|   (apparently the "fix" in version 1.3.0 didn't really fix this).
 | ||
| - Modified 'libsi' to require callers to state the buffer sizes when getting
 | ||
|   strings in order to avoid buffer overflows (thanks to Philip Lawatsch for
 | ||
|   debugging a buffer overflow in eit.c).
 | ||
| 
 | ||
| 2004-06-19: Version 1.3.11
 | ||
| 
 | ||
| - In order to avoid problems on NPTL systems, VDR now checks for the presence
 | ||
|   of NPTL at program start, and if it is, exits and tells the user to do
 | ||
|   'export LD_ASSUME_KERNEL=2.4.1' before starting VDR.
 | ||
| - Revisited the "Fixed missing audio after replaying a DVD" change because it
 | ||
|   introduced a sound disturbance when switching between channels on the same
 | ||
|   transponder (thanks to Marco Schl<68><6C>ler).
 | ||
| - In order to avoid problems on UTF-8 systems, VDR now checks for the presence
 | ||
|   of UTF-8 at program start, and if it is, exits and tells the user to turn off
 | ||
|   UTF-8 before starting VDR (thanks to Ludwig Nussel for pointing out a problem
 | ||
|   with systems that are set to use UTF-8). There are also problems in case the
 | ||
|   video partition is mounted with "iocharset=utf8" (thanks to J<>rg Knitter for
 | ||
|   reporting this one).
 | ||
|   Please also read the "IMPORTANT NOTES" section in the INSTALL file!
 | ||
| - Some changes to the SPU decoder interface (thanks to Sven Goethel).
 | ||
| - Some improvements in cOsd creation (thanks to some suggestions by Jouni Karvo).
 | ||
| - Fixed calculating the OSD width and height (thanks to Olaf Henkel for reporting
 | ||
|   a problem with long event texts in the "Classic VDR" skin).
 | ||
| - Fixed switching channels while an encrypted channel is being recorded, because the
 | ||
|   channel was switched if the new channel was on the same transponder and was
 | ||
|   a radio channel or an unencrypted channel (thanks to Martin Dauskardt for reporting
 | ||
|   this one).
 | ||
| - No longer using the external 'find' command to scan the video directory for
 | ||
|   recordings (based on a suggestion by Mirko D<>lle).
 | ||
| - The list of recordings is now kept statically in memory to avoid long delays
 | ||
|   when opening the "Recordings" menu. As a side effect, external modifications to
 | ||
|   the video directory are no longer immediately reflected in the "Recordings" menu.
 | ||
|   If a plugin manipulates the video directory in any way, it can call the function
 | ||
|   Recordings.TriggerUpdate() to trigger an update of the list of recordings.
 | ||
|   If some external tool manipulates the video directory, it can touch the file
 | ||
|   '.update' in the video directory to trigger an update of the list of recordings.
 | ||
| - Fixed a memory leak in theme description handling (thanks to Sascha Volkenandt).
 | ||
| - Added cDevice::Flush() to make sure that all data in the video card's buffers
 | ||
|   has been processed (thanks to Reinhard Nissl). Currently this is not yet actually
 | ||
|   implemented for FF DVB cards.
 | ||
| - Fixed handling the color button texts in cMenuEditStrItem (thanks to Maynard
 | ||
|   Cedric for reporting this one).
 | ||
| - Fixed the description of cRingBufferLinear (thanks to Ludwig Nussel for pointing
 | ||
|   out this one).
 | ||
| - Fixed cRingBufferLinear::Get() in case the buffer wraps around (thanks to Ludwig
 | ||
|   Nussel for reporting this one).
 | ||
| 
 | ||
| 2004-07-18: Version 1.3.12
 | ||
| 
 | ||
| - Removed all error messages from cRecordings::ScanVideoDir() and just skipping
 | ||
|   entries that cause errors in order to avoid failure in case of things like
 | ||
|   broken links etc.
 | ||
| - The function cTimers::SetEvents() now immediately returns if there is some user
 | ||
|   input.
 | ||
| - Fixed handling menu status messages when the list contents is scrolled (thanks to
 | ||
|   Alfred Zastrow for reporting this one).
 | ||
| - Fixed checking the last area for misalignment in cOsd::CanHandleAreas() (thanks
 | ||
|   to Reinhard Nissl for reporting this one).
 | ||
| - No longer adding section filters to the list of filters if they can't be opened
 | ||
|   (thanks to Marco Schl<68><6C>ler for pointing this out).
 | ||
| - Fixed handling error case '-1' when polling section filters (thanks to Marco
 | ||
|   Schl<68><6C>ler).
 | ||
| - Fixed handling error case '-1' when polling CAM connections.
 | ||
| - Making sure the OSD reports oeWrongAlignment errors before any oeAreasOverlap
 | ||
|   error (suggested by Reinhard Nissl).
 | ||
| - Avoiding flashing effects in the OSD of full featured DVB cards by explicitly
 | ||
|   clearing the OSD windows before opening them (suggested by Marco Schl<68><6C>ler).
 | ||
| - Experimental support for NVOD channels. Currently these channels are detected
 | ||
|   and linked to their "base" channels using the same mechanisms as for the
 | ||
|   "linked services" (let's see if this is useful). Thanks to Mike parker for
 | ||
|   helping to test this. Also used some input from the 'autopid' patch by Andreas
 | ||
|   Schultz).
 | ||
| - Now storing the name of the service provider (aka "bouquet") in the channel
 | ||
|   name, separated by a semicolon (see man vdr(5) for details). Explicit usage
 | ||
|   of the various parts of the channel name is yet to come.
 | ||
| - The 'radio' channel icon is now only displayed in the ST:TNG skin if the channel
 | ||
|   actually has an APID.
 | ||
| 
 | ||
| 2004-10-17: Version 1.3.13
 | ||
| 
 | ||
| - Fixed checking for the presence of NPTL (thanks to Jouni Karvo).
 | ||
| - Making sure section filters are only set if the device actually has a lock
 | ||
|   (thanks to Andreas Share for pointing this out).
 | ||
| - Fixed a possible NULL pointer assignment in cMenuText::SetText() (thanks to
 | ||
|   Marco Schl<68>ssler).
 | ||
| - Fixed a crash in case the last line in channels.conf is a group separator and
 | ||
|   that group is selected in the channel display (thanks to Dick Streefland).
 | ||
| - Added cRingBufferLinear::Read() to read directly from a file handle into the
 | ||
|   ring buffer.
 | ||
| - Using timeouts in ring buffers to avoid 'usleep()'.
 | ||
| - Clearing the 'Transfer Mode' ring buffer after clearing the device to avoid
 | ||
|   an "almost full" ring buffer.
 | ||
| - Removed locking from cRingBufferLinear for better performance under high load.
 | ||
| - Using a cRingBufferLinear in cRemux to avoid unnecessary copying of data.
 | ||
| - Using a cRingBufferLinear in cTSBuffer and filling it in a separate thread
 | ||
|   to avoid buffer overflows. Plugins using cTSBuffer will need to remove the
 | ||
|   call to the now obsolete Read() function (see cDvbDevice::GetTSPacket() for
 | ||
|   the new usage of cTSBuffer).
 | ||
| - cRemux::Process() has been split into Put(), Get() and Del() to allow for a
 | ||
|   better decoupling of the remuxing and disk writing process. Plugins using
 | ||
|   cRemux will need to be modified accordingly.
 | ||
| - The actual disk writing in recordings is now done in a separate thread to
 | ||
|   improve the overall throughput.
 | ||
| - Changed cRemux so that it returns the maximum available amount of data with
 | ||
|   each call, not just 2048 byte.
 | ||
| - Added a visual display of all cRingBufferLinear buffers for debugging. To
 | ||
|   activate it, define DEBUGRINGBUFFERS in ringbuffer.h.
 | ||
| - Instead of cCondVar now using the new cCondWait (which also avoids a possible
 | ||
|   "near miss" condition; thanks to Sascha Volkenandt for pointing out this one).
 | ||
|   cCondVar is still present for plugins that use it (and VDR itself also still
 | ||
|   uses it in cRemote).
 | ||
| - The cRingBuffer now does EnableGet()/EnablePut() only if the buffer is more than
 | ||
|   one third full or empty, respectively. This dramatically improves recording
 | ||
|   performance and reduces system load (thanks to Marco Schl<68><6C>ler for doing some
 | ||
|   testing regarding buffer performance and giving me some hints that finally led
 | ||
|   to finding out that this was the basic problem causing buffer overflows).
 | ||
| - Improved Transfer Mode (thanks to Marco Schl<68><6C>ler for suggestions and testing).
 | ||
| - Fixed a possible crash with inconsistent SI data (thanks to Marcel Wiesweg).
 | ||
| - Fixed showing the replay mode if the OSD is currently in use (thanks to Kimmo
 | ||
|   Tykkala for pointing out this problem).
 | ||
| - cOsdProvider::NewOsd() now always returns a valid pointer, even if the OSD is
 | ||
|   currently in use (it will then return a dummy cOsd object and write a message to
 | ||
|   the log file).
 | ||
| - Added Estonian language texts (thanks to Arthur Konovalov).
 | ||
| - Fixed 'newplugin' and libsi/Makefile to use the compiler defined in $(CXX) for
 | ||
|   generating file dependencies (thanks to Andreas Brachold).
 | ||
| - Moved the initialization of aPid1 and aPid2 to the beginning of cDvbDevice::cDvbDevice()
 | ||
|   to have them set in case a patch references them (thanks to Wayne Keer for pointing
 | ||
|   this out).
 | ||
| - Completed the Russian OSD texts (thanks to Vyacheslav Dikonov).
 | ||
| - Avoiding unnecessary section filter start/stops (thanks to Marco Schl<68><6C>ler).
 | ||
| - Made the "Channel not available!" message and mtInfo instead of mtError (suggested
 | ||
|   by Wayne Keer).
 | ||
| - Made volume control more linear (thanks to Emil Naepflein and Udo Richter).
 | ||
| - Now skipping code table info in SI data (suggested by Milos Kapoun).
 | ||
| - Added missing Czech characters to fontosd-iso8859-2.c (thanks to Milos Kapoun).
 | ||
| - Fixed a crash in the time search mechanism (reported by Reinhard Nissl).
 | ||
| - If one PID can't be added, the whole cDevice::AttachReceiver() will now fail
 | ||
|   and all PIDs added so far will be deleted (thanks to Marco Schl<68><6C>ler for
 | ||
|   pointing out this one).
 | ||
| - Now only saving channels.conf after a modification made by the user (avoids
 | ||
|   lots of disk access due to automatic channel updates). Automatic channel
 | ||
|   modifications will be saved every 10 minutes if no recording is currently
 | ||
|   active.
 | ||
| - Removed the 'Log' parameter from the cChannel::Set... functions. Instead
 | ||
|   checking if the channel has a non-zero number.
 | ||
| - Updated 'channels.conf.terr' for Hannover (thanks to Sven Kreiensen).
 | ||
| 
 | ||
| 2004-10-24: Version 1.3.14
 | ||
| 
 | ||
| - Fixed detecting transponder lock in cDvbTuner (based on a patch from Stefan
 | ||
|   Meyknecht).
 | ||
| - What was previously marked with WAIT_FOR_LOCK_AFTER_TUNING is now permanently
 | ||
|   active and uses a cCondVar to signal when a transponder is locked.
 | ||
| - Added some missing 'const' to cChannel.
 | ||
| - Added a sample setup for 'DisiCon-4 Single Cable Network' to 'diseqc.conf'
 | ||
|   (thanks to Oliver Endriss).
 | ||
| - Fixed attaching a cPlayer to a cDevice, so that 'Operation not permitted'
 | ||
|   errors don't occur any more (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed a case where the resultBuffer in cRemux ran full before getting a sync.
 | ||
| - Removed the usleep() call from cDvbPlayer::Action() to make VDR run on NPTL
 | ||
|   systems (thanks to Alfred Zastrow). The NPTL check at startup has also been
 | ||
|   removed.
 | ||
| - Taking the complete size of available data into account when deciding whether
 | ||
|   to clear the transfer buffer to avoid overflows (thanks to Reinhard Nissl).
 | ||
| - Updated Romanian language texts and the iso8859-2 fonts (thanks to Lucian Muresan).
 | ||
| - Now actually using the iso8859-15 fonts (thanks to Lucian Muresan).
 | ||
| - Some minor code cleanups (thanks to Prakash K. Cheemplavam).
 | ||
| - Fixed missing cleanup at program exit in case there is a problem with a plugin
 | ||
|   (thanks to Mattias Gr<47>nlund for pointing this out).
 | ||
| - Increased the required free buffer space in the resultBuffer of cRemux to
 | ||
|   2 * IPACKS to avoid a buffer overflow in case a cTS2PES writes one complete
 | ||
|   packet and then (within processing the same TS packet) wants to write another
 | ||
|   small packet.
 | ||
| - Removed the signal handler and WakeUp() call from cThread (it is no longer
 | ||
|   needed).
 | ||
| - Added some checks when canceling a thread and removed the usleep() in
 | ||
|   cThread::Start() (suggested by Ludwig Nussel). Also removed 'running' from
 | ||
|   cThread and using only childTid to indicate whether a thread is actually
 | ||
|   running.
 | ||
| - Added cCondWait::Sleep() and using it to replace all usleep() calls (based
 | ||
|   on a suggestion by Werner Fink).
 | ||
| - Only assigning events to timers if the related schedule has actually been
 | ||
|   modified.
 | ||
| - When searching for the present event, the running status is now only taken
 | ||
|   into account if the event has been "seen" within the past 30 seconds.
 | ||
|   This avoids shortly seeing the wrong events in the channel display when
 | ||
|   switching to a channel that hasn't been tuned to in a while.
 | ||
| 
 | ||
| 2004-11-01: Version 1.3.15
 | ||
| 
 | ||
| - Fixed some typos in the Makefile's 'font' target (thanks to Uwe Hanke).
 | ||
| - Added more checks and polling when getting frontend events (based on a patch
 | ||
|   from Werner Fink).
 | ||
| - No longer explicitly waiting for a tuner lock when switching channels
 | ||
|   (apparently setting "live" PIDs before the tuner is locked doesn't hurt).
 | ||
|   Moved the wait into cDevice::AttachReceiver() instead.
 | ||
| - Immediately displaying the new channel info when switching channel groups.
 | ||
| - Moved the main program loop variables further up to allow compilation with
 | ||
|   older compiler versions (thanks to Marco Schl<68><6C>ler for reporting this one).
 | ||
| - Now calling pthread_cond_broadcast() in the destructor of cCondWait and
 | ||
|   cCondVar to make sure any sleepers will wake up (suggested by Werner Fink).
 | ||
|   Also using pthread_cond_broadcast() instead of pthread_cond_signal() in
 | ||
|   cCondWait, in case there is more than one sleeper.
 | ||
| - Making sure that timers and channels are only saved together, in a consistent
 | ||
|   manner (thanks to Mirko D<>lle for reporting a problem with inconsistent
 | ||
|   channel and timer lists).
 | ||
| - Now handling the channel name, short name and provider separately. cChannel
 | ||
|   therefore has two new functions, ShortName() and Provider(). ShortName()
 | ||
|   can be used to display a short version of the name (in case such a version
 | ||
|   is available). The optional boolean parameter of ShortName() can be set to
 | ||
|   true to make it return the name, if no short name is available.
 | ||
|   The sequence of 'name' and 'short name' in the channels.conf file has been
 | ||
|   swapped (see man vdr(5)).
 | ||
| - Added the 'portal name' to cChannels (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed handling key codes that start with 0x1B in the KBD remote control code.
 | ||
| - Now using qsort() to sort cListBase lists. For this, the virtual function
 | ||
|   cListObject::operator<() has been replaced with cListObject::Compare().
 | ||
|   Plugins that implement derived cListObject classes may need to adjust their
 | ||
|   code.
 | ||
| - The "Channels" menu can now be sorted "by number" (default), "by name" and
 | ||
|   "by provider". While in the "Channels" menu, pressing the '0' key switches
 | ||
|   through these modes.
 | ||
| - Fixed the buffer size in cRecording::SortName().
 | ||
| - Now displaying the name of the remote control for which the keys are being
 | ||
|   learned inside the menu to avoid overwriting the date/time in the 'classic'
 | ||
|   skin (thanks to Oliver Endriss for reporting this one).
 | ||
| 
 | ||
| 2004-11-14: Version 1.3.16
 | ||
| 
 | ||
| - Fixed cChannel::SetName() in case only the ShortName or Provider has changed
 | ||
|   (thanks to Sascha Volkenandt for reporting this one).
 | ||
| - Added Danish language texts (thanks to Mogens Elneff).
 | ||
| - Reactivated the NPTL check at startup because there appear to be still
 | ||
|   unsolved problems when running on NPTL systems.
 | ||
| - Added missing calls to cStatus::MsgOsdClear() in cSkins::Message() (thanks
 | ||
|   to Joachim Wilke for reporting this one, and Andreas Regel for additional
 | ||
|   input).
 | ||
| - Fixed the cDvbSpuDecoder (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed handling of pmAudioOnlyBlack (thanks to Stefan Huelswitt).
 | ||
| - Fixed a short glitch when starting a recording on the primary device while
 | ||
|   in replay or transfer mode (thanks to Marco Schl<68><6C>ler).
 | ||
| - Added missing initialization of cEvent::seen.
 | ||
| - Checking PID language codes for ISO 639 compliance to avoid problems with
 | ||
|   funny characters. Invalid language codes will be stored as "???".
 | ||
| - The '0' key now toggles the "Day" item in the "Timers" menu between "single
 | ||
|   shot" and "repeating". The keys '1'...'7' can be used to toggle the individual
 | ||
|   days ('1' is Monday). Thanks to Sascha Klek for reporting a problem with the
 | ||
|   '0' key in the "Day" item of the "Timers" menu.
 | ||
| 
 | ||
| 2004-11-21: Version 1.3.17
 | ||
| 
 | ||
| - Fixed cRemux::ScanVideoPacket() to make sure it doesn't access memory beyond
 | ||
|   the end of the given buffer, which has caused some unjustified "unknown
 | ||
|   picture type errors" (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed a possible crash when pausing live video and the recording was unable
 | ||
|   to start, maybe because there was no lock on the device (thanks to Andreas
 | ||
|   Brugger for reporting this one).
 | ||
| - Fixed some characters in the iso8859-2 font file (thanks to Dino Ravnic).
 | ||
| - Fixed some errors in the Croatian language texts (thanks to Dino Ravnic).
 | ||
| - Fixed a possible recursion in cControl::Shutdown() (thanks to Sascha Volkenandt).
 | ||
| - Now setting the VPID before the APID in live mode to avoid unnecessary
 | ||
|   overhead in the firmware (thanks to Werner Fink).
 | ||
| - Now checking available OSD memory at runtime (thanks to Oliver Endriss).
 | ||
| - Fixed some typos in the Makefile's 'font' target (thanks to Olaf Titz).
 | ||
| - Fixed handling childTid in cThread to avoid possible race conditions (thanks
 | ||
|   to Stefan Huelswitt for pointing this out).
 | ||
| - Fixed toggling the "Day" item in the "Timers" menu, so that it selects the
 | ||
|   right day of week for timers in the future.
 | ||
| - Some improvements to cPoller (thanks to Marco Schl<68><6C>ler).
 | ||
| 
 | ||
| 2005-01-09: Version 1.3.18
 | ||
| 
 | ||
| - Removed an unused variable from cTimer::GetWDayFromMDay() (thanks to Wayne Keer
 | ||
|   for reporting this one).
 | ||
| - Some more changes to the 'childTid' handling in cThread (based on suggestions by
 | ||
|   Stefan Huelswitt).
 | ||
| - Fixed the spelling of 'canceling' (thanks to Wayne Keer for reporting this one).
 | ||
| - Re-introduced a sleep to cDvbPlayer::Action() to avoid high CPU load in still
 | ||
|   picture mode (thanks to Reinhard Nissl for reporting this one).
 | ||
| - Fixed a possible race condition in generating the DVB device names (thanks to
 | ||
|   Rainer Zocholl for reporting this one).
 | ||
| - Changed the way PES packets are played to allow replay of AC3 sound over the
 | ||
|   full featured DVB cards (partially based on a patch from Werner Fink).
 | ||
|   + The new function cDevice::PlayPes() is now called with the complete PES data
 | ||
|     stream and calls PlayVideo() and PlayAudio() as necessary.
 | ||
|   + cDevice::PlayVideo() is now only called with actual video PES packets.
 | ||
|   + cDevice::PlayAudio() is now called with the actual audio PES packets, which
 | ||
|     can be either "normal" audio or AC3 data. You need at least firmware version
 | ||
|     0x261d to replay AC3 sound over a full featured DVB card. This function now
 | ||
|     has an 'int' return value.
 | ||
|   + PlayAudio() of derived cDevice classes shall no longer call the base class
 | ||
|     function. It shall just play the given data as audio.
 | ||
|   + cPlayer::PlayVideo() and cPlayer::PlayAudio() are now obsolete and have been
 | ||
|     replaced with cPlayer::PlayPes().
 | ||
|   + All StripAudioPackets() functions are now obsolete. The functionality has been
 | ||
|     moved into cDevice::PlayPes(), where only the video and audio packets that are
 | ||
|     actually required will be processed.
 | ||
|   + All audio track handling is now done by cDevice; cTransfer and cDvbPlayer no
 | ||
|     longer care about audio tracks. cPlayer, however, still has the virtual hooks
 | ||
|     for audio track handling in order to allow plugins to implement players that
 | ||
|     have their own idea about this.
 | ||
|   + cChannel::[AD]pid[12]() have been replaced with cChannel::[AD]pid(int i) to
 | ||
|     allow access to all available PIDs.
 | ||
| - Escaped the '-' and '<27>' characters in the man pages (thanks to Darren Salt for
 | ||
|   pointing this out).
 | ||
| - Completed the Italian OSD texts (thanks to Sean Carlos).
 | ||
| - Fixed setting 'synced' in cRemux when recording radio channels (thanks to
 | ||
|   Laurence Abbott).
 | ||
| - Removed the LOCK_THREAD from the LIRC thread (thanks to Ludwig Nussel).
 | ||
| - Fixed genfontfile.c (sometimes the character width was wrong, and the codes were
 | ||
|   shifted one too far to the left).
 | ||
| - Fixed the character width and shifted the codes one to the right in all font
 | ||
|   files.
 | ||
| - Renamed font???.c to font???-iso8859-1.c for symmetry.
 | ||
| - Switched the character set to iso8859-15 for English, German and Finnish (thanks
 | ||
|   to Andreas Brugger for reporting the missing Euro sign in iso8859-1).
 | ||
| - Added 'channels.conf.terr' entries for L<>beck (thanks to Stefan Hu<48>feldt).
 | ||
| - Fixed a race condition in starting a thread (thanks to Reinhard Nissl for
 | ||
|   reporting this one).
 | ||
| - Replaced non-threadsafe library functions with their threadsafe versions (thanks
 | ||
|   to Rainer Zocholl for pointing this out).
 | ||
| - Other non-threadsafe functions have been replaced by threadsafe classes that hide
 | ||
|   the actual buffering. In particular these are:
 | ||
|   readdir() -> cReadDir
 | ||
|   readline() -> cReadLine
 | ||
| - Several formerly non-threadsafe functions now have a return type of cString:
 | ||
|   cChannel::ToText()
 | ||
|   tChannelID::ToString()
 | ||
|   cEvent::GetDateString()
 | ||
|   cEvent::GetTimeString()
 | ||
|   cEvent::GetEndTimeString()
 | ||
|   cEvent::GetVpsString()
 | ||
|   cMark::ToText()
 | ||
|   cTimer::ToText()
 | ||
|   cSource::ToString()
 | ||
|   cTimer::PrintDay()
 | ||
|   cTimer::PrintFirstDay()
 | ||
|   PrefixVideoFileName()
 | ||
|   IndexToHMSF()
 | ||
|   ChannelString()
 | ||
|   strescape()
 | ||
|   AddDirectory()
 | ||
|   itoa()
 | ||
|   WeekDayName()
 | ||
|   DayDateTime()
 | ||
|   When using these functions in a 'const char *' context there is nothing special
 | ||
|   to consider, except that you can no longer have a pointer to the return value,
 | ||
|   as in
 | ||
|   const char *date = DayDateTime();
 | ||
|   Although this will compile without error message, the resulting 'date' will not
 | ||
|   be valid after this line. Use this instead:
 | ||
|   cString date = DayDateTime();
 | ||
|   In a 'const void *' context (as in printf() etc.) the result needs to be
 | ||
|   dereferenced with a '*', as in
 | ||
|   printf("%s", *DayDateTime());
 | ||
|   to make it a 'const char *'.
 | ||
| - Removed delay_ms(), using cCondWait::SleepMs() instead.
 | ||
| - Replaced time_ms() with a threadsafe and non-overflowing cTimeMs (thanks to Rainer
 | ||
|   Zocholl for pointing out this problem).
 | ||
| - Added cDevice::mutexReceiver to avoid a race condition when attaching/detaching
 | ||
|   receivers from different threads.
 | ||
| - The new remote control button "Audio" can be used to switch between different
 | ||
|   audio tracks. The "Green" button in the "Main" menu has been changed from "Language"
 | ||
|   to "Audio", since it now also controls switching between normal and Dolby Digital
 | ||
|   audio tracks (see MANUAL for details).
 | ||
| - The description of the audio tracks is now taken from the "component descriptors"
 | ||
|   that are broadcast in the EPG data. However (as no big surprise), not all channels
 | ||
|   actually provide useful data here, so there are now some additional EPG bugfixes,
 | ||
|   which can be activated by setting the "EPG bugfix level" to 3.
 | ||
| - The format of the 'epg.data' files has been extended by the new tag 'X', which
 | ||
|   contains the stream components of an event (see man vdr(5) for details).
 | ||
| - The cStatus class now has the new member function SetAudioTrack(), which can be
 | ||
|   used to get notified when the audio track has been switched, and the new member
 | ||
|   function SetAudioChannel() which is called when the audio channel is changed.
 | ||
| - Skins need to implement the new cSkinDisplayTrack class to display the audio
 | ||
|   track menu.
 | ||
| - The ST:TNG skin now displays the current audio track description (if any) at the
 | ||
|   bottom left side.
 | ||
| - The new setup option "DVB/Audio languages" can be used to control which audio
 | ||
|   language shall be selected in case a channel broadcasts in different languages
 | ||
|   (see MANUAL for details).
 | ||
| - The "Left" and "Right" keys in the "Audio" menu can be used to switch between
 | ||
|   the left and right stereo channels in case there are different audio tracks
 | ||
|   in these channels (see MANUAL for details).
 | ||
| - Fixed a possible race condition in cDevice::Action() (thanks to Mattias Gr<47>nlund).
 | ||
| - Fixed the default quality value when grabbing a JPEG image (thanks to Patrick
 | ||
|   Gleichmann).
 | ||
| - Fixed deleting a menu item in case the next item is not selectable (thanks to
 | ||
|   Dino Ravnic).
 | ||
| - Implemented displaying mandatory subtitles in the SPU decoder (thanks to Marco
 | ||
|   Schl<68><6C>ler).
 | ||
| - The setup option "Recording/Record Dolby Digital" has been renamed and moved to
 | ||
|   "DVB/Use Dolby Digital". It now controls whether Dolby Digital is recorded and
 | ||
|   whether an available DD audio track will appear in the "Audio" menu.
 | ||
| - Added support for circular polarization (thanks to Jonan Santiago).
 | ||
| - Thanks to Werner Fink, Reinhard Nissl, Sascha Volkenandt and Bj<42>rnar Nilsen for
 | ||
|   their support in testing and fine tuning this version.
 | ||
| 
 | ||
| 2005-01-23: Version 1.3.19
 | ||
| 
 | ||
| - Making sure at least the default skin is available at program start in case a
 | ||
|   plugin needs to issue an error message (thanks to Achim Tuffentshammer for
 | ||
|   reporting a crash in such a case). Also checking if there is a current skin
 | ||
|   in cSkins::Message().
 | ||
| - Completed the Finnish OSD texts and fixed internationalization of the text
 | ||
|   for "Setup/DVB/Audio language(s)" (thanks to Rolf Ahrenberg).
 | ||
| - Completed the Estonian OSD texts and switched to iso8859-13 character set
 | ||
|   (thanks to Arthur Konovalov).
 | ||
| - Made cCondWait::SleepMs() sleep at least 3ms to avoid a possible busy wait.
 | ||
| - Fixed canceling the LIRC thread (thanks to Marco Schl<68><6C>ler for pointing out
 | ||
|   this one).
 | ||
| - The "Green" button in the "Main" menu is now always "Audio", since the audio
 | ||
|   channel might be changed even if there is only one actual audio PID.
 | ||
| - Fixed handling the '-E' option which was broken in version 1.3.18 (thanks to
 | ||
|   Christian Jacobsen for reporting this one).
 | ||
| - Added 'channels.conf.terr' entries for Mainz (thanks to Michael Heyse).
 | ||
| - Implemented cDolbyRepacker for better handling of Dolby Digital PES packets
 | ||
|   (thanks to Reinhard Nissl).
 | ||
| - Fixed playing files with PES packets longer than 2048 byte through the full
 | ||
|   featured DVB card (thanks to Marco Kremer for reporting this one and providing
 | ||
|   a test sample).
 | ||
| - Recording and Transfer Mode now handle more than 2 audio PIDs. For this the
 | ||
|   interfaces of the following functions have been changed:
 | ||
|   cTransferControl::cTransferControl()
 | ||
|   cTransfer::cTransfer()
 | ||
|   cRecorder::cRecorder()
 | ||
|   cReceiver::cReceiver()
 | ||
|   cRemux::cRemux()
 | ||
| - Fixed a possible race condition in cDevice::Action() and cTSBuffer::Action()
 | ||
|   (thanks to Stefan Huelswitt).
 | ||
| - Extended some buffer sizes to allow handling HDTV streams (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| - Added 'channels.conf.terr' entries for D<>sseldorf and K<>ln (thanks to Walter Koch).
 | ||
| - Falling back to 'stereo' when switching channels in case the user had switched
 | ||
|   to 'left' or 'right' (suggested by Rolf Groppe).
 | ||
| - Completed the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Recording and Transfer Mode can now handle up to 8 Dolby Digital tracks (thanks
 | ||
|   to Marco Schl<68><6C>ler for a patch that implements substream handling into
 | ||
|   cDevice::PlayPesPacket(), and Reinhard Nissl for adding substream handling to
 | ||
|   cDolbyRepacker).
 | ||
| - Added PlayPes(NULL, 0) to cTransfer::Action() when clearing the transfer buffer
 | ||
|   to avoid overflows (thanks to Marco Schl<68><6C>ler for pointing this out).
 | ||
| 
 | ||
| 2005-02-06: Version 1.3.20
 | ||
| 
 | ||
| - Fixed displaying the "Audio" menu with the "Green" button from the "Main" menu
 | ||
|   in case there is only one audio track (thanks to Sascha Volkenandt for reporting
 | ||
|   this one).
 | ||
| - Now setting primaryDevice = NULL before deleting the devices in cDevice::Shutdown()
 | ||
|   to avoid problems in case other threads access it (thanks to Wolfgang Rohdewald for
 | ||
|   pointing this out).
 | ||
| - Fixed a buffer overflow in case a station defines all 32 audio PIDs (thanks to
 | ||
|   Christian Jacobsen for reporting this one).
 | ||
| - Fixed masking SubStreamType in cDevice::PlayPesPacket() (thanks to Werner Fink
 | ||
|   for pointing out this one).
 | ||
| - The new function cPlugin::Stop() shall be used to stop any background activities
 | ||
|   of a plugin. Previously this was done in the plugin's destructor, but it is
 | ||
|   better to do this in a dedicated function that can be called early when shutting
 | ||
|   down.
 | ||
| - Moved the call to SetAudioChannel(0) into cDevice::ClrAvailableTracks() to have it
 | ||
|   executed also when starting a replay.
 | ||
| - Completed the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Completed the French OSD texts (thanks to Olivier Jacques).
 | ||
| - The new setup option "OSD/Channel info time" can be used to define the time after
 | ||
|   which the channel display is removed if no key has been pressed (thanks to
 | ||
|   Olivier Jacques).
 | ||
| - Modified cDolbyRepacker to make sure PES packets don't exceed the requested length
 | ||
|   (thanks to Reinhard Nissl).
 | ||
| - Fixed several memory leaks that were introduced through the use of cString (thanks
 | ||
|   to Stefan Huelswitt for reporting these).
 | ||
| - Added CMD_SPU_CHG_COLCON to cDvbSpuDecoder::setTime() (thanks to Marco Schl<68><6C>ler).
 | ||
| - Making sure the current audio track is actually one of the ones available in a
 | ||
|   recording (thanks to Sascha Volkenandt for reporting a problem when starting
 | ||
|   replay of a recording that has no Dolby Digital audio after switching to a channel
 | ||
|   that has DD and selecting the DD audio track).
 | ||
| - Removed 'flags' from tTrackId (thought we would need this, but apparently we don't).
 | ||
| - Making sure the "Mute" and "Volume+/-" keys don't interfere with digital audio.
 | ||
| - Fixed the "pre 1.3.19" compatibility mode for old Dolby Digital recordings (thanks
 | ||
|   to Werner Fink for pointing out that this can be triggered in the default branch).
 | ||
| - Calling pesAssembler->Reset() in cDevice::AttachPlayer() to avoid problems with
 | ||
|   residual data in replay and Transfer Mode (thanks to Werner Fink for pointing this
 | ||
|   out).
 | ||
| - Added MPEG1 replay capability to cPesAssembler (thanks to Stefan Huelswitt).
 | ||
| 
 | ||
| 2005-02-13: Version 1.3.21
 | ||
| 
 | ||
| - Fixed cDvbDevice::SetAudioTrackDevice() to avoid a blank screen after switching
 | ||
|   back to live mode if a recording is currently active on the primary device.
 | ||
| - Fixed a possible freeze in pause mode in case a device's PlayPesPacket() function
 | ||
|   permanently returns 0 (thanks to Reinhard Nissl and Olaf Titz).
 | ||
| - Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Restricted the "setting audio track" log message to automatic changes during replay.
 | ||
| - Fixed handling Transfer Mode for radio channels (thanks to Andreas Regel for
 | ||
|   reporting this one).
 | ||
| - Fixed handling symbolic links in cRecordings::ScanVideoDir() (thanks to Stefan
 | ||
|   Huelswitt).
 | ||
| - Completed the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Forcing a new resync after a call to cRemux::Clear() (suggested by Marco Schl<68><6C>ler).
 | ||
| - The cAudio::Play() function now has an additional parameter 'uchar Id' which tells
 | ||
|   the function the substream id of the given audio packet, so that a plugin can
 | ||
|   take the right action for the various kinds if audio data - which now also includes
 | ||
|   "normal" audio with ids 0xC0...0xDF (based on suggestions by Werner Fink and Macro
 | ||
|   Schl<68><6C>ler).
 | ||
| - Removed the "Cleared/PlayPes(NULL, 0)" handling from cTransfer::Action(), since this
 | ||
|   is now done when attaching the player to the device (thanks to Marco Schl<68><6C>ler).
 | ||
| - Making sure the buffer reserve in cTransfer::Action() is re-established after
 | ||
|   clearing the buffer.
 | ||
| - Added DeviceClrAvailableTracks() and DeviceSetCurrentAudioTrack() to cPlayer
 | ||
|   (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed a typo in detecting UTF-8 (thanks to Reinhard Nissl).
 | ||
| - Now using twice the buffer reserve in cTransfer if the primary DVB card is an
 | ||
|   unmodified version with only 2MB of SDRAM, to avoid audio stuttering when
 | ||
|   playing Dolby Digital over the DVB card (thanks to Christian Jacobsen and Chad
 | ||
|   Flynt for suggestions and experiments in that area).
 | ||
| - Making sure the first audio packet is not dropped when switching to "pre 1.3.19
 | ||
|   Dolby Digital compatibility mode".
 | ||
| - The 'plugins-clean' target of the Makefile now only deletes the actual plugin
 | ||
|   library files from this version of VDR (suggested by Andreas Brachold).
 | ||
| - Added a missing 'resultSkipped = 0' to cRemux::Clear() (thanks to Marco Schl<68><6C>ler
 | ||
|   for reporting this one).
 | ||
| - The new function cDvbDevice::SetTransferModeForDolbyDigital() can be used by
 | ||
|   plugins that implement Dolby Digital output and thus want to prevent the cDvbDevice
 | ||
|   from starting Transfer Mode in order to replay DD over the DVB device.
 | ||
| - Added missing reset of the 'repacker' to cTS2PES::Clear() (thanks to Marco
 | ||
|   Schl<68><6C>ler for reporting this one).
 | ||
| 
 | ||
| 2005-02-27: Version 1.3.22
 | ||
| 
 | ||
| - Removed some unneeded code and fixed access to unallocated memory in
 | ||
|   cEvent::FixEpgBugs() (thanks to Wolfgang Rohdewald).
 | ||
| - Avoiding unnecessary calls to SetPid() in cDvbDevice::SetAudioTrackDevice()
 | ||
|   (thanks to Marco Schl<68><6C>ler).
 | ||
| - No longer calling EnsureAudioTrack() in cDevice::SetChannel() if a Transfer Mode is
 | ||
|   started, to avoid setting the audio PID on the primary device (thanks to Marco
 | ||
|   Schl<68><6C>ler for pointing this out).
 | ||
| - Replaced the call to system("sync") in SpinUpDisk() with fdatasync(f) to avoid
 | ||
|   problems on NPTL systems (thanks to Chris Warren for pointing this out).
 | ||
| - Increased POLLTIMEOUTS_BEFORE_DEVICECLEAR in transfer.c to 6 to avoid problems
 | ||
|   with the larger buffer reserve (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed the call to SetVideoFormat() in cDvbDevice::cDvbDevice() (parameter is _bool_).
 | ||
| - Added support for setting the video display mode (thanks to Marco Schl<68><6C>ler).
 | ||
| - The new setup option "DVB/Video display format" can be used to define which display
 | ||
|   format to use for playing wide screen video on a 4:3 tv set.
 | ||
| - Changed MAXDPIDS to 16 (8xAC3 + 8xDTS) (thanks to Werner Fink for pointing this out).
 | ||
| - Completed Dutch language texts (thanks to Hans Dingemans).
 | ||
| - Added 'smi' to the Finnish language codes (thanks to Rolf Ahrenberg).
 | ||
| - Fixed ensuring there is a current audio track in case there is only one track
 | ||
|   (thanks to Werner Fink for reporting this one).
 | ||
| - Improved automatic audio track selection.
 | ||
| - Keeping the track language codes and descriptions in Transfer Mode (thanks to
 | ||
|   Luca Olivetti).
 | ||
| - Fixed handling repeated kAudio keys.
 | ||
| - Improved displaying the the current audio track in the ST:TNG channel display.
 | ||
| 
 | ||
| 2005-03-20: Version 1.3.23
 | ||
| 
 | ||
| - The setup option "DVB/Video display format" is now only available if "Video format"
 | ||
|   is set to "4:3" (suggested by Mikko Salo).
 | ||
| - Updated the Russian OSD texts (thanks to Vyacheslav Dikonov).
 | ||
| - Dropped CA support for the old '-icam' firmware.
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Updated the Swedish OSD texts (thanks to Tomas Prybil).
 | ||
| - Fixed a few French OSD texts that were in the wrong place.
 | ||
| - Improved matching timers to EPG events, especially in case there are several events
 | ||
|   with the same VPS time.
 | ||
| - Fixed cDolbyRepacker to allow recording ProSieben HD broadcasts (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| - Fixed cDvbDevice::SetVideoDisplayFormat() in case of 16:9 (thanks to Marco Schl<68><6C>ler).
 | ||
| - The running status of a VPS event is now only taken seriously if that event has been
 | ||
|   seen within the last 30 seconds - otherwise recording is done as if no VPS was
 | ||
|   available.
 | ||
| - The day of a timer is now stored as a full date in ISO notation ("YYYY-MM-DD") in
 | ||
|   'timers.conf' and for the result of the SVDRP command LSTT (based in parts on a
 | ||
|   patch by Roman Krenick<63>).
 | ||
| - Some fixes to avoid compiler warnings in gcc 4.0 (thanks to Ville Skytt<74> for reporting
 | ||
|   these).
 | ||
| - Single shot timers are now reliably deleted when they have expired.
 | ||
| - Fixed setting the colored button help after deleting a recording in case the next
 | ||
|   menu entry is a directory (thanks to Steffen Beyer).
 | ||
| - Improved falling back to normal recording if the VPS data hasn't been seen for more
 | ||
|   than 30 seconds.
 | ||
| - Added a missing cMutexLock to cRemote::HasKeys() (thanks to Wolfgang Rohdewald).
 | ||
| - All log entries regarding timers now contain a short description of the timer.
 | ||
| 
 | ||
| 2005-05-08: Version 1.3.24
 | ||
| 
 | ||
| - Now including the optional user defined Make.config from the 'libsi' Makefile
 | ||
|   (thanks to Ville Skytt<74>).
 | ||
| - Updated the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Fixed a memory leak in tComponent (thanks to Stefan Huelswitt and Daniel Thompson).
 | ||
| - Fixed a memory leak in cDvbPlayer (thanks to Stefan Huelswitt).
 | ||
| - Added missing text internationalization for "Starting EPG scan" (thanks to
 | ||
|   Matthias L<>tzke).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed handling transparent areas in cDvbSpuBitmap (thanks to Marco Schl<68><6C>ler).
 | ||
| - Now also considering the "EPG linger time" when saving the EPG data to file or
 | ||
|   listing it via LSTE (thanks to Roman Krenick<63>).
 | ||
| - Fixed handling fragments of less than 4 byte in cPesAssembler (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Fixed a bug in libsi's SubtitlingDescriptor::getLength() (thanks to Marco
 | ||
|   Schl<68><6C>ler).
 | ||
| - When reading the channels.conf file, duplicate channels (i.e. ones that have
 | ||
|   the same channel ID) are now automatically deleted and only the first one is
 | ||
|   actually stored.
 | ||
| - Fixed handling lifetime when deciding whether to delete a recording (thanks to
 | ||
|   Udo Richter).
 | ||
| - Fixed timeout handling in cRwLock::Lock() (thanks to Sascha Volkenandt for reporting
 | ||
|   this one).
 | ||
| - Since there are several places in thread.c where a timeout value is calculated,
 | ||
|   this has been put into a separate function.
 | ||
| - The timer status now has a new bit that is set when that timer is currently
 | ||
|   recording (suggested by Matthias Schniedermeyer). See man vdr(5) for details.
 | ||
| - Removed scaling coordinates in letterbox mode from cDvbSpu - the DVD plugin, which
 | ||
|   was the only one needing this, doesn't need it any more (thanks to Marco Schl<68><6C>ler).
 | ||
| - No longer retuning or restarting a recording if only the language code of an
 | ||
|   audio or Dolby PID changes.
 | ||
| - Now preferring budget cards when selecting a DVB device for recording.
 | ||
| - Recordings now avoid zero sized video data files (thanks to Wolfgang Fitz).
 | ||
| - Some rearrangements in cDvbPlayer::Action() to avoid lockups on NPTL systems
 | ||
|   (thanks to Reinhard Nissl).
 | ||
| - Fixed a wrong inheritance in libsi's SubtitlingDescriptor::Subtitling (thanks to
 | ||
|   Marco Schl<68><6C>ler).
 | ||
| 
 | ||
| 2005-05-29: Version 1.3.25
 | ||
| 
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Some cable providers don't mark short channel names according to the standard,
 | ||
|   but rather go their own way and use "name>short name". VDR now splits at this
 | ||
|   character for cable channels (thanks to Gerhard Steiner for reporting this one).
 | ||
| - Added a check for Setup.DiSEqC in cDvbDevice::ProvidesTransponder(), otherwise
 | ||
|   the EPG scan didn't work on systems that don't use DiSEqC (thanks to Michael
 | ||
|   Reinelt for reporting this one).
 | ||
| - Made the Makefile patch friendlier (thanks to Ludwig Nussel).
 | ||
| - Made cOsd::isOpen an integer counter to avoid problems with messages when a
 | ||
|   cOsdObject uses the raw OSD (thanks to Andreas Regel for reporting this one).
 | ||
| - Updated the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - The file 'summary.vdr' has been replaced with 'info.vdr' and now contains the
 | ||
|   information about a recording, in the same format as the events are stored in
 | ||
|   'epg.data' (see man vdr(5) for details). Existing summary files can be converted
 | ||
|   to the new format by running the Perl script 'summary2info.pl', as in
 | ||
| 
 | ||
|   summary2info.pl /video
 | ||
| 
 | ||
|   (the parameter given has to be the video directory). If there is no 'info.vdr'
 | ||
|   file for a recording, an attempt is made to read a 'summary.vdr'.
 | ||
| - The "Summary" button in the "Recordings" menu has been renamed to "Info", and
 | ||
|   the page it brings up now shows the recording's information, much like the EPG
 | ||
|   event page. Therefore it now no longer uses the skin's SetText() function, but
 | ||
|   rather the SetRecording() function. Skin plugins may need to adjust that function
 | ||
|   accordingly (see skinsttng.c, for instance).
 | ||
| - The SVDRP command LSTR now lists the recording information in the same tagged
 | ||
|   format as the LSTE command lists the EPG data.
 | ||
| - The audio track menu now contains track descriptions when replaying (provided
 | ||
|   such descriptions were available in the EPG data when the recording was made,
 | ||
|   and are stored in the info.vdr file).
 | ||
| - Avoiding extra blanks at the end of names of instant recordings.
 | ||
| - Removed converting byte order on big endian systems from cDvbOsd::Flush(),
 | ||
|   which, according to Johannes Stezenbach and Paavo Hartikainen, is wrong.
 | ||
| - Added cPlayer::DeviceSetVideoDisplayFormat() (thanks to Marco Schl<68><6C>ler).
 | ||
| - No longer saving the setup in case of a fatal error, to keep the volume level
 | ||
|   from being set to a wrong value (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed a possible hangup when ending a replay session while cIndexFile::CatchUp()
 | ||
|   is waiting (thanks to Marco Schl<68><6C>ler).
 | ||
| - The SVDRP command DELR no longer deletes recordings that are currently being
 | ||
|   written to by a timer (thanks to Sascha Volkenandt for pointing out this one).
 | ||
| - Pressing the "Play" key in live viewing mode now resumes a previous replay
 | ||
|   session (thanks to Mirko D<>lle).
 | ||
| - Now dropping EPG events that have a zero start time or duration (thanks to
 | ||
|   Oliver Endriss).
 | ||
| - No longer stopping Transfer Mode or replay immediately when the Power button
 | ||
|   is pressed (thanks to Rolf Ahrenberg).
 | ||
| - Moved the NPTL and UTF-8 checks after the version and help output (thanks to
 | ||
|   Andreas Kool for pointing out that 'vdr --version' failed on an UTF-8 system).
 | ||
| - Made tChannelID::operator==() inline for better performance (thanks to Georg
 | ||
|   Acher).
 | ||
| - Introduced cListBase::count for better performance (thanks to Georg Acher).
 | ||
| - cEvent no longer stores the channelID directly, but rather has a pointer to
 | ||
|   the schedule it is in.
 | ||
| - Now using hash tables to speed up cSchedule::GetEvent() (partially based on
 | ||
|   a patch from Georg Acher).
 | ||
| - Avoiding unnecessary calls to getLength() in libsi/si.c, and avoiding the
 | ||
|   '& 0xff' in CRC32::crc32() of libsi/util.c (thanks to Georg Acher).
 | ||
| - Speeded up deleting duplicate channels.
 | ||
| - Fixed listing recordings with empty episode names in the LSTR command (thanks
 | ||
|   to Stefan Huelswitt for pointing this out).
 | ||
| - Added cThread::SetPriority() and using it in cSectionHandler::Action() to
 | ||
|   reduce the priority of the section handler threads (as suggested by Georg Acher).
 | ||
| 
 | ||
| 2005-06-12: Version 1.3.26
 | ||
| 
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed handling 'summary.vdr' files with more than two empty lines (thanks to
 | ||
|   Christian Jacobsen for reporting this one).
 | ||
| - Improved resetting CAM connections (thanks to Marco Schl<68><6C>ler).
 | ||
| - Implemented cVideoRepacker in remux.c to make sure every PES packet contains
 | ||
|   only data from one frame (thanks to Reinhard Nissl).
 | ||
|   NOTE: currently this doesn't work with MPEG1, so if you use MPEG1 you may want
 | ||
|   to change line 1158 in remux.c to
 | ||
| 
 | ||
|   ts2pes[numTracks++] = new cTS2PES(VPid, resultBuffer, IPACKS);
 | ||
| 
 | ||
|   as it was before.
 | ||
| - EPG events without a title now display "No title" instead of "(null)" (thanks
 | ||
|   to Rolf Ahrenberg).
 | ||
| - A device can now detach all receivers for a given PID, as is necessary, e.g.,
 | ||
|   for the bitstreamout plugin (thanks to Werner Fink).
 | ||
| - Added the year (two digits) to recording dates in LSTR, and thus also in menus
 | ||
|   (suggested by Jan Ekholm).
 | ||
| - Fixed the call to Channels.Unlock() in cEITScanner::Process() (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Fixed handling timers with a day given as MTWTF--@6, i.e. a repeating timer with
 | ||
|   first day not as full date, but just day of month (thanks to Henrik Niehaus for
 | ||
|   reporting this one).
 | ||
| - Removed an unnecessary #include from osd.c (thanks to Wolfgang Rohdewald).
 | ||
| - Fixed dropping EPG events that have a zero start time or duration, in case it's
 | ||
|   an NVOD event (thanks to Chris Warren).
 | ||
| - Fixed handling page up/down in menu lists in case there are several non selectable
 | ||
|   items in a row (thanks to Udo Richter for reporting this one).
 | ||
| - Added cOsdMenu::SetCols() to allow adjusting the menu columns.
 | ||
| - Modified cEITScanner::Process() so that it works on systems with only budget cards
 | ||
|   or a mix of DVB-S, DVB-C or DVB-T cards.
 | ||
| 
 | ||
| 2005-06-19: Version 1.3.27
 | ||
| 
 | ||
| - Fixed handling 'page down', which was broken in version 1.3.26 (thanks to Udo
 | ||
|   Richter).
 | ||
| - Modified page scrolling behaviour (based on a suggestion by Patrick Gleichmann).
 | ||
| - The new setup option "OSD/Scroll wraps" can be used to activate wrapping around
 | ||
|   in menu lists (based on a suggestion by Patrick Gleichmann).
 | ||
| - Removed the NPTL check at startup, since several users have reported that VDR
 | ||
|   now runs fine with NPTL.
 | ||
| - Fixed handling VPS timers, so that they only record if the event they are assigned
 | ||
|   to actually has the given VPS time.
 | ||
| - Disabled cVideoRepacker in remux.c, because it has caused several problems
 | ||
|   during recording. If you want to test (and maybe debug) it, activate the line
 | ||
| 
 | ||
|   //#define TEST_cVideoRepacker
 | ||
| 
 | ||
|   in remux.c.
 | ||
| - When drawing a bitmap to the OSD, the existing palette of the target can now be
 | ||
|   replaced with the new one instead of adding the new entries (thanks to Andreas
 | ||
|   Regel).
 | ||
| 
 | ||
| 2005-08-07: Version 1.3.28
 | ||
| 
 | ||
| - Added a sleep in cDvbPlayer::Action() in case there is no data to send to the
 | ||
|   device, which avoids a busy loop on very fast machines (thanks to Martin Wache).
 | ||
| - Modified the description of cDevice::Poll() to avoid misunderstandings.
 | ||
| - Updated Croatian language texts (thanks to Drazen Dupor).
 | ||
| - cDvbPlayer::Goto() now appends a Sequence End Code to get the image shown
 | ||
|   immediately with softdevices (thanks to Reinhard Nissl).
 | ||
| - Reactivated cVideoRepacker in remux.c after some fixes (thanks to Reinhard Nissl).
 | ||
| - Removed the fix for handling VPS timers, so that they only record if the event
 | ||
|   they are assigned to actually has the given VPS time. This has caused repeating
 | ||
|   VPS timers to stop recording prematurely.
 | ||
| - Avoiding duplicate components in EPG events when reading epg.data or in the
 | ||
|   PUTE SVDRP command (thanks to Olaf Titz for reporting this one).
 | ||
| - Added the command line options '--lirc', '--rcu' and '--no-kbd' to allow setting
 | ||
|   the remote control at runtime (based on a patch by Darren Salt).
 | ||
| - Now checking whether timers or channels are currently being edited via the menu
 | ||
|   before making changes through SVDRP (thanks to Andreas Brugger for reporting a
 | ||
|   problem with this).
 | ||
| - Files and directories are now created with rights according to the shell's
 | ||
|   umask settings (thanks to Andreas Brachold).
 | ||
| - Fixed the cChannel copy constructor (thanks to Marcel Wiesweg for pointing out
 | ||
|   a problem with it).
 | ||
| - Fixed an out-of-bounds memory access with audio language ids (thanks to
 | ||
|   Matthias Lenk for reporting, and Udo Richter for suggesting a fix).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Added missing storing of the MenuScrollPage parameter (thanks to Frank Kr<4B>mmelbein).
 | ||
| - Added cRemux::SetTimeouts() for better use of cRemux in a single thread (thanks
 | ||
|   to Udo Richter for reporting a problem with this).
 | ||
| - Modified cEITScanner::Process() so that it uses the primary device if it is
 | ||
|   replaying and is the only device that provides the given transponder, and that
 | ||
|   a forced EPG scan works even if EPG scan timeout is set to 0 (thanks to
 | ||
|   Bernhard Stegmaier for reporting a problem with this).
 | ||
| - Fixed cDvbSpuBitmap::putPixel() (thanks to Reinhard Nissl).
 | ||
| - Fixed setting system time to avoid time jumps in case of faulty data (thanks
 | ||
|   to Andreas B<>ttger).
 | ||
| - Fixed a memory leak in the SVDRP command LSTE (thanks to Stefan Huelswitt).
 | ||
| 
 | ||
| 2005-08-15: Version 1.3.29
 | ||
| 
 | ||
| - Fixed a race condition in cTransfer (thanks to Klaus Heppenheimer for reporting this one).
 | ||
|   In doing so, the 'active' variables used by the actual derived cThread classes
 | ||
|   have been replaced by the cThread::Running() function.
 | ||
|   Plugin authors may want to check their derived cThread classes and replace any 'active'
 | ||
|   variables the same way as, for instance, done in transfer.c.
 | ||
| - Fixed handling EPG data for time shifted events (thanks to Marco Schl<68><6C>ler).
 | ||
| - Increased the default value for 'Min. user inactivity' to 300 minutes (suggested
 | ||
|   by Helmut Auer).
 | ||
| - Now storing the channel id in the info.vdr file even if there is no EPG info
 | ||
|   available (thanks to Andreas Brachold for reporting that there are empty info.vdr
 | ||
|   files created in that case).
 | ||
| - Added some 'mkdir -p' to the Makefile's 'install' target (thanks to Wayne Keer).
 | ||
| - Changed the title of the recording info menu (thanks to Rolf Ahrenberg).
 | ||
| - Fixed handling the frame number display if '7' is pressed before the first editing
 | ||
|   mark, or '9' after the last one (thanks to Thomas G<>nther).
 | ||
| - Now discarding any previous numerical input to switch channels if Up, Down, Channel+,
 | ||
|   Channel-, Left or Right is pressed (thanks to Wolfgang Rohdewald for reporting a
 | ||
|   problem with this).
 | ||
| - Pressing Ok while entering a channel number now immediately switches to that
 | ||
|   channel, without waiting for further input.
 | ||
| - Avoiding unnecessary OSD draw operations caused by the audio track description
 | ||
|   display in the ST:TNG skin's channel display (thanks to Oliver Endriss for reporting
 | ||
|   this).
 | ||
| - Removed the VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES stuff from
 | ||
|   cDvbDevice::StillPicture(), since apparently the VIDEO_STILLPICTURE call works.
 | ||
| 
 | ||
| 2005-08-21: Version 1.3.30
 | ||
| 
 | ||
| - Improved responsiveness inside CAM menus.
 | ||
| - Added handling of the 'Close MMI' tag to avoid error log messages with CAMs
 | ||
|   that actually use it.
 | ||
| - Now waiting at startup until all DVB devices are ready. This includes having
 | ||
|   all CAMs initialized and ready to decrypt, so that no more "channel not
 | ||
|   available" happens if VDR is started with the current channel being an encrypted
 | ||
|   one, or a timer on such a channel hits right after starting VDR.
 | ||
| - Fixed cVideoRepacker to better handle errors in data (thanks to Reinhard Nissl).
 | ||
| - Fixed cDvbTuner to avoid lockups on NPTL systems (thanks to Marcel Wiesweg).
 | ||
| - Added 'Service' functions to the plugin interface (thanks to Udo Richter).
 | ||
|   See PLUGINS.html, section "Custom services" for details.
 | ||
| - Replaced the get/put_unaligned() macros from <asm/unaligned.h> with own inline
 | ||
|   functions to avoid problems on platforms that don't provide these (thanks to
 | ||
|   David Woodhouse for his help).
 | ||
| 
 | ||
| 2005-08-28: Version 1.3.31
 | ||
| 
 | ||
| - Added missing German OSD texts for 'Audio language'.
 | ||
| - The Setup/CICAM menu now only contains the devices that actually have a CI and
 | ||
|   dynamically detects the number of slots a CI provides.
 | ||
| - Implemented cAudioRepacker for better handling of audio PES packets (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Modified handling of audio packets for radio channels in remux.c (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Updated the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Fixed the EPG scan, so that it doesn't use the primary device if that is
 | ||
|   currently in Transfer-Mode from itself (thanks to Marcus Hilbrich for a bug
 | ||
|   report that lead to this).
 | ||
| - Removed the TUNER_LOCK_TIMEOUT in cDevice::AttachReceiver() since it caused more
 | ||
|   trouble than it fixed.
 | ||
| - Fixed detecting short channel names for "Kabel Deutschland", who uses a comma
 | ||
|   as delimiter (thanks to Marco Schl<68><6C>ler).
 | ||
| - Moved cMenuEditTimer and cMenuEvent to menu.h so that plugins can use it (suggested
 | ||
|   by Thomas G<>nther).
 | ||
| - The new static function cString::sprintf() can be used to easily create a formatted
 | ||
|   string.
 | ||
| - Plugins can now implement their own SVDRP commands (based on a patch from Hardy
 | ||
|   Flor). See PLUGINS.html, section "SVDRP commands" for details. The SVDRP commands
 | ||
|   of a plugin are accessed through the new SVDRP command PLUG.
 | ||
|   See PLUGINS/src/svdrpdemo for an example of how to use this feature.
 | ||
| - The new SVDRP command PLAY can be used to start replaying a recording (thanks to
 | ||
|   Hardy Flor).
 | ||
| - The new SVDRP command EDIT can be used to start the editing process of a recording
 | ||
|   (based on the CUTR patch by Harald Milz).
 | ||
| 
 | ||
| 2005-09-11: Version 1.3.32
 | ||
| 
 | ||
| - Added some missing braces in remux.c (thanks to Wayne Keer for reporting this one).
 | ||
| - Removed unused MAINMENUENTRY from svdrpdemo.c (thanks to Udo Richter for reporting
 | ||
|   this one).
 | ||
| - Fixed appending sequence end code in cDvbPlayer::Goto() (thanks to Reinhard Nissl).
 | ||
| - Fixed syncing in cRepacker (thanks to Reinhard Nissl).
 | ||
| - Now always using stream id 0xE0 for the video stream, to avoid problems with
 | ||
|   post processing tools that choke on different ids (suggested by Reinhard Nissl).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Fixed cDvbPlayer::SkipFrames() to properly handle radio recordings (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Updated the Swedish OSD texts (thanks to Tomas Prybil).
 | ||
| - Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
 | ||
| - Updated the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Made LIRC command parsing more robust (thanks to Ville Skytt<74>).
 | ||
| - Introduced a separate 'plugins-install' target in the Makefile (thanks to Daniel
 | ||
|   Thompson).
 | ||
| - Re-introduced the code that waits for a tuner lock in VDR/device.c, since
 | ||
|   apparently some users actually need it. It's not active by default, you'll have
 | ||
|   to define the WAIT_FOR_TUNER_LOCK macro in that file if you need it (suggested
 | ||
|   by Malcolm Caldwell).
 | ||
| - Adjusted the Makefile to the dvb-kernel driver on kernel 2.6 and up (thanks to
 | ||
|   Lauri Tischler).
 | ||
| - Repeat keys are now ignored when waiting for a keypress to cancel an operation
 | ||
|   (thanks to Marko M<>kel<65>).
 | ||
| - The main menu function of a plugin can now be activated through a key macro of
 | ||
|   the form "@plugin" even if that plugin doesn't have a main menu entry (using
 | ||
|   part of a patch by Hardy Flor, which originally implemented calling plugins from
 | ||
|   SVDRP).
 | ||
| - The menu timeout handling is now done centrally in the main program loop.
 | ||
| - Added missing help for the 'help' keyword in the SVDRP command PLUG.
 | ||
| - The main menu function of a plugin can now be called programmatically through
 | ||
|   the static function cRemote::CallPlugin().
 | ||
| - The SVDRP command PLUG now has a new option 'main' which can be used to initiate
 | ||
|   a call to the main menu function of a plugin (using part of a patch by Hardy Flor).
 | ||
| - The new command line option '--vfat' can be used to make VDR encode special
 | ||
|   characters in recording file names, even if it wasn't compiled with VFAT=1
 | ||
|   (suggested by Peter Bieringer). The compile time option VFAT still exists and
 | ||
|   creates a VDR that always behaves as if it were called with '--vfat'.
 | ||
| - Replaced the ':' delimiter between hour and minute in recording file names with
 | ||
|   a '.' under Linux, too. Existing recordings with ':' as delimiter will still work.
 | ||
| - Implemented the SVDRP command MOVC (thanks to Andreas Brachold).
 | ||
| - Added support for multiple audio language codes in ISO639LanguageDescriptors to
 | ||
|   'libsi' (thanks to Marcel Wiesweg).
 | ||
| - Changed the audio PID language codes to hold up to two 3 letter codes, separated
 | ||
|   by '+', to store separate languages broadcast in two channel audio mode.
 | ||
| - If the preferred audio language is broadcast on a PID that has two different
 | ||
|   languages in the two stereo channels, the audio channel is now properly set when
 | ||
|   switching to such a channel (thanks to Mogens Elneff for his help in testing this).
 | ||
| - Fixed some typos in MANUAL (thanks to Ville Skytt<74>).
 | ||
| - Fixed the default value for "Setup/EPG bugfix level" (thanks to Ville Skytt<74> for
 | ||
|   reporting this one).
 | ||
| - Fixed defining timers that only differ in the day of week (thanks to Patrick
 | ||
|   Rother for reporting this one).
 | ||
| - Fixed converting summary.vdr files that would result in a very long 'short text'
 | ||
|   (thanks to Carsten Koch).
 | ||
| - Implemented a hash for the channels to reduce the system load in the EIT scanning
 | ||
|   thread (based on a patch by Georg Acher).
 | ||
| 
 | ||
| 2005-09-25: Version 1.3.33
 | ||
| 
 | ||
| - Fixed two errors in 'newplugin' (thanks to Alexander Rieger).
 | ||
| - Fixed converting arbitrarily formatted summary.vdr files (thanks to Thomas G<>nther).
 | ||
| - Fixed handling color buttons in cMenuEditStrItem (thanks to Alexander Rieger).
 | ||
| - Added cChannel::LinkChannels() and cChannel::RefChannel() (suggested by Helmut Auer).
 | ||
|   Note that VDR itself doesn't actually use the linked channels, yet, so there is
 | ||
|   no guarantee that this really works under all circumstances.
 | ||
| - Added a missing include statement to the 'sky' plugin (thanks to Alfred Zastrow
 | ||
|   for reporting this one).
 | ||
| - Fixed handling key macros with keys after @plugin (thanks to Rolf Ahrenberg for
 | ||
|   reporting this one).
 | ||
| - Fixed error handling in cCiTransportConnection::RecvTPDU() (thanks to Georg Acher
 | ||
|   for reporting this one).
 | ||
| - Removed obsolete 'shift' code in device.[hc].
 | ||
| - The SVDRP command DELR no longer triggers a complete reload of the global Recordings
 | ||
|   list, but rather deletes that particular entry.
 | ||
| - The list of recordings is now read in a separate thread, resulting in a faster
 | ||
|   startup if there are a great many of recordings, or the disk(s) have to spin up.
 | ||
|   If the Recordings menu is opened while the list of recordings is still being read,
 | ||
|   the menu will be updated accordingly.
 | ||
|   Plugins that access the global Recordings variable should lock the thread
 | ||
|   by putting something like
 | ||
| 
 | ||
|     cThreadLock RecordingsLock(&Recordings);
 | ||
| 
 | ||
|   into the respective code block. Thanks to Carsten Koch for his help in testing
 | ||
|   and debugging this.
 | ||
| - The 'new' indicator in the Recordings menu is now kept up-to-date (thanks to
 | ||
|   Thomas G<>nther).
 | ||
| - Updated the Romanian OSD texts (thanks to Lucian Muresan).
 | ||
| - Updated the Russian OSD texts (thanks to Oleg Roitburd).
 | ||
| - The '.update' file in the video directory is now touched when a recording is
 | ||
|   added or deleted, so that other VDR instances can update their lists (thanks to
 | ||
|   Alexander Rieger).
 | ||
| - Made the function ExchangeChars() public (suggested by Lucian Muresan).
 | ||
| 
 | ||
| 2005-10-03: Version 1.3.34
 | ||
| 
 | ||
| - Fixed a leftover 'summary.vdr' in vdr.5 (thanks to Peter Bieringer for reporting
 | ||
|   this one).
 | ||
| - Fixed opening recording folders in case the last replayed recording no longer
 | ||
|   exists (reported by Udo Richter).
 | ||
| - Fixed an unjustified "Error while accessing recording!" after deleting a recording
 | ||
|   from a subfolder.
 | ||
| - Fixed handling the '.update' file in case the video directory is not at the default
 | ||
|   location (reported by Jon Burgess).
 | ||
| - Fixed a crash in cConfig::Load() when compiling on the PPC (thanks to Sascha
 | ||
|   Volkenandt).
 | ||
| - Fixed the FATALERRNO macro to check for a non-zero errno value (reported by Marco
 | ||
|   Schl<68><6C>ler).
 | ||
| - Added a check against MAXOSDAREAS in cOsd::CanHandleAreas() (reported by Udo
 | ||
|   Richter).
 | ||
| - Fixed setting current menu item if the first one is non-selectable.
 | ||
| - cOsdItem::cOsdItem() now has a 'Selectable' parameter.
 | ||
| - Improved displaying 'sub-title' and 'bottom text' in the CAM menu.
 | ||
| - Added status message "Resetting CAM..." for an immediate feedback when the CAM
 | ||
|   reset has been triggered.
 | ||
| - The CAM menu now automatically updates itself in case of a progress display (as
 | ||
|   used, for instance, when updating the firmware via satellite).
 | ||
| - Now skipping some funny characters sent by some CAMs at the beginning of strings.
 | ||
| - The CAM menu is now completely closed when pressing the Menu key while inside
 | ||
|   a sub menu.
 | ||
| - Reduced MAX_CONNECT_RETRIES in ci.c to 2 (waiting too long made the whole thing
 | ||
|   appear hanging).
 | ||
| - Added status message "Opening CAM menu..." for an immediate feedback when the CAM
 | ||
|   menu has been requested.
 | ||
| - Speeded up initial opening of the CAM menu.
 | ||
| - Fixed handling of menus with no selectable items.
 | ||
| - The character 0x8A in CAM menu strings is now mapped to a real newline.
 | ||
| - The 'sub-title' and 'bottom text' in the CAM menu can now consist of several lines.
 | ||
| - Improved the CAM enquiry menu.
 | ||
| 
 | ||
| 2005-10-31: Version 1.3.35
 | ||
| 
 | ||
| - Updated 'sources.conf' (thanks to Philip Prindeville).
 | ||
| - Now using daemon() instead of fork() to run VDR in daemon mode (thanks to
 | ||
|   Enrico Scholz).
 | ||
| - Fixed a possible endless loop in a menu with no selectable items if
 | ||
|   Setup.MenuScrollWrap is true (thanks to Enrico Scholz).
 | ||
| - Making sure no item is displayed as "current" if Up, Down, Left or Right is
 | ||
|   pressed in a menu with no selectable items.
 | ||
| - Added '__attribute__' to functions that use printf() like parameters (thanks
 | ||
|   to Darren Salt).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed a leftover 'summary.vdr' in vdr.1 (reported by Christoph Hermanns).
 | ||
| - Added more error messages and line numbers when reading EPG data and info.vdr
 | ||
|   (thanks to Peter Bieringer).
 | ||
| - Updated the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Added missing mutex locks to cCiMenu::Abort() and cCiEnquiry::Abort() (reported
 | ||
|   by Marco Schl<68><6C>ler).
 | ||
| - Fixed lock handling in CAM communication to avoid problems with multiple CAMs
 | ||
|   per device or CAMs with more than one smart card.
 | ||
| - Updated the Greek OSD texts (thanks to Dimitrios Dimitrakos).
 | ||
| - Updated the French OSD texts (thanks to Nicolas Huillard).
 | ||
| - Fixed the cFilter example in PLUGINS.html (reported by Patrick Fischer).
 | ||
| - The new class cUnbufferedFile is used for the recording files to avoid
 | ||
|   trashing the file system cache (based on a patch by Ralf M<>ller).
 | ||
| 
 | ||
| 2005-11-06: Version 1.3.36
 | ||
| 
 | ||
| - Fixed a NULL pointer access with the cUnbufferedFile when a replay session runs
 | ||
|   all the way until the end of the recording (thanks to Joachim Wilke).
 | ||
| - A menu is no longer automatically closed when a replay ends (reported by
 | ||
|   Marko M<>kel<65>).
 | ||
| - Removed '\n' from several syslog() calls (reported by Sascha Volkenandt).
 | ||
| - Fixed missing '&' in the SetAreas() example in PLUGINS.html (reported by
 | ||
|   Sascha Volkenandt).
 | ||
| - Fixed a memory leak in cString::operator=() (reported by Sascha Volkenandt).
 | ||
| - Updated the Dutch OSD texts (thanks to Maarten Wisse).
 | ||
| - cReadLine now dynamically allocates its buffer, so that it can handle lines
 | ||
|   of any length.
 | ||
| - Changed cConfig::Load() to use cReadLine instead of a fixed buffer (thanks
 | ||
|   to Andreas Mair for reporting a problem with extremely long summary fields
 | ||
|   in timers).
 | ||
| - cSVDRP now dynamically allocates its command buffer in order to handle
 | ||
|   commands of any length. The MAXPARSEBUFFER macro is now obsolete and has
 | ||
|   been removed. If a plugin has used that macro, it should either define
 | ||
|   a buffer size of its own, or use cReadLine when reading files.
 | ||
| - Fixed a race condition in the SPU decoder (thanks to Marco Schl<68><6C>ler).
 | ||
| - The EPG scan no longer disturbs players that have also set live PIDs
 | ||
|   (reported by Stefan Huelswitt).
 | ||
| - Fixed setting the help key display in the Recordings menu in case of several
 | ||
|   layers of subdirectories.
 | ||
| - Removed EPG bugfix #0, because it removed actually important data.
 | ||
| 
 | ||
| 2005-11-27: Version 1.3.37
 | ||
| 
 | ||
| - Added compiler options "-fPIC -g" to all plugins (thanks to Rolf Ahrenberg).
 | ||
| - Fixed initializing the day index when editing the weekday parameter of a
 | ||
|   repeating timer (thanks to Marco Schl<68><6C>ler).
 | ||
| - No longer removing superfluous hyphens in EPG data - would become too
 | ||
|   language dependent to handle all kinds of exceptions.
 | ||
| - Modified switching to Dolby Digital audio in live mode, if the driver
 | ||
|   and firmware can handle live DD without the need of a Transfer Mode (thanks
 | ||
|   to Werner Fink). Live DD mode requires a full featured DVB card and a
 | ||
|   LinuxDVB driver with firmware version 0x2622 or higher. Older versions will
 | ||
|   use Transfer Mode just like before.
 | ||
| - Implemented handling of the "CA PMT Reply" for CAMs (thanks to Marco
 | ||
|   Schl<68><6C>ler for figuring out some obscure length bytes in the CA PMT Reply
 | ||
|   data of AlphaCrypt CAMs).
 | ||
| - Some preparations for being able to record several encrypted channels from
 | ||
|   the same transponder at the same time (or record and view different encrypted
 | ||
|   channels), provided the CAM in use can handle this. This is work in progress
 | ||
|   and isn't actively used, yet.
 | ||
| - Fixed SetProgress() in the 'skincurses' plugin in case Total is 0 (reported
 | ||
|   by Stefan Huelswitt).
 | ||
| - Added a copy constructor to cString and fixed its assignment operator
 | ||
|   (thanks to Holger Brunn).
 | ||
| - The new function Skins.QueueMessage() can be called from a background thread
 | ||
|   to queue a message for display. See VDR/skins.h for details.
 | ||
| - The SVDRP command MESG uses the new message queuing facility, so MESG
 | ||
|   commands may now be executed at any time, and the message will be displayed
 | ||
|   (no more "pending message").
 | ||
| 
 | ||
| 2006-01-08: Version 1.3.38
 | ||
| 
 | ||
| - Fixed handling second audio and Dolby Digital PIDs for encrypted channels
 | ||
|   (was broken in version 1.3.37).
 | ||
| - Improved TS/PES conversion to better handle lost TS packets (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Limited the frequency of log messages from the cRepackers.
 | ||
| - Now using the gettid() syscall to get a thread's pid, so that we get a
 | ||
|   useful value on NPTL systems (suggested by Johannes Stezenbach).
 | ||
| - Fixed the RCU remote control handling to avoid problems with NPTL (thanks
 | ||
|   to Andreas Share for reporting a lockup with the RCU on NPTL systems).
 | ||
| - When displaying the amount of free disk space, the space consumed by
 | ||
|   recordings that have been "deleted" but not yet actually "removed" is now
 | ||
|   taken into account (suggested by Christian Vogt).
 | ||
| - Now avoiding unnecessary disk access when checking if there are deleted
 | ||
|   recordings that need to be removed (reported by Carsten Koch).
 | ||
| - Fixed handling the DELETEDLIFETIME when removing deleted recordings. Now
 | ||
|   a deleted recording is retained at least DELETEDLIFETIME seconds before
 | ||
|   actually removing it.
 | ||
|   The value of DELETEDLIFETIME has been changed to 300. So after (possibly
 | ||
|   inadvertently) deleting a recording, there will be at least 5 minutes
 | ||
|   in which it can be recovered (unless a new recording immediately requires
 | ||
|   the disk space). The count starts again at 0 every time VDR is started.
 | ||
| - Fixed a possible crash when displaying the "Low disk space!" message from
 | ||
|   a background thread (thanks to Christof Steininger).
 | ||
| - Fixed handling OSD areas that have invalid sizes (thanks to Marco Schl<68><6C>ler).
 | ||
| - Added a mutex to AssertFreeDiskSpace() to make sure calls from foreground
 | ||
|   and background threads won't interfere.
 | ||
| - The main menu now dynamically updates its contents in case an instant
 | ||
|   recording or replay stops, etc.
 | ||
| - The version number of EPG events is now also stored in the epg.data file
 | ||
|   (thanks to Kendy Kutzner).
 | ||
| - EPG events that are no longer in the currently broadcasted data stream are
 | ||
|   now automatically deleted.
 | ||
| - Removed an invalid access to Event->schedule in cSchedule::DelEvent().
 | ||
| - Modified cSchedule::Cleanup() (events are always sorted by time).
 | ||
| - Schedules are now cleaned up once every hour (not only at 05:00).
 | ||
| - The "Schedule" and "What's on now/next?" menus are now updated if a timer
 | ||
|   is set or modified.
 | ||
| - cTimer no longer has its own 'schedule' member, it rather uses that of the
 | ||
|   event it has been set to.
 | ||
| - The "Red" button in the "Schedule", "What's on now/next?" and "Event" menus
 | ||
|   now immediately creates a timer for the selected event and marks it with 'T'.
 | ||
|   If the event is already marked with 'T', the "Red" button opens the "Edit
 | ||
|   timer" menu for that timer.
 | ||
| - Removing deleted recordings is now done in a separate thread.
 | ||
| - Dropped the unused "stop recording on primary interface" stuff.
 | ||
| - Converting a grabbed image to JPEG is now done with the new function
 | ||
|   RgbToJpeg() (see tools.h).
 | ||
| - The SVDRP command GRAB now determines the image type (JPEG or PNM) from the
 | ||
|   extension (".jpg", ".jpeg" or ".pnm") of the given file name. The explicit
 | ||
|   'jpeg' or 'pnm' parameter is still accepted for backward compatibility, but
 | ||
|   has no meaning any more.
 | ||
| - The function cDevice::GrabImage() no longer writes the grabbed image to a
 | ||
|   file, but rather returns a pointer to the image in memory. The wrapper
 | ||
|   function cDevice::GrabImageFile() can be used to write the grabbed image
 | ||
|   directly to a file. Plugins that used the old version of cDevice::GrabImage()
 | ||
|   need to be adapted to the new interface.
 | ||
| - The new class cBase64Encoder (see tools.h) can be used to encode data in
 | ||
|   base64 (thanks to Bob Withers for publishing his Base64 class).
 | ||
| - The SVDRP command GRAB now writes the image data to the SVDRP connection
 | ||
|   (encoded in base64) if the given file name consists of only the file
 | ||
|   extension (".jpg", ".jpeg" or ".pnm"), or if only "-" is given as file
 | ||
|   name (based on a suggestion from Darren Salt).
 | ||
|   A simple way of viewing a grabbed image on a remote host is:
 | ||
| 
 | ||
|   svdrpsend.pl -d <hostname> 'grab -' | sed -n -e 's/^216-//p' -e '1ibegin-base64 644 -' -e '$a====' | uudecode | display -
 | ||
| 
 | ||
| - The new command line option '-g' must be given if the SVDRP command GRAB
 | ||
|   shall be allowed to write image files to disk. The parameter to this option
 | ||
|   must be the full path name of an existing directory, without any "..", double
 | ||
|   '/' or symlinks. By default, or if "-g- is given, grabbing to files is
 | ||
|   not allowed any more because of potential security risks.
 | ||
| - Modified the way the SVDRP command GRAB writes the grabbed image to a file
 | ||
|   to avoid a security hole (CAN-2005-0071, reported by Javier Fern<72>ndez-Sanguino
 | ||
|   Pe<50>a):
 | ||
|   + The file handle is now opened in a way that it won't follow symbolic links
 | ||
|     (suggested by Darren Salt).
 | ||
|   + The given file name is now canonicalized, so that it won't contain any
 | ||
|     ".." or symlinks (suggested by Darren Salt).
 | ||
|   + Grabbing to files is limited to the directory given in the the command
 | ||
|     line option '-g'. By default grabbing to files is not allowed any more.
 | ||
| - Updated the Greek OSD texts (thanks to Dimitrios Dimitrakos).
 | ||
| - Changed all "illegal" to "invalid" in error messages (there's nothing "illegal"
 | ||
|   in VDR ;-).
 | ||
| - When started as user 'root' VDR now switches to a lesser privileged user id,
 | ||
|   keeping the capability to set the system time (based on a patch from Ludwig
 | ||
|   Nussel). By default the user id 'vdr' is used, which can be changed through
 | ||
|   the new command line option '-u'. Note that for security reasons VDR will no
 | ||
|   longer run as user 'root' (unless you explicitly start it with '-u root',
 | ||
|   but this is not recommended!). The 'runvdr' script has been changed to
 | ||
|   use the '-u' option.
 | ||
| - Changed the API of the functions cStatus::Recording() and cStatus::Replaying(),
 | ||
|   so that they can provide the full file name of the recording. Plugins that use
 | ||
|   these (or the related cStatus::Msg...() functions) need to be adapted
 | ||
|   (suggested by Andreas Brugger).
 | ||
| - The DVB devices now retune (and, if applicable, resend the DiSEqC data) if
 | ||
|   the lock is lost (based on a patch from Reinhard Nissl).
 | ||
| - Fixed handling multi byte key sequences in cKbdRemote (based on a patch from
 | ||
|   J<>rgen Schneider).
 | ||
| - Removed unused variables in skinclassic.c and skinsttng.c (thanks to Marco
 | ||
|   Schl<68><6C>ler).
 | ||
| - Made the static cControl functions thread safe (thanks to Patrick Fischer).
 | ||
| - Fixed initializing pthread_mutexattr_t and pthread_rwlockattr_t to avoid
 | ||
|   warnings with g++ 4.1.0 (thanks to Ville Skytt<74>).
 | ||
| - Fixed incrementing the 'state' variables in the repacker classes in remux.c
 | ||
|   to avoid warnings with g++ 4.1.0 (reported by Ville Skytt<74>).
 | ||
| - The Makefile now reports a summary of failed plugins (thanks to Udo Richter).
 | ||
| - The cTimer constructor can now take an optional cChannel (suggested by
 | ||
|   Patrick Fischer).
 | ||
| - Fixed setting the main thread id if VDR is running as a daemon.
 | ||
| - Fixed handling TS packets in cTS2PES (thanks to Reinhard Nissl).
 | ||
| - Added cTimer::SetPriority() to set a timer's priority (suggested by Kendy Kutzner).
 | ||
| - Added cMenuEditStrItem::InEditMode() (suggested by Christian Wieninger).
 | ||
| - Now using FE_READ_STATUS to read the current frontend status (suggested by
 | ||
|   Holger W<>chtler).
 | ||
| - The "Menu" key now behaves consistently. If there is anything on the OSD, it
 | ||
|   is closed when the "Menu" key is pressed, and if there is nothing on the OSD,
 | ||
|   the "Menu" key opens the main menu (suggested by Luca Olivetti).
 | ||
| - The new option "Setup/OSD/Timeout requested channel info" can be used to turn
 | ||
|   off the automatic timeout of the channel display in case it was invoked by
 | ||
|   a press of the "Ok" key (suggested by Thiemo Gehrke).
 | ||
| - A message is now given when an instant recording is started (suggested by
 | ||
|   Helmut Auer). Actually the code was already there, just commented out - don't
 | ||
|   remember why it wasn't active...
 | ||
| - Removed an obsolete "Summary" text from i18n.c and preceded all key definition
 | ||
|   texts with "Key$" to avoid duplicates (reported by Lucian Muresan).
 | ||
| - Preceded all button texts with "Button$".
 | ||
| - Removed obsolete "Eject", "Language" and "scanning recordings..." texts.
 | ||
| - Added missing #include "thread.h" to dvbspu.c (reported by Gavin Hamill).
 | ||
| - Disabled the use of "fadvise" in cUnbufferedFile because there have been
 | ||
|   several reports that it causes more problems than it solves (suggested by
 | ||
|   Petri Hintukainen). If you want to use "fadvise", you can activate the line
 | ||
|   //#define USE_FADVISE
 | ||
|   in tools.c.
 | ||
| - Removed unused 'offset' member from cOsdItem.
 | ||
| - In the "Channels" menu the numeric keys now position the cursor to the channel
 | ||
|   with the given number (see MANUAL, section "Remote Control Keys", note (3) for
 | ||
|   details).
 | ||
| - The "Mark/Move" function in the "Channels" menu now also works in the non-numeric
 | ||
|   sort modes.
 | ||
| - The default cOsdObject::Show() now automatically calls cOsdMenu::Display() if
 | ||
|   this is a menu.
 | ||
| - The new "Info" key brings up information on the currently viewed programme
 | ||
|   or recording. For a live programme this is the same as "Schedule/Ok", i.e. the
 | ||
|   description of the current EPG event. For a recording this is the same as shown
 | ||
|   by the "Info" button in the "Recordings" menu. Plugins that implement players
 | ||
|   can overwrite their cControl::GetInfo() function to show their own info (see
 | ||
|   PLUGINS.html for details). Pressing the "Info" key again while the info is
 | ||
|   displayed will close the OSD. In order to assign this new key to an existing
 | ||
|   remote control setup, the remote.conf file needs to be deleted and VDR has
 | ||
|   to be restarted to go through the process of learning the remote control keys.
 | ||
| - Any cReceivers still attached to a cDevice when that device switches to a
 | ||
|   different transponder are now automatically detached (suggested by Patrick
 | ||
|   Fischer).
 | ||
| - The "flags" of a timer are now handled as an unsigned integer value. In order
 | ||
|   to do this, the interface of cMenuEditBitItem also had to be changed.
 | ||
| - In string entry fields (like, e.g., the file name of a recording) the characters
 | ||
|   can now be entered by pressing the numeric keys, the same way as on a
 | ||
|   telephone keypad (based on the "Easy Input" patch from Marcel Schaeben).
 | ||
| - Fixed the "Day" field of the "Edit timer" menu when pressing '0' to switch
 | ||
|   from "single shot" to "weekly", followed by the "Right" key (reported by
 | ||
|   Andreas B<>ttger).
 | ||
| - The file 'ca.conf' is obsolete and has been removed.
 | ||
| - Revised all descriptions regarding CICAM.
 | ||
| - Adapted c(Dvb)Device::ProvidesCa() to the dynamic CA handling.
 | ||
| - Added a mutex to synchronize cDevice::PlayPesPacket() and SetCurrentAudioTrack()
 | ||
|   (thanks to Reinhard Nissl).
 | ||
| - Added a SleepMs() in cRecorder::Action() to avoid a busy loop (thanks to Ingo
 | ||
|   Schneider).
 | ||
| - Cleaned up some trailing white space.
 | ||
| 
 | ||
| 2006-01-15: Version 1.3.39
 | ||
| 
 | ||
| - The SVDRP command LSTT now accepts the new option 'id' to have the channels
 | ||
|   of the timers listed with their unique channel ids instead of their numbers
 | ||
|   (suggested by Matthias Schniedermeyer).
 | ||
| - Added a missing #include <linux/unistd.h> to thread.c (thanks to Ville Skytt<74>).
 | ||
| - Fixed the "plugins-clean" and "plugins-install" targets in the Makefile (thanks
 | ||
|   to Andreas Brachold).
 | ||
| - Fixed handling "more than 3 byte" key sequences in cKbdRemote::ReadKeySequence()
 | ||
|   (thanks to Peter Bieringer). If you are using the PC keyboard as remote control
 | ||
|   input you may need to make VDR newly learn the keys by removing the remote.conf
 | ||
|   file.
 | ||
| - To avoid problems with access rights when VDR shall run as 'root' it now skips
 | ||
|   all SetCaps() and SetUser() calls when it is started as 'root' and "-u root"
 | ||
|   is given.
 | ||
| - Added missing i18n entry for the "Timer" button (thanks to Ville Skytt<74>)
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Making the "Menu" key behave consistently has not been well received by several
 | ||
|   users, so the new option "Setup/OSD/Menu button closes" can be used to get the
 | ||
|   old behavior back (which also is the default value of this option).
 | ||
| - Dropped the default vdr user. The program now always runs under the user id
 | ||
|   it was started from, unless the '-u' option is given and it was started from
 | ||
|   the 'root' user. If you want to have a default vdr user, you can activate and
 | ||
|   adjust the "VDR_USER = vdr" line in your Make.config file (from the original
 | ||
|   patch by Ludwig Nussel).
 | ||
| - Key macros can now be defined for all non-modeless keys (suggested by Mirko D<>lle).
 | ||
| - Adjusted the "KEY MACROS" section of vdr.5 to the new plugin calling mechanism
 | ||
|   introduced in version 1.3.32.
 | ||
| - Removed the now obsolete "ca.conf" section from vdr.1 (thanks to Ville Skytt<74>).
 | ||
| - Added missing description of L and R circular polarization to 'diseqc.conf'.
 | ||
| - Added a note about "modprobe capability" to INSTALL (suggested by Patrick Cernko).
 | ||
| - Fixed canonicalizing the file name in the SVDRP command GRAB to allow full path
 | ||
|   names (thanks to Stefan Huelswitt).
 | ||
| - Added a missing '-' to the example for viewing a grabbed image on a remote host
 | ||
|   (reported by Philippe Gramoull<6C>).
 | ||
| - Made the "What's on now/next?" menus a lot faster by storing a pointer to each
 | ||
|   channel's schedule in the cChannel data.
 | ||
| - Made the log messages regarding lost lock of devices "info" instead of "error"
 | ||
|   (suggested by Andreas Brachold).
 | ||
| - The SVDRP command GRAB allows file names without extension again (suggested by
 | ||
|   Stefan Huelswitt).
 | ||
| - Pressing '0' in the "Schedule" menu now rotates through displaying "This event on
 | ||
|   this channel", "This event on all channels" and "All events on all channels".
 | ||
|   This can be used to find reruns of a given show, or the episodes of a series.
 | ||
|   Note that if there are many channels in your channels.conf, displaying the
 | ||
|   "All events on all channels" page may take a while.
 | ||
| - The status markers in the "Schedule" menu are now only updated if a submenu is
 | ||
|   closed in which a timer has been modified, which speeds up closing submenus.
 | ||
| - Now only writing Dolby Digital tracks into the 'info.vdr' file of a recording
 | ||
|   if Setup.UseDolbyDigital is true (suggested by Andr<64> Weidemann).
 | ||
| - Added a leading '0' to the day in the DayDateTime() function (thanks to Rolf
 | ||
|   Ahrenberg).
 | ||
| - No longer displaying color buttons in the recording info menu if it has been
 | ||
|   invoked from a player (reported by J<>rgen Schilling).
 | ||
| 
 | ||
| 2006-01-22: Version 1.3.40
 | ||
| 
 | ||
| - Fixed a second place where a message should be given when an instant recording
 | ||
|   is started (reported by Jesus Bravo Alvarez).
 | ||
| - Modified logging so that even on NPTL systems each line in the log file shows
 | ||
|   the individual thread's pid (based on a suggestion from Francois-Xavier Kowalski).
 | ||
| - Fixed a problem with @plugin in keymacros.conf in case the named plugin is not
 | ||
|   loaded (reported by Franz Gangkofer).
 | ||
| - Fixed a crash after executing the SVDRP command CLRE, caused by dangling 'schedule'
 | ||
|   pointers from cChannel objects (reported by Malte Schr<68>der).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Improved NULL checking in strreplace().
 | ||
| - Fixed a crash in the Schedule menu with events that have no title (reported by
 | ||
|   Rolf Ahrenberg). cEvent::FixEpgBugs() now assigns a "No title" string to events
 | ||
|   that have no title.
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Recordings are now only started if there is at least 300MB free disk space
 | ||
|   (suggested by Markus Hahn).
 | ||
| - When entering text via the numeric keys, the cursor now automatically advances
 | ||
|   (based on a patch from Rolf Ahrenberg).
 | ||
| - Updated the Polish OSD texts and the fontosd-iso8859-2.c file (thanks to Jaroslaw
 | ||
|   Swierczynski).
 | ||
| - Disabled the "buffer reserve" in Transfer Mode. Last chance to complain if you
 | ||
|   really need it - it will be completely removed in the next version. If you are
 | ||
|   experiencing problems with a/v running out of sync, try the latest driver and
 | ||
|   firmware (if you are using a full featured DVB card).
 | ||
| - Switching channels with the Up/Down or Channel+/Channel- keys now works a lot
 | ||
|   faster when the repeat function kicks in, by not actually switching the
 | ||
|   channel every time, but rather only displaying the channel info and doing
 | ||
|   the final switch when the key is released.
 | ||
| - The channel display is now updated _before_ the channel is switched.
 | ||
| - Added a missing initialization of 'timeout' in the cDisplayChannel constructor.
 | ||
| - Fixed detecting if there can be any useful further input when entering channel
 | ||
|   numbers (thanks to Thomas Bergwinkl).
 | ||
| - Updated the Spanish OSD texts (thanks to Jesus Bravo Alvarez).
 | ||
| - Fixed handling the '0' key for switching between the last two channels (thanks
 | ||
|   to Thomas Bergwinkl).
 | ||
| 
 | ||
| 2006-01-29: Version 1.3.41
 | ||
| 
 | ||
| - EPG events from epg.data or SVDRP's PUTE command now have their Title set to
 | ||
|   "No Title" if none was set.
 | ||
| - Fixed checking toFile in cCuttingThread::Action() (found in a larger patch from
 | ||
|   Artur Skawina).
 | ||
| - Fixed a crash when pressing '0' in the "Schedule" menu on a channel that doesn't
 | ||
|   have any EPG data (reported ny Alexander Hans).
 | ||
| - Updated the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Fixed a missing ',' in the Greek OSD texts (thanks to Arthur Konovalov).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Fixed handling the tfRecording flag when reading timers (bug reported by Andreas
 | ||
|   Mair).
 | ||
| - Now checking whether the channel exists before setting the PMT filter in
 | ||
|   cPatFilter::Process() (thanks to Thomas Bergwinkl).
 | ||
| - Now trying to reestablish the connection to the LIRC daemon in case it breaks
 | ||
|   (thanks to Ville Skytt<74>).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed channel switching with the Down (Up) key in case the current channel is
 | ||
|   already the first (last) in the list (reported by Frank Kr<4B>mmelbein).
 | ||
| - Removed the "buffer reserve" in Transfer Mode - it's no longer necessary with
 | ||
|   recent driver/firmware versions.
 | ||
| - The epg.data file is now written when VDR exits (suggested by Daniel Karsubka).
 | ||
| - Fixed cTimers::GetNextActiveTimer() so that it won't return an expired timer
 | ||
|   (reported by Rolf Ahrenberg).
 | ||
| - Changed DVBS_TUNE_TIMEOUT and DVBC_TUNE_TIMEOUT to 9000ms to avoid problems with
 | ||
|   channels that have low symbol rates (reported by Suur Karu).
 | ||
| - Fixed displaying the current audio track in the channel display.
 | ||
| - When reading epg.data (or data from PUTE), the version number of events with
 | ||
|   table IDs smaller than 0x50 is now ignored because otherwise the current
 | ||
|   running status would not be set after a restart of VDR.
 | ||
| - Implemented a timeout for remote controls that don't deliver "repeat" keypresses
 | ||
|   very fast (based on a suggestion by Luca Olivetti; problem with the new handling
 | ||
|   of k_Repeat keypresses in channel switching reported by Udo Richter).
 | ||
| - When looking for the present or following EPG event, the running status is now
 | ||
|   always taken into account.
 | ||
| - Now initializing the channels' schedule pointers when reading the epg.data file,
 | ||
|   so that the first WhatsOn menu will come up faster.
 | ||
| - If a shutdown is requested, but the shutdown script doesn't actually halt the
 | ||
|   system, it is now tried again after 5 minutes (suggested by Helmut Auer).
 | ||
| - Separated the 'install' target into several individual targets; renamed the
 | ||
|   'plugins-install' target to 'install-plugins' (thanks to Helmut Auer).
 | ||
| 
 | ||
| 2006-02-05: Version 1.3.42
 | ||
| 
 | ||
| - Removed leftover 'needsBufferReserve' variable from cTransfer (thanks to Marco
 | ||
|   Schl<68><6C>ler).
 | ||
| - Fixed setting "No title" for broken event data (reported by Ronny Kornexl).
 | ||
| - Fixed channel up/down switching on single card systems (reported by Stefan
 | ||
|   Huelswitt).
 | ||
| - Fixed handling "pending" timers that blocked others that actually could record
 | ||
|   (reported by Thomas Koch).
 | ||
| - Speeded up cVideoRepacker (thanks to Reinhard Nissl).
 | ||
| - Added an 'Id' parameter to cDevice::PlayAudio() to allow plugins to easier
 | ||
|   process the audio data (thanks to Marco Schl<68><6C>ler).
 | ||
| - Added Czech language texts (thanks to Vladim<69>r B<>rta).
 | ||
|   Plugin authors may want to add the new entries to their I18N texts and contact
 | ||
|   the translators to have their texts translated. Note that there are now 21
 | ||
|   different OSD languages, so please make sure you have 21 versions for each of
 | ||
|   your texts.
 | ||
| - Updated the Polish OSD texts (thanks to Jaroslaw Swierczynski).
 | ||
| - Fixed auto advance in string entry fields when pressing Up/Down in insert mode
 | ||
|   (reported by Udo Richter).
 | ||
| - Fixed handling the "Setup/OSD/Menu button closes" option when set to 'yes' in
 | ||
|   case a replay is active (thanks to Udo Richter).
 | ||
| - Improved cUnbufferedFile; USE_FADVISE is now defined in tools.c by default, so
 | ||
|   if you don't want to use "fadvise" you need to comment out that line (thanks to
 | ||
|   Artur Skawina).
 | ||
| - Fixed a missing ',' in the Swedish OSD texts (thanks to Arthur Konovalov).
 | ||
| - cDevice::Transferring() can now be used to determine whether the (primary)
 | ||
|   device is currently playing in Transfer Mode (based on a suggestion by
 | ||
|   Reinhard Nissl).
 | ||
| - The 'runvdr' script no longer uses the $VDRUSR environment variable to set
 | ||
|   the user id under which 'vdr' shall run. Just add the '-u username' option
 | ||
|   when you call 'runvdr'.
 | ||
| - Fixed multiple entries of the same subdirectory in the "Recordings" menu
 | ||
|   (reported by Christian Jacobsen).
 | ||
| - Enabled generating a core dump if VDR is run with a different user id (thanks
 | ||
|   to Ville Skytt<74>).
 | ||
| - Fixed handling the "Blue" key in the "Schedule" menu for the current channel
 | ||
|   (thanks to Rolf Ahrenberg).
 | ||
| - Renamed the Makefile target 'plugins-clean' to 'clean-plugins' (suggested by
 | ||
|   Sebastian Frei).
 | ||
| - Made all font and image data 'const' (thanks to Darren Salt).
 | ||
| - Fixed scrolling with Up/Down in case there are non-selectable items at the
 | ||
|   beginning or end of the menu (reported by Helmut Auer).
 | ||
| - Added cSkin::GetTextAreaWidth() and cSkin::GetTextAreaFont(), so that a plugin
 | ||
|   that wants to do special text formatting can do so (thanks to Alexander Rieger).
 | ||
| 
 | ||
| 2006-02-19: Version 1.3.43
 | ||
| 
 | ||
| - Removed an unnecessary toFile->SetReadAhead() from cutter.c (thanks to Artur
 | ||
|   Skawina).
 | ||
| - The "Back" key now restores the original string when pressed while editing a
 | ||
|   string item (suggested by Markus Hahn).
 | ||
| - Now stopping scanning the video directory if there are too many levels of
 | ||
|   symbolic links, which might indicate a recursive link loop (based on a patch
 | ||
|   from Helmut Auer).
 | ||
| - Improved OSD area handling in cDvbSpuDecoder (thanks to Marco Schl<68><6C>ler).
 | ||
| - Now logging the description (if present) in case a thread is canceled (suggested
 | ||
|   by Marco Schl<68><6C>ler).
 | ||
| - cMenuText now uses the given font (thanks to Rolf Ahrenberg).
 | ||
| - The ST:TNG skin now uses the fixed font if requested when displaying texts.
 | ||
| - Fixed some typos in the CONTRIBUTORS file (thanks to Frank Kr<4B>mmelbein).
 | ||
| - Changed offset and size handling in 'libsi' from 'unsigned' to 'signed', so that
 | ||
|   overflows can be better detected (thanks to Marcel Wiesweg).
 | ||
| - Checking data size in CaDescriptor::Parse() and LinkageDescriptor::Parse() of
 | ||
|   'libsi' to avoid crashes with invalid data (thanks to Marcel Wiesweg).
 | ||
| - Made CharArray::DataOwnData::assign() in 'libsi' more robust against invalid
 | ||
|   data (suggested by Oliver Endriss). Also changed CharArray::DataOwnData::Delete()
 | ||
|   so that it sets 'size' and 'data' to 0.
 | ||
| - Now resetting the channel number if the number entered through the numeric keys
 | ||
|   exceeds the maximum channel number (thanks to Rolf Ahrenberg).
 | ||
| - The language code in the 'X' component records of EPG data can now consist of
 | ||
|   two codes, separated by '+'.
 | ||
| - If a recording starts and there is no EPG data available for the recorded channel,
 | ||
|   the 'X' audio component records for the 'info.vdr' file are now generated from the
 | ||
|   channel's PID data.
 | ||
| - Externally provided EPG data (with table ID 0x00) now gets its component
 | ||
|   descriptors set from the broadcast data, so that language codes and descriptions
 | ||
|   are available (suggested by Andreas Brugger).
 | ||
| - When setting the audio track descriptions, the language codes are now also set
 | ||
|   in case this is a replay session (based on a patch from Rolf Ahrenberg).
 | ||
| - If a recording starts and the channel's audio PID data has more language code
 | ||
|   information than the EPG's component data, the code from the channel is taken.
 | ||
| - Fixed handling DPID when deciding whether to switch to 'Transfer Mode' (thanks
 | ||
|   to Marco Schl<68><6C>ler).
 | ||
| - Fixed replaying recordings of radio channels with many audio tracks (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Added a comment to tChannelID::nid, explaining that is is actually the "original"
 | ||
|   network id.
 | ||
| 
 | ||
| 2006-02-26: Version 1.3.44
 | ||
| 
 | ||
| - Fixed setting the audio language codes in 'Transfer-Mode' (reported by Rolf
 | ||
|   Ahrenberg). The actual problem was the call to the Transferring() function in
 | ||
|   cDevice::AttachPlayer() before assigning the player.
 | ||
| - Fixed removing the '-' when entering a channel number where there is no other
 | ||
|   one that fits the input (thanks to Joachim Wilke).
 | ||
| - Fixed the 'libsi' function CharArray::checkSize(), which made a previous workaround
 | ||
|   in libsi/descriptor.c obsolete (thanks to Marcel Wiesweg).
 | ||
| - The "Ok" key in the "Jump" mode of the replay progress display now confirms the
 | ||
|   jump instead of closing the display (thanks to Christoph Haubrich).
 | ||
| - The 'summary' field of a timer definition has been renamed to 'aux', and is now
 | ||
|   only used for external applications to store auxiliary information with a timer,
 | ||
|   which has no meaning whatsoever to VDR itself.
 | ||
|   The contents of the 'aux' field of a timer is copied into the recording's
 | ||
|   'info.vdr' file, using the tag character '@'.
 | ||
| - The description of a recording is now taken exclusively from its related EPG
 | ||
|   data. If an application wants to use a different description it needs to set
 | ||
|   it with SVDRP/PUTE and use table ID 0x00, so that it won't be overwritten (as
 | ||
|   a side effect, however, this also disables VPS for such an event).
 | ||
| - There is no more "Summary" menu when pressing "Ok" in the "Timers" menu.
 | ||
|   The "Ok" key now always opens the "Edit timer" menu.
 | ||
| - The upper 16 bit of a timer's "flags" are no longer treated specially when a timer
 | ||
|   is modified in the "Edit timer" menu. If an external application needs to know if
 | ||
|   a timer was modified, it has to keep a copy of the timer's data and compare that
 | ||
|   to the actual data.
 | ||
| - The new function cRecordingInfo::ChannelID() can be used to retrieve the ID of
 | ||
|   the channel a recording was made from.
 | ||
| - The 'info.vdr' file of a recording now also contains the 'E' and 'V' records of
 | ||
|   the EPG event used when creating it.
 | ||
| - The option "Setup/OSD/Sort timers" has been removed. Timers are always sorted
 | ||
|   by their start time and priority.
 | ||
| - The "Blue" key in the "Timers" menu now displays the EPG info of the event the
 | ||
|   selected timer will record (if available). The "On/Off" function has been shifted
 | ||
|   to the "Red" button. Editing a timer is done by pressing "Ok".
 | ||
| - When determining which event a timer is going to record, all available events
 | ||
|   in the future are now taken into account (no more limit to 4 hours in the
 | ||
|   future). This has been done so that the event info is available in the "Timers"
 | ||
|   menu when pressing the "Blue" button. In order to avoid unnecessary work, each
 | ||
|   timer now has its own timestamp to control whether its schedule has changed
 | ||
|   since the last time its event has been set.
 | ||
| - Fixed setting events to timers in case a non-VPS event has expired.
 | ||
| - There is now a log message "timer ... set to event ..." when defining a timer
 | ||
|   from the EPG menu.
 | ||
| - Lines tagged with '#' in the 'info.vdr' file of a recording are now silently
 | ||
|   ignored when reading that file (suggested by Peter Bieringer). Such lines can
 | ||
|   be used by external tools to store arbitrary information.
 | ||
| - The 'event id' in EPG data has been extended to 32 bit, so that external tools
 | ||
|   can generate ids that don't collide with those from the DVB data stream
 | ||
|   (suggested by Matthias Schniedermeyer).
 | ||
| - The DrawBitmap() function now has a new parameter 'Overlay' that allows a bitmap
 | ||
|   to be drawn with a transparent background (thanks to Alexander Hans).
 | ||
| - Fixed cSchedule::GetFollowingEvent() in case there is currently no present event
 | ||
|   running (thanks to Pekka Mauno).
 | ||
| 
 | ||
| 2006-03-26: Version 1.3.45
 | ||
| 
 | ||
| - Fixed updating the "Info" button in the "Timers" menu.
 | ||
| - Reduced the number of events to actually check when setting events to timers.
 | ||
| - cMenuEditIntItem now checks the given value and forces it to be between the
 | ||
|   given min and max limits.
 | ||
| - The status changes of EPG events are now logged for all channels that have timers.
 | ||
| - Removed the log message "deleting plugin: ..." when shutting down VDR (thanks to
 | ||
|   Christoph Haubrich for reporting that this is irritating when calling "vdr --help").
 | ||
| - Fixed cReadLine::Read() for lines that end with the infamous "\r\n" (thanks to
 | ||
|   Rolf Ahrenberg).
 | ||
| - Fixed cDvbDevice::SetAudioBypass() in case setTransferModeForDolbyDigital is false
 | ||
|   (thanks to Werner Fink).
 | ||
| - Updated 'sources.conf' (thanks to Oleg Roitburd).
 | ||
| - Fixed the shutdown timeout (thanks to Alexander Wenzel).
 | ||
| - Only calling RemoveEmptyVideoDirectories() once in case a recording has been
 | ||
|   deleted (reported by Hardy Flor).
 | ||
| - Fixed deleting recordings that have been removed externally when running out of
 | ||
|   disk space (reported by Jan Lenz).
 | ||
| - Fixed handling repeating VPS timers (they stopped recording too early).
 | ||
| - Timer log messages now show "VPS" if this is a VPS timer.
 | ||
| - Fixed getting the present EPG event in case none is currently 'running' (it
 | ||
|   then returns the one that just ended).
 | ||
| - Fixed calling a plugin's main menu function while a message is being displayed
 | ||
|   (reported by Helmut Auer).
 | ||
| - Updated the Russian OSD texts (thanks to Oleg Roitburd).
 | ||
| - Made cMenuRecordings::GetRecording() 'protected' (suggested by Marius Heidenstecker).
 | ||
| - Speeded up cRemux::ScanVideoPacket() (thanks to Reinhard Nissl).
 | ||
| - Enhanced logging EPG event data.
 | ||
| - Fixed format string handling (thanks to Darren Salt).
 | ||
| - The new function cDevice::ForceTransferMode() can be used to force the primary
 | ||
|   device into transfer mode (thanks to Reinhard Nissl).
 | ||
| - The 'version' of EPG events is now ignored when reading EPG data from 'epg.data'
 | ||
|   or via SVDRP/PUTE to avoid problems with double EPG events.
 | ||
| - The 'running status' of EPG events is now only set to SI::RunningStatusNotRunning
 | ||
|   for events before the present event.
 | ||
| - Fixed some #include sequences.
 | ||
| - Single shot VPS timers are now only considered 'expired' if their associated
 | ||
|   EPG event has been explicitly set to SI::RunningStatusNotRunning.
 | ||
| - The check for timers to be deleted is now done only every 30 seconds.
 | ||
| 
 | ||
| 2006-04-09: Version 1.3.46
 | ||
| 
 | ||
| - Fixed handling broken PMT records (thanks to Marcel Wiesweg for pointing out how
 | ||
|   to detect these).
 | ||
| - Added a missing "Button$" for the Timer button and "Key$" in skinclassic.c
 | ||
|   (thanks to Rolf Ahrenberg).
 | ||
| - Fixed broken entry 'A111.1W' in sources.conf (reported by Luca Olivetti).
 | ||
| - Replaced the obsolete entry 'S21.5E' in the default 'diseqc.conf' with 'S13.0E'
 | ||
|   (reported by Ville Skytt<74>).
 | ||
| - Fixed learning keys when VDR is already running (thanks to Jurij Retzlaff).
 | ||
| - Fixed handling the system time transponder setting in the Setup/EPG menu, which
 | ||
|   was broken by the min/max fix in cMenuEditIntItem.
 | ||
| - VPS timers now record only events that have exactly the given start time.
 | ||
|   This fix also implements recording several subsequent events that have the
 | ||
|   same VPS time (like a sports event with intermittent news breaks).
 | ||
| - When checking for timers that have entered the "VPS margin", any free devices are
 | ||
|   now used to switch to the needed transponder. This improves cases where more than
 | ||
|   one VPS timer is about to start.
 | ||
| - Fixed handling the VPS margin in case the event's duration is shorter than the
 | ||
|   margin.
 | ||
| - Fixed handling VPS timers in case the primary device needs to switch to the
 | ||
|   timer's transponder.
 | ||
| - Now avoiding the 'actual' device when starting a recording, so that a Transfer
 | ||
|   Mode for live tv isn't interrupted.
 | ||
| - Fixed a typo in skins.h (thanks to Alexander Rieger).
 | ||
| - cSkins::QueueMessage() called from a background thread with an empty message
 | ||
|   now clears all messages that have been previously queued by that thread and have
 | ||
|   not yet been displayed (thanks to Alexander Rieger).
 | ||
| - Fixed handling the color button texts when switching from the 'Schedule' menu of
 | ||
|   a channel without EPG info to the 'What's on now' menu (reported by Rolf
 | ||
|   Ahrenberg).
 | ||
| - cMenuEditIntItem and cMenuEditChanItem can now be given strings to label the
 | ||
|   minimum and maximum values, and the case that no channel has been selected,
 | ||
|   respectively.
 | ||
| - The initial channel and volume can now be defined in the "Setup/Miscellaneous"
 | ||
|   menu (based on a patch from Thomas Keil).
 | ||
| - When hitting the end of a recording in fast forward mode, VDR no longer switches
 | ||
|   back to normal speed if the recording is already finished (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| - No longer calling cPlugin::ProcessArgs() if VDR is run with the --help or
 | ||
|   --version option, to avoid error messages from plugins (reported by Udo Richter).
 | ||
| - Now checking whether there is any text before calling cStatus::MsgOsdTextItem()
 | ||
|   (reported by Joachim Wilke).
 | ||
| 
 | ||
| 2006-04-17: Version 1.3.47
 | ||
| 
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed a crash when setting the time transponder in the Setup menu, caused by the
 | ||
|   new 'noneString' in cMenuEditChanItem (reported by Thomas G<>nther).
 | ||
| - Added NULL checks to some strdup() calls in menuitems.c (suggested by Darren
 | ||
|   Salt).
 | ||
| - Removed the unnecessary 'value' member from cMenuEditItem.
 | ||
| - Fixed the initial setting of the time transponder setup parameter (reported
 | ||
|   by Thomas G<>nther).
 | ||
| - Fixed unnecessary Set() calls in cMenuEditIntItem::ProcessKey().
 | ||
| - Allowing a tolerance for symbol rate values that are off by one (thanks to
 | ||
|   Richard Lithvall).
 | ||
| - Added VBITeletextDescriptorTag, TeletextDescriptorTag, LocalTimeOffsetDescriptorTag
 | ||
|   and PremiereContentTransmissionDescriptor to 'libsi' (thanks to Marco Schl<68><6C>ler).
 | ||
| - Using geteuid() to check whether VDR is running as user 'root' (suggested by
 | ||
|   Tobias Grimm).
 | ||
| - Added a missing "Key$" in skincurses.c (reported by Darren Salt).
 | ||
| - Reintroduced the log message "deleting plugin: ..." when shutting down VDR (upon
 | ||
|   request by Ville Skytt<74>, as in the initial patch from Christoph Haubrich).
 | ||
| - Fixed the vdr.1 man page (a single DVB card can record and do live tv).
 | ||
| - The preferred audio language is now automatically selected when starting replay.
 | ||
| - Updated the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - The new function cPlugin::Active() can be used by a plugin to indicate that it
 | ||
|   is still busy and the system should not shut down or restart (based on a patch
 | ||
|   from Sascha Volkenandt). See PLUGINS.html for details.
 | ||
| - Fixed setting the 'Delta' parameter when calling the shutdown script with
 | ||
|   no active timer (reported by Helge Lenz).
 | ||
| - In order to make sure that plugins are compiled with the same DVB driver header
 | ||
|   files as VDR itself, the definition of DVBDIR has been removed from the VDR
 | ||
|   Makefile. If you are using a driver version that has its header files at a location
 | ||
|   other than /usr/include/linux/dvb, you can define DVBDIR in the Make.config
 | ||
|   file (see also INSTALL). Note that if you already have a Make.config file of your
 | ||
|   own, you should add the lines
 | ||
| 
 | ||
|   ifdef DVBDIR
 | ||
|   INCLUDES += -I$(DVBDIR)/include
 | ||
|   endif
 | ||
| 
 | ||
|   to its end, as in the new Make.config.template.
 | ||
|   Any reference to DVBDIR should be removed from all plugins' Makefiles, like this:
 | ||
| 
 | ||
|   ------------------------------------------------------------
 | ||
|   --- PLUGINS/src/hello/Makefile  2005/11/11 13:20:14     1.10
 | ||
|   +++ PLUGINS/src/hello/Makefile  2006/04/15 11:58:46     1.11
 | ||
|   @@ -20,7 +20,6 @@
 | ||
| 
 | ||
|    ### The directory environment:
 | ||
| 
 | ||
|   -DVBDIR = ../../../../DVB
 | ||
|    VDRDIR = ../../..
 | ||
|    LIBDIR = ../../lib
 | ||
|    TMPDIR = /tmp
 | ||
|   @@ -40,7 +39,7 @@
 | ||
| 
 | ||
|    ### Includes and Defines (add further entries here):
 | ||
| 
 | ||
|   -INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR)/include
 | ||
|   +INCLUDES += -I$(VDRDIR)/include
 | ||
| 
 | ||
|    DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
 | ||
|   ------------------------------------------------------------
 | ||
| 
 | ||
|   Thanks to Marco Schl<68><6C>ler for pointing out this problem.
 | ||
| - Implemented kNext and kPrev keys (based on a patch from Peter Juszack).
 | ||
|   See MANUAL for details.
 | ||
| - Implemented kChanPrev (from a patch from Darren Salt).
 | ||
| - The "Update channels" parameter in the "Setup/DVB" menu has been extended to
 | ||
|   allow updating only the PIDs (see MANUAL for details). When updating to this
 | ||
|   version of VDR, please verify that the setting is as you want it to be, because
 | ||
|   the values have been shifted.
 | ||
| - The new APIVERSION (see config.h) now allows existing compiled plugins to be
 | ||
|   used with newer versions of VDR, as long as there have been no changes to the
 | ||
|   VDR header files since the last APIVERSION. Existing plugins' Makefiles should
 | ||
|   have all references to VDRVERSION changed to APIVERSION, like this:
 | ||
| 
 | ||
|   ------------------------------------------------------------
 | ||
|   --- PLUGINS/src/hello/Makefile  2006/04/15 11:58:46     1.11
 | ||
|   +++ PLUGINS/src/hello/Makefile  2006/04/16 09:03:50     1.12
 | ||
|   @@ -28,9 +28,9 @@
 | ||
| 
 | ||
|    -include $(VDRDIR)/Make.config
 | ||
| 
 | ||
|   -### The version number of VDR (taken from VDR's "config.h"):
 | ||
|   +### The version number of VDR's plugin API (taken from VDR's "config.h"):
 | ||
| 
 | ||
|   -VDRVERSION = $(shell grep 'define VDRVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g')
 | ||
|   +APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
 | ||
| 
 | ||
|    ### The name of the distribution archive:
 | ||
| 
 | ||
|   @@ -67,7 +67,7 @@
 | ||
| 
 | ||
|    libvdr-$(PLUGIN).so: $(OBJS)
 | ||
|           $(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
 | ||
|   -       @cp $@ $(LIBDIR)/$@.$(VDRVERSION)
 | ||
|   +       @cp $@ $(LIBDIR)/$@.$(APIVERSION)
 | ||
| 
 | ||
|    dist: clean
 | ||
|           @-rm -rf $(TMPDIR)/$(ARCHIVE)
 | ||
|   ------------------------------------------------------------
 | ||
| - If a timer is newly created from within the "Schedule" menu, and its event is
 | ||
|   already running or has its start time within the next two minutes, it now goes
 | ||
|   directly into the "Edit timer" menu in order to allow the user to make further
 | ||
|   changes to timer parameters before the actual recording starts (inspired by
 | ||
|   Christian Wieninger's "epgsearch" plugin).
 | ||
| - Added format check to syslog_with_tid().
 | ||
| - Updated the INSTALL file's section about non-VDR files in the video directory
 | ||
|   (since version 1.3.38 disk access is done in a separate thread, so the watchdog
 | ||
|   timer won't hit).
 | ||
| - Changed the behaviour of the "Use small font" setup option to *always* use the small
 | ||
|   font if set to '2' - even if it would have been a fixed font (suggested by Ronny
 | ||
|   Kornexl).
 | ||
| - No longer using characters 0x01 and 0x02 for mapping single quote and slash in
 | ||
|   recording names (thanks to Patrick Fischer for reporting that this was a problem
 | ||
|   with XML). The single quote is not mapped at all, and the slash is interchanged
 | ||
|   with the tilde. Existing recordings will be handled like before, so there is
 | ||
|   no need to actually rename them.
 | ||
| - The cRemote::CallPlugin() function now has a boolean return value that tells
 | ||
|   the caller whether initiating the plugin call was successful (suggested by
 | ||
|   Reinhard Nissl). If it returns false, another plugin call is currently pending
 | ||
|   and the caller should try again later. This also means that the SVDRP command
 | ||
|   PLUG can now return an error code is the call fails.
 | ||
| - The new function cPlugin::MainThreadHook() can be used by plugins to perform
 | ||
|   actions in the context of the main program thread. Use this function with great
 | ||
|   care and only of you absolutely have to! See also PLUGINS.html.
 | ||
| 
 | ||
| 2006-04-23: Version 1.3.48
 | ||
| 
 | ||
| - Updated the GPL copies (thanks to Ville Skytt<74>).
 | ||
| - Fixed several spelling errors (thanks to Ville Skytt<74>).
 | ||
| - Updated the Polish OSD texts (thanks to Jaroslaw Swierczynski).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Updated the French OSD texts (thanks to Pierre Briec).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Updated the Romanian OSD texts (thanks to Lucian Muresan).
 | ||
| - Updated the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Updated the Russian OSD texts (thanks to Oleg Roitburd).
 | ||
| - Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
 | ||
| - Fixed wrong credits for the patch that was used to implement cPlugin::Active().
 | ||
| - Simplified the 'grep|awk|sed' command to retrieve the VDR/APIVERSION to a single
 | ||
|   'sed' call.
 | ||
| - Updated the Swedish OSD texts (thanks to Tomas Prybil).
 | ||
| - Modified the German OSD texts to be "less technical" (thanks to Andreas Brachold).
 | ||
| - Extended the version number reported with the '-V' option to also show the
 | ||
|   current APIVERSION (suggested by Thomas G<>nther).
 | ||
| - Fixed handling empty titles in cEvent::FixEpgBugs() (reported by Rolf Ahrenberg).
 | ||
| - Fixed some missing '-' in the German OSD texts (thanks to Walter Koch).
 | ||
| - Added an error message about plugins that don't honor APIVERSION in their Makefile
 | ||
|   (based on a suggestion by Udo Richter).
 | ||
| - Fixed a format string in recording.c to avoid a compiler warning on 64bit systems
 | ||
|   (thanks to Christian Wieninger for reporting, and Werner Schweer for pointing out
 | ||
|   that the 'z' modifier should be used here).
 | ||
| - Ignoring k_Repeat when deciding whether the same key has been pressed in string
 | ||
|   input fields (based on a patch from Marko M<>kel<65>).
 | ||
| 
 | ||
| 2006-04-28: Version 1.3.49
 | ||
| 
 | ||
| - Fixed initializing 'noapiv' in the Makefile (reported by Ronny Kornexl).
 | ||
| - Fixed extracting APIVERSION to work with older versions of 'sed' (reported by
 | ||
|   Oliver Endriss; thanks also to Udo Richter for a shorter version of the 'sed'
 | ||
|   expression).
 | ||
| - Fixed broken APIVERSION extraction line in 'newplugin' (thanks to Oliver Endriss).
 | ||
| - Fixed entering '0' in a cMenuEditIntItem (reported by Mirko D<>lle).
 | ||
| - Updated the Italian OSD texts (thanks to Nino Gerbino).
 | ||
| - Added a note about adding 'INCLUDES += -I$(DVBDIR)/include' to an existing
 | ||
|   Make.config (problem reported by Markus Ehrnsperger).
 | ||
| - Fixed handling the cPluginManager::Active() result when pressing the "Power" key
 | ||
|   (reported by Werner F<>rber).
 | ||
| - Added a hint about commenting out the line '#define USE_FADVISE' in tools.c in
 | ||
|   case of problems with replaying in fast forward mode if the video directory is
 | ||
|   mounted via a Samba share (reported by Andy Grobb).
 | ||
| - Changed the "Really restart?" prompt in the call to cPluginManager::Active() in
 | ||
|   menu.c to "restart anyway?" (suggested by Rolf Ahrenberg).
 | ||
| - Removed the obsolete "'1' for encrypted radio channels" part from the description
 | ||
|   of the VPID in vdr.5 (reported by Alexander Hans).
 | ||
| - Fixed tuning to the channel of a VPS timer if the device is the actual device.
 | ||
| 
 | ||
| 2006-04-30: Version 1.4.0
 | ||
| 
 | ||
| - Fixed handling the "Power" key in case a recording is going on and no plugin
 | ||
|   is active (thanks to Udo Richter; bug reported by Dominique Simon).
 | ||
| - Updated the Polish OSD texts (thanks to Jaroslaw Swierczynski).
 | ||
| - Fixed a memory leak in handling external EPG data (thanks to Tobias Grimm).
 | ||
| - Fixed a memory leak in closing the video file during replay (thanks to Tobias Grimm).
 | ||
| - Updated the Italian OSD texts (thanks to Nino Gerbino and Antonio Ospite).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| 
 | ||
| 2006-05-14: Version 1.4.0-1
 | ||
| 
 | ||
| - Updated 'S110W' in 'sources.conf'.
 | ||
| - Adjusted the 'runvdr' script so that the user can fill in the functions to
 | ||
|   detect, load and unload the necessary driver modules (thanks to M. Kiesel for
 | ||
|   reporting that it still used DVBDIR).
 | ||
| - Added 'eval' to the $VDRCMD call in 'runvdr' to avoid problems with quoting
 | ||
|   (suggested by Udo Richter).
 | ||
| - Fixed missing ',' in the Italian and Polish OSD texts (thanks to Marko M<>kel<65>).
 | ||
| - Updated the Czech OSD texts (thanks to Vladim<69>r B<>rta).
 | ||
| - Fixed handling the "Power" key in case a timer is about to start recording
 | ||
|   (thanks to Udo Richter).
 | ||
| - Fixed the character 'r' in fontosd and fontsml for iso8859-2 (thanks to Vladim<69>r
 | ||
|   B<>rta).
 | ||
| - When checking whether a VPS timer has entered the "VPS margin", the event's start
 | ||
|   time is now used instead of the timer's start time, because otherwise events that
 | ||
|   start way off of their VPS time wouldn't be recorded correctly.
 | ||
| - If VPS timers are active, their events are now being kept up to date if there
 | ||
|   are any free devices available.
 | ||
| - Fixed the character #207 in fontosd for iso8859-2 (thanks to Vladim<69>r B<>rta).
 | ||
| - Fixed handling unknown codes when learning LIRC remote control codes (reported
 | ||
|   by Helmut Auer).
 | ||
| - Since some channels (especially the Austrian ORF) randomly change the ids of their
 | ||
|   EPG events, VDR now gives the start time precedence when searching for existing
 | ||
|   events.
 | ||
| - Fixed automatically updating the CAM menu in case the whole operation (for
 | ||
|   instance a firmware update) takes longer than the menu timeout.
 | ||
| 
 | ||
| 2006-05-28: Version 1.4.0-2
 | ||
| 
 | ||
| - Removed leftover LSMOD=... line from 'runvdr'.
 | ||
| - Modified the Makefile to copy additional libraries a plugin might provide (suggested
 | ||
|   by Wayne Keer). See PLUGINS.html for details.
 | ||
| - Fixed handling Transfer Mode when replaying Dolby Digital audio and the option
 | ||
|   '-a' was given (based on a patch from Werner Fink). To avoid having to increment
 | ||
|   the API version, several #if checks have been introduced around this. These will
 | ||
|   be removed once the API version actually needs to be incremented.
 | ||
| - Fixed deleting the 'skinDescriptions' in cMenuSetupOSD::~cMenuSetupOSD() (thanks
 | ||
|   to Tobias Grimm).
 | ||
| - Fixed calculating the start time of repeated timers with "first day" (thanks to
 | ||
|   Udo Richter).
 | ||
| - Now setting a timer's cached start time to 0 after a call to Skip() (thanks to
 | ||
|   Udo Richter).
 | ||
| - Fixed handling the running status of EPG events in case the "Schedule" menu is
 | ||
|   currently open (i.e. a write lock on the schedules data can't be achieved).
 | ||
| - Fixed handling VPS timers in case the EPG event hasn't been 'seen' in a while.
 | ||
| - Fixed calculating the cache size in cUnbufferedFile::Read() (thanks to Artur Skawina).
 | ||
| - Removed -fPIC from VDR's and libsi's Makefile (suggested by Prakash Punnoor).
 | ||
| - Modified the device selection to better handle timer conflicts (reported by
 | ||
|   Christian Wieninger).
 | ||
| - Avoiding a compiler warning in libsi's TypeLoop::operator[].
 | ||
| - Now processing the "frequency list descriptor" (based on a patch from Anssi Hannula).
 | ||
| - Improved the repeat function for LIRC remote controls (thanks to Joerg Riechardt).
 | ||
| - Fixed moving channels, which sometimes stopped the current replay session
 | ||
|   (reported by Mirko D<>lle).
 | ||
| - Fixed deleting channels in case the current channel's number changes (reported
 | ||
|   by Mirko D<>lle).
 | ||
| 
 | ||
| 2006-06-04: Version 1.4.0-3
 | ||
| 
 | ||
| - Fixed the PremiereContentTransmissionDescriptor in 'libsi' (thanks to Stefan
 | ||
|   Huelswitt).
 | ||
| - Removed all the compatibility '#if APIVERSNUM...' stuff and instead increased
 | ||
|   the API version number - plugins will have to be recompiled.
 | ||
| - Removed the call to pthread_setschedparam(childTid, SCHED_RR, 0) in thread.c,
 | ||
|   because it caused a compiler warning with post-2.4 glibc (reported by Ville Skytt<74>).
 | ||
|   Since the third parameter has to be non-null to have any effect, the call was
 | ||
|   presumably a NOP, anyway.
 | ||
| - Fixed the 'clean-plugins' target in the Makefile to also remove additional
 | ||
|   plugin libraries (thanks to Wayne Keer).
 | ||
| - Applied the fixes to moving and deleting channels from version 1.4.0-2 to the
 | ||
|   SVDRP commands MOVC and DELC as well.
 | ||
| - Fixed handling the display of the '*' indicator in the "What's on now/next?"
 | ||
|   menu, so that events that haven't been "seen" in the data stream within 30
 | ||
|   seconds won't be shown as "running".
 | ||
| - Fixed handling tabbed item display in 'skincurses'.
 | ||
| - Increased the column spacing in the "Recordings" menu (was too small for the
 | ||
|   'skincurses' plugin).
 | ||
| - When the 'skincurses' plugin is loaded, it automatically sets the 'curses'
 | ||
|   skin as the current one. This doesn't modify the Setup.OSDSkin parameter, so
 | ||
|   that after using 'skincurses' (for instance for debugging) the previously
 | ||
|   selected skin will be used again.
 | ||
| - Added some log messages when setting the current skin.
 | ||
| - Only making a second attempt to set the current skin at startup if the first
 | ||
|   attempt has failed.
 | ||
| - Now switching to non-VPS timers' channels 60 seconds before the timer starts
 | ||
|   (if a free device is available), to allow for the updating of EPG data and CA
 | ||
|   descriptors before the actual recording starts.
 | ||
| 
 | ||
| 2006-06-11: Version 1.4.1
 | ||
| 
 | ||
| - Changed the log messages when grabbing an image from 'isyslog()' to 'dsyslog()'
 | ||
|   so that they can be suppressed in normal operation mode to avoid clogging the
 | ||
|   log file in case this function is used frequently (suggested by Helmut Auer).
 | ||
| 
 | ||
| 2006-06-18: Version 1.4.1-1
 | ||
| 
 | ||
| - Added "-fPIC" to the compiler options in Make.config.template when compiling
 | ||
|   plugins (thanks to Udo Richter). If you use your own Make.config file, you may
 | ||
|   want to add these lines there, too.
 | ||
| - Added some comment to cDevice::GetDevice() to explain how the individual
 | ||
|   conditions are put together to make a decision on which device to use.
 | ||
| - Updated 'S13E' in 'sources.conf' (thanks to Antti Hartikainen).
 | ||
| - Now making sure VPS timers don't get stuck with outdated events, and that the
 | ||
|   actual device isn't used for updating a VPS timer's event as long as other
 | ||
|   free devices are available.
 | ||
| - Modified rcu.c to better handle RC5 codes.
 | ||
| - Added a missing variable initialization in cRingBufferLinear::cRingBufferLinear()
 | ||
|   (thanks to Prakash Punnoor).
 | ||
| - Fixed handling relative link targets in the ReadLink() function (reported by
 | ||
|   Patrick Cernko).
 | ||
| - Now making sure a VPS timer has a schedule in case the epg.data file didn't
 | ||
|   contain one when VDR was started.
 | ||
| 
 | ||
| 2006-07-23: Version 1.4.1-2
 | ||
| 
 | ||
| - Fixed the Makefile of the 'servicedemo' plugin, so that it defines the
 | ||
|   PLUGIN macro, which allows the Make.config file to react properly when
 | ||
|   compiling the plugin (reported by Bernd Melcher).
 | ||
|   Note to all plugin developers: a plugin's Makefile *must* define the PLUGIN
 | ||
|   macro, even if it doesn't use it itself!
 | ||
| - Added a comment regarding the PLUGIN macro to the 'newplugin' script.
 | ||
| - Added '--vfat' to the vdr.1 man page (reported by Udo Richter).
 | ||
| - Removed a double fdopen() in cPipe::Open() (reported by Stefan Huelswitt).
 | ||
| - Fixed handling the running status of EPG events before the currently running one,
 | ||
|   in case they are added after the current event.
 | ||
| - cEIT::cEIT() now calls pSchedule->SetPresentSeen() even if OnlyRunningStatus is
 | ||
|   true.
 | ||
| - Newlines in title and short text of an EPG event are now changed into blanks only
 | ||
|   after all other fixes, because a short text might become a description.
 | ||
| - Fixed handling network masks in the svdrphosts.conf file (thanks to Patrick
 | ||
|   Maier).
 | ||
| - Fixed handling relative volume settings in the call to cStatus::MsgSetVolume()
 | ||
|   (reported by Norbert Wentz).
 | ||
| - Added a missing initialization of 'mutex' in cCiMenu::cCiMenu() and removed
 | ||
|   some superfluous semicolons in ci.c (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed handling client side termination of SVDRP connections (thanks to Frank
 | ||
|   Schmirler).
 | ||
| - cDevice::GetDevice() now prefers any device that's already receiving and doesn't
 | ||
|   require detaching receivers (suggested by Anssi Hannula).
 | ||
| - Fixed handling numeric keys in the channel display after switching channel groups
 | ||
|   (thanks to Andreas Regel).
 | ||
| - Menu items derived from cMenuEditIntItem now loop though their values if they
 | ||
|   have a dedicated minimum or maximum limit (suggested by Andy Grobb). Looping is
 | ||
|   only done for normal keypresses, not for repeated ones. This allows the user to
 | ||
|   scroll the value all the way to the limit by keeping the key pressed.
 | ||
| 
 | ||
| 2006-08-06: Version 1.4.1-3
 | ||
| 
 | ||
| - Fixed assigning schedules to channels in case there is no initial EPG information
 | ||
|   (thanks to Frank Schmirler).
 | ||
| - Increased the APIVERSION to allow plugins that relied on the cStatus::MsgSetVolume()
 | ||
|   bug to react properly (suggested by Stefan Huelswitt).
 | ||
| - Fixed cDevice::ToggleMute() (thanks to Christoph Haubrich).
 | ||
| - Fixed deleting the last character of a string menu item in insert mode (thanks
 | ||
|   to Udo Richter).
 | ||
| - The /video/.update file is now touched _after_ an editing process is finished
 | ||
|   in order to avoid excessive disk access (thanks to Artur Skawina).
 | ||
| - Fixed handling the running status of EPG events before the currently running one,
 | ||
|   in case they are added after the current event (cont'd from version 1.4.1-2).
 | ||
| - Modified the shutdown mechanism, so that the shutdown script is never given a
 | ||
|   time in the past (reported by Helmut Auer). If a timer is currently recording,
 | ||
|   or a recording would start within the next 30 minutes (default for the "Min.
 | ||
|   event timeout" setup parameter), and the user insists in shutting down now, the
 | ||
|   reboot time given to the shutdown script will correspond to a time that is
 | ||
|   "Min. event timeout" minutes (default is 30) in the future.
 | ||
| - Avoiding shutdown message "Recording in ... minutes, shut down anyway?" with
 | ||
|   a negative number of minutes (reported by Udo Richter).
 | ||
| - Fixed getting the next active timer when shutting down (thanks to Udo Richter).
 | ||
| - Modified the cSVDRP::Close() function to avoid code duplication.
 | ||
| 
 | ||
| 2006-08-13: Version 1.4.1-4
 | ||
| 
 | ||
| - Fixed converting the port number in the "connect from..." log message of SVDRP
 | ||
|   (thanks to Ville Skytt<74>).
 | ||
| - Made the cCiSession members sessionId and resourceId uint16_t and uint32_t,
 | ||
|   respectively, to match their types in the CI session data (thanks to Ville Skytt<74>
 | ||
|   for reporting that there are places where ntohs() is assigned to different types).
 | ||
| - Changed the way a device is selected for receiving in order to keep devices with
 | ||
|   CAMs better available, even if this means recording on the primary device (reported
 | ||
|   by J<>rn Reder; thanks to Anssi Hannula for improving handling Transfer Mode devices
 | ||
|   in this).
 | ||
| - No longer stopping removing empty directories if an error occurs (thanks to
 | ||
|   Oliver Endriss).
 | ||
| - Added a log error message to cPlugin::ConfigDirectory() in case a plugin calls it
 | ||
|   from a separate thread (reported by Udo Richter).
 | ||
| 
 | ||
| 2006-08-20: Version 1.4.1-5
 | ||
| 
 | ||
| - Replaced the "quick workaround for additional live audio PIDs" in
 | ||
|   cDvbDevice::SetChannelDevice() with an actual solution in
 | ||
|   cDvbDevice::SetAudioTrackDevice() in order to prevent sticky PIDs in CAMs,
 | ||
|   which caused long switching times or completely blank screens when switching
 | ||
|   between encrypted channels on the same transponder (reported by Tomas Berglund).
 | ||
| - Adapted cThread::ThreadId() to recent kernels (thanks to Ville Skytt<74>).
 | ||
| - Added --remove-destination to the 'cp' command for binaries in the Makefile to
 | ||
|   avoid a crash in case a new version is installed on a running system (suggested
 | ||
|   by Petri Hintukainen).
 | ||
| - Fixed handling "Ca Info" in case the CAM sends this again if the smart card is
 | ||
|   replaced with a different one.
 | ||
| 
 | ||
| 2006-08-27: Version 1.4.2
 | ||
| 
 | ||
| - Revoked the change to cDevice::GetDevice() that was introduced in version 1.4.1-2,
 | ||
|   which made it prefer any device that's already receiving and doesn't require
 | ||
|   detaching receivers. This change has caused some unwanted behavior, so further
 | ||
|   testing is necessary.
 | ||
| 
 | ||
| 2006-09-03: Version 1.4.2-1
 | ||
| 
 | ||
| - Added LC_ALL to the checks for UTF-8 at startup (suggested by Matthias Schwarzott).
 | ||
| - Fixed the cTimer::operator=() so that it won't mess up the cListObject's pointers
 | ||
|   (reported by Alexander Rieger).
 | ||
| - Fixed a memory leak in the cTimer::operator=() when using the 'aux' string
 | ||
|   (reported by Alexander Rieger).
 | ||
| - Fixed processing the PDCDescriptor in 'libsi' on big endian systems (thanks to
 | ||
|   Martin Ostermann).
 | ||
| - Fixed handling relative volume settings that unmute the audio in the call to
 | ||
|   cStatus::MsgSetVolume() (reported by Oliver Endriss).
 | ||
| 
 | ||
| 2006-09-09: Version 1.4.2-2
 | ||
| 
 | ||
| - Fixed cTimer::operator=() in case a cTimer variable is assigned to itself (thanks
 | ||
|   to Alexander Rieger).
 | ||
| - Implemented a copy constructor for cTimer (thanks to Udo Richter for reporting that
 | ||
|   an assignment in svdrp.c didn't use the cTimer::operator=()).
 | ||
| 
 | ||
| 2006-09-17: Version 1.4.2-3
 | ||
| 
 | ||
| - Added --remove-destination to the 'cp' command for binaries in the Makefiles of
 | ||
|   the plugins (thanks to Rolf Ahrenberg).
 | ||
| - The 'skincurses' plugin now adjusts the size of the OSD to the size of the console
 | ||
|   window.
 | ||
| - Fixed deleting expired VPS timers (under certain conditions a timer could have been
 | ||
|   deleted before it even started recording).
 | ||
| - Updated the Hungarian language texts (thanks to Istvan Koenigsberger and Guido Josten).
 | ||
| - Fixed handling video directory updates in case the timestamp of the .update file
 | ||
|   is in the future (thanks to Petri Hintukainen).
 | ||
| 
 | ||
| 2006-09-23: Version 1.4.3
 | ||
| 
 | ||
| - Official release.
 | ||
| 
 | ||
| 2006-10-08: Version 1.4.3-1
 | ||
| 
 | ||
| - The function cThread::Cancel() now only sets 'running' to false and does not
 | ||
|   actually kill the thread if the special value -1 is given (suggested by Udo Richter).
 | ||
| - Changed the I18nNormalizeLanguageCode() check to also allow blanks (and all other
 | ||
|   printable characters) in the language codes (thanks to Boguslaw Juza for reporting
 | ||
|   that there are stations that use blanks in these codes). Blanks are replaced with
 | ||
|   underlines, so that all parts of VDR that rely on language codes to be one word
 | ||
|   (without blanks) work as expected.
 | ||
| - Now clearing an event's Title, ShortText and Description if there is no
 | ||
|   ShortEventDescriptor or ExtendedEventDescriptor, respectively (thanks to Boguslaw
 | ||
|   Juza for reporting that events without an ExtendedEventDescriptor may get
 | ||
|   duplicate information in their ShortText through the EPG bugfixes in case they
 | ||
|   are received again).
 | ||
| - Fixed handling video directory updates in case an other process has touched the
 | ||
|   .update file after the last NeedsUpdate() check (thanks to Petri Hintukainen).
 | ||
| - Fixed handling language codes and descriptions of recorded audio tracks on channels
 | ||
|   with multiple tracks where not all of them appear in the event data (reported by
 | ||
|   Boguslaw Juza).
 | ||
| 
 | ||
| 2006-10-15: Version 1.4.3-2
 | ||
| 
 | ||
| - Fixed clearing an event's Title, ShortText and Description in case the data comes
 | ||
|   from an external source.
 | ||
| - Updated the Hungarian language texts (thanks to Guido Josten).
 | ||
| - Fixed a possible crash if cPluginManager::GetPlugin() is called with a NULL
 | ||
|   pointer (thanks to Petri Hintukainen).
 | ||
| - Fixed displaying the error log message in case an unknown plugin was requested
 | ||
|   in a key macro (thanks to Petri Hintukainen).
 | ||
| - Keys from expanded key macros are now put into the front of the key queue to
 | ||
|   avoid problems if the queue is not empty at that time (based on a patch from
 | ||
|   Petri Hintukainen).
 | ||
| - cKeyMacro now has an explicit counter for the number of keys it contains.
 | ||
| - cRemote::PutMacro() now sets a lock while it expands the macro (thanks to
 | ||
|   Petri Hintukainen).
 | ||
| - Fixed handling plugins from cRemote::PutMacro() and cRemote::CallPlugin()
 | ||
|   (based on a patch from Petri Hintukainen).
 | ||
| - Increased the size of the key queue to avoid problems with long key macros.
 | ||
| 
 | ||
| 2006-10-22: Version 1.4.3-3
 | ||
| 
 | ||
| - Fixed setting audio track descriptions after a replay has been stopped (reported
 | ||
|   by Ulf Kiener, thanks to Marco Schl<68><6C>ler for pointing out what caused the problem).
 | ||
| 
 | ||
| 2006-10-29: Version 1.4.3-4
 | ||
| 
 | ||
| - Fixed deleting EPG events that have a running status of "pausing" or higher.
 | ||
| - Fixed handling NITs with more than one delivery system descriptor tag for the
 | ||
|   same transponder.
 | ||
| 
 | ||
| 2006-11-04: Version 1.4.4
 | ||
| 
 | ||
| - Fixed displaying the replay mode symbol in case of "Multi speed mode" (reported
 | ||
|   by Marco Schl<68><6C>ler).
 | ||
| 
 | ||
| 2006-12-03: Version 1.4.4-1
 | ||
| 
 | ||
| - Some improvements to the man pages (thanks to Ville Skytt<74>).
 | ||
| - Fixed a possible segfault in cSkins::Message() (thanks to Udo Richter).
 | ||
| - Made the getskyepg.pl script of the 'sky' plugin send a user agent message to
 | ||
|   the server, according to the rules at http://bleb.org/tv/data/listings.
 | ||
|   If your version of 'wget' doesn't support the -U option to set the user agent,
 | ||
|   use the new option -U of getskyepg.pl to have the information added to the URL
 | ||
|   as a query string.
 | ||
| - The getskyepg.pl script now replaces "&" with "&".
 | ||
| - Fixed a possible crash in remux.c on 64-bit machines (thanks to Reinhard Nissl).
 | ||
| - Fixed a typo in the change to the "Use small font" setup option in version 1.3.47
 | ||
|   in the HISTORY and CONTRIBUTORS file (reported by Andreas Brugger).
 | ||
| - Added a missing 'const' to cRecordingInfo::ChannelID() (reported by Andreas
 | ||
|   Brugger). This required the APIVERSION to be increased, so plugins will have to
 | ||
|   be recompiled.
 | ||
| - Now calling cPluginManager::Active() only if VDR is really trying to shut down,
 | ||
|   and waiting for 5 minutes before calling it again (thanks to J<>rg Wendel for
 | ||
|   reporting that cPlugin::Active() was called too often, and to Udo Richter for
 | ||
|   some hints on how to improve this).
 | ||
| - Replaced 'unsigned long' with 'uint32_t' and 'uint64' with 'uint64_t' to
 | ||
|   avoid problems on 64-bit machines.
 | ||
| 
 | ||
| 2006-12-03: Version 1.4.4-2
 | ||
| 
 | ||
| - Added '#include <stdint.h>' to font.h (reported by Peter Pinnau).
 | ||
| - Added a compatibility define for 'uint64' to tools.h, so that existing
 | ||
|   plugins don't need to be modified immediately (reported by Suur Karu).
 | ||
|   This will be removed in version 1.5.
 | ||
| 
 | ||
| 2007-01-05: Version 1.4.4-3
 | ||
| 
 | ||
| - Fixed a possible segfault if VDR gets terminated while a message is displayed
 | ||
|   (thanks to Udo Richter).
 | ||
| - Fixed the INSTALL section on retrying shutdown later (reported by Udo Richter).
 | ||
| - When entering text via the numeric keys, the characters are now checked against
 | ||
|   the allowed characters (thanks to Frank Schmirler).
 | ||
| - Added a missing break statement in cCiHandler::OpenSession().
 | ||
| 
 | ||
| 2007-01-07: Version 1.4.5
 | ||
| 
 | ||
| - Official release.
 | ||
| 
 | ||
| 2007-01-07: Version 1.5.0
 | ||
| 
 | ||
| - The CAM handling has been refactored. Instead of a cCiHandler per device there
 | ||
|   is now an abstract cCiAdapter and a cCamSlot. This allows each slot to be
 | ||
|   accessed individually.
 | ||
| - The general 15 seconds workaround time before opening the CAM menu has been
 | ||
|   removed. If the CAM menu doesn't open within a timeout, the enter menu command
 | ||
|   is now sent again.
 | ||
| - If a CAM is reset or pulled and reinserted, it now automatically starts
 | ||
|   decrypting the current channel again.
 | ||
| - The Setup/CAM menu now dynamically refreshes its items and displays whether
 | ||
|   a CAM is present or ready. The 'Reset' function no longer leaves the menu.
 | ||
| - The CAM menu will now be opened when pressing the Ok key on a slot entry.
 | ||
| - The CAM menu now stays within the current menu context and doesn't close and
 | ||
|   reopen the menu every time an option is selected.
 | ||
| - When an encrypted channel is switched to for the first time, VDR now checks
 | ||
|   explicitly whether a CAM can actually decrypt that channel. If there is more
 | ||
|   than one CAM in the system that claims to be able to decrypt the channel,
 | ||
|   they are all tried in turn.
 | ||
|   To make this possible, an encrypted channel needs to be received in Transfer
 | ||
|   Mode when it is switched to for the first time, so that VDR can determine
 | ||
|   whether the TS packets are actually decrypted. Once a channel is known to
 | ||
|   be decrypted by a particular CAM, the next time it is switched to it will
 | ||
|   be shown in normal live viewing mode.
 | ||
| - A cDevice now automatically detaches all cReceiver objects that receive PIDs
 | ||
|   that can't be decrypted with the current CAM. A plugin that attaches a cReceiver
 | ||
|   to a device should therefore watch the receiver's IsAttached() function to
 | ||
|   see if it is still attached to the device.
 | ||
| - The cReceiver constructor no longer takes an 'int Ca' as its first parameter,
 | ||
|   but rather a 'tChannelID ChannelID'. This is necessary for the device to be
 | ||
|   able to determine which CAM a particular channel can be decrypted with. If the
 | ||
|   channel is known to be unencrypted, or a plugin doesn't want to provide the
 | ||
|   channel id for other reasons, an invalid tChannelID() can be given.
 | ||
| - The cThread::Start() function now waits until a previous incarnation of this
 | ||
|   thread has actually stopped. Before this it could happen that a thread's
 | ||
|   Cancel(-1) function was called and immediately after that it was started again,
 | ||
|   but the Start() function still found it to be 'active'.
 | ||
| - The parameter NeedsDetachReceivers in cDevice::GetDevice(const cChannel *Channel, ...)
 | ||
|   has been removed. A call to this function will automatically detach all receivers
 | ||
|   from the device if it returns a non-NULL pointer.
 | ||
| - The cTimeMs class now accepts an initial timeout value in its constructor.
 | ||
| - A CAM is now explicitly instructed to stop decrypting when switching away from
 | ||
|   an encrypted channel.
 | ||
| - If the CAM in use can decrypt several channels at the same time, VDR can
 | ||
|   now make use if this capability. Whether or not a CAM can decrypt more
 | ||
|   than one channel is determined by sending it an initial empty QUERY command
 | ||
|   and testing whether it replies to it.
 | ||
| - Ca values in the range 0...F in channels.conf can still be used to assign a channel
 | ||
|   to a particular device, but this will no longer work with encrypted channels because
 | ||
|   without valid CA ids VDR can't decide which CAM slot to use. However, since VDR now
 | ||
|   automatically determines which CAM can decrypt which channel, setting fixed
 | ||
|   channel/device relations should no longer be necessary.
 | ||
|   IF AN ENCRYPTED CHANNEL CAN'T BE DECRYPTED AND YOU HAVE A CA VALUE IN THE RANGE
 | ||
|   0...F FOR THAT CHANNEL, SET IT TO 0 (FTA) AND TUNE TO THE CHANNEL AGAIN.
 | ||
| 
 | ||
| 2007-01-28: Version 1.4.5-1
 | ||
| 
 | ||
| - Fixed i18n characters for the Hungarian texts (thanks to Thomas G<>nther).
 | ||
| - Now using cPipe instead of popen() in cCommand::Execute() to avoid problems
 | ||
|   with open file handles when starting background commands (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| 
 | ||
| 2007-02-24: Version 1.4.5-2
 | ||
| 
 | ||
| - Removed 'assert(0)' from cDvbSpuDecoder::setTime() (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed a possible crash when loading an invalid XPM file (thanks to Martin Wache).
 | ||
| - Updated satellite names in 'sources.conf' (thanks to Thilo Wunderlich).
 | ||
| - Fixed handling error status in cDvbTuner::GetFrontendStatus() (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| 
 | ||
| 2007-03-03: Version 1.4.6
 | ||
| 
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| 
 | ||
| 2007-02-25: Version 1.5.1
 | ||
| 
 | ||
| - Added cDevice::HasCi() so that devices with Common Interface can be avoided
 | ||
|   when tuning to an FTA channel, thus preserving the CAM resources even on budget
 | ||
|   DVB cards (suggested by Petri Helin).
 | ||
| - Fixed i18n characters for the Hungarian texts (thanks to Thomas G<>nther).
 | ||
| - Now using cPipe instead of popen() in cCommand::Execute() to avoid problems
 | ||
|   with open file handles when starting background commands (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| - Removed 'assert(0)' from cDvbSpuDecoder::setTime() (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed a possible crash when loading an invalid XPM file (thanks to Martin Wache).
 | ||
| - Updated satellite names in 'sources.conf' (thanks to Thilo Wunderlich).
 | ||
| - Adapted 'libsi' to DVB-S2 (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed handling error status in cDvbTuner::GetFrontendStatus() (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Shutdown handling has been rewritten (thanks to Udo Richter).
 | ||
| - Plugins can now implement the new function WakeupTime() to request VDR to wake
 | ||
|   up at a particular time (thanks to Udo Richter).
 | ||
| - The HUP signal now forces a restart of VDR (thanks to Udo Richter).
 | ||
| - cThread::EmergencyExit() has been replaced by ShutdownHandler.RequestEmergencyExit().
 | ||
| - Several references to "button" in a remote control context have been changed
 | ||
|   to "key" (based on a report from Marko M<>kel<65> regarding the "Menu button closes"
 | ||
|   text). The "MenuButtonCloses" parameter in 'setup.conf' has therefore been
 | ||
|   renamed to "MenuKeyCloses", accordingly. This will result in an "unknown config
 | ||
|   parameter: MenuButtonCloses" error message in the log file, so you may want to
 | ||
|   remove that entry from your 'setup.conf' file.
 | ||
| - Simplified the error handling in cDvbTuner::GetFrontendStatus() (based on a
 | ||
|   discussion with Reinhard Nissl).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Increased the maximum number of DVB devices to 8 (thanks to Rolf Ahrenberg).
 | ||
| - The new Setup parameter "Channel entry timeout" can be used to customize the time
 | ||
|   since the last keypress until a numerically entered channel number is considered
 | ||
|   complete, and the channel is switched (suggested by Helmut Auer). Setting this
 | ||
|   parameter to 0 turns off the automatic channel switching, and the user will
 | ||
|   have to confirm the entry by pressing the "Ok" key.
 | ||
| 
 | ||
| 2007-04-22: Version 1.5.2
 | ||
| 
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed handling user activity for shutdown, which I had messed when adopting Udo's
 | ||
|   original patch (thanks to Udo Richter).
 | ||
| - Added Turkish language texts (thanks to Oktay Yolge<67>en).
 | ||
| - Added missing rules for generating iso8859-13 font to Makefile.
 | ||
| - 'libsi' now converts the incoming strings into the system's character set
 | ||
|   according to the DVB standard. The system's character set is determined from
 | ||
|   the LANG environment variable. If no recognizable setting can be found, no
 | ||
|   conversion will take place. Note that currently only the strings received from the
 | ||
|   SI data stream are converted, there have not been any changes regarding displaying
 | ||
|   UTF-8 characters on the OSD, yet - this will follow in one of the next steps.
 | ||
|   With this conversion, it should now be safe to run VDR on a UTF-8 file system,
 | ||
|   because all incoming characters are converted to UTF-8. This will most likely
 | ||
|   result in wrong characters being displayed on the OSD (because there UTF-8 is
 | ||
|   not known, yet), but the file names should be ok (haven't tested this myself,
 | ||
|   though, because I don't do UTF-8 - so please be very careful when testing!).
 | ||
|   There's one piece of bad news here: the German pay-tv broadcaster Premiere
 | ||
|   apparently encodes all EPG strings as ISO8859-1, but fails to correctly mark
 | ||
|   these strings as such. Therefore 'libsi' (following the DVB standard) considers
 | ||
|   the strings to be encoded in the default ISO6937 and converts them to whatever
 | ||
|   the system's character set is. This, of course, results in wrong umlauts.
 | ||
|   On its old transponder, the ProSieben/SAT.1 channels also had their EPG data
 | ||
|   wrongly encoded, but apparently on the new transponder they started broadcasting
 | ||
|   on this month, they got it right.
 | ||
| 
 | ||
| 2007-04-30: Version 1.4.6-1
 | ||
| 
 | ||
| - Fixed a busy loop in fast forward if the next video data file is missing
 | ||
|   (thanks to Reinhard Nissl).
 | ||
| - Fixed handling frequencies in NitFilter::Process() (thanks to Anssi Hannula).
 | ||
| - Fixed handling ChannelUp/Down keys if there is currently a replay running
 | ||
|   (thanks to Marco Schl<68><6C>ler).
 | ||
| - Increased the maximum number of CA system ids to cope with the AlphaCrypt
 | ||
|   CAM's version 3.11 firmware.
 | ||
| 
 | ||
| 2007-05-12: Version 1.4.7
 | ||
| 
 | ||
| - Official release.
 | ||
| 
 | ||
| 2007-06-10: Version 1.5.3
 | ||
| 
 | ||
| - Fixed some spelling errors in 'newplugin' (thanks to Ville Skytt<74>).
 | ||
| - Fixed a busy loop in fast forward if the next video data file is missing
 | ||
|   (thanks to Reinhard Nissl).
 | ||
| - Fixed handling frequencies in NitFilter::Process() (thanks to Anssi Hannula).
 | ||
| - Fixed a race condition with signal handlers at program exit (thanks to Udo
 | ||
|   Richter).
 | ||
| - Non-primary devices in Transfer mode are now also used for recording (thanks
 | ||
|   to Anssi Hannula).
 | ||
| - Fixed handling ChannelUp/Down keys if there is currently a replay running
 | ||
|   (thanks to Marco Schl<68><6C>ler).
 | ||
| - The new SVDRP command REMO can be used to turn VDR's remote control off and
 | ||
|   on in case other programs need to be controlled (based on patches from Krzysztof
 | ||
|   Parma and Helmut Auer).
 | ||
| - Increased the maximum number of CA system ids to cope with the AlphaCrypt
 | ||
|   CAM's version 3.11 firmware.
 | ||
| - Fixed getting the code setting from the locale (thanks to Matthias Schwarzott).
 | ||
| - Implemented support for Freetype fonts (based on a patch from Alexander Riedel).
 | ||
|   The font names and sizes can be adjusted in the "Setup/OSD" menu.
 | ||
|   Note that VDR now requires freetype fonts to be installed in
 | ||
|   /usr/share/fonts/truetype.
 | ||
| - If the OSD device in use has at least 8bpp bitmap depth and this is also
 | ||
|   used by the current skin, Freetype fonts are displayed "anti-aliased".
 | ||
|   The new setup parameter "OSD/Anti-alias" can be used to turn this off.
 | ||
| - The new function cOsd::SetAntiAliasGranularity() can be used to help the OSD
 | ||
|   in managing the available color palette entries when doing anti-aliasing.
 | ||
|   Skins that use 8bpp bitmaps can call this function with the maximum number
 | ||
|   of colors used, and the maximum number of color combinations. The OSD will
 | ||
|   then evenly split the available palette entries between the various colors
 | ||
|   combinations, so that fonts can be "anti-aliased". By default a total of
 | ||
|   10 colors and 10 combinations is assumed.
 | ||
| - The pixel fonts have been completely removed from the VDR source.
 | ||
| - VDR is now "UTF-8 aware". It handles strings according to the character
 | ||
|   encoding used on the user's system. All internationalization strings and
 | ||
|   incoming SI data are converted to the system encoding.
 | ||
| - Plugins that handle strings need to be aware that on systems with UTF-8
 | ||
|   encoding a "character symbol" may consist of more than a single byte in
 | ||
|   memory. The functions and macros named Utf8...() can be used to handle
 | ||
|   strings without needing to care about the underlying character encoding
 | ||
|   (see tools.h for details).
 | ||
| - Even though the weekdays of repeating timers are presented to the user as UTF-8
 | ||
|   characters in the OSD, the timers.conf file and the SVDRP timer commands still
 | ||
|   use single byte characters ("MTWTFSS") to make sure this information is handled
 | ||
|   correctly between systems with different character encodings.
 | ||
| - Added a missing i18n string for "CAM" in the Turkish OSD texts.
 | ||
| - Improved editing strings that are too long to fit into the editable area.
 | ||
| - Changes to the OSD settings in the "Setup/OSD" menu now immediately take effect
 | ||
|   when the "Ok" key is pressed.
 | ||
| 
 | ||
| 2007-06-17: Version 1.5.4
 | ||
| 
 | ||
| - Increased APIVERSION (forgot to do that in 1.5.2 and 1.5.3).
 | ||
| - Fixed a crash in i18n character set conversion (thanks to Alexander Riedel,
 | ||
|   Jose Alberto Reguero and Christian Wieninger for patches that cured part of
 | ||
|   the problem).
 | ||
| - Adjusted the 'skincurses' plugin to UTF-8 handling.
 | ||
| - Using nl_langinfo(CODESET) to determine the local codeset to use (thanks to
 | ||
|   Thomas G<>nther). The codeset names in 'libsi/si.c' have been changed to the
 | ||
|   canonical spelling with '-' (thanks to Ludwig Nussel for pointing this out).
 | ||
| - Modified handling invalid characters in VFAT mode.
 | ||
| - Replaced strn0cpy() with Utf8Strn0Cpy() where necessary.
 | ||
| - Now using 'fontconfig' to determine which fonts to use (thanks to Anssi Hannula
 | ||
|   for code and hints on how to do this).
 | ||
| - If no fonts are installed, VDR now uses a dummy font that doesn't actually draw
 | ||
|   any text, and logs an error message.
 | ||
| - The new function cFont::CreateFont() can be used by plugins to create and use
 | ||
|   fonts of their own, independent of VDR's standard fonts.
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Changed the parameter "OSD font" to "Default font" in "Setup/OSD" (suggested
 | ||
|   by Rolf Ahrenberg).
 | ||
| - Fixed handling detached processes in SystemExec() (thanks to Udo Richter).
 | ||
| - The info.vdr file now also stores the name of the channel, and the new function
 | ||
|   cRecordingInfo::ChannelName() returns this information if available (based on
 | ||
|   a patch from Alexander Hans).
 | ||
| - The new function cOsd::SetOsdPosition() can be used to dynamically change the
 | ||
|   position and size of the OSD (based on a request from Christoph Haubrich).
 | ||
|   Plugins that implement skins should no longer use Setup.OSDWidth etc. directly,
 | ||
|   but should rather use cOsd::OsdWidth() etc. instead.
 | ||
|   Currently a change to the OSD position will only apply to newly opened OSDs.
 | ||
| 
 | ||
| 2007-06-23: Version 1.5.5
 | ||
| 
 | ||
| - Fixed a name clash between skincurses.c and the new cOsd position functions.
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Changed the parameter "OSD font size" to "Default font size" in "Setup/OSD".
 | ||
| - Fixed handling address masks in SVDRP host settings (thanks to Frank Schmirler).
 | ||
| - Fonts can now be created with a width that overwrites the default width (thanks
 | ||
|   to Andreas Mair).
 | ||
| - Added full weekday names to i18n.c for plugins to use (thanks to Patrice Staudt).
 | ||
|   The new function WeekDayNameFull() can be used to get these names from integer
 | ||
|   values (just like the abbreviated weekday names).
 | ||
| - Fixed stripping i18n stuff from font names (reported by Anssi Hannula).
 | ||
| - Improved performance of the SVDRP commands LSTC and CHAN when used with a
 | ||
|   channel name.
 | ||
| 
 | ||
| 2007-07-22: Version 1.5.6
 | ||
| 
 | ||
| - Fixed a buffer overflow in initializing the system character table (thanks
 | ||
|   to Marco Schl<68><6C>ler).
 | ||
| - Updated the Russian OSD texts (thanks to Oleg Roitburd).
 | ||
| - Fixed handling single byte characters >0x7F in Utf8ToArray() (thanks to Udo
 | ||
|   Richter).
 | ||
| - Improved numdigits(), isnumber() and strreplace() (thanks to Tobias Bratfisch).
 | ||
| - Fixed clearing color buttons in the 'curses' skin (thanks to Udo Richter).
 | ||
| - Fixed a typo in the function name of cOsd::SetOsdPosition() and added a range
 | ||
|   check to it (thanks to Christoph Haubrich).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Improved cControl::Launch() to keep 'control' from pointing to uninitialized
 | ||
|   memory (thanks to Rolf Ahrenberg).
 | ||
| - Made skipspace() an inline function (suggested by Tobias Bratfisch) and changed
 | ||
|   it to handle the most common case of 'no leading space' very fast, and avoid
 | ||
|   calling isspace(), which made the whole function a lot faster.
 | ||
| - Fixed detection of Premiere NVOD channel links (thanks to Markus Hahn).
 | ||
| - Added a table of the used trick speed values to the description of
 | ||
|   cDevice::TrickSpeed() (suggested by Martin Dauskardt).
 | ||
| - Added a missing 'P' to vdr.c's SHUTDOWNCANCELROMPT macro (reported by Marco
 | ||
|   Schl<68><6C>ler).
 | ||
| 
 | ||
| 2007-08-12: Version 1.5.7
 | ||
| 
 | ||
| - All logging now goes to LOG_ERR, because some systems split error, info and
 | ||
|   debug messages into separate files, which repeatedly caused extra efforts to
 | ||
|   find out when incomplete log excerpts were attached to problem reports in
 | ||
|   the past.
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Fixed a problem with characters >0x7F in the modified version of skipspace()
 | ||
|   (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed a bug I introduced when simplifying the original patch for detecting
 | ||
|   Premiere NVOD channel links (crash reported by Malte Schr<68>der).
 | ||
| - Internationalization is now done with 'gettext' (following a suggestion by
 | ||
|   Lucian Muresan). Plugin authors may want to use the Perl script
 | ||
|   'i18n-to-gettext.pl' to convert their internationalized texts to the gettext
 | ||
|   format (see the instructions inside that script file). The function
 | ||
|   cPlugin::RegisterI18n() is still present for compatibility, but doesn't
 | ||
|   have any more functionality. So plugins that don't convert their texts to
 | ||
|   the gettext format will only present English texts.
 | ||
|   See PLUGINS.html, section "Internationalization", for instructions on how
 | ||
|   to make strings in arrays translatable.
 | ||
|   See README.i18n for information on how to create new or maintain existing
 | ||
|   translations.
 | ||
| - The three letter language codes and their aliases are stored in i18n.c, and
 | ||
|   each translation file only contains one of them to link that language name
 | ||
|   to the code.
 | ||
| - The 'newplugin' script has been extended to generate the Makefile section
 | ||
|   for i18n support.
 | ||
| - The parameter OSDLanguage in 'setup.conf' is now a string and holds the locale
 | ||
|   code of the selected OSD language (e.g. en_US). If Setup.OSDLanguage is not
 | ||
|   set to a particular locale that is found in VDR's locale directory, the
 | ||
|   locale as defined in the system environment is used by default.
 | ||
| - The list of tracks given in cStatus::SetAudioTrack() is now NULL terminated,
 | ||
|   so that plugins can actually use all the strings in the list, not just the
 | ||
|   one pointed to by Index (thanks to Alexander Rieger).
 | ||
| - Fixed handling kLeft in the calls to cStatus::MsgOsdTextItem() (thanks to
 | ||
|   Alexander Rieger).
 | ||
| - Added the "...or (at your option) any later version" phrase to the license
 | ||
|   information of all plugins, and also the 'newplugin' script (suggested by
 | ||
|   Ville Skytt<74>). Plugin authors may want to consider doing the same.
 | ||
| - Fixed the link to the GPL2 at http://www.gnu.org in vdr.c (thanks to Ville
 | ||
|   Skytt<74>).
 | ||
| - cBitmap::SetXpm() now checks whether the given Xpm pointer is not NULL, to
 | ||
|   avoid a crash with files that only contain "/* XPM */" (suggested by Andreas
 | ||
|   Mair).
 | ||
| - Added a debug error message to cReceiver::~cReceiver() in case it is still
 | ||
|   attached to a device (thanks to Reinhard Nissl).
 | ||
| 
 | ||
| 2007-08-19: Version 1.5.8
 | ||
| 
 | ||
| - Added missing install-i18n to the install target in the Makefile (reported
 | ||
|   by Joachim Wilke).
 | ||
| - Fixed a faulty comment in Make.config.template (reported by Marco Schl<68><6C>ler).
 | ||
| - Improved i18n-to-gettext.pl (thanks to Matthias Schwarzott).
 | ||
| - Moved the "all" target in plugin Makefiles before the "Implicit rules",
 | ||
|   so that a plain "make" will compile everything (suggested by Matthias
 | ||
|   Schwarzott). The "newplugin" script has been changed accordingly.
 | ||
|   Plugin authors may want to change their Makefiles, too.
 | ||
| - Added DESTDIR and PREFIX handling to the Makefile (thanks to Matthias
 | ||
|   Schwarzott).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Added internationalization to the "skincurses" plugin (thanks to Rolf
 | ||
|   Ahrenberg).
 | ||
| - Checking the string for NULL in I18nTranslate().
 | ||
| - Updated the French OSD texts (thanks to Bruno Roussel).
 | ||
| - Some optimizations in cDvbDevice::SetChannelDevice() (thanks to Tobias Bratfisch).
 | ||
| - Optimized cMenuEditChrItem::Set() (thanks to Tobias Bratfisch).
 | ||
| - Optimized cNitFilter::Process() (thanks to Tobias Bratfisch).
 | ||
| - Reduced the number of time(NULL) calls in vdr.c's main loop to a single call
 | ||
|   (thanks to Tobias Bratfisch).
 | ||
| - Changed cBitmap::DrawText() to always draw the background unless ColorBg
 | ||
|   is clrTransparent (thanks to Christoph Haubrich).
 | ||
| - The "Setup/OSD/Language" menu now only shows those languages that actually
 | ||
|   have a locale (suggested by Anssi Hannula).
 | ||
| - Now using setenv() instead of setlocale() to set the language for gettext()
 | ||
|   (suggested by Anssi Hannula; thanks also to Ludwig Nussel for a hint on using
 | ||
|   _nl_msg_cat_cntr).
 | ||
| - When scanning the locale directory, VDR now explicitly looks for a file named
 | ||
|   vdr.mo. Text files for plugins are now named "vdr-name.mo", when "name" is the
 | ||
|   name of the plugin. The "newplugin" script has been changed accordingly, and
 | ||
|   plugin authors should change their Makefiles, too.
 | ||
| 
 | ||
| 2007-08-26: Version 1.5.9
 | ||
| 
 | ||
| - Fixed handling locale directories with a large number of entries (thanks to
 | ||
|   Anssi Hannula).
 | ||
| - Updated Turkish language texts (thanks to Oktay Yolge<67>en).
 | ||
| - Fixed stripping the context in I18nTranslate() (reported by Christian
 | ||
|   Wieninger).
 | ||
| - Fixed detecting whether a particular locale is actually supported.
 | ||
| - Added a note about LANG having to be set to a valid locale in INSTALL
 | ||
|   (suggested by Matthias Fechner).
 | ||
| - Fixed some compiler warnings with gcc-4.2.0 (thanks to Matthias Schwarzott).
 | ||
| - Fixed setting the locale file name in i18n-to-gettext.pl (thanks to Matthias
 | ||
|   Schwarzott).
 | ||
| - Changed the default for LOCDIR in Makefile and Make.config.template to
 | ||
|   "./locale", so that internationalization works by default when running VDR
 | ||
|   from within its source directory (suggested by Anssi Hannula).
 | ||
| - Added the new i18n macro trVDR(), which can be used by plugins to mark
 | ||
|   texts they want to reuse from VDR's core translations (suggested by Matthias
 | ||
|   Becker).
 | ||
| - VDR now uses the default configuration directory as defined in the CONFDIR
 | ||
|   variable in the Makefile (thanks to Thomas Schmidt).
 | ||
| - The SVDRP command LSTC can now list the channels with group separators if the
 | ||
|   option ':groups' is given (thanks to Andreas Mair).
 | ||
| - Added a missing error report to cCuttingThread::Action() (thanks to Udo
 | ||
|   Richter).
 | ||
| - There can now be more than one OSD at the same time. At any given time,
 | ||
|   however, only one of them can be active (and thus visible). This is to
 | ||
|   allow displaying things like subtitles in an easy way. A cOsd therefore
 | ||
|   now has a "Level", and only the OSD with the smallest level will be
 | ||
|   displayed. The level 0 OSD is special, and there can only be one with
 | ||
|   this level. If there is more than one OSD with a particular level, only
 | ||
|   the one that was created first will be displayed.
 | ||
|   Plugins that provide an OSD need to adjust their cOsdProvider::CreateOsd()
 | ||
|   function to hand through the Level.
 | ||
| - Fixed checking for ttDolbyLast in cDevice::SetCurrentAudioTrack() (thanks
 | ||
|   to Marco Schl<68><6C>ler).
 | ||
| 
 | ||
| 2007-10-14: Version 1.5.10
 | ||
| 
 | ||
| - Implemented handling DVB subtitles (thanks to Marco Schl<68><6C>ler, and also to
 | ||
|   Pekka Virtanen for writing the subtitle plugin, which helped in implementing
 | ||
|   subtitle handling in VDR).
 | ||
| - The new remote control key "Subtitles" can be used to bring up the list
 | ||
|   of available subtitles.
 | ||
| - The new setup option "DVB/Subtitle languages" can be used to define the
 | ||
|   preferred languages for subtitles.
 | ||
| - Fixed selecting the audio track when pressing Ok in the Audio menu (thanks
 | ||
|   to Marco Schl<68><6C>ler).
 | ||
| - Implemented display of DVB subtitles in live viewing mode.
 | ||
| - Implemented subtitle track selection.
 | ||
| - Implemented bitmap color reduction and shrinking to display subtitles even
 | ||
|   on devices that can't display the necessary number of colors.
 | ||
| - Added compatibility mode for playback of recordings made with the subtitles
 | ||
|   plugin (with some help from Rolf Ahrenberg).
 | ||
| - The new setup option "DVB/Subtitle offset" can be used to shift the location
 | ||
|   of the subtitles in the vertical direction.
 | ||
| - The new setup options "DVB/Subtitle foreground/background transparency"
 | ||
|   define an additional level of transparency for the foreground and background
 | ||
|   color of subtitles.
 | ||
| - Existing recordings made with the subtitle plugin can be given an 'X' record
 | ||
|   in their info.vdr file, so that subtitles can be automatically selected upon
 | ||
|   replay, according to the preferred language setup, as in
 | ||
|   X 3 03 ger deutsch
 | ||
|   (see vdr.5). Note that these entries need to be added in the proper sequence,
 | ||
|   so that they correspond with the actual track languages in the recording.
 | ||
| - Now generating translation files without line numbers to avoid unnecessarily
 | ||
|   large diffs. Plugin authors may want to replace the -F option with
 | ||
|   --no-location in the xgettext and msgmerge calls in their Makefiles.
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Added a missing Channels.SetModified(true) call when deleting or moving a
 | ||
|   channel in the Channels menu (reported by Halim Sahin).
 | ||
| - Fixed a missing '-' at the next to last line of SVDRP help texts (reported by
 | ||
|   Denis Knauf).
 | ||
| - Added a missing SetVolumeDevice() call in cDevice::SetPrimaryDevice() (reported
 | ||
|   by Reinhard Nissl).
 | ||
| - Fixed a crash when pressing Left while at the first character of a cMenuEditStrItem
 | ||
|   (thanks to Christian Wieninger).
 | ||
| - Only creating a new cDvbOsdProvider in cDvbDevice::MakePrimaryDevice() if 'On'
 | ||
|   is true (i.e. this device is being made the primary device).
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Fixed handling reallocated memory in cCharSetConv::Convert() (reported by Udo
 | ||
|   Richter).
 | ||
| - Fixed a new[]/delete mismatch in cMenuEditStrItem::LeaveEditMode() (thanks to
 | ||
|   Udo Richter).
 | ||
| - Implemented sending all frames to devices that can handle them in fast forward
 | ||
|   trick speeds (thanks to Timo Eskola).
 | ||
| - Updated the Hungarian language texts (thanks to Thomas G<>nther).
 | ||
| - Fixed description of DeviceSetAvailableTrack() and cReceiver(), and added an
 | ||
|   example ~cMyReceiver() in PLUGINS.html (thanks to Marco Schl<68><6C>ler).
 | ||
| - Improved the description of where logging goes in the INSTALL file (thanks to
 | ||
|   Elias Luttinen).
 | ||
| - Added a note about how to initiate internationalization support to the
 | ||
|   README.i18n file. The Makefile generated by the 'newplugin' script now has the
 | ||
|   'i18n' target automatically create an initial 'po/pluginname.pot' file.
 | ||
|   Plugin authors may want to add the '$(I18Npot)' dependency to the 'i18n'
 | ||
|   target in their Makefiles, as in
 | ||
|   i18n: $(I18Npot) $(I18Nmo)
 | ||
|   (based on a suggestion by Torsten Kunkel).
 | ||
| - Removed a duplicate ',' from the ca_ES.po file (thanks to Thomas G<>nther).
 | ||
| - Added the '<27>' character to the "allowed characters" in the de_DE.po file
 | ||
|   (suggested by Thomas G<>nther).
 | ||
| - Made the default copy ctor of cRecording private (thanks to Markus Hahn).
 | ||
|   Same for the assign operator.
 | ||
| - Added cRecording::Undelete() (based on a patch from Markus Hahn).
 | ||
| - Added cDevice::CloseFilter() to allow a device to have complete control over
 | ||
|   both opening and closing section filters (thanks to Rolf Ahrenberg).
 | ||
| - Some fixes to PLUGINS.html (thanks to Rolf Ahrenberg).
 | ||
| 
 | ||
| 2007-11-04: Version 1.5.11
 | ||
| 
 | ||
| - Fixed checking compatibility mode for old subtitles plugin (thanks to Marco
 | ||
|   Schl<68><6C>ler).
 | ||
| - Updated the French OSD texts (thanks to Michael Nival).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - The "Play" key now starts replay of the selected recording in the Recordings
 | ||
|   menu (thanks to Ville Skytt<74>);
 | ||
| - Improved shutdown handling (thanks to Udo Richter).
 | ||
| - Housekeeping now waits for a while after a replay has ended (thanks to Udo Richter).
 | ||
| - Added more special characters to the list of allowed characters when entering
 | ||
|   strings (thanks to Thomas G<>nther).
 | ||
| - Added Ukrainian language texts (thanks to Yarema Aka Knedlyk).
 | ||
| - Added a workaround for recovering from wrongfully interpreted "pre 1.3.19 PS1 packets".
 | ||
| - Fixed a possible blocking in replay when subtitles are active.
 | ||
| - Fixed displaying subtitles in live mode.
 | ||
| - Fixed handling CONFDIR (thanks to Rolf Ahrenberg).
 | ||
| - Added some missing 'const' keywords (thanks to Sascha Volkenandt).
 | ||
| - The 'Allowed' parameter in cMenuEditStrItem() is now NULL by default, which results
 | ||
|   in using tr(FileNameChars) (suggested by Thomas G<>nther).
 | ||
| - Added a missing '.' to the date returned by DayDateTime() (thanks to Lauri Nurmi).
 | ||
| - Improved the 'i18n' target in the Makefile to avoid unnecessary work (thanks to
 | ||
|   Stefan Huelswitt). The 'newplugin' and 'i18n-to-gettext.pl' scripts have been
 | ||
|   changed accordingly. Plugin authors may want to adjust the 'i18n' target
 | ||
|   of their Makefiles.
 | ||
| - Fixed a crash if no fonts are found (thanks to Mario Ivankovits and Clemens
 | ||
|   Kirchgatterer).
 | ||
| - Fixed decoding filename characters in case there are not two hex digits after
 | ||
|   the '#' (reported by Helmut Auer).
 | ||
| 
 | ||
| 2007-11-18: Version 1.5.12
 | ||
| 
 | ||
| - Fixed assembling PS1 packets in cTS2PES::instant_repack() (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| - Updated the Russian OSD texts (thanks to Oleg Roitburd).
 | ||
| - Fixed handling small PES packets that caused subtitles to be displayed late
 | ||
|   in live mode (based on a patch from Reinhard Nissl).
 | ||
| - Fixed stopping live subtitles when a player is attached to the device.
 | ||
| - Fixed suddenly stopping subtitles in live mode.
 | ||
| 
 | ||
| 2008-01-13: Version 1.5.13
 | ||
| 
 | ||
| - Fixed the declaration of cSubtitleObject::Decode8BppCodeString() (thanks to
 | ||
|   Gregoire Favre).
 | ||
| - The new setup option "Miscellaneous/Emergency exit" can be used to turn off
 | ||
|   the automatic restart of VDR in case a recording fails for some reason.
 | ||
| - The kInfo key is now propagated to any open menu, so that it can react to it
 | ||
|   in a context sensitive manner (suggested by Andreas Brugger). If there is
 | ||
|   no menu open it will show the info of the current broadcast or replay.
 | ||
| - cTimeMs now uses the monotonic clock, if available (thanks to Petri Hintukainen).
 | ||
| - Fixed cVector::Clear() and cStringList::Clear().
 | ||
| - Added cString::Truncate().
 | ||
| - Fixed the "i18n:" target in the "newplugin" script, so that it can create the
 | ||
|   initial *.pot file.
 | ||
| - Fixed handling the '-l' option.
 | ||
| - Fixed error handling in cCuttingThread::Action() (thanks to Udo Richter).
 | ||
| - Fixed a loss of the date display in the "classic" skin's main menu (reported by
 | ||
|   Andreas Brugger).
 | ||
| - Added a missing setting of lastFreeMB in cMenuMain::Update() (reported by
 | ||
|   Andreas Brugger).
 | ||
| - Added '-Wno-parentheses' to the compiler options in order to avoid silly compiler
 | ||
|   warnings for expressions like 'a || b && c', where GCC 4.3 wants to force the
 | ||
|   programmer to write 'a || (b && c)', while everybody knows that '&&' links
 | ||
|   stronger than '||' (reported by Tobias Grimm).
 | ||
| - Updated the Hungarian language texts (thanks to Istv<74>n F<>ley).
 | ||
| - Fixed displaying weekday names in the Schedule menu if the system uses UTF-8
 | ||
|   (reported by Jiri Dobry).
 | ||
| - The new plugin "pictures" implements a simple picture viewer.
 | ||
|   See PLUGINS/src/pictures/README for details.
 | ||
| - The automatic shutdown is now suppressed if the remote control is currently
 | ||
|   disabled (suggested by Helmut Auer, implemented by Udo Richter).
 | ||
| - Added a section about "Logging" to PLUGINS.html (suggested by Torsten Kunkel).
 | ||
| - Enhanced the SVDRP command CLRE to allow clearing the EPG data of a particular
 | ||
|   channel (thanks to Benjamin Hess).
 | ||
| 
 | ||
| 2008-01-27: Version 1.5.14
 | ||
| 
 | ||
| - Fixed the Play function in the pictures plugin.
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Updated the Makefile of the skincurses plugin (thanks to Rolf Ahrenberg).
 | ||
| - The new option --localedir can be used to set the locale directory at runtime
 | ||
|   (based on a patch from Stefan Huelswitt).
 | ||
| - Fixed finding new transponders (thanks to Winfried K<>hler).
 | ||
| - Implemented handling of DVB-S2 (thanks to Marco Schl<68><6C>ler and Reinhard Nissl
 | ||
|   for a patch that was used to implement this). VDR now requires the "multiproto"
 | ||
|   DVB driver, e.g. from http://jusst.de/hg/multiproto.
 | ||
| - Removed switching to the next higher or lower channel if the current channel
 | ||
|   is not available, in order to allow staying on an encrypted channel that takes
 | ||
|   a while for the CAM to start decrypting.
 | ||
| 
 | ||
| 2008-02-17: Version 1.5.15
 | ||
| 
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Added option -i to the pictures plugin's pic2mpg to ignore unknown file types.
 | ||
| - Revoked the switch to the "multiproto" driver in order to make a new stable
 | ||
|   version before making this big switch and forcing all users to install a
 | ||
|   driver that is not yet in the kernel source. The removed code will reappear
 | ||
|   in version 1.7.0.
 | ||
|   Note that you may need to switch back to an older version of your channels.conf
 | ||
|   file if you have already used version 1.5.14, because it introduced new parameters.
 | ||
| - Added the new command line option --userdump to enable core dumps in case VDR
 | ||
|   is run as root with option -u (thanks to Hans-Werner Hilse).
 | ||
| - Speeded up anti-aliased font rendering by caching the blend indexes (based on
 | ||
|   a suggestion by Martin Wache).
 | ||
| - Fixed setting the OSD area in the pictures plugin.
 | ||
| - Ignoring "repeat" and "release" keys in the time search entry mode during replay,
 | ||
|   to avoid inadvertently leaving it in case a key is pressed too long (suggested
 | ||
|   by Andreas Brugger).
 | ||
| - Improved sending all frames to devices that can handle them in fast forward
 | ||
|   trick speeds, including subtitles (thanks to Timo Eskola).
 | ||
| - The section handler is now stopped before the device is destroyed, to avoid
 | ||
|   accessing file handles after they have become invalid (thanks to Reinhard
 | ||
|   Nissl for reporting an invalid access when ending VDR, and to Deti Fliegl for
 | ||
|   a patch that was used to implement StopSectionHandler()).
 | ||
| - Fixed setting the date in the channel display of the classic and sttng skins,
 | ||
|   to avoid unnecessary OSD access (thanks to Marco Schl<68><6C>ler).
 | ||
| - The free disk space is now also displayed in the title of the "Recordings"
 | ||
|   menu (suggested by Walter Koch).
 | ||
| - Changed the message "Upcoming VPS recording!" to "Upcoming recording!" because
 | ||
|   it applies to non-VPS recordings as well.
 | ||
| - Fixed a loss of a timer's 'recording' flag after modifying it via MODT.
 | ||
| - Fixed detecting directories in cFileNameList::Load().
 | ||
| - Running the thread that removes deleted recordings at a low priority to (maybe)
 | ||
|   avoid stuttering replay in case the thread is run during replay.
 | ||
| - Limiting the length of the recording name in timers in case VDR is run with
 | ||
|   --vfat, in order to avoid names that are too long for Windows (suggested by Rolf
 | ||
|   Ahrenberg).
 | ||
| - Using cString::sprintf() instead of asprintf() (thanks to Wolfgang Rohdewald
 | ||
|   for pointing out a possible problem if the return value is not checked).
 | ||
|   Plugin authors may want to consider doing the same. For convenience there is now
 | ||
|   an additional version of cString::sprintf() that accepts a va_list parameter.
 | ||
| - When deleting the recording that is currently replayed, the replay is now
 | ||
|   stopped immediately (thanks to Mikko Matilainen for reporting a possible crash
 | ||
|   if the Info key is pressed after deleting the currently replayed recording).
 | ||
| - Updated the Russian OSD texts (thanks to Oleg Roitburd).
 | ||
| - When determining the amount of free disk space, any deleted (but not yet removed)
 | ||
|   recordings on different file systems (that are mounted under the video directory)
 | ||
|   are no longer taken into account.
 | ||
| - When running out of disk space during a recording, only such deleted or old
 | ||
|   recordings are removed, that actually are on the video directory file system(s).
 | ||
|   This prevents VDR from accidentally deleting recordings on other file systems,
 | ||
|   which would not add any free space to the video directory.
 | ||
| - Implemented the cStatus, cDevice and cPlayer functions for setting subtitle tracks
 | ||
|   in plugins (thanks to Petri Hintukainen).
 | ||
| - Added cStatus::TimerChange() to inform plugins about changes to the list of timers
 | ||
|   (based on a patch from Benedikt Elser).
 | ||
| - Added new cStatus functions to the 'status' plugin.
 | ||
| - Added missing #include <limits.h> to epg.c and menuitems.h (thanks to Ville Skytt<74>).
 | ||
| - The new function cSkin::SetScrollbar() can be implemented by skins to display
 | ||
|   a scrollbar in every list menu. The 'classic' and 'sttng' skins have been
 | ||
|   changed accordingly, as well as the 'skincurses' plugin.
 | ||
| - Introduced 'operator const void * ()' in cString to catch cases where operator*()
 | ||
|   should be used.
 | ||
| - Fixed calculating the scrollbar sizes in the skins.
 | ||
| 
 | ||
| 2008-02-24: Version 1.5.16
 | ||
| 
 | ||
| - Fixed setting the current subtitle track in Transfer-Mode (reported by Petri Helin,
 | ||
|   thanks to Reinhard Nissl for pointing out that cDevice::Transferring() doesn't
 | ||
|   return the right value in the early stage of channel switching).
 | ||
| - Updated the Danish OSD texts (thanks to Mogens Elneff).
 | ||
| - Updated the Dutch OSD texts (thanks to Carel Willemse).
 | ||
| - Fixed various spelling errors and improved PLUGINS.html (thanks to Ville Skytt<74>).
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Fixed the format in cRemote::Put() to use "%016llX" instead of "%016LX" (thanks
 | ||
|   to Ludwig Nussel for pointing this out).
 | ||
| - Revised the fix of calculating the scrollbar height in the skins. The scrollbar
 | ||
|   handle now always has a height that is at least the width of the scrollbar.
 | ||
| - When switching the device that's used for live viewing away from the current
 | ||
|   transponder in favor of an upcoming recording, an attempt is now made to stay
 | ||
|   on the current channel by possibly going into 'Transfer Mode'.
 | ||
| - The CAM menu now stays open as long as it is automatically updated, even without
 | ||
|   pressing a remote control key. This is important when updating the CAM firmware
 | ||
|   from the transponder.
 | ||
| - No longer trying to switch to an available channel if the primary device has
 | ||
|   no valid programme and a menu is open (avoids interference with the CAM in
 | ||
|   case a CAM menu is open).
 | ||
| - Increased the valid range of the "Subtitle offset" setup option to -100...100
 | ||
|   (thanks to Rolf Ahrenberg).
 | ||
| - Added the backslash ('\') to the list of characters that need to be escaped
 | ||
|   when executing external commands (thanks to Peter Bieringer for reporting this one).
 | ||
| 
 | ||
| 2008-03-02: Version 1.5.17
 | ||
| 
 | ||
| - Updated the Swedish OSD texts (thanks to Tomas Berglund).
 | ||
| - Made the 'pic2mpg' script of the 'pictures' plugin work with uppercase filename
 | ||
|   extensions and relative paths (thanks to Stefan Wagner for reporting this one).
 | ||
| - Updated the Romanian OSD texts (thanks to Lucian Muresan).
 | ||
| - Updated the Dutch OSD texts (thanks to Johan Schuring).
 | ||
| - Stripping control codes 0x86 and 0x87 from SI strings.
 | ||
| - Updated French language texts (thanks to Jean-Claude Repetto).
 | ||
| - Fixed handling 3 and 4 byte UTF-8 symbols in Utf8CharGet() (thanks to Andreas
 | ||
|   Mair).
 | ||
| - Fixed a crash in cFreetypeFont::DrawText() if an unknown symbol is encountered
 | ||
|   (thanks to Tobias Grimm). Unknown symbols are replaced with a '?'.
 | ||
| - Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
 | ||
| - Updated the Czech OSD texts (thanks to Vladim<69>r B<>rta and Jiri Dobry).
 | ||
| - Updated the Turkish OSD texts (thanks to Oktay Yolge<67>en).
 | ||
| - The 'plugins' target in the Makefile now returns an error exit code if one of the
 | ||
|   plugins failed to compile (suggested by Tobias Grimm).
 | ||
| - Rendering the non-breaking space symbol as a blank (thanks to Tobias Grimm).
 | ||
| - Changed the default character set for SI data from ISO6937 (as required by the DVB
 | ||
|   standard ETSI EN 300 468) to ISO-8859-9, in order to work around the stupidity of
 | ||
|   some providers, who actually use ISO-8859-9, but fail to correctly announce that.
 | ||
| 
 | ||
| 2008-03-16: Version 1.5.18
 | ||
| 
 | ||
| - Added a missing reset of maxNumber in cChannels::Renumber() (reported by Sundararaj
 | ||
|   Reel).
 | ||
| - Revoked the fixed change of the default character set for SI data and introduced
 | ||
|   an environment variable to control it (thanks to Ales Jurik for reporting broken
 | ||
|   SI data on the Czech/Slovak channels, which actually do follow the standard).
 | ||
|   Users who want to set the default character set to something different can do this
 | ||
|   by setting the environment variable VDR_CHARSET_OVERRIDE to something like
 | ||
|   ISO-8859-9.
 | ||
| - Fixed a signed character used as index in cBase64Encoder::NextLine() (thanks
 | ||
|   to Tobias Grimm).
 | ||
| - Updated the Spanish and Catalan OSD texts (thanks to Luca Olivetti).
 | ||
| - Fixed automatically selecting the preferred subtitle language (based on a patch
 | ||
|   from Rolf Ahrenberg).
 | ||
| - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Updated the Polish OSD texts (thanks to Michael Rakowski).
 | ||
| - Fixed formatting the name section in the VDR man pages (thanks to Tobias Grimm).
 | ||
| - Updated the Swedish OSD texts (thanks to Magnus Andersson).
 | ||
| - Added Russian translations to the 'skincurses' and 'pictures' plugins (thanks
 | ||
|   to Alexander Gross).
 | ||
| - Fixed displaying the free disk space when entering the recordings menu where the
 | ||
|   last replayed recording was in a subdirectory, and pressing Back (thanks to Rolf
 | ||
|   Ahrenberg).
 | ||
| - Fixed tuning to a live channel after a recording has been stopped using the
 | ||
|   'Back' key.
 | ||
| - Resetting a timer's 'pending' flag when it has ended.
 | ||
| 
 | ||
| 2008-03-23: Version 1.6.0
 | ||
| 
 | ||
| - Updated the Croatian language texts (thanks to Adrian Caval).
 | ||
| - Added Chinese language texts (thanks to Nan Feng).
 | ||
| - Updated the Portuguese language texts.
 | ||
| - Added a note about VDR_CHARSET_OVERRIDE to the INSTALL file.
 | ||
| 
 | ||
| 2008-04-13: Version 1.7.0
 | ||
| 
 | ||
| - Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was
 | ||
|   revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now
 | ||
|   requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto.
 | ||
|   Note that the channels.conf file now supports additional parameters, so you may
 | ||
|   want to make sure you have a backup of this file in case you need to go back to
 | ||
|   the previous version of VDR!
 | ||
| - Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl).
 | ||
| - Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| - Improved logging system time changes to avoid problems on slow systems under
 | ||
|   heavy load (suggested by Helmut Auer).
 | ||
| - Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf
 | ||
|   Ahrenberg).
 | ||
| - Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
 | ||
|   Andreas Mair).
 | ||
| - Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald).
 | ||
| - Increased the time between checking the CAM status to 500ms to avoid problems
 | ||
|   with some CAMs (reported by Arthur Konovalov).
 | ||
| 
 | ||
| 2008-04-13: Version 1.6.0-1
 | ||
| 
 | ||
| - Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| - Improved logging system time changes to avoid problems on slow systems under
 | ||
|   heavy load (suggested by Helmut Auer).
 | ||
| - Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
 | ||
|   Andreas Mair).
 | ||
| - Increased the time between checking the CAM status to 500ms to avoid problems
 | ||
|   with some CAMs (reported by Arthur Konovalov).
 | ||
| 
 | ||
| 2008-09-06: Version 1.7.1
 | ||
| 
 | ||
| - Adapted the tuning code to the new DVBFE_SET_DELSYS API (thanks to Reinhard Nissl).
 | ||
|   VDR now uses the driver from http://jusst.de/hg/multiproto_plus.
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Removed obsolete $(NCURSESLIB) from the Makefile.
 | ||
| - Implemented handling the standard component descriptor for AC3 (stream=4), as it
 | ||
|   will soon be used by the German ARD channels (thanks to Michael Pennewi<77> for
 | ||
|   advance information about this change). The previously used "Premiere pseudo
 | ||
|   standard" (stream=2, type=5) still works, but has apparently been wrongfully used
 | ||
|   by broadcasters from the beginning.
 | ||
| - Added missing description of the 'S' channel parameter to vdr.5 (reported by
 | ||
|   Reinhard Nissl).
 | ||
| - The SVDRP signon message now indicates the character encoding in use, as in
 | ||
|   "220 video SVDRP VideoDiskRecorder 1.7.1; Fri May  2 16:17:10 2008; ISO-8859-1".
 | ||
|   This may be useful for instance for external tools that provide EPG data, so that
 | ||
|   they can correctly encode the strings.
 | ||
| - No longer calling FcFini() to avoid problems with older (broken) versions of
 | ||
|   fontconfig (suggested by Edgar Toernig).
 | ||
| - Removed the compile time option VFAT to allow users of precompiled binary
 | ||
|   distributions to have full control over whether or not to use the --vfat option
 | ||
|   at runtime (suggested by Michael Nork).
 | ||
| - First step towards switching to TS (Transport Stream) as recording format:
 | ||
|   + The new function cDevice::PlayTs() is used to play TS packets.
 | ||
|   + The new functions cDevice::PlayTsVideo() and cDevice::PlayTsAudio()
 | ||
|     are used to play video and audio TS packets, respectively.
 | ||
|   + The new function cAudio::PlayTs() is used to play audio TS packets.
 | ||
|   + The new class cPatPmtGenerator is used to generate a PAT/PMT pair that precedes
 | ||
|     the TS data in Transfer Mode.
 | ||
|   + The new class cPatPmtParser is used by cDevice to parse the PAT/PMT data in a
 | ||
|     TS in order to find out which streams it contains.
 | ||
|   + The new class cTsToPes is used to convert TS packets to a PES packet.
 | ||
|   + cTransfer no longer uses cRemux, and doesn't run a separate thread any more.
 | ||
|     It just generates a PAT/PMT and sends all received TS packets to the primary
 | ||
|     device's PlayTs().
 | ||
|   + Live subtitle display no longer uses a ring buffer and separate thread.
 | ||
|   + cPesAssembler has been removed. Old VDR recordings only contain complete PES
 | ||
|     packets.
 | ||
|   + Since a TS needs to have a PAT/PMT, which requires the video stream type to
 | ||
|     be explicitly given, the format of the VPID field in the channels.conf file
 | ||
|     and the SVDRP commands NEWC/MODC/LSTC has been extended. The video stream type
 | ||
|     now follows the VPID and optional PPID, separated by an '=' sign.
 | ||
| - Updated the sources.conf file (thanks to Oleg Roitburd).
 | ||
| - Fixed a possible integer overflow in GetAbsTime() (thanks to Alexander Rieger).
 | ||
| - Fixed a problem with calling isyslog() from within the SignalHandler() (thanks
 | ||
|   to Udo Richter).
 | ||
| - Replaced the Finnish language code "smi" with "suo" (thanks to Rolf Ahrenberg).
 | ||
| - Fixed wrong value for TableIdBAT in libsi/si.h (thanks to Winfried K<>hler).
 | ||
| - Errors in config files no longer keep VDR from starting.
 | ||
| - Removed unneeded include files <linux/dvb/dmx.h> and <time.h> from remux.h
 | ||
|   (reported by Tobias Grimm).
 | ||
| 
 | ||
| 2008-09-06: Version 1.6.0-2
 | ||
| 
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - The SVDRP signon message now indicates the character encoding in use, as in
 | ||
|   "220 video SVDRP VideoDiskRecorder 1.7.1; Fri May  2 16:17:10 2008; ISO-8859-1".
 | ||
|   This may be useful for instance for external tools that provide EPG data, so that
 | ||
|   they can correctly encode the strings.
 | ||
| - No longer calling FcFini() to avoid problems with older (broken) versions of
 | ||
|   fontconfig (suggested by Edgar Toernig).
 | ||
| - Updated the sources.conf file (thanks to Oleg Roitburd).
 | ||
| - Fixed a possible integer overflow in GetAbsTime() (thanks to Alexander Rieger).
 | ||
| - Fixed a problem with calling isyslog() from within the SignalHandler() (thanks
 | ||
|   to Udo Richter).
 | ||
| - Replaced the Finnish language code "smi" with "suo" (thanks to Rolf Ahrenberg).
 | ||
| - Fixed wrong value for TableIdBAT in libsi/si.h (thanks to Winfried K<>hler).
 | ||
| - Removed unneeded include files <linux/dvb/dmx.h> and <time.h> from remux.h
 | ||
|   (reported by Tobias Grimm).
 | ||
| 
 | ||
| 2008-12-14: Version 1.7.2
 | ||
| 
 | ||
| - Added a note about 'Id' being obsolete to the description of cDevice::PlayAudio().
 | ||
| - Switched to the new S2API driver API, which was decided to become the official
 | ||
|   DVB API in the kernel (based on patches from Igor M. Liplianin, Niels Wagenaar
 | ||
|   and Edgar Hucek). VDR now uses the S2API driver from http://linuxtv.org/hg/v4l-dvb.
 | ||
|   In order to correctly detect DVB-S2 capable devices, you need to apply the patch
 | ||
|   from ftp://ftp.tvdr.de/vdr/Developer/v4l-dvb-s2api-add-s2-capability.diff to
 | ||
|   the driver source, because the S2API doesn't provide a way of telling whether a
 | ||
|   device can handle DVB-S2 transponders.
 | ||
| - The cDvbTuner::IsTunedTo() function now also checks the symbol rate in case of
 | ||
|   DVB-S and DVB-C.
 | ||
| - Improved handling PES video packets with zero length when converting from TS to PES.
 | ||
|   For good replay in Transfer Mode on full featured DVB cards you may want to apply
 | ||
|   the patch from ftp://ftp.tvdr.de/vdr/Developer/av7110_v4ldvb_api5_audiobuf_test_1.diff
 | ||
|   to the driver (thanks to Oliver Endriss).
 | ||
| 
 | ||
| 2009-01-06: Version 1.7.3
 | ||
| 
 | ||
| - Updated the Russian OSD texts (thanks to Oleg Roitburd).
 | ||
| - Fixed handling the 'pointer field' in generating and parsing PAT/PMT (thanks to
 | ||
|   Frank Schmirler).
 | ||
| - Fixed handling modulation types for DVB-S transponders when processing the NIT.
 | ||
| - Changed cDvbDevice::GrabImage() to use V4L2 (thanks to Marco Schl<68><6C>ler).
 | ||
| - Added a poll to cDvbDevice::PlayVideo() and cDvbDevice::PlayAudio() to avoid
 | ||
|   excessive CPU load (this is just a makeshift solution until the FF DVB cards
 | ||
|   can play TS directly).
 | ||
| - The recording format is now Transport Stream. Existing recordings in PES format
 | ||
|   can still be replayed and edited, but new recordings are done in TS.
 | ||
|   All code for recording in PES has been removed.
 | ||
|   The following changes were made to switch to TS recording format:
 | ||
|   + The index file format has been changed to support file sizes of up to 1TB
 | ||
|     (previously 2GB), and up to 65535 separate files per recording (previously
 | ||
|     255).
 | ||
|   + The recording file names are now of the form 00001.ts (previously 001.vdr).
 | ||
|   + The frame rate is now detected by looking at two subsequent PTS values.
 | ||
|     The "frames per second" is stored in the "info" file using the new tag F
 | ||
|     (thanks to Artur Skawina for helping to get the IndexToHMSF() calculation
 | ||
|     right).
 | ||
|   + Several functions now have an additional parameter FramesPerSecond.
 | ||
|   + Several functions now have an additional parameter IsPesRecording.
 | ||
|   + The functionality of cFileWriter was moved into cRecorder, and cRemux is
 | ||
|     now obsolete. This also avoids one level of data copying while recording.
 | ||
|   + cRemux, cRingBufferLinearPes, cTS2PES and all c*Repacker classes have been
 | ||
|     removed.
 | ||
|   + A PAT/PMT is inserted before every independent frame, so that no extra
 | ||
|     measures need to be taken when editing a recording.
 | ||
|   + The directory name for a recording has been changed from
 | ||
|     YYYY-MM-DD-hh[.:]mm.pr.lt.rec (pr=priority, lt=lifetime) to
 | ||
|     YYYY-MM-DD-hh.mm.ch-ri.rec (ch=channel, ri=resumeId).
 | ||
|     Priority and Lifetime are now stored in the "info" file with the new
 | ||
|     tags P and L (if no such file exists, the maximum values are assumed by
 | ||
|     default, which avoids inadvertently deleting a recording if disk space
 | ||
|     is low). No longer storing Priority and Lifetime in the directory name
 | ||
|     avoids starting a new recording if one of these is changed in the timer
 | ||
|     and the recording is re-started for some reason.
 | ||
|     Instead of Priority and Lifetime, the directory name now contains the
 | ||
|     channel number from which the recording was made, and the "resume id" of
 | ||
|     this instance of VDR. This avoids problems if several VDR instances record
 | ||
|     the same show on different channels, or even on the same channel.
 | ||
|     The '-' between channel number and resumeId prevents older versions of
 | ||
|     VDR from "seeing" these recordings, which makes sure they won't even try
 | ||
|     to replay them, or remove them in case the disk runs full.
 | ||
|   + The semantics of PlayTs*() have been changed. These functions are now
 | ||
|     required to return the given Length (which is TS_SIZE) if they have
 | ||
|     processed the TS packet.
 | ||
|   + The files "index", "info", "marks" and "resume" within a TS recording
 | ||
|     directory are now created without the ".vdr" extension.
 | ||
|   + The "resume" file is no longer a binary file, but contains tagged lines
 | ||
|     to be able to store additional information, like the selected audio or
 | ||
|     subtitle track.
 | ||
|   + cDevice::StillPicture() will now be called with either TS or PES data.
 | ||
|   + cDvbPlayer::Goto() no longer appends a "sequence end code" to the data.
 | ||
|     If the output device needs this, it has to take care of it by itself.
 | ||
| - Fixed cPatPmtParser::ParsePmt() to reset vpid and vtype when switching from
 | ||
|   a video to an audio channel (thanks to Reinhard Nissl).
 | ||
| - cDvbDevice now uses the FE_CAN_2G_MODULATION flag to determine whether a device
 | ||
|   can handle DVB-S2. The #define is still there to allow people with older drivers
 | ||
|   who don't need DVB-S2 to use this version without patching.
 | ||
| 
 | ||
| 2009-01-25: Version 1.7.4
 | ||
| 
 | ||
| - Removed the '#define FE_CAN_2ND_GEN_MODULATION', since it was wrong and the
 | ||
|   flag is now in the driver, anyway.
 | ||
| - The full-featured DVB cards are now given the TS data directly for replay
 | ||
|   (thanks to Oliver Endriss for enhancing the av7110 driver to make it replay
 | ||
|   TS data). The patch from ftp://ftp.tvdr.de/vdr/Developer/av7110_ts_replay__1.diff
 | ||
|   implements this change in the driver.
 | ||
|   The patch av7110_v4ldvb_api5_audiobuf_test_1.diff mentioned in version 1.7.2
 | ||
|   is still necessary to avoid audio and video glitches on some channels.
 | ||
| - Added a typecast in cUnbufferedFile::Write() to avoid an error message when
 | ||
|   compiling on 64 bit systems.
 | ||
| - Added some missing 'const' statements to cBitmap (thanks to Andreas Regel).
 | ||
| - Fixed returning complete PES packets in cTsToPes::GetPes() (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| - Added a missing Detach() in cTransfer::Activate() (thanks to Marco Schl<68><6C>ler).
 | ||
| - Added clearing the TS buffers in cDevice::Detach() (thanks to Marco Schl<68><6C>ler).
 | ||
| - Fixed incrementing the continuity counter in cPatPmtGenerator::GetPmt() (thanks
 | ||
|   to Johann Friedrichs).
 | ||
| - Fixed removing deleted recordings in case there is a problem. Once a recording
 | ||
|   caused a problem with removing, no others were removed any more and an ongoing
 | ||
|   recording could fill up the disk and cause other recordings to be deleted
 | ||
|   automatically (reported by Reinhard Nissl).
 | ||
| - Added "DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
 | ||
|   to Make.config.template (thanks to Johann Friedrichs for pointing this out).
 | ||
|   Plugin authors should add this line to their Makefile or Make.config if they use
 | ||
|   file access functions that need special versions for 64 bit offsets.
 | ||
| - The new command line option -i can be used to set an "instance id", which will
 | ||
|   be used to distinguish recordings of the same broadcast made by different instances
 | ||
|   of VDR (suggested by Frank Schmirler). This replaces the use of the "resume id"
 | ||
|   that was introduced in version 1.7.3.
 | ||
| - Added checking mutexCurrentAudioTrack to cDevice::PlayTs() (thanks to Reinhard
 | ||
|   Nissl for pointing this out).
 | ||
| - Fixed handling the pointer field in cPatPmtParser::ParsePmt() (thanks to Frank
 | ||
|   Schmirler - sorry I swapped two lines when adopting the original patch).
 | ||
| - Checking the remaining packet length after processing the pointer field in
 | ||
|   cPatPmtParser::ParsePat() and cPatPmtParser::ParsePmt() (suggested by Frank
 | ||
|   Schmirler).
 | ||
| - Checking the pointer field in cPatPmtParser::ParsePmt() only in 'payload start'
 | ||
|   packets (suggested by Frank Schmirler).
 | ||
| - Changed cPatPmtGenerator to make sure the PMT pid doesn't collide with any of
 | ||
|   the actual pids of the channel.
 | ||
| - Fixed cDevice::PlayTsAudio() and made cDevice::PlayTsVideo() return 0 if
 | ||
|   PlayVideo() didn't play anything.
 | ||
| - Added an 'int' typecast to calculations involving FramesPerSecond() to avoid
 | ||
|   compiler warnings (reported by Winfried Koehler).
 | ||
| - Fixed detecting frames for pure audio recordings.
 | ||
| - Fixed editing PES recordings. The frame type in the index.vdr file generated for
 | ||
|   the edited PES recording is set to 1 for I-frames and 2 for all others (P- and
 | ||
|   B-frames). The exact frame type doesn't matter for VDR, it only needs to know if
 | ||
|   it's an I-frame or not.
 | ||
| - The PAT/PMT is now only processed if its version changes (reported by Reinhard
 | ||
|   Nissl).
 | ||
| - Fixed handling the maximum video file size (reported by Udo Richter).
 | ||
| - Improved fast-forward/-rewind for audio recordings. The actual data is now sent
 | ||
|   to the output device, so that it can be replayed and thus cause the proper delay.
 | ||
|   For pure audio recordings the audio is no longer muted in fast-forward/-rewind
 | ||
|   mode, so that some orientation regarding the position within the recording is
 | ||
|   possible. There may still be some offset in the replay position displayed by the
 | ||
|   progress indicator when switching from fast-forward/-rewind to play mode, as well
 | ||
|   as in the current position during normal play mode. This is due to the various
 | ||
|   buffers between the player and the output device and will be addressed later.
 | ||
|   Note the new function cDevice::IsPlayingVideo(), which is used to inform the
 | ||
|   player whether there is video data in the currently replayed stream. If a derived
 | ||
|   cDevice class reimplements PlayTs() or PlayPes(), it also needs to make sure this
 | ||
|   new function works as expected.
 | ||
| 
 | ||
| 2009-04-12: Version 1.7.5
 | ||
| 
 | ||
| - Fixed a hangup when replaying a TS recording with subtitles activated (reported
 | ||
|   by Timo Helkio).
 | ||
| - Fixed handling the 'new' indicator in the recordings menu for TS recordings
 | ||
|   (thanks to Derek Kelly).
 | ||
| - Added cap_sys_nice to the capabilities that are not dropped (thanks to Rolf
 | ||
|   Ahrenberg).
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Added cRecordingInfo::GetEvent() (thanks to Marcel Unbehaun).
 | ||
| - Improved synchronizing the progress display, trick modes and subtitle display
 | ||
|   to the actual audio/video. This now works independent of any buffer sizes the
 | ||
|   output device might use.
 | ||
|   + The cBackTrace class has been replaced with cPtsIndex, which keeps track
 | ||
|     of the PTS timestamps of recently played frames.
 | ||
|   + cDevice::GetSTC() is now required to deliver the STC even in trick modes.
 | ||
|     It is sufficient if it returns the PTS of the most recently presented
 | ||
|     audio/video frame.
 | ||
|   + The full-featured DVB cards need an improved firmware in order to return
 | ||
|     proper STC values in trick modes (thanks to Oliver Endriss for enhancing the
 | ||
|     av7110 firmware).
 | ||
| - Adapted cFrameDetector::Analyze() to HD NTSC broadcasts that split frames over
 | ||
|   several payload units (thanks to Derek Kelly for reporting this and helping in
 | ||
|   testing).
 | ||
| - Modified cFrameDetector::Analyze() to make it process whole frames at once, so
 | ||
|   that file I/O overhead is minimized during recording (reported by G<>nter
 | ||
|   Niedermeier).
 | ||
| - Added command line help for the '-i' option.
 | ||
| - Fixed cDvbPlayer::NextFile() to handle files larger than 2GB (thanks to Jose
 | ||
|   Alberto Reguero).
 | ||
| - Improved replay at the begin and end of a recording. The very first and very last
 | ||
|   frame is now sent to the output device repeatedly until GetSTC() reports that it
 | ||
|   has been played. cDvbPlayer::Action() no longer calls DeviceFlush() (thanks to
 | ||
|   Reinhard Nissl for making sure vdr-xine no longer needs this).
 | ||
| - Added missing '[]' to the delete operator in cMenuEditStrItem::~cMenuEditStrItem().
 | ||
| - Added missing virtual destructor to cPalette.
 | ||
| - Now freeing configDirectory before setting it to a new value in
 | ||
|   cPlugin::SetConfigDirectory().
 | ||
| - Fixed a crash when jumping to an editing mark in an audio recording.
 | ||
| - Fixed the 'VideoOnly' condition in the PlayPes() and PlayTs() calls in
 | ||
|   cDvbPlayer::Action() (thanks to Reinhard Nissl).
 | ||
| - cDevice::PlayTs() now plays as many TS packets as possible in one call.
 | ||
| - Making sure any floating point numbers written use a decimal point (thanks to
 | ||
|   Oliver Endriss for pointing out a problem with the F record in the info file of
 | ||
|   a recording).
 | ||
| - Fixed detecting the frame rate for radio recordings.
 | ||
| - Added missing AUDIO_PAUSE/AUDIO_CONTINUE calls to cDvbDevice (thanks to Oliver
 | ||
|   Endriss).
 | ||
| - No longer writing the video type into channels.conf if VPID is 0 (thanks to
 | ||
|   Oliver Endriss for reporting this).
 | ||
| - Improved efficiency of cEIT::cEIT() (thanks to Tobias Bratfisch).
 | ||
| 
 | ||
| 2009-04-26: Version 1.7.6
 | ||
| 
 | ||
| - cDevice::PlayTs() now syncs on the TS packet sync bytes.
 | ||
| - Made MAXFRAMESIZE a multiple of TS_SIZE to avoid breaking up TS packets.
 | ||
| - No longer resetting the patPmtParser in cDevice::PlayTs(), because this
 | ||
|   caused the selected audio and subtitle tracks to fall back to the default.
 | ||
| - The SVDRP command PUTE now supports reading the EPG data from a given file
 | ||
|   (thanks to Helmut Auer).
 | ||
| - Added cThread::SetIOPriority() and using it in cRemoveDeletedRecordingsThread
 | ||
|   (thanks to Rolf Ahrenberg).
 | ||
| - Fixed the MEGABYTE() macro to make it correctly handle parameters resulting in
 | ||
|   values larger than 2GB.
 | ||
| - Added cDevice::NumProvidedSystems() to PLUGINS.html (was missing since it had
 | ||
|   been implemented).
 | ||
| - Fixed distortions when switching to the next file during replay.
 | ||
| - Fixed detecting the frame rate for streams with PTS distances of 1800, which
 | ||
|   apparently split one frame over two payload units.
 | ||
| - Added missing 'const' to cRecording::FramesPerSecond() (thanks to Joachim Wilke).
 | ||
| - Any TS packets in the first "frame" after a cut in an edited recording that don't
 | ||
|   belong to a payload unit that started in that frame now get their TEI flag set,
 | ||
|   so that a decoder will ignore them together with any PES data collected for that
 | ||
|   PID so far (thanks to Oliver Endriss for reporting chirping sound disturbances at
 | ||
|   editing points in TS recordings).
 | ||
| - cDvbPlayer::Empty() subtracts 1 from readIndex, because Action() will first
 | ||
|   increment it.
 | ||
| - Only storing non-zero Pts values in ptsIndex.
 | ||
| - Added a note to the INSTALL file about using subdirectories to split a large
 | ||
|   disk into separate areas for VDR's video data and other stuff (suggested by
 | ||
|   Udo Richter).
 | ||
| 
 | ||
| 2009-05-03: Version 1.7.7
 | ||
| 
 | ||
| - The new function cDevice::GetVideoSize() returns the size and aspect ratio
 | ||
|   of the video material currently displayed. This function is used to determine
 | ||
|   the proper size of the OSD. Plugin authors should implement this function in
 | ||
|   classes derived from cDevice, if they are able to replay video.
 | ||
| - The OSD and font sizes are now defined in percent of the actual video display
 | ||
|   size. The maximum OSD size has been raised to 1920x1080, to allow full
 | ||
|   screen OSD on HD systems.
 | ||
| - The OSD size is now automatically adjusted to the actual video display
 | ||
|   (provided the output device implements the GetVideoSize() function).
 | ||
| - cFrameDetector::Analyze() now syncs on the TS packet sync bytes (thanks to
 | ||
|   Oliver Endriss for reporting broken index generation after a buffer overflow).
 | ||
| 
 | ||
| 2009-06-13: Version 1.7.8
 | ||
| 
 | ||
| - The name of the function cDevice::GetVideoSize() wasn't very well chosen
 | ||
|   for its purpose of defining the optimum size of the OSD for the current
 | ||
|   output device. Therefore a new function named cDevice::GetOsdSize() has
 | ||
|   been introduced (suggested by Rolf Ahrenberg). Plugin authors should
 | ||
|   implement this function in classes derived from cDevice, if they are able
 | ||
|   to replay video. cDevice::GetVideoSize() still exists and should return the
 | ||
|   actual size of the video material that is currently replayed. Note that
 | ||
|   because of the many possible aspect ratios for video material, the type
 | ||
|   of the Aspect parameter of GetVideoSize() has been changed to 'double',
 | ||
|   and the Aspect parameter in both functions is named differently, because
 | ||
|   it returns different values (suggested by Reinhard Nissl).
 | ||
|   Thanks to Oliver Endriss for his input on calculating the Aspect factor in
 | ||
|   GetOsdSize().
 | ||
| - Fixed the way the OSD size is determined on full featured DVB cards (thanks
 | ||
|   to Oliver Endriss).
 | ||
| - Increased MAXOSDHEIGHT to 1200 (suggested by Nicolas Huillard).
 | ||
| - Removed limitation to PAL resolution from SPU handling.
 | ||
| - Checking fd_video in cDvbDevice::GetVideoSize() to avoid error messages on
 | ||
|   systems with no real primary replay device (reported by Martin Neuditschko).
 | ||
| - Added a note to cTsToPes::GetPes() about having to call it repeatedly, once
 | ||
|   it has returned a non-NULL value.
 | ||
| - Added MPEG 1 handling to remux.c (thanks to Ales Jurik).
 | ||
| - Fixed use of time_t in cEIT::cEIT() (thanks to Tobias Bratfisch).
 | ||
| - Added missing update of lastOsdSizeUpdate.
 | ||
| - EIT events are now only processed if a plausible system time is available, to
 | ||
|   avoid wrong handling of PDC descriptors (thanks to Tobias Bratfisch).
 | ||
| - Removed unused 'synced' member from cTsToPes (reported by Christoph Haubrich).
 | ||
| - Added a note to cTsToPes about all TS packets having to belong to the same PID,
 | ||
|   and that for video data GetPes() may only be called if the next TS packet that
 | ||
|   will be given to PutTs() has the "payload start" flag set (suggested by Christoph
 | ||
|   Haubrich).
 | ||
| - Added a note about the meaning of PERCENTAGEDELTA in cRingBuffer::UpdatePercentage()
 | ||
|   (thanks to Rolf Ahrenberg).
 | ||
| - The new setup option "Recording/Pause key handling" can be used to define
 | ||
|   what happens if the Pause key on the remote control is pressed during
 | ||
|   live tv (thanks to Timo Eskola).
 | ||
| - Added a note about cFont::GetFont() not being thread-safe.
 | ||
| - Fixed generating PAT/PMT version numbers in case the PIDs change during
 | ||
|   recording (reported by Reinhard Nissl).
 | ||
| - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
 | ||
| - Fixed a memory leak when reaching the end of a recording during replay (reported
 | ||
|   by Reinhard Nissl).
 | ||
| - Fixed calling close(-1) in cUnbufferedFile::Close() (reported by Reinhard Nissl).
 | ||
| - Added a workaround for the broken linux-dvb driver header files (based on a patch
 | ||
|   from Tobias Grimm).
 | ||
| - Fixed handling the length of DiSEqC command sequences (reported by Reinhard Nissl).
 | ||
| - Fixed cOsdMenu::Display() in case the menu size has changed (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Added some missing 'const' keywords to avoid compilation errors with gcc 4.4
 | ||
|   (thanks to Ville Skytt<74> and Ludwig Nussel).
 | ||
| - Modified cSVDRP::CmdGRAB() to avoid writing into const data (reported by
 | ||
|   Ludwig Nussel).
 | ||
| - Fixed calculating menu colum widths in case the font has a size other than the
 | ||
|   default size (reported by Reinhard Nissl).
 | ||
| - Added a plausibility check for the OSD percentage parameters
 | ||
|   to avoid problems in case the values are stored in the setup.conf
 | ||
|   file in a wrong way.
 | ||
| - Fixed variable types in cIndexFile (reported by Udo Richter).
 | ||
| 
 | ||
| 2009-08-23: Version 1.7.9
 | ||
| 
 | ||
| - Fixed storing the current OSD size in case the device has
 | ||
|   changed it in its setup menu (reported by Reinhard Nissl).
 | ||
| - Fixed cDevice::PlayTsVideo() and cDevice::PlayTsAudio() in case only part of the
 | ||
|   buffer has been accepted by the device (reported by Udo Richter).
 | ||
| - Changed the EIT filter setup to save a few handles on devices that do hardware
 | ||
|   filtering.
 | ||
| - Fixed deleting expired timers if they have the VPS flag set, but the event they
 | ||
|   are assigned to doesn't have a VPS tag.
 | ||
| - Fixed handling file name length on VFAT systems in case they
 | ||
|   contain UTF-8 characters (thanks to Rolf Ahrenberg).
 | ||
| - Fixed generating CaPmts in case audio and video are encrypted using different
 | ||
|   ECM pids.
 | ||
| - Updated vdr.1 to use the new file names in recording directories.
 | ||
| - Fixed cRecordings::DelByName() to avoid compilation errors with gcc 4.4
 | ||
|   (thanks to Matthias Schwarzott).
 | ||
| - Increased the value of MAXFRAMESIZE to better suit HD recordings (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - Implemented full handling of subtitling descriptors (thanks to Mikko Tuumanen).
 | ||
| 
 | ||
| 2009-11-22: Version 1.7.10
 | ||
| 
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Fixed wrong bracketing in cChannel::SubtitlingType() etc.
 | ||
|   (thanks to Rolf Ahrenberg).
 | ||
| - Fixed not logging changes for channels that have no number
 | ||
|   (reported by Timothy D. Lenz).
 | ||
| - Changed the project's URLs and email to tvdr.de.
 | ||
| - Added Lithuanian language translations (thanks to Valdemaras Pipiras).
 | ||
| - Updated Chinese language texts (thanks to Nan Feng).
 | ||
| - Only checking DVB_API_VERSION to be >=5 in order to stay compileable in case
 | ||
|   the DVB API version number is increased (the API claims to always be backward
 | ||
|   compatible).
 | ||
| - Fixed saving terminal settings when running in background (thanks to Manuel
 | ||
|   Reimer).
 | ||
| - Fixed cFrameDetector::Analyze() to handle video streams where the frame type
 | ||
|   is not detectable from the first TS packet of a frame.
 | ||
| - Fixed writing the PCR pid into the PMT in cPatPmtGenerator::GeneratePmt()
 | ||
|   (reported by Rene van den Braken).
 | ||
| - Added Slovak language texts (thanks to Milan Hrala).
 | ||
| - Fixed EntriesOnSameFileSystem() to avoid using f_fsid, which may be 0 (thanks
 | ||
|   to Frank Schmirler).
 | ||
| - Fixed starting a recording at an I-frame.
 | ||
| - Fixed generating the index for recordings from channels that put a whole
 | ||
|   GOP into one payload unit.
 | ||
| - The index file for TS recordings is now regenerated on-the-fly if a
 | ||
|   recording is replayed that has no index. This can also be used to
 | ||
|   re-create a broken index file by manually deleting the index file and then
 | ||
|   replaying the recording (at least until the index file has been generated).
 | ||
| - The cRingBufferLinear::Read() function now returns -1 and sets errno to
 | ||
|   EAGAIN if the buffer is already full.
 | ||
| - Fixed handling DVB subtitles for PES recordings (thanks to Rolf Ahrenberg).
 | ||
| - Added the audio id to the call of PlayAudio() in cDevice::PlayTsAudio()
 | ||
|   (thanks to Andreas Schaefers).
 | ||
| - Fixed references to old *.vdr file names in MANUAL (reported by Arthur Konovalov).
 | ||
| - Reverted "Removed limitation to PAL resolution from SPU handling" because it
 | ||
|   caused nothing but trouble. Besides, the core VDR doesn't use this, anyway.
 | ||
| - Fixed the default value for "Pause key handling" in the MANUAL (reported by
 | ||
|   Diego Pierotto).
 | ||
| 
 | ||
| 2010-01-06: Version 1.7.11
 | ||
| 
 | ||
| - Fixed resetting the file size when regenerating the index file.
 | ||
| - The new function cDevice::PatPmtParser() can be used in derived devices to access
 | ||
|   the PAT/PMT of the currently replayed material.
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - The PCR pid in generated PMTs is now set to 0x1FFF ("no PCR pid") in
 | ||
|   cPatPmtGenerator::GeneratePmt(), because VDR doesn't record the PCR pid.
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - The 'sky' plugin is no longer part of the VDR source.
 | ||
| - Improved SPU handling on devices with limited OSD capabilities (thanks to
 | ||
|   Matthieu Castet).
 | ||
| - Several code modifications to avoid compiler warnings (thanks to Winfried K<>hler).
 | ||
| - Added stream type 11172 AUDIO to cPatPmtParser::ParsePmt() (thanks to Johann
 | ||
|   Friedrichs).
 | ||
| - Removed debug output of '-' from cTransfer::Receive().
 | ||
| - Added defines for large files to the 'newplugin' script (reported by Udo Richter).
 | ||
| - Removed the workaround for short channel names of "Kabel Deutschland", because
 | ||
|   apparently they now have their data according to the DVB standard (thanks to
 | ||
|   Johann Friedrichs).
 | ||
| - Some fixes to dvbspu.[hc] (thanks to Johann Friedrichs).
 | ||
| - Fixed a busy loop when moving editing marks (thanks to Johann Friedrichs).
 | ||
| - Updated sources.conf (thanks to Derek Kelly).
 | ||
| - Modified cCharSetConv so that it can be used to convert from "whatever VDR uses"
 | ||
|   to a given code (thanks to Joachim Wilke).
 | ||
| - Channel names containing commas are now handled correctly in channels.conf.
 | ||
|   If a channel's short name contains a comma, it is replaced with a '.'.
 | ||
| - cDevice now logs the device number when a new device is created.
 | ||
| - Fixed handling STREAMTYPE_11172_AUDIO in cPatPmtParser::ParsePmt().
 | ||
| - cParsePatPmt now has functions to retrieve the audio, dolby and subtitle pids.
 | ||
| - cPatFilter::Process() now only stores CA descriptors for video and audio pids
 | ||
|   (thanks to Francesco Saverio Schiavarelli for reporting a problem with channels
 | ||
|   that have some encrypted components that VDR doesn't use).
 | ||
| - cDevice::AddPid() now stores the stream type of the given pid (thanks to Andreas
 | ||
|   Regel).
 | ||
| - Added cFont::FontName() and cFont::Size() (thanks to Andreas Regel).
 | ||
| - cPatPmtParser now also stores the audio stream types.
 | ||
| - The support for full featured DVB cards of the TT/FuSi design has been moved
 | ||
|   into the new plugin 'dvbsddevice'. On systems that use such a card as their
 | ||
|   primary device, this plugin now needs to be loaded when running VDR in order
 | ||
|   to view live or recorded video. If the plugin is not loaded, the card will
 | ||
|   be treated like a budget DVB card, and there will be no OSD or viewing
 | ||
|   capability.
 | ||
| - Fixed handling the "CA PMT" generation (revised a change not mentioned in version
 | ||
|   1.7.9's changes, which caused a malfunction with Conax and Viaccess CAMs).
 | ||
| - Fixed stopping subtitle display when switching the primary device (thanks to
 | ||
|   Anssi Hannula).
 | ||
|   IMPORTANT NOTE TO PLUGIN AUTHORS: a plugin that implements a derived cDevice
 | ||
|   class that can replay video must now call the MakePrimaryDevice() function of
 | ||
|   its base class.
 | ||
| - Fixed compiler warnings "format not a string literal and no format arguments"
 | ||
|   in some syslog calls (thanks to Rolf Ahrenberg).
 | ||
| - The new command line options --edit and --genindex can be used to edit a
 | ||
|   recording or generate its index without actually starting the entire VDR
 | ||
|   (based on a patch from Helmut Auer).
 | ||
| - Improved the description of the transponder parameters in vdr.5 (thanks to
 | ||
|   Winfried K<>hler).
 | ||
| - Avoiding setting the video stream type to 2 if the vpid is 0 (problem reported
 | ||
|   by Arthur Konovalov).
 | ||
| - Implemented handling the "Content Descriptor" (based on a patch from Rolf
 | ||
|   Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the textual
 | ||
|   representation of the content descriptors as "genre". The epg.data file stores
 | ||
|   the genre using the tag character 'G'.
 | ||
| - Implemented handling the "Parental Rating Descriptor" (based on a patch from Rolf
 | ||
|   Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the parental
 | ||
|   rating (if given) in their event displays. The epg.data file stores
 | ||
|   the parental rating using the tag character 'R'.
 | ||
|   IMPORTANT NOTE: if VDR doesn't display a parental rating, this does not
 | ||
|   necessarily mean that the given programme is suitable for all audiences!
 | ||
| - Rearranged cEvent members to minimize memory waste.
 | ||
| - After a CLRE command, no further EPG processing is now done for 10 seconds,
 | ||
|   so that data sent with subsequent PUTE commands doesn't interfere with data
 | ||
|   from the broadcasters (suggested by Helmut Auer).
 | ||
| - Added support for DVB cards with multiple fontends. Note that this only
 | ||
|   works for DVB cards where each frontend can be used independently of all
 | ||
|   the others on the same adapter.
 | ||
| - Fixed plugin arguments corruption with glibc 2.11 on x86_64 (thanks to
 | ||
|   Anssi Hannula).
 | ||
| 
 | ||
| 2010-01-31: Version 1.7.12
 | ||
| 
 | ||
| - Changed the EVCONTENTMASK_* macros to enums and changed "mask" to "group".
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - The "Edit timer" menu can now set the folder for the recording from a list of
 | ||
|   folders stored in "folders.conf".
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - If svdrphosts.conf contains only the address of the local host, the SVDRP port
 | ||
|   is opened only for the local host (thanks to Manuel Reimer).
 | ||
| - Renamed 'runvdr' to 'runvdr.template' and no longer copying it to the BINDIR
 | ||
|   in 'make install' (thanks to Martin Dauskardt).
 | ||
| - Added plain text error messages to log entries from cOsd::SetAreas() (suggested
 | ||
|   by Rolf Ahrenberg).
 | ||
| - cPalette::ClosestColor() now treats fully transparent colors as "equal"; improved
 | ||
|   cDvbSpuBitmap::getMinBpp() (thanks to Matthieu Castet and Johann Friedrichs).
 | ||
| - The new setup option "Miscellaneous/Channels wrap" controls whether the current
 | ||
|   channel wraps around the beginning or end of the channel list when zapping (thanks
 | ||
|   to Matti Lehtim<69>ki).
 | ||
| - Fixed determining the frame duration on channels where the PTS deltas jitter by
 | ||
|   +/-1 around 1800.
 | ||
| - The PCR pid in generated PMTs is now set to the channel's PCR pid again.
 | ||
| - Fixed determining the frame duration on channels where the PTS deltas jitter by
 | ||
|   +/-1 around 3600.
 | ||
| - The PCR pid is now recorded for channels where this is different from the video
 | ||
|   PID. To facilitate this, the interfaces of cTransfer, cTransferControl, cRecorder
 | ||
|   and cReceiver have been modified, so that the PIDs are no longer given in separate
 | ||
|   parameters, but rather the whole channel is handed down for processing. The old
 | ||
|   constructor of cReceiver is still available, but it is recommended to plugin authors
 | ||
|   that they switch to the new interface as soon as possible.
 | ||
|   When replaying such a recording, the PCR packets are sent to PlayTsVideo().
 | ||
| - The files "commands.conf" and "reccmd.conf" can now contain nested lists of
 | ||
|   commands. See vdr.5 for information about the new file format.
 | ||
|   This obsoletes the CMDSUBMENU patch.
 | ||
| 
 | ||
| 2010-02-28: Version 1.7.13
 | ||
| 
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Changed the position of Sirius 4 to S4.8E in sources.conf (thanks to Alexander Gross).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Moved the declaration of cMenuCommands to menu.h, so that plugins can use it.
 | ||
| - Added a note to the MANUAL, saying that adding new transponders only works if the
 | ||
|   "EPG scan" is active (suggested by Halim Sahin).
 | ||
| - Improved handling frames at the beginning and end of a recording in cDvbPlayer for
 | ||
|   devices with large buffers (thanks to Reinhard Nissl).
 | ||
| - Implemented cDeviceHook to allow plugins more control over which device can
 | ||
|   provide which transponder (thanks to Reinhard Nissl).
 | ||
| - Implemented cDevice::GetCurrentlyTunedTransponder() (thanks to Reinhard Nissl).
 | ||
| - Moved strictly necessary Makefile options into Make.global, which is included
 | ||
|   by all plugins (thanks to Paul Menzel). The Makefiles of existing plugins should be
 | ||
|   modified like this:
 | ||
| 
 | ||
|   ------------------------------------------------------------
 | ||
|   --- PLUGINS/src/hello/Makefile  2009/10/18 14:00:07      2.1
 | ||
|   +++ PLUGINS/src/hello/Makefile  2010/02/06 14:50:03      2.2
 | ||
|   @@ -18,7 +18,7 @@
 | ||
|    ### The C++ compiler and options:
 | ||
| 
 | ||
|    CXX      ?= g++
 | ||
|   -CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 | ||
|   +CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
 | ||
| 
 | ||
|    ### The directory environment:
 | ||
| 
 | ||
|   @@ -26,6 +26,10 @@
 | ||
|    LIBDIR = ../../lib
 | ||
|    TMPDIR = /tmp
 | ||
| 
 | ||
|   +### Make sure that necessary options are included:
 | ||
|   +
 | ||
|   +include $(VDRDIR)/Make.global
 | ||
|   +
 | ||
|    ### Allow user defined options to overwrite defaults:
 | ||
| 
 | ||
|    -include $(VDRDIR)/Make.config
 | ||
|   ------------------------------------------------------------
 | ||
| - Added device definitions to the diseqc.conf file format, so that certain satellite
 | ||
|   positions can be limited to a given list of devices.
 | ||
|   This obsoletes the SOURCECAPS patch.
 | ||
| - Keeping subtitles visible when pausing replay (thanks to Rolf Ahrenberg).
 | ||
| - Fixed adding new transponders in case there is only a single channel in the
 | ||
|   channel list (reported by Halim Sahin).
 | ||
| - The file name in the "Timers" menu now shows only the base name of the recording
 | ||
|   without the folder path (if any). Otherwise with long folder paths the actual
 | ||
|   recording name was not visible at all.
 | ||
| - Updated the Romanian OSD texts (thanks to Lucian Muresan).
 | ||
| - Exported some libsi functions (thanks to Lucian Muresan).
 | ||
| - Improved scalability of the default skins.
 | ||
| - Fixed the German translation of "Folder name must not contain '%c'!" (thanks to
 | ||
|   Frank Schmirler).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Plugins can now define new sources. In order to implement this, the following
 | ||
|   changes were made:
 | ||
|   + The transponder parameter string is no longer interpreted by cChannel, but rather
 | ||
|     stored as is and used only by the respective device. That way plugins can use a
 | ||
|     channel's parameter string to store arbitrary data (see vdr.5).
 | ||
|   + The new class cSourceParam can be used by plugins to define new sources, and to
 | ||
|     implement OSD items that will be used in the channel editor for editing the source
 | ||
|     specific parameters of a channel (see dvbdevice.c for an example of how this is
 | ||
|     done for the default DVB devices).
 | ||
|   + Purely numerical values are no longer accepted in the 'source' parameter of a
 | ||
|     channel.
 | ||
|   This obsoletes the PLUGINPARAM patch.
 | ||
| - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
 | ||
| - cSafeFile::Close() now flushes the file (suggested by Stephan Austerm<72>hle).
 | ||
| - The option "Setup/DVB/Use Dolby Digital" now only controls whether Dolby Digital
 | ||
|   tracks appear in the "Audio" menu. Dolby Digital is always recorded.
 | ||
|   This obsoletes the DOLBYINREC patch.
 | ||
| 
 | ||
| 2010-03-12: Version 1.7.14
 | ||
| 
 | ||
| - Fixed handling empty strings in cSource::FromString().
 | ||
| - Assigned the source character 'I' to "IPTV" (suggested by Rolf Ahrenberg).
 | ||
| - Assigned the source character 'V' to "Analog Video" (suggested by Lars Hanisch).
 | ||
|   This obsoletes the ANALOGTV patch.
 | ||
| - Added support for ATSC devices (thanks to Alex Lasnier).
 | ||
|   This obsoletes the ATSC patch.
 | ||
| - The "Source" item in the "Edit channel" menu now wraps around the list of sources
 | ||
|   (suggested by Halim Sahin).
 | ||
| - Fixed editing channel parameters.
 | ||
| - The new setup option "Recording/Delete timeshift recording" controls whether a timeshift
 | ||
|   recording is automatically deleted after viewing it.
 | ||
|   This obsoletes the DELTIMESHIFTREC patch.
 | ||
|   Note that the meaning of the values for this option is different from the DELTIMESHIFTREC
 | ||
|   patch: 0 means timeshift recordings are not automatically deleted (the default behavior
 | ||
|   as in previous versions), while 1 means to ask the user whether the recording shall be
 | ||
|   deleted.
 | ||
| - Added cChannel::IsSourceType() to test if a channel's source is of a given type.
 | ||
| - Changed the polarization characters in cDvbSourceParam::GetOsdItem() to uppercase.
 | ||
| - The full timer file name is now displayed if it ends with "TITLE" or "EPISODE"
 | ||
|   (pointed out by Udo Richter).
 | ||
| - Fixed "attempt to drop wrong frame from ring buffer" when skipping +/- one minute
 | ||
|   during replay.
 | ||
| - The new setup option "Folders in timer menu" controls whether the file names in
 | ||
|   the timer menu are shown with their full folder path.
 | ||
| 
 | ||
| 2010-06-06: Version 1.7.15
 | ||
| 
 | ||
| - Added Macedonian language texts (thanks to Dimitar Petrovski).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Added handling of EnhancedAC3DescriptorTag (thanks to Eric Valette).
 | ||
| - The default SVDRP port is now 6419 (registered with ICANN/IANA by Christian Tramnitz).
 | ||
|   Use '-p 2001' to switch back to the old port if necessary.
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - cDvbDevice::ProvidesTransponder() now checks the modulation capabilities of the
 | ||
|   device (as far as the driver allows this).
 | ||
| - Fixed cFrameDetector::Analyze() in case part of the data has been processed and
 | ||
|   there is less than MIN_TS_PACKETS_FOR_FRAME_DETECTOR left (reported by Derek Kelly).
 | ||
| - Added a note about not deleting cDeviceHook objects to device.h.
 | ||
| - Added user defined key kUser0 (suggested by Ulf Kiener).
 | ||
| - Include paths are no longer overwritten in the Makefile (thanks
 | ||
|   to Paul Menzel).
 | ||
| - The various modulation types are now taken into account when selecting a device for
 | ||
|   a recording or live viewing, so that devices that provide more capabilities are
 | ||
|   spared.
 | ||
| - Fixed generating PMT language descriptors for multi language PIDs (thanks to Rolf
 | ||
|   Ahrenberg).
 | ||
| - Transponders that use "8psk turbo fec" (a non-standard mode used by North American
 | ||
|   providers) are now identified by assuming that all 8psk transponders on DVB-S use
 | ||
|   "turbo fec". In order to determine whether a certain device can handle "turbo fec",
 | ||
|   the new driver flag FE_CAN_TURBO_FEC is checked. If your device can handle "turbo
 | ||
|   fec", and your driver doesn't have that flag, yet, you can apply the patch from
 | ||
|   ftp://ftp.tvdr.de/vdr/Developer/v4l-dvb-add-FE_CAN_TURBO_FEC.diff. A temporary
 | ||
|   macro in dvbdevice.c defines the flag for all those who don't need this in the
 | ||
|   driver, so that they can continue using an unmodified driver.
 | ||
|   Thanks to Derek Kelly for testing this.
 | ||
| - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
 | ||
| - Fixed handling "none" color entries in XPM files (thanks to Thomas G<>nther).
 | ||
| - Fixed a crash when creating a new channel if the channel list is empty (reported
 | ||
|   by Halim Sahin).
 | ||
| - Updated the Czech OSD texts (thanks to Radek Stastny).
 | ||
| - Fixed a possible out of buffer memory access in case of bad TS data (reported
 | ||
|   by Rolf Ahrenberg).
 | ||
| - Implemented handling of HD resolution subtitles according to v1.3.1 of
 | ||
|   ETSI EN 300 743, chapter 7.2.1 (thanks to Rolf Ahrenberg).
 | ||
| - The EPG data now handles stream components 5 (H.264-video) and 6 (HEAAC-audio).
 | ||
| - Fixed a problem with external Dolby Digital processing via the '-a' option in live
 | ||
|   mode and with TS recordings (reported by Christopher Reimer).
 | ||
| - Added handling MPEG audio types "ISO/IEC 14496-3 Audio with LATM transport syntax"
 | ||
|   and "ISO/IEC 13818-7 Audio with ADTS transport syntax" (suggested by Luis Fernandes).
 | ||
|   See man vdr(5) on how the APID section of channels has been extended to store
 | ||
|   this information.
 | ||
| - Added detecting channels that use service type 0x16.
 | ||
| - Added full handling of the stream types of Dolby Digital pids
 | ||
|   (thanks to Jose Alberto Reguero).
 | ||
| - The new setup option "OSD/Number keys for characters" can be used to control whether
 | ||
|   the number keys can be used to enter characters in a text input field (suggested
 | ||
|   by Stefan Huskamp).
 | ||
| 
 | ||
| 2010-09-19: Version 1.7.16
 | ||
| 
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Added missing Dtypes for ATSC (thanks to Alex Lasnier).
 | ||
| - Updated the Portuguese language texts (thanks to Cristiano A. Silva).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed the array size of Atypes in cPatFilter::Process() (thanks to
 | ||
|   Rolf Ahrenberg).
 | ||
| - Added locking to the cCutter functions to avoid a crash in case CutRecording()
 | ||
|   is called from a plugin (reported by Andreas Mair).
 | ||
| - Fixed DDS detection for HD resolution subtitles (thanks to Reinhard Nissl).
 | ||
| - Fixed following symbolic links in RemoveFileOrDir().
 | ||
| - Added support for languages that are written right-to-left (based on a patch
 | ||
|   from Osama Alrawab). See INSTALL for information on how to turn this on.
 | ||
| - Added Arabic language texts (thanks to Osama Alrawab).
 | ||
| 
 | ||
| 2011-03-12: Version 1.7.17
 | ||
| 
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Fixed following symbolic links in RemoveFileOrDir() (cont'd) (thanks to
 | ||
|   Steffen Barszus).
 | ||
| - Changed the description of cDevice::GetSTC() to make it mandatory for devices
 | ||
|   that can replay.
 | ||
| - Removed the check for positive STC values from cDvbSubtitleConverter::Action().
 | ||
| - Added cString::operator=(const char *String) (suggested by Antti Sepp<70>l<EFBFBD>).
 | ||
| - Some spelling fixes (thanks to Ville Skytt<74>).
 | ||
| - Passing package name and version to xgettext (thanks to Ville Skytt<74>).
 | ||
| - Made 'dist' target dependent on up to date *.po (thanks to Ville Skytt<74>).
 | ||
| - Added Language and fixed Language-Team header of *.po (thanks to Ville Skytt<74>).
 | ||
| - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
 | ||
| - Fixed detecting frames on channels that broadcast with 50 or 60 fps.
 | ||
|   This avoids artifacts during fast forward/rewind when replaying recordings from such
 | ||
|   channels. To fix the index of existing recordings from such channels, just delete the
 | ||
|   'index' file of the recording and VDR will generate a new one the next time you play it.
 | ||
|   You should also change the line "F 25" to "F 50" in the 'info' file of that recording.
 | ||
| - Added support for "registration descriptor" to 'libsi' and using it in pat.c (thanks
 | ||
|   to Rolf Ahrenberg).
 | ||
| - Fixed unjustified log entries about changed channel pids (reported by Derek Kelly).
 | ||
| - Added an include of VDR's 'Make.global' to libsi's Makefile (thanks to Rolf
 | ||
|   Ahrenberg).
 | ||
| - Removed displaying the "contents" information from the "Classic VDR" and
 | ||
|   "ST:TNG Panels" skins, because it is often wrong and nothing but irritating.
 | ||
| - Added typecasts to avoid gcc 4.5 warnings in switch statements on eKeys
 | ||
|   variables where additional 'k_...' flags are used.
 | ||
| - Fixed inclusion of <stdarg.h> (thanks to Henning Heinold).
 | ||
| - Changed "frame duration" to "frame rate" in vdr.5 (reported by Tobias Grimm).
 | ||
| - Removing a cRemote from the Remotes list in case its initialization failed (thanks
 | ||
|   to Dominik Strasser).
 | ||
| - Added LDFLAGS to the linker calls in the Makefiles (thanks to Joerg Bornkessel and
 | ||
|   Paul Menzel).
 | ||
| - Now updating the 'frames per second' data in the list of recordings when a new
 | ||
|   recording is started that has a frame rate other than the default.
 | ||
| - The include path to the freetype2 header files is now retrieved via a call to
 | ||
|   'pkg-config --cflags freetype2' (suggested by Andreas Oberritter).
 | ||
| - The OSD now has full TrueColor support. There can be several "pixmaps" that can
 | ||
|   be overlayed with alpha blending. All existing skins should work out of the box
 | ||
|   with the TrueColor OSD - the only exception being cOsd::GetBitmap(). Since the
 | ||
|   TrueColor OSD doesn't use bitmaps, this function will return a dummy bitmap, which
 | ||
|   may not be what the plugin expects. As long as this bitmap is only used for setting
 | ||
|   the palette, there is no problem. However, any other operations on this bitmap will
 | ||
|   have no effect. See the description of the cPixmap functions in osd.h for details
 | ||
|   about the new functionalities.
 | ||
|   The "ST:TNG Panels" skin has been enhanced to automatically use the TrueColor OSD
 | ||
|   if available.
 | ||
|   The "osddemo" plugin has been extended to show some of the possibilities of the
 | ||
|   TrueColor OSD if it is run on a system that actually provides TrueColor support.
 | ||
|   Thanks to Reinhard Nissl for some valuable input, help with debugging, and an
 | ||
|   implementation of the AlphaBlend() function.
 | ||
| - Updated the Slovak language texts (thanks to Milan Hrala).
 | ||
| - Added Serbian language texts (thanks to Milan Cvijanovic).
 | ||
| - Fixed reallocating memory in the "pictures" plugin (reported by Paul Menzel, with
 | ||
|   input from Oliver Endriss).
 | ||
| - Fixed reallocating memory in cTsToPes::PutTs() (suggested by Oliver Endriss).
 | ||
| - Now checking the result of all realloc() calls.
 | ||
| - Fixed setting up the 'Recordings' menu in case there are several recordings
 | ||
|   with exactly the same name (reported by Marcus Hilbrich).
 | ||
| - Setting the audio type of language descriptors to 0x00 in the PAT/PMT generator
 | ||
|   (thanks to Anssi Hannula).
 | ||
| - Changed the compiler optimization flag to -O3, which gives quite a performance
 | ||
|   boost in the AlphaBlend() function.
 | ||
| - While replaying, the editing marks are now updated every 10 seconds (based on a
 | ||
|   patch from Manuel Reimer).
 | ||
| - Now reducing the thread and I/O priority cCuttingThread::Action() to make the
 | ||
|   foreground process more responsive (suggested by Frank Neumann).
 | ||
| - Removed checking for minimum line length of 21 characters in the LIRC receiver code
 | ||
|   (reported by Gerald Dachs).
 | ||
| - Updated the Romanian OSD texts (thanks to Lucian Muresan).
 | ||
| - Now storing the original display size when handling DVB subtitles (thanks to
 | ||
|   Reinhard Nissl).
 | ||
| - The original display size of subtitles is now used to scale them properly when
 | ||
|   displaying them on an HD OSD.
 | ||
| 
 | ||
| 2011-04-17: Version 1.7.18
 | ||
| 
 | ||
| - Changed -O2 to -O3 in Make.config.template (reported by Matti Lehtim<69>ki).
 | ||
| - Added a missing 'default' case in cPixmapMemory::DrawEllipse().
 | ||
| - Fixed some direct comparisons of double values.
 | ||
| - Fixed detecting frames on channels that broadcast with separate "fields" instead
 | ||
|   of complete frames.
 | ||
| - Made updating the editing marks during replay react faster in case the marks
 | ||
|   file has just been written (with a patch from Udo Richter).
 | ||
| - Fixed horizontal scaling of subtitles (reported by Reinhard Nissl).
 | ||
| - Stripped the note "The data returned by this function is only used for informational
 | ||
|   purposes (if any)" from the description of cDevice::GetVideoSize(). The VideoAspect
 | ||
|   is now used to properly scale subtitles.
 | ||
| - Fixed cUnbufferedFile::Seek() in case it is compiled without USE_FADVISE (thanks
 | ||
|   to Juergen Lock).
 | ||
| - Fixed the Language header of the Serbian translation file (thanks to Ville Skytt<74>).
 | ||
| - Added anti-aliasing when upscaling bitmaps, which improves the display of SD subtitles
 | ||
|   when replayed on an HD OSD (thanks to Reinhard Nissl for his help in debugging).
 | ||
| - Renamed cBitmap::Scale() to Scaled(), because it doesn't modify the bitmap itself,
 | ||
|   but rather returns a scaled copy.
 | ||
| - Fixed the description of cReceiver in PLUGINS.html, regarding detaching a receiver
 | ||
|   from its device before deleting it (reported by Winfried K<>hler). This change in
 | ||
|   behavior was introduced in version 1.5.7.
 | ||
| - Fixed scaling subtitles in case the OSD size is exactly the same as the display
 | ||
|   size of the subtitles.
 | ||
| - Added a missing initialization to sDvbSpuRect (reported by Sergiu Dotenco).
 | ||
| - Replaced "%lld" and "%llX" print format specifiers with "PRId64" and "PRIX64" to
 | ||
|   avoid compiler warnings with gcc 4.5.2 (thanks to Sergiu Dotenco).
 | ||
|   On a personal note: I find it a step in the totally wrong direction that there
 | ||
|   have been macros introduced to work around this problem in the first place. There
 | ||
|   should have been "real" format specifiers defined that address this. These macros
 | ||
|   are nothing but an ugly workaround.
 | ||
| - Added Cancel(3) to ~cTrueColorDemo() in the "osddemo" plugin (thanks to Reinhard Nissl).
 | ||
| - Added a missing font deletion in cTrueColorDemo::Action() in the "osddemo" plugin
 | ||
|   (thanks to Reinhard Nissl).
 | ||
| - Fixed a buffer overflow in cFont::Bidi() (thanks to Reinhard Nissl).
 | ||
| - Added HD stream content identifiers to vdr.5 (thanks to Christoph Haubrich).
 | ||
| - Made cRecordingInfo::Read(FILE *f) private to avoid calls to it from outside
 | ||
|   cRecordingInfo or cRecording (reported by Mika Laitio).
 | ||
| - The dvbhddevice plugin is now part of the VDR distribution archive (thanks to
 | ||
|   Andreas Regel).
 | ||
| - Removed an obsolete local variable in dvbsdffosd.c (thanks to Paul Menzel).
 | ||
| - Fixed a possible NULL pointer dereference in osddemo.c (reported by Paul Menzel).
 | ||
| - Now using pkg-config to get fribidi, freetype and fontconfig cflags and libs (thanks
 | ||
|   to Ville Skytt<74>).
 | ||
| - The Makefile now also installs the include files (thanks to Ville Skytt<74>).
 | ||
| - Added handling of "ANSI/SCTE 57" descriptors (thanks to Rolf Ahrenberg).
 | ||
| - Avoiding an unnecessary call to Recordings.ResetResume() (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| 
 | ||
| 2011-06-19: Version 1.7.19
 | ||
| 
 | ||
| - Fixed cString's operator=(const char *String) in case the given string is the
 | ||
|   same as the existing one (thanks to Dirk Leber).
 | ||
| - Avoiding a gcc 4.6 compiler error in the skincurses plugin (thanks to Tobias Grimm).
 | ||
| - TsGetPayload() now checks if there actually is a payload in the given TS packet
 | ||
|   (reported by Dirk Leber).
 | ||
| - Now sorting the source file names in the call to xgettext, to make sure the results
 | ||
|   are not dependent on the sequence of the files.
 | ||
|   Plugin authors may want to change the line containing the xgettext call in their
 | ||
|   Makefile accordingly by changing "$^" to "`ls $^`".
 | ||
| - The primary device is now only avoided for recording if it is an old SD full
 | ||
|   featured card. This is done through the new function cDevice::AvoidRecording().
 | ||
| - Subtitle PIDs are now also decrypted (thanks to Reinhard Nissl).
 | ||
| - Fixed a possible race condition in cDiseqc::Execute() (reported by Marco G<>benich).
 | ||
|   The return value of cDiseqcs::Get() is now const, so plugin authors may need to
 | ||
|   adjust their code if they use this function.
 | ||
| - The new functions cDevice::SignalStrength() and cDevice::SignalQuality() can be
 | ||
|   used to determine the signal strength and quality of a given device (thanks to
 | ||
|   Rolf Ahrenberg for some input on how to use BER and UNC values to generate a
 | ||
|   "quality" value).
 | ||
| - The 'sttng' skin now displays two colored bars at the bottom of the channel display,
 | ||
|   indicating the strength (upper bar) and quality (lower bar) of the received signal.
 | ||
|   The number to the left of these bars indicates the actual device the current
 | ||
|   channel is being received with.
 | ||
| - Fixed detecting frames in case the Picture Start Code or Access Unit Delimiter
 | ||
|   extends over TS packet boundaries (reported by Johan Andersson).
 | ||
|   In order to fix this, the semantics of cFrameDetector had to be changed a little.
 | ||
|   See cRecorder::Action() and cIndexFileGenerator::Action() on how to use the new
 | ||
|   cFrameDetector::NewPayload() function.
 | ||
| - The frame detector now only starts collecting PTS values after it has seen the
 | ||
|   first I-frame, otherwise it might get MaxPtsValues values and stop analyzing
 | ||
|   even though the incoming data is still garbage (reported by Derek Kelly).
 | ||
| - The info file of a recording is now only overwritten with a new fps value if
 | ||
|   that new value is not the default value (thanks to Derek Kelly for reporting a
 | ||
|   problem with the fps value being overwritten in case a recording was interrupted
 | ||
|   and resumed, and the fps value could not be determined after resuming recording).
 | ||
| - The initial channel is now stored by the channel ID in the setup.conf file, in
 | ||
|   order to avoid problems in case channels are reordered or deleted (reported by
 | ||
|   Lars Bl<42>ser).
 | ||
| - Added support for "content identifier descriptor" and "default authority descriptor"
 | ||
|   to 'libsi' (thanks to Dave Pickles).
 | ||
| 
 | ||
| 2011-08-15: Version 1.7.20
 | ||
| 
 | ||
| - Added some missing 'const' to tChannelID (reported by Sundararaj Reel).
 | ||
| - The isnumber() function now checks the given pointer for NULL (thanks to Holger
 | ||
|   Dengler).
 | ||
| - Now checking Setup.InitialChannel for NULL before using it (reported by
 | ||
|   Christoph Haubrich).
 | ||
| - cSkins::Message() now blocks calls from background threads (thanks to Michael
 | ||
|   Eiler for reporting a crash in such a scenario).
 | ||
| - Fixed the return value of the svdrpsend.pl script in case of an error (thanks to
 | ||
|   Jonas Diemer).
 | ||
| - Increased MAXCAIDS to 12 (thanks to Jerome Lacarriere).
 | ||
| - Fixed handling DiSEqC codes (thanks to Mark Hawes for reporting the bug, and
 | ||
|   Udo Richter for suggesting the fix).
 | ||
| - Added a mechanism to defer timer handling in case of problems (reported by
 | ||
|   Frank Niederwipper).
 | ||
| - Fixed distortions that happened when splitting a recording into several files
 | ||
|   (was a side effect of "Fixed detecting frames in case the Picture Start Code or
 | ||
|   Access Unit Delimiter extends over TS packet boundaries" in version 1.7.19).
 | ||
|   cRecorder::Action() now buffers TS packets in case the frame type is
 | ||
|   not yet known when a new payload starts. This adds no overhead for channels
 | ||
|   that broadcast the frame type within the first TS packet of a payload; it only
 | ||
|   kicks in if that information is not in the first TS packet.
 | ||
| - Fixed handling the channelID in cMenuEditChanItem (thanks to Udo Richter).
 | ||
| - cStringList::Sort() can now be called with a boolean parameter that controls
 | ||
|   case insensitive sorting (suggested by Sundararaj Reel).
 | ||
| - 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).
 | ||
| - Fixed some crashes in subtitle display (thanks to Rolf Ahrenberg).
 | ||
| - Made DELETENULL() thread safe (reported by Rolf Ahrenberg).
 | ||
| - The pic2mpg script of the 'pictures' plugin now generates HD images (thanks to
 | ||
|   Andre Weidemann for his support in using convert/ffmpeg). The old SD version is
 | ||
|   still available as pic2mpg-sd.
 | ||
| - Added a mutex to protect cOsd::Osds from simultaneous access from different threads
 | ||
|   (reported by Rolf Ahrenberg).
 | ||
| - The cutter now sets the 'broken link' flag for MPEG2 TS recordings (thanks to
 | ||
|   Oliver Endriss).
 | ||
| - Fixed language code entry for Portuguese.
 | ||
| - The new command line options --filesize (suggested by Marco G<>benich) and --split
 | ||
|   can be used together with --edit to set the maximum video file size and turn on
 | ||
|   splitting edited files at the editing marks. These options must be given before
 | ||
|   --edit to have an effect.
 | ||
| - cTimeMs is no longer initialized to the current time if the value given to the
 | ||
|   constructor is negative (avoids the "cTimeMs: using monotonic clock..." log message
 | ||
|   before VDR's starting log message).
 | ||
| 
 | ||
| 2011-09-04: Version 1.7.21
 | ||
| 
 | ||
| - 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.
 | ||
| 
 | ||
| 2011-12-04: Version 1.7.22
 | ||
| 
 | ||
| - Fixed scaling subtitles in case the primary device's GetVideoSize() function doesn't
 | ||
|   return actual values (thanks to Luca Olivetti).
 | ||
| - The DiSEqC codes are now copied in the call to cDiseqc::Execute().
 | ||
| - VDR now supports "Satellite Channel Routing" (SCR) according to EN50494 (based on
 | ||
|   the "unicable" patch from Lars Hanisch).
 | ||
|   Since "Unicable" is a registered trademark and stands for only one of many
 | ||
|   implementations of SCR, the following changes have been made compared to the patch,
 | ||
|   which need to be taken into account by people who have set up their system using
 | ||
|   the patch:
 | ||
|   - The 'U' parameter in the diseqc.conf file has been changed to 'S' ("Scr").
 | ||
|   - The configuration file name has been changed from "unicable.conf" to "scr.conf".
 | ||
| - Updated sources.conf (thanks to Arthur Konovalov).
 | ||
| - The SVDRP command LSTC now also accepts channel IDs (thanks to Dominic Evans).
 | ||
| - Fixed handling DVB subtitles and implemented decoding textual DVB subtitles (thanks
 | ||
|   to Rolf Ahrenberg).
 | ||
| - Added cap_net_raw to the capabilities that are not dropped (thanks to Dominic Evans).
 | ||
| - Fixed setting the start time of an edited recording (thanks to Christoph Haubrich).
 | ||
| - Temporarily switching free devices to transponders in order to have their running
 | ||
|   status updated is now done by marking the devices as "occupied" for a certain
 | ||
|   amount of time.
 | ||
| - The new setup options "LNB/Device n connected to sat cable" can be used to define
 | ||
|   which DVB-S devices are connected to the same sat cable and are therefore "bonded".
 | ||
|   This obsoletes the LNBSHARE patch. Users of the LNBSHARE patch will need to newly
 | ||
|   set up their sat devices with the above options.
 | ||
| - Fixed a crash when deleting a recording while cutting it (thanks to Ville Skytt<74>).
 | ||
| - Fixed several spelling errors (thanks to Ville Skytt<74>).
 | ||
| - The new SVDRP command UPDR can be used to trigger an update of the list of
 | ||
|   recordings (thanks to Lars Hanisch).
 | ||
| - Added generating a pkg-config file to the Makefile (thanks to Ville Skytt<74>).
 | ||
| - Removed the '.pl' suffix from all scripts (thanks to Ville Skytt<74>).
 | ||
| - Changed the default location for the LIRC socket to /var/run/lirc/lircd (thanks
 | ||
|   to Ville Skytt<74>).
 | ||
| - Added file name and line number to LOG_ERROR_STR() (thanks to Rolf Ahrenberg).
 | ||
| - Replaced all calls to sleep() with cCondWait::SleepMs() (thanks to Rolf Ahrenberg).
 | ||
| - Fixed a crash with malformed SI data (patch from vdr-portal).
 | ||
| 
 | ||
| 2012-01-15: Version 1.7.23
 | ||
| 
 | ||
| - Removed the '.pl' suffix from svdrpsend.pl (sorry, I missed that one).
 | ||
| - Fixed bonding more than two devices.
 | ||
| - Fixed handling symbolic links in cRecordings::ScanVideoDir() (reported by
 | ||
|   Sundararaj Reel).
 | ||
| - Fixed a memory leak in cRecordings::ScanVideoDir() in case there are too many
 | ||
|   link levels (reported by Sundararaj Reel).
 | ||
| - Removed redundant memset() in the ctor of cSatCableNumbers (triggered by
 | ||
|   Ville Skytt<74> pointing out that the argument sequence in the call was wrong).
 | ||
| - Removed a redundant NULL check in cDvbSpuDecoder::setTime() (thanks to Ville Skytt<74>).
 | ||
| - Added HasSnr to the DEBUG_SIGNALQUALITY output in cDvbTuner::GetSignalQuality()
 | ||
|   (triggered by Ville Skytt<74> pointing out that the variable HasSnr was unused).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Added support for HbbTV to libsi (thanks to Christoph Haubrich).
 | ||
| - Added support for devices with more than one delivery system per frontend.
 | ||
|   This requires a DVB driver with version 5.5 or higher that can handle the
 | ||
|   DTV_ENUM_DELSYS call. With older drivers it will fall back to one delivery
 | ||
|   system per frontend.
 | ||
| - Updated the Hungarian language texts (thanks to Istv<74>n F<>ley).
 | ||
| - cDvbTuner::ExecuteDiseqc() now makes sure only one tuner sends SCR commands
 | ||
|   at any given time (reported by Frank Neumann).
 | ||
| - cEvent::FixEpgBugs() now replaces any newline characters in stream component
 | ||
|   descriptions with blanks (thanks to Torsten Lang for reporting a problem with
 | ||
|   EPG data from BSkyB's "MTV MUSIC", S28.2E-2-2010-7012).
 | ||
| - Fixed cDvbSubtitleConverter::SetOsdData() (thanks to Rolf Ahrenberg).
 | ||
| - Fixed cListBase::Move() in case From and To are equal (reported by Sundararaj
 | ||
|   Reel).
 | ||
| - Added support for DVB-T2 to libsi (thanks to Rolf Ahrenberg).
 | ||
| - Added support for handling DVB-T2 transponders.  This requires a DVB driver
 | ||
|   with version 5.3 or higher that can handle the DTV_DVBT2_PLP_ID call (thanks
 | ||
|   to Rolf Ahrenberg).
 | ||
| - Fixed cConfig::Load() for g++ version 4.7.0 (thanks to Ville Skytt<74>).
 | ||
| - Fixed a possible memory corruption in cTsToPes::GetPes() in case of broken
 | ||
|   TS packets, e.g. when switching channels.
 | ||
| - Fixed the SVDRP command CLRE for a single channel in case there are events
 | ||
|   that have a timer (thanks to Timo Eskola).
 | ||
| - BIDI support now checks at runtime whether the system runs with UTF-8 (suggested
 | ||
|   by Torsten Lang).
 | ||
| - Added member functions Adapter() and Frontend() to cDvbDevice (suggested by
 | ||
|   Rolf Ahrenberg).
 | ||
| - The parameters that are only used by "second generation" delivery systems (DVB-S2
 | ||
|   and DVB-T2) are no longer written into channels.conf for "first generation"
 | ||
|   delivery systems (DVB-S and DVB-T).
 | ||
| - Changed IndexToHMSF() so that it can handle negative Index values.
 | ||
| - Added option -N to the msgmerge call in the Makefile, because fuzzy translation
 | ||
|   mostly resulted in useless strings.
 | ||
| - The new setup option "Replay/Show remaining time" can be used to switch between
 | ||
|   showing the total length or the remaining time of the recording that is currently
 | ||
|   replayed.
 | ||
| - Fixed wrongfully displaying the length of a recording in the title of the replay
 | ||
|   progress display.
 | ||
| - Fixed frozen live view with device bonding in case the bonded master is used for
 | ||
|   live viewing (reported by Uwe Scheffler).
 | ||
| 
 | ||
| 2012-02-14: Version 1.6.0-3
 | ||
| 
 | ||
| - Changed cDvbDevice::GrabImage() to use V4L2
 | ||
|   (backport from version 1.7.3, thanks to Ralf Schueler).
 | ||
| - Added some missing 'const' keywords to avoid compilation errors with gcc 4.4
 | ||
|   (backport from version 1.7.8, thanks to Ralf Schueler).
 | ||
| - Modified cSVDRP::CmdGRAB() to avoid writing into const data
 | ||
|   (backport from version 1.7.8, thanks to Ralf Schueler).
 | ||
| - Fixed cRecordings::DelByName() to avoid compilation errors with gcc 4.4
 | ||
|   (backport from version 1.7.9, thanks to Ralf Schueler).
 | ||
| 
 | ||
| 2012-02-19: Version 1.7.24
 | ||
| 
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Fixed a high load in case a transponder can't be received.
 | ||
| - Improved the way DVB_API_VERSION is checked.
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed asserting there is a live programme if the primary device is bonded with
 | ||
|   a device that starts a recording on a different band.
 | ||
| - Fixed the return type of cMyDeviceHook::DeviceProvidesTransponder() in PLUGINS.html.
 | ||
| - Fixed a crash in a plugin using cDeviceHook when VDR ends (reported by Oliver Endriss).
 | ||
| - Some improvements to the Makefiles (thanks to Christian Ruppert).
 | ||
| - Fixed cRecording::LengthInSeconds(), which wrongfully rounded the result to full
 | ||
|   minutes (thanks to Christoph Haubrich).
 | ||
| - Symbolic links are no longer resolved in cRecordings::ScanVideoDir() (thanks to
 | ||
|   Sundararaj Reel).
 | ||
| - The epg.data file is now read in a separate thread to make the startup process
 | ||
|   faster in case the file is very large (suggested by Helmut Auer).
 | ||
| - Fixed selecting the primary device for receiving the live viewing channel in
 | ||
|   case it is bonded with an other device and has no receiver attached to it.
 | ||
| - Fixed a possible crash when canceling VDR while displaying subtitles, and the
 | ||
|   primary device is no longer available.
 | ||
| - Improved handling subtitles of BBC channels.
 | ||
| - No longer using tabs as delimiter in the EPG bugfix log (they were garbled in the
 | ||
|   log file).
 | ||
| - Added a missing '.' after the month in VPS strings.
 | ||
| - Added some missing 'const' to cDevice (thanks to Joachim Wilke).
 | ||
| - Fixed handling the PrimaryLimit when requesting a device for live viewing
 | ||
|   (reported by Uwe Scheffler).
 | ||
| - Removed superfluous calls to SetVideoFormat() from device constructors. This
 | ||
|   function is called in cDevice::SetPrimaryDevice(), anyway.
 | ||
| - An ongoing editing process is now canceled if either the original or the edited
 | ||
|   version of the recording is deleted from the Recordings menu.
 | ||
| - The SVDRP command DELR now won't delete a recording that is currently being edited.
 | ||
| - Removed code stub for obsolete SVDRP command MOVT.
 | ||
| - The DVB device adapters/frontends are now probed by scanning the /dev/dvb directory
 | ||
|   instead of looping through adapter/frontend numbers. This allows for "holes" in the
 | ||
|   device numbering.
 | ||
| - cReadDir::Next() now skips directory entries "." and "..".
 | ||
| - Fixed a possible deadlock in time shift mode.
 | ||
| - Fixed switching into time shift mode when pausing live video (thanks to Reinhard
 | ||
|   Nissl for helping to debug this one).
 | ||
| 
 | ||
| 2012-03-03: Version 1.7.25
 | ||
| 
 | ||
| - The fps value for channels where it differs from the default is now set correctly
 | ||
|   when pausing live video.
 | ||
| - Increased the average character estimate for calculating tab positions in skins,
 | ||
|   to better suit wide fonts (reported by Rudi Hofer).
 | ||
| - Fixed getting the subsystem ids of DVB devices in case they have been rearranged
 | ||
|   via udev rules.
 | ||
| - Added several cTimer::Set...() functions (suggested by Alexander Rieger).
 | ||
| - Changed the return value of cTimer::SetFile() to 'void'.
 | ||
| - Revoked "Fixed a possible deadlock in time shift mode" because it caused trouble with
 | ||
|   output on vdr-xine and dxr3, and also short glitches when replaying on any output
 | ||
|   device.
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed handling subtitle color palettes on channels where subtitles appear
 | ||
|   "word by word" (thanks to Rolf Ahrenberg).
 | ||
| - Fixed upscaling cBitmaps with anti-aliasing (thanks to Rolf Ahrenberg for reporting
 | ||
|   a problem with color palettes in subtitles).
 | ||
| - Fixed getting the video aspect ratio for scaling subtitles.
 | ||
| - Removed the "PrimaryLimit". Old "full featured" DVB cards can be run with the
 | ||
|   --outputonly option to avoid problems with recording high bandwidth channels.
 | ||
|   Besides, with HDTV becoming ever more popular those cards are pretty much obsolete
 | ||
|   by now (the TT S2-6400 has no problems recording and replaying high bandwidth
 | ||
|   channels simultaneously). And, last but not least, people using software players
 | ||
|   won't notice this change, anyway.
 | ||
| - Since cReceivers can have priorities between -99 and 99, the priority
 | ||
|   for an unused device has been changed from -1 to -100.
 | ||
| - If the first event in a schedule has a table id of 0x00, any incoming EIT data for
 | ||
|   that schedule from the DVB stream will be completely ignored. This way an external
 | ||
|   EPG source can fill the schedules with EPG data that will not be messed up with
 | ||
|   that from the DVB data stream. Note, though, that this means VDR can not do VPS
 | ||
|   controlled recordings with such events!
 | ||
| - Added some typecasts to silence gcc compiler warnings (thanks to Rolf Ahrenberg).
 | ||
| - Fixed handling overlapping timers in case a VPS timer with higher priority needs
 | ||
|   to interrupt a timer with lower priority.
 | ||
| - The code for the RCU remote control unit has been moved into a separate plugin
 | ||
|   named "rcu".
 | ||
|   The REMOTE=RCU option in the 'make' call for VDR is now obsolete.
 | ||
|   The command line option --rcu is now obsolete. Use -Prcu instead. If you have
 | ||
|   used --rcu with a device path, use -P"rcu -d<device>".
 | ||
| - Added support for automatically selecting subtitles when playing old PES
 | ||
|   recordings made with the subtitles plugin (thanks to Anssi Hannula).
 | ||
| - Revised priority handling to allow receivers with a priority that is lower than
 | ||
|   that of live viewing (with suggestions from Frank Schmirler):
 | ||
|   + An idle device (one that is not used for live viewing and has no receiver
 | ||
|     attached to it) now has priority IDLEPRIORITY (-100).
 | ||
|   + An unused CAM slot now has priority IDLEPRIORITY.
 | ||
|   + The default priority of a cReceiver is now MINPRIORITY (-99).
 | ||
|   + A device that is used only for live viewing (no matter whether it's in Transfer
 | ||
|     Mode or real live mode) now has priority TRANSFERPRIORITY (-1).
 | ||
|   + The function cDevice::Receiving() now returns true if there is any receiver
 | ||
|     attached to the device. Its boolean parameter has no meaning any more.
 | ||
|   + The default value for the Priority parameter of the function cDevice::ProvidesChannel()
 | ||
|     has been changed to IDLEPRIORITY.
 | ||
| - Added a Query parameter to cDevice::GetDevice(), so that devices can be queried
 | ||
|   without side effects when zapping.
 | ||
| - Replaced min(max()) calls with the new function constrain().
 | ||
| - Fixed handling OSD color button texts in case a menu item has texts of its own
 | ||
|   (reported by Rolf Ahrenberg). If a plugin creates derived cMenuEditItems that set
 | ||
|   color button texts, these should not set the texts directly by calling
 | ||
|   cSkinDisplay::Current()->SetButtons(), but rather call the new member function
 | ||
|   cMenuEditItem::SetHelp().
 | ||
| - Moved the call to cStatus::MsgChannelSwitch(this, 0) to the beginning of
 | ||
|   cDevice::SetChannel(), so that any receivers that have been attached to the
 | ||
|   device by plugins may be detached before the final call to GetDevice().
 | ||
|   This actually reverts "Only calling cStatus::MsgChannelSwitch() if a channel
 | ||
|   is actually going to be switched or has actually been switched successfully"
 | ||
|   which was made in version 1.1.10, so please report if this has any unwanted
 | ||
|   side effects.
 | ||
| 
 | ||
| 2012-03-10: Version 1.7.26
 | ||
| 
 | ||
| - Now checking for NULL in cOsd::AddPixmap() (suggested by Christoph Haubrich).
 | ||
| - Fixed the German translation of "VDR will shut down in %s minutes" (thanks to
 | ||
|   Frank Neumann).
 | ||
| - The replay progress display is now turned on whenever a mark is toggled (not
 | ||
|   only when one is set).
 | ||
| - Toggling a mark now restarts the timeout of the replay progress display.
 | ||
| - Fixed a possible race condition with the SVDRP commands CLRE and PUTE, where
 | ||
|   EPG data from the transponder could be handled even though it shouldn't be
 | ||
|   handled for 10 seconds.
 | ||
| - Added some missing member initializations in cBitmap.
 | ||
| - Improved displaying the play mode in the ST:TNG skin.
 | ||
| - Made the ST:TNG skin the default in case the user selected skin is not available.
 | ||
| - Improved displaying signal strength and quality in the ST:TNG skin's channel
 | ||
|   display.
 | ||
| - Fixed switching devices to the transponders of VPS recordings in case there
 | ||
|   are only bonded devices. The cDevice's "avoid device" mechanism has been replaced
 | ||
|   by using "occupied".
 | ||
| - Fixed selecting devices for the EPG scan in case the primary device is bonded
 | ||
|   with an other one.
 | ||
| - Removed the calls to EITScanner.UsesDevice(this) from dvb[hs]ddevice.c, because
 | ||
|   the code following these calls is only executed if LiveView is true, which is
 | ||
|   never the case when the EITScanner switches to a channel.
 | ||
| - Removed the obsolete function cEITScanner::UsesDevice(). If a plugin has used this
 | ||
|   function to find out whether a call to its cStatus::ChannelSwitch() function was
 | ||
|   due to a live channel switch, it can use that function's new parameter LiveView.
 | ||
|   Any plugins that implement cStatus::ChannelSwitch() need to add the parameter
 | ||
|   'bool LiveView' to that function.
 | ||
| - Fixed parsing channel data in case the audio pid is 0. On channels that only
 | ||
|   broadcast Dolby Digital audio there were sometimes log entries like
 | ||
|   "changing pids of channel ... from ... to ..." with no apparent difference
 | ||
|   between the old and new set of pids.
 | ||
| - Fixed checking pids in case a channel has only Dolby Digital audio.
 | ||
| - The Green button in the "Edit timer" menu can now be used to toggle between single
 | ||
|   shot and repeating timers. This is the same as pressing '0' when the "Day" field
 | ||
|   is selected, but it works at any time (and is more obvious).
 | ||
| - Revoked "If the first event in a schedule has a table id of 0x00, any incoming EIT data for
 | ||
|   that schedule from the DVB stream will be completely ignored".
 | ||
| - Added a new plugin interface for implementing EPG handlers.
 | ||
|   + A plugin can implement an EPG handler by creating an object derived from
 | ||
|     cEpgHandler and implementing the necessary member functions.
 | ||
|   + The special handling of events with table id 0x00 has been dropped.
 | ||
|     For backwards compatibility EPG events with table ids lower than 0x4E will
 | ||
|     be treated as if they had a table id of 0x4E, and the new plugin 'epgtableid0'
 | ||
|     can be used to have them handled like in previous versions.
 | ||
|   + The default table id for a newly created cEvent has been changed to 0xFF,
 | ||
|     which is higher than any normal table id that is broadcast in the EIT data.
 | ||
|   See PLUGINS.html, section "Electronic Program Guide" for more information.
 | ||
| 
 | ||
| 2012-03-25: Version 1.7.27
 | ||
| 
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Changed the Green button in the "Edit timer" menu from "Once" to "Single"
 | ||
|   (suggested by Rolf Ahrenberg).
 | ||
| - Fixed some typos in HISTORY and CONTRIBUTORS (thanks to Ville Skytt<74>).
 | ||
| - The channel name column in the "What's on now/next" menu now adjusts its width
 | ||
|   to display the full short name of each channel (suggested by Dominic Evans).
 | ||
| - Dropped the meanwhile obsolete script 'i18n-to-gettext'.
 | ||
| - Removed the obsolete function cPlugin::RegisterI18n().
 | ||
| - Removed the obsolete typedef tI18nPhrase.
 | ||
| - Adapted menu column widths of 'skincurses' to the wider HD OSD sizes.
 | ||
| - Deactivated definition of __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS (recording.h)
 | ||
|   and LEGACY_CRECEIVER (receiver.h) to trigger an error for any plugin that still
 | ||
|   uses the respective code. You can reactivate these to quickly make your plugin
 | ||
|   compile again, but beware that these code parts will be removed in one of the next
 | ||
|   versions.
 | ||
| - Made the "overloaded-virtual" warning an error to detect hidden overloaded
 | ||
|   virtual functions (thanks to Anssi Hannula for pointing out -Werror=...).
 | ||
|   Plugin authors may want to change -Woverloaded-virtual to -Werror=overloaded-virtual
 | ||
|   in their Makefiles.
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Improved fast forwarding to the end of a timeshift recording.
 | ||
| - The new function cDevice::DeviceName() returns a string identifying the name of
 | ||
|   the given device.
 | ||
| - When toggling a timer between "Single" and "Repeating", the previous setting is now
 | ||
|   retained in case the user toggles back to the original value.
 | ||
| - When estimating the remaining disk space (in hours), the average data rate of all
 | ||
|   existing recordings is now taken into account. If this value can't be determined,
 | ||
|   the previous value of 25.75 MB/min is taken.
 | ||
| - No longer using GetFont() (which is not thread safe) in the 'osddemo' plugin.
 | ||
| - No longer using GetFont() (which is not thread safe) in cSubtitleRegion::UpdateTextData().
 | ||
| - Fixed a memory leak in cSubtitleRegion::UpdateTextData().
 | ||
| - Moved setting LC_NUMERIC further up to make sure any floating point numbers use a
 | ||
|   decimal point (suggested by Tobias Grimm).
 | ||
| - Added missing channel locking to cEIT.
 | ||
| - Fixed reduced bpp support for DVB subtitles (thanks to Rolf Ahrenberg).
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Reverted some improvements to Make.config.template (thanks to Christian Ruppert).
 | ||
| - Fixed handling IDLEPRIORITY in cDvbDevice::ProvidesChannel() (thanks to Frank
 | ||
|   Schmirler).
 | ||
| 
 | ||
| 2012-06-03: Version 1.7.28
 | ||
| 
 | ||
| - Fixed cPixmapMemory::DrawEllipse() for quadrants -1 and -4.
 | ||
| - Fixed getting the maximum short channel name length in case there are no short names
 | ||
|   at all (reported by Derek Kelly).
 | ||
| - The new function cDevice::DeviceType() returns a string identifying the type of
 | ||
|   the given device.
 | ||
| - Now limiting the number of characters of a channel's (short) name to 16 in the
 | ||
|   schedules menus, to keep that column from getting overly wide in case there is
 | ||
|   a channel with a very long name that has no short name.
 | ||
| - Fixed EPG scan on systems with only a single DVB device that use software output
 | ||
|   (reported by Juergen Lock).
 | ||
| - Skins can now inquire the menu category for which their cSkinDisplayMenu is currently
 | ||
|   being used. This can be done either through a call to cSkinDisplayMenu::MenuCategory()
 | ||
|   or by reimplementing cSkinDisplayMenu::SetMenuCategory(). This information allows a
 | ||
|   skin to use special icons or decorations for the various types of menus in VDR.
 | ||
| - The new setup option "DVB/Standard compliance" can be used to switch between different
 | ||
|   variations of the DVB standard (thanks to Rolf Ahrenberg). Currently there is "DVB"
 | ||
|   (for the original DVB standard) and "ANSI/SCTE", which is used to properly handle
 | ||
|   certain private stream types.
 | ||
| - The disk usage is no longer automatically added to the title of the main and
 | ||
|   "Recordings" menus. This has always been a mekeshift solution and it is now up
 | ||
|   to the individual skin if, where and how it wants to display this information.
 | ||
|   A skin can use the new cVideoDiskUsage class to implement such a display. For
 | ||
|   compatibility, the default skins "Classic VDR", "ST:TNG Panels" and "Text mode"
 | ||
|   (i.e. curses) have been changed to behave like before. Other skins may want to
 | ||
|   display the disk usage in totally different ways.
 | ||
| - A cOsdMenu can now handle skins that display different numbers of items in the
 | ||
|   various menu categories.
 | ||
| - OSD and skin are now reinitialized after a plugin setup page has been confirmed,
 | ||
|   to have them react immediately in case any change to a plugin's setup parameter
 | ||
|   has an effect on the OSD.
 | ||
| - The Timers list is now marked as modified whenever a recording starts or ends.
 | ||
| - Fixed cDevice::StillPicture(), making sure it doesn't call the derived class's
 | ||
|   function if no buffer has been allocated (reported by Marcus Roscher).
 | ||
| - Fixed the SVDRP command UPDR, which didn't update the global recordings list
 | ||
|   (reported by Lars Hanisch).
 | ||
| - cControl::Control() now has an additional boolean parameter, which can be set to
 | ||
|   true to get the current player control even if it is hidden.
 | ||
| - The new functions cControl::GetRecording() and cControl::GetHeader() can be used
 | ||
|   to retrieve information about what the current player is playing.
 | ||
| - Fixed a possible high CPU load when pausing replay (thanks to Reinhard Nissl).
 | ||
| - Fixed character comparisons in cSubtitleObject::DecodeCharacterString() (reported
 | ||
|   by Reinhard Mantey).
 | ||
| - Renamed the function cString::sprintf(const char *fmt, va_list &ap) to vsprintf(),
 | ||
|   because it might inadvertently be called with a 'char *' as the second argument on
 | ||
|   some compilers and cause a crash (reported by Sundararaj Reel).
 | ||
| - Removed the "bondedMasterFailed" mechanism from cDvbTuner, because it caused
 | ||
|   problems with the EPG scan in case a transponder is not receivable in a setup with
 | ||
|   bonded devices (reported by Michael Schneider).
 | ||
| - Making sure setup strings don't contain any newline characters (thanks to Joachim
 | ||
|   Wilke).
 | ||
| - The new member function cSkinDisplayReplay::SetRecording() allows a skin to display
 | ||
|   more information about the currently played recording.
 | ||
| - Fixed a mismatched 'delete' in cSchedules::SetEpgDataFileName() (thanks to Reinhard
 | ||
|   Mantey).
 | ||
| - The DrawText() functions of the OSD now accept the new alignment flag taBorder,
 | ||
|   which triggers keeping a proper distance from the edge that taLeft or taRight
 | ||
|   aligns to.
 | ||
| - Fixed checking for UTF-8 support in cFont::Bidi() (reported by Torsten Lang).
 | ||
| - If a recording has no info file, the 'title' of the recording's info is now set
 | ||
|   to the recording's name.
 | ||
| - cVector::Clear() now reinitializes any previously used members.
 | ||
| - Fixed resetting CAMs (thanks to Marco Skambraks).
 | ||
| - The new function RgbShade() (include osd.h) can be used to generate a brighter or
 | ||
|   darker version of a given color.
 | ||
| - The new class cSortedTimers can be used to quickly get a list of all timers, sorted
 | ||
|   by their start time.
 | ||
| - The new skin "LCARS" is an enhanced version of the "ST:TNG" skin (which is still
 | ||
|   there in its original layout, for those who don't like the LCARS skin, or can't use
 | ||
|   it due to OSD limitations). The LCARS skin utilizes the new "menu category" feature
 | ||
|   to display additional information on the main menu page. It shows upcoming timers
 | ||
|   and the system's devices, as well as which device is recording which timers. The
 | ||
|   upper pane of the main menu displays the programme data in live and replay mode,
 | ||
|   and a progress bar. An indicator on the right side of the device list shows which
 | ||
|   device is currently used for live viewing, and whether it is in transfer mode.
 | ||
|   The individual device displays show the device number, the device type, which CAM
 | ||
|   (if any ) is currently assigned to the device, and the signal strength and quality.
 | ||
|   On the left side of the OSD there is a permanent display of the current date and
 | ||
|   time, the disk usage and the system load.
 | ||
|   "LCARS" is the new default skin of VDR. It requires at least a 4bpp (16 color) full
 | ||
|   screen OSD, but you can still operate it if your OSD can handle only fewer colors
 | ||
|   (in which case you may want to switch to the "ST:TNG" or "Classic VDR" skin).
 | ||
| - Finally removed the code marked with __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS
 | ||
|   and LEGACY_CRECEIVER.
 | ||
| - Now making sure that the "small font" is never larger than the "osd font".
 | ||
| - Fixed font handling with fontconfig 2.9.0 or newer (thanks to Joerg Bornkessel).
 | ||
| - Extended the interface to the script that gets called for recordings, so that in
 | ||
|   the "edited" case it also provides the name of the original recording (thanks to
 | ||
|   Christian Richter).
 | ||
| - Added DeleteEvent() to the EPG handler interface, so that an EPG handler can trigger
 | ||
|   deleting of an event (thanks to Christian Kaiser).
 | ||
| - Speeded up opening menus on systems with many (several thousands of) recordings, by
 | ||
|   caching the information whether a recording is stored on the video directory file
 | ||
|   system within the cRecording data (based on a patch from Torsten Lang).
 | ||
| 
 | ||
| 2012-07-14: Version 1.7.29
 | ||
| 
 | ||
| - Added a missing template specification to the c'tor of cSortedTimers (thanks to Udo
 | ||
|   Richter).
 | ||
| - Fixed the background color of the Transfer Mode indicator bitmap in the LCARS skin.
 | ||
| - The LCARS skin now only displays devices that can actually receive channels, leaving
 | ||
|   out, for instance, pure replay devices (suggested by Reinhard Nissl).
 | ||
| - Now scaling down the Transfer Mode indicator bitmap in the LCARS skin in case it
 | ||
|   doesn't fit with the selected font size (reported by Reinhard Nissl).
 | ||
| - Fixed making LCARS the default skin.
 | ||
| - Adjusted the default values for OSD and font sizes to better fit HDTV.
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed the call to ChannelString() in cSkinLCARSDisplayChannel::SetChannel() (thanks
 | ||
|   to Rolf Ahrenberg).
 | ||
| - Removed DeleteEvent() from the EPG handler interface (turned out not to be useful)
 | ||
|   and replaced it with HandledExternally() (thanks to J<>rg Wendel).
 | ||
| - Added SetComponents() to the EPG handler interface (thanks to Dirk Heiser).
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Changed the button colors in the LCARS skin to better fit with the rest of the theme.
 | ||
| - Removed the gap from the main menu buttons in the LCARS skin.
 | ||
| - Fixed some copy&paste errors in PLUGINS.html (thanks to Winfried K<>hler).
 | ||
| - The LCARS skin's main menu now only displays timers that are actually activated.
 | ||
| - Within the "Recordings" menu, pressing the '0' key now toggles sorting between
 | ||
|   "by time" and "by name". The selected sort mode is stored separately for each
 | ||
|   folder (provided you have write access to that folder).
 | ||
|   If a folder is newly created by a repeating timer, the sort mode for that
 | ||
|   folder is initially set to "by time".
 | ||
|   Note that in previous versions the default sort order of the top level video
 | ||
|   directory was "by name" and all subdirectories were sorted "by time". Now the
 | ||
|   default sort order for all directories is "by name", so if you have an existing
 | ||
|   folder that shall be sorted "by time", press the '0' key once to achieve this.
 | ||
| - Fixed several spelling errors (thanks to Ville Skytt<74>).
 | ||
| - Fixed handling recording with more than two bonded devices.
 | ||
| - Fixed the type of MBperMinute in cVideoDiskUsage::HasChanged() (thanks to Andreas
 | ||
|   Mair).
 | ||
| - Setting the "broken link" or "TEI" flags when cutting recordings is now suppressed
 | ||
|   if the editing point merges two seamlessly fitting parts of the same stream (thanks
 | ||
|   to Torsten Lang).
 | ||
| - Fixed displaying messages in the LCARS skin.
 | ||
| - Fixed checking for a visible live programme in case a menu or the channel display
 | ||
|   is currently open.
 | ||
| - Changed some of the colors in the LCARS skin (you may need to delete the file
 | ||
|   lcars-default.theme from your themes directory to see these changes).
 | ||
| - The new setup option "Miscellaneous/Show channel names with source" can be used to
 | ||
|   turn on adding the source character to channel names whenever they are displayed
 | ||
|   (suggested by Ludi Kaleni).
 | ||
| 
 | ||
| 2012-09-09: Version 1.7.30
 | ||
| 
 | ||
| - Fixed sorting recordings in the top level video directory.
 | ||
| - Fixed handling control characters in SI data in case of UTF-8 encoded strings
 | ||
|   (thanks to Mehdi Karamnejad for reporting a problem with garbled UTF-8 EPG data
 | ||
|   and helping to debug it).
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - When checking whether a video directory is empty, file names that start with a
 | ||
|   dot ('.') are now ignored and will be implicitly removed if the directory contains
 | ||
|   no other files. This fixes the leftover ".sort" files that were introduced in
 | ||
|   version 1.7.29.
 | ||
| - Added IsUpdate() to the EPG handler interface (thanks to J<>rg Wendel).
 | ||
| - Fixed detecting transfer mode on full featured DVB cards (thanks to Stefan Huelswitt
 | ||
|   for reporting a problem with updating CA descriptors in such cases).
 | ||
| - Fixed a race condition when zapping in transfer mode (reported by Reinhard Nissl).
 | ||
|   This involves a slight change in the semantics of the cReceiver::Activate() function,
 | ||
|   which is now called with 'false' *after* the receiver has been detached from the
 | ||
|   device.
 | ||
| - The new function cDevice::ReadFilter() can be used by devices to implement their
 | ||
|   own way of retrieving section filter data (thanks to Deti Fliegl).
 | ||
| - The new function cDevice::HasInternalCam() can be implemented by devices that
 | ||
|   provide encrypted channels in an already decrypted form, without requiring explicit
 | ||
|   handling of a CAM (thanks to Anssi Hannula).
 | ||
| - VDR can now be built according to the FHS ("File system Hierarchy Standard") by
 | ||
|   activating the line
 | ||
|   #USEFHS = 1
 | ||
|   in a copy of the file Make.config.template (thanks to Dennis Bendlin, as well as
 | ||
|   Christopher Reimer and Udo Richter for contributing to the patch).
 | ||
| - By default (without FHS support) the config directory is now set to the value
 | ||
|   given in the -v option if only -v and no -c is given.
 | ||
| - Fixed a long delay at the end when replaying a recording that has stopped recording
 | ||
|   less than an hour ago (typically time shift mode or a freshly edited recording).
 | ||
| - Fixed getting the file size and number of frames of ongoing recordings (only the
 | ||
|   timestamp of the recording's directory was checked, while it should have been that
 | ||
|   of the index file).
 | ||
| - Fixed sluggish response when manipulating editing marks while a cutting thread
 | ||
|   is running (reported by Torsten Lang).
 | ||
| - The new setup options "OSD/Color key [0123]" can be used to adjust the sequence
 | ||
|   of the color buttons displayed in the menus to that of the color keys on your
 | ||
|   remote control (based on a patch from Oliver Schinagl).
 | ||
|   Authors of plugins that implement skins may want to adapt their SetButtons()
 | ||
|   function in order to make use of this new feature. See, for instance, the function
 | ||
|   cSkinClassicDisplayMenu::SetButtons() in skinclassic.c for details.
 | ||
| 
 | ||
| 2012-09-30: Version 1.7.31
 | ||
| 
 | ||
| - If regenerating an index file fails and no data is written to the file, VDR now
 | ||
|   reports this error and removes the empty index file.
 | ||
| - The setup parameter "Recording/Instant rec. time (min)" can now be set to '0',
 | ||
|   which means to record only the currently running event (based on a patch from Matti
 | ||
|   Lehtim<69>ki).
 | ||
| - Decreased the ring buffer put/get trigger sizes from 1/3 to 1/10.
 | ||
| - The script given to VDR with the '-r' option is now also called whenever a
 | ||
|   recording is deleted (thanks to Alexander Wenzel).
 | ||
| - Improved detecting frames in H.264 video (reported by Andrey Pridvorov).
 | ||
| - cPatPmtParser::ParsePmt() now also recognizes stream type 0x81 as "AC3", so that
 | ||
|   recordings that have been converted from the old PES format to TS can be played
 | ||
|   (suggested by Jens Vogel).
 | ||
| - Fixed a leftover frame counter in the LCARS skin's replay display after jumping to
 | ||
|   an editing mark and resuming replay.
 | ||
| - The new class cIoThrottle is used to allow I/O intense threads to temporarily
 | ||
|   suspend their activities in case buffers run full (suggested by Torsten Lang).
 | ||
|   Currently the cutter thread is suspended if the TS or Recorder buffer use more
 | ||
|   than 50% of their capacity. Plugin authors may want to participate in this
 | ||
|   mechanism if they use intense background I/O.
 | ||
| - Increased the size of the TS buffer to 5MB and that of the Recorder buffer to
 | ||
|   20MB to better handle HD recordings (suggested by Torsten Lang).
 | ||
| - Moved cleaning up the EPG data and writing the epg.data file into a separate
 | ||
|   thread to avoid sluggish response to user input on slow systems (based on a patch from
 | ||
|   S<>ren Moch).
 | ||
| - Fixed sorting folders before recordings in case of UTF-8 (thanks to S<>ren Moch).
 | ||
| - Reactivated stripping control characters from EPG texts and adapted it to UTF-8.
 | ||
| - Added missing decrementing of 'len' in libsi/si.c's String::decodeText() functions.
 | ||
| - When checking whether a video directory is empty, file names that start with a
 | ||
|   dot ('.') are no longer automatically ignored and implicitly removed if the directory
 | ||
|   contains no other files. Instead, RemoveEmptyDirectories() now has an additional
 | ||
|   parameter that can be given a list of files that shall be ignored when considering
 | ||
|   whether a directory is empty. This allows users to continue to use files such as
 | ||
|   ".keep" to prevent a directory from being deleted when it is empty. Currently the
 | ||
|   only file name that is ignored is ".sort".
 | ||
| 
 | ||
| 2012-11-18: Version 1.7.32
 | ||
| 
 | ||
| - Pressing the Play key during normal live viewing mode now opens the Recordings menu
 | ||
|   if there is no "last viewed" recording (thanks to Alexander Wenzel).
 | ||
|   The same behavior has been implemented for the Blue key in the main menu.
 | ||
| - cIoThrottle::Engaged() is now also checked in cRemoveDeletedRecordingsThread::Action(),
 | ||
|   to suspend removing deleted recordings in case this is necessary to make room for
 | ||
|   new, ongoing recordings (suggested by Udo Richter).
 | ||
| - The cThread constructor now has an additional boolean parameter that can be set to
 | ||
|   true to have this thread run at a lower priority. Plugin authors that use low
 | ||
|   priority threads may want to use this instead of the calls to SetPriority(19) and
 | ||
|   SetIOPriority(7). The priority of a thread ("low" or "high") is now logged when the
 | ||
|   thread starts.
 | ||
| - Changed DTV_DVBT2_PLP_ID to DTV_STREAM_ID in dvbdevice.c to adapt to an incompatible
 | ||
|   change in DVB API 5.8 (reported by Derek Kelly).
 | ||
|   Removed the meanwhile obsolete definition of FE_CAN_TURBO_FEC.
 | ||
| - Fixed some compiler warnings under gcc version 4.7.1.
 | ||
| - Fixed setting the video format in the dvbhdffdevice (thanks to Torsten Lang).
 | ||
| - Fixed 'make install' to not overwrite existing configuration files (thanks to Peter
 | ||
|   M<>nster).
 | ||
| - Added including the Make.global and Make.config files to the dvbdhffdevice's
 | ||
|   libhdffcmd/Makefile.
 | ||
| - Added options to build a 32-bit version of VDR on a 64-bit machine to
 | ||
|   Make.config.template.
 | ||
| - Fixed handling VPS timers in case the running status of an event goes to '1' (not
 | ||
|   running) and later goes to '4' (running).
 | ||
| - If a frame position in the 'marks' file of a recording doesn't point to an I-frame,
 | ||
|   it will now be shifted towards the next I-frame, either up or down, whichever is
 | ||
|   closer (suggested by Udo Richter).
 | ||
| - Fixed a possible memory leak in SI::StructureLoop::getNextAsPointer() (reported by
 | ||
|   Sundararaj Reel).
 | ||
| - Fixed handling timers in case an event is modified and "phased out" while the timer
 | ||
|   is recording.
 | ||
| - Improved frame detection by parsing just far enough into the H.264 NAL units to get
 | ||
|   the necessary information about frames and slices.
 | ||
| - The initial syncing of the frame detector is now done immediately after the first
 | ||
|   complete GOP has been seen. This makes recordings and especially pausing live video
 | ||
|   start up to twice as fast as before.
 | ||
| - Updated the Romanian OSD texts (thanks to Lucian Muresan).
 | ||
| - Fixed handling the very last entry in a recording index.
 | ||
| - The return type of cMarks::Add() has been changed to void, since due to the sorting
 | ||
|   of the list of marks the returned pointer might have pointed to a totally different
 | ||
|   mark. Besides, the return value was never actually used.
 | ||
| - Improved editing TS recordings by
 | ||
|   + stripping dangling TS packets from the beginning of a sequence
 | ||
|   + including pending TS packets at the end of a sequence
 | ||
|   + fixing all timestamps and continuity counters
 | ||
|   + generating editing marks for the edited version in such a way that each cutting
 | ||
|     point is marked by an "end" and "begin" mark with the same offset
 | ||
|   + no longer generating an editing mark at the "end" of the edited recording (this
 | ||
|     was actually generated at the beginning of the last GOP, so that a subsequent
 | ||
|     edit would have cut off the last GOP)
 | ||
|   + no longer generating any editing marks if the edited recording results in just
 | ||
|     one single sequence
 | ||
|   + ignoring pairs of editing marks that are placed at exactly the same position of
 | ||
|     a recording when actually cutting the recording
 | ||
|   + not doing anything if the editing marks in place would result in the edited
 | ||
|     version being the same as the original recording
 | ||
| - Editing marks can now be placed directly on top of each other, in which case they
 | ||
|   simply mark a position, but have no effect on the actual cutting process.
 | ||
| - When positioned at an offset where two (or more) editing marks are placed on top
 | ||
|   of each other, the '4' key moves the first one of them to the left, while the '6'
 | ||
|   key moves the last one of them to the right. The '7' and '9' keys handle multiple
 | ||
|   marks at the same place as if it were one single mark.
 | ||
| - Modified editing marks are now written to disk whenever the replay progress display
 | ||
|   gets hidden (thanks to Christoph Haubrich).
 | ||
| 
 | ||
| 2012-12-08: Version 1.7.33
 | ||
| 
 | ||
| - In order to be able to play TS recordings from other sources, in which there is
 | ||
|   more than one PMT PID in the PAT, 'int cPatPmtParser::PmtPid(void)' has been changed
 | ||
|   to 'bool cPatPmtParser::IsPmtPid(int Pid)'.
 | ||
| - Fixed learning remote control keys with the LCARS skin.
 | ||
| - Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
 | ||
| - Fixed getting only non-video packets in cCuttingThread::GetPendingPackets() (reported
 | ||
|   by S<>ren Moch).
 | ||
| - Changed all occurrences of MPEG4 to H264 (pointed out by S<>ren Moch).
 | ||
| - Fixed getting the number of editing sequences in case the last sequence has no actual
 | ||
|   end mark.
 | ||
| - The cutter now only increments the TS continuity counter for packets that have a
 | ||
|   payload (pointed out by S<>ren Moch).
 | ||
| - Fixed adjusting the DTS values in the cutter, to compensate for dropped B-frames
 | ||
|   (pointed out by S<>ren Moch).
 | ||
| - Fixed a typo in skins.h (thanks to Lars Hanisch).
 | ||
| - Simplified calculating the PTS offset in cPtsFixer::Fix() and fixed the overflow
 | ||
|   handling of PCR values (thanks to S<>ren Moch).
 | ||
| - Fixed calling iconv_close() only with a valid iconv_t value (thanks to Juergen Lock).
 | ||
| - Fixed faulty opening of the Recordings menu when pressing the Play key during normal
 | ||
|   live viewing mode in case there is a "last viewed" recording.
 | ||
| - Fixed some #include statements in plugins to use <vdr/...> instead of "vdr/..."
 | ||
|   (thanks to Lars Hanisch).
 | ||
| - Fixed some spellings in osd.h and svdrp.c (thanks to Ville Skytt<74>).
 | ||
| - Fixed handling lowercase polarization characters in channel definitions if no DiSEqC
 | ||
|   is used (reported by Mike Hay, actual bug pointed out by Stefan Huelswitt).
 | ||
| - Synchronizing system time to the transponder time is now done using adjtime() in order
 | ||
|   to avoid discontinuities (suggested by Manuel Reimer). If the time difference is more
 | ||
|   than 10 seconds, stime() is still used to do the initial sync.
 | ||
| - The '7' and '9' keys now jump to the very beginning or end, respectively, of the
 | ||
|   recording, even if there is no mark set at that point (following a request from
 | ||
|   Andre Weidemann).
 | ||
| - Now always setting the TDT EIT filter, because otherwise when turning on using the
 | ||
|   transponder time in the Setup menu, it would only be used after the next restart
 | ||
|   of VDR (thanks to Sundararaj Reel).
 | ||
| - The new functions cDevice::CanScaleVideo() and cDevice::ScaleVideo() can be used by
 | ||
|   derived output devices to implement scaling the video to a given size and location
 | ||
|   (based on a suggestion by Lucian Muresan).
 | ||
| - The SVDRP command HITK now discards any keys if the remote control is currently
 | ||
|   turned off (thanks to Alexander Hans).
 | ||
| - The new remote control key "Play/Pause" can be used with remote controls that don't
 | ||
|   have separate keys for "Play" and "Pause", but rather have a single key for both
 | ||
|   functions (thanks to Stefan Hofmann for suggesting to implement support for such
 | ||
|   remote controls).
 | ||
| - The new option "Setup/Replay/Pause on mark set" can be used to activate automatically
 | ||
|   going into Pause mode if an editing mark is set during replay (suggested by Andre
 | ||
|   Weidemann).
 | ||
| - When regenerating the index of a recording, the frame rate stored in the info file
 | ||
|   is now automatically fixed if it differs from the value detected by the frame
 | ||
|   detector.
 | ||
| - Fixed creating the edited version directory if a relative file name is given in
 | ||
|   the call to 'vdr --edit' (the '/video' part was stripped from the given file name
 | ||
|   even if it wasn't there).
 | ||
| - The new option "Setup/Replay/Progress display time" can be used to activate
 | ||
|   automatically displaying the progress display whenever replay of a recording is
 | ||
|   started (suggested by Stefan Blochberger).
 | ||
| - Changed reading and writing of floating point numbers into configuration files to
 | ||
|   make it independent of the decimal point used in the current locale. All calls to
 | ||
|   atof() have been replaced with the new function atod(), which makes sure the string
 | ||
|   representation of a floating point number using a '.' as decimal point will be
 | ||
|   handled correctly, even if the locale in use expects a ',' as the decimal point.
 | ||
|   Plugins that read floating point numbers from their own configuration files will
 | ||
|   also need to use atod() for this, or use a method of their own (this is not necessary
 | ||
|   if values are stored in VDR's setup.conf file, because VDR takes care of this).
 | ||
|   The reason for these changes is that floating point numbers presented to the user
 | ||
|   shall be displayed in the way defined by the current locale (suggested by Stefan
 | ||
|   Blochberger).
 | ||
|   If you use plugins that store floating point values in configuration files of their
 | ||
|   own and have not yet been adapted to this change, you should set
 | ||
|   export LC_NUMERIC=C
 | ||
|   before running VDR. Otherwise your plugin's configuration data may not be read or
 | ||
|   written correctly.
 | ||
| - The new functions SetItemEvent(), SetItemTimer(), SetItemChannel() and
 | ||
|   SetItemRecording() of the cSkinDisplayMenu class can be reimplemented by skin
 | ||
|   plugins to display these items in a more elaborate way than just a simple line of
 | ||
|   text.
 | ||
| 
 | ||
| 2012-12-24: Version 1.7.34
 | ||
| 
 | ||
| - Changed the type of the TimerMatch parameter in cSkinDisplayMenu::SetItemEvent() from
 | ||
|   'int' to 'eTimerEvent' (reported by Christoph Haubrich).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Fixed cOsd::GetBitmap() to always return NULL if a non-exising area is requested.
 | ||
| - Added several missing "`ls $^`" in the calls to xgettext in plugin Makefiles and the
 | ||
|   "newplugin" script.
 | ||
| - Fixed setting the --package-name and --package-version options in the calls to
 | ||
|   xgettext in several plugin Makefiles.
 | ||
| - Added "-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE" to the
 | ||
|   DEFINES in the Makefile (somehow got lost from Make.config.template in version 1.7.13).
 | ||
| - Removed some redundancy in the Makefile/Make.global/Make.config mechanism (suggested
 | ||
|   by Christopher Reimer). The file Make.global is no longer used, and plugin Makefiles
 | ||
|   don't include the file Make.config any more. Instead they now retrieve all necessary
 | ||
|   information through calls to pkg-config.
 | ||
| - The plugin Makefiles now have a separate 'install' target (suggested by Christopher
 | ||
|   Reimer). In order to still allow the normal building of VDR (with all plugins in its
 | ||
|   ./PLUGINS/src subdirectory, the plugin libraries in ./PLUGINS/lib and the i18n files in
 | ||
|   ./locale) the VDR Makefile checks the settings of LIBDIR and LOCDIR when building the
 | ||
|   plugins from within the VDR source directory. If these macros have their default values,
 | ||
|   then the 'install' targets of the plugins' Makefiles are called. Otherwise the 'all'
 | ||
|   targets are called and the plugins are merely built, and will have to be installed by a
 | ||
|   call to 'make install-plugins'. This now also allows a user to copy a plugin source to
 | ||
|   any directory, change into that directory and do 'make' and 'make install' to have the
 | ||
|   plugin installed to wherever the local installation of VDR expects them.
 | ||
| - Plugin Makefiles now use DESTDIR and the 'install' program (thanks to Christopher Reimer).
 | ||
| - Due to the changes to the plugin Makefiles, existing plugins will not build with this
 | ||
|   version of VDR any more. You can either use the new 'newplugin' script to generate a
 | ||
|   dummy plugin directory and use the Makefile from there (adapting it to your particular
 | ||
|   plugin), or apply the patch from
 | ||
|   ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.33-pluginmakefile.diff
 | ||
|   to your Makefile to make the necessary changes (see comments in that file for details).
 | ||
| - Added the new menu categories mcChannelEdit, mcTimerEdit, mcScheduleNow, mcScheduleNext,
 | ||
|   mcRecordingInfo, mcPluginSetup, mcSetupOsd, mcSetupEpg, mcSetupDvb, mcSetupLnb,
 | ||
|   mcSetupCam, mcSetupRecord, mcSetupReplay, mcSetupMisc and mcSetupPlugins.
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Fixed replay stuttering close to the end of an ongoing recording (reported by Andreas
 | ||
|   Regel).
 | ||
| - Fixed cIndexFile::GetNextIFrame() to properly handle the case where the very last frame
 | ||
|   is an I-frame (which normally shouldn't occur).
 | ||
| - Fixed replaying ongoing recordings from other VDR instances.
 | ||
| 
 | ||
| 2012-12-30: Version 1.7.35
 | ||
| 
 | ||
| - Making sure that plugins include the VDR header files from the actual VDR source
 | ||
|   directory when doing "make plugins" (suggested by Christoper Reimer).
 | ||
| - Increased the version numbers of all plugins to reflect the recent Makefile changes.
 | ||
| - Removed the lines
 | ||
|   ifdef DVBDIR
 | ||
|   INCLUDES += -I$(DVBDIR)/include
 | ||
|   endif
 | ||
|   from the file Make.config.template. If set, DVBDIR is now conveyed to plugins via
 | ||
|   the CFLAGS.
 | ||
| - Removed some redundancy from Make.config.template.
 | ||
| - Changed "==" to "=" in the Makefile to make it POSIX style.
 | ||
| - Added MANDIR to the vdr.pc file, so that plugins that need it can retrieve it via
 | ||
|   MANDIR = $(DESTDIR)$(call PKGCFG,mandir).
 | ||
| - Using relative paths again when building plugins locally (by request of Udo Richter).
 | ||
| - Plugin Makefiles can now include a configuration file for compile time parameters
 | ||
|   (requested by Reinhard Nissl). The actual name of this file can be defined in
 | ||
|   Make.config (see "PLGCFG" in Make.config.template), and existing plugin Makefiles
 | ||
|   that have compile time parameters should add the lines
 | ||
|   PLGCFG = $(call PKGCFG,plgcfg)
 | ||
|   -include $(PLGCFG)
 | ||
|   accordingly (see the "newplugin" script for details).
 | ||
| - Re-enabled building plugins that still use pre-version-1.7.34 Makefiles.
 | ||
|   The file Make.global is present again to satisfy the "include" these Makefiles do,
 | ||
|   but the file itself contains no settings. The VDR Makefile's "plugins" target
 | ||
|   determines whether a particular plugin uses an old style Makefile and calls it
 | ||
|   accordingly. Note that this only works when building plugins from within the VDR
 | ||
|   source tree, using "make plugins" in the VDR source directory.
 | ||
| - Removed "include" from the DVBDIR setting in the VDR Makefile (reported by Oliver
 | ||
|   Endriss). You may need to adjust your DVBDIR setting in Make.config, in case you
 | ||
|   use it.
 | ||
| - Added maximum SNR value for PCTV Systems PCTV 73ESE (thanks to Cedric Dewijs).
 | ||
| 
 | ||
| 2013-01-20: Version 1.7.36
 | ||
| 
 | ||
| - Added maximum SNR value for PCTV Systems nanoStick T2 290e (thanks to Antti
 | ||
|   Hartikainen).
 | ||
| - Added a remark indicating that the coordinates of Rect in a call to
 | ||
|   cDevice::CanScaleVideo() are in the range of the width and height returned by
 | ||
|   GetOsdSize() (suggested by Reinhard Nissl).
 | ||
| - Modified the Makefiles (thanks to Christopher Reimer).
 | ||
|   By default VDR is now built according to the FHS ("File system Hierarchy Standard"),
 | ||
|   and a plain "make" in the VDR source directory just builds everything, but doesn't
 | ||
|   copy it to ./PLUGINS/lib and ./locale any more. You can use a Make.config file
 | ||
|   (copied from Make.config.template) and set the parameter LCLBLD=1 to have everything
 | ||
|   built and installed under the VDR source tree (as was the default in previous
 | ||
|   versions). If you already have your own Make.config file, you may want to copy the
 | ||
|   new Make.config.template and adapt it to your needs. If you don't want VDR's data
 | ||
|   files to be spread around your system according to the FHS, you can set the
 | ||
|   parameter ONEDIR=1 (using Make.config) to have all files in one /video directory as
 | ||
|   before.
 | ||
| - Fixed the example for cReceiver in PLUGINS.html.
 | ||
| - Fixed sorting recordings in case two folders have the same name, but one of them
 | ||
|   ends in an additional digit, as in "abc" and "abc2" (reported by Andreas Mair).
 | ||
| - Added "repeat" function when using the keyboard to control VDR (thanks to Reinhard
 | ||
|   Nissl).
 | ||
| - The SVDRP command LSTR now knows the additional parameter "path", which can be
 | ||
|   given to get the actual file name of a recording's directory (suggested by
 | ||
|   Stefan Stolz).
 | ||
| - Fixed multiple occurrences of the same directory in the recordings list in case there
 | ||
|   are directories that only differ in non-alphanumeric characters (reported by Andreas
 | ||
|   Mair).
 | ||
| - Absolute jumps when replaying a recording (via the Red key) are now only performed
 | ||
|   if an actual value has been entered (suggested by Ulf Kiener).
 | ||
| - The last replayed recording is now stored in setup.conf, which allows the blue
 | ||
|   "Resume" key in the main menu to work even after a restart of VDR.
 | ||
| - The SVDRP command NEWT no longer checks whether a timer with the given data already
 | ||
|   exists (suggested by Malte Forkel).
 | ||
| - Implemented scaling of SPU bitmaps (thanks to Johann Friedrichs).
 | ||
| - Improved cutting MPEG-2 video (thanks to S<>ren Moch).
 | ||
| - Reduced the number of retries in cTransfer::Receive() to avoid blocking recordings
 | ||
|   in case the primary device can't handle the current live signal.
 | ||
| 
 | ||
| 2013-02-08: Version 1.7.37
 | ||
| 
 | ||
| - Now also using FindHeader() in cMpeg2Fixer::AdjTref() (pointed out by S<>ren Moch).
 | ||
| - Added missing template for DVBDIR to Make.config.template (reported by Derek Kelly).
 | ||
| - The LCARS menu now also works if the OSD has only 1bpp (two colors).
 | ||
| - Fixed possible garbage in the remaining time of the LCARS replay display in case the
 | ||
|   hours change from two to one digit.
 | ||
| - Fixed upscaling bitmaps. The last row and column of the scaled bitmap was not filled,
 | ||
|   which resulted in empty lines between scaled subtitles.
 | ||
| - Fixed a leftover line in case a two line subtitle was followed by a one line
 | ||
|   subtitle on the dvbhddevice in "high level" OSD mode.
 | ||
| - Returning 0 from cDvbSdFfDevice::NumProvidedSystems() if option --outputonly is given.
 | ||
| - The index file is now closed after initially reading it if it is older than 3600 seconds.
 | ||
| - Improved responsiveness during replay when close to the recording's end.
 | ||
| - Fixed a leftover progress display in the LCARS main menu when replay of a recording
 | ||
|   ends while the menu is open, and the live channel has no EPG information.
 | ||
| - Fixed possible audio chatter when a recording is replayed to its very end.
 | ||
| - Added dependency on 'i18n' to 'install-i18n' in the VDR Makefile (thanks to Tobias
 | ||
|   Grimm).
 | ||
| - Changed several calls to Skins.Message() in vdr.c to Skins.QueueMessage() in order to
 | ||
|   avoid a black screen while such a message is displayed in case the channel will be
 | ||
|   switched (reported by Uwe Scheffler).
 | ||
| - Updated the Slovak language texts (thanks to Milan Hrala).
 | ||
| - Improved LIRC timing for repeat function.
 | ||
| - When pausing live video, the current audio and subtitle tracks are now retained.
 | ||
| - Added some notes about plugin Makefiles to PLUGINS.html.
 | ||
| - Avoiding an extra key press event if the repeat function kicks in when controlling
 | ||
|   VDR via the PC keyboard.
 | ||
| - The new options "Setup/Miscellaneous/Remote control repeat delay" and
 | ||
|   "Setup/Miscellaneous/Remote control repeat delta" can be used to adjust the
 | ||
|   behavior of the remote control in case a key is held pressed down for a while, so
 | ||
|   that the repeat function kicks in (see MANUAL).
 | ||
|   The builtin LIRC and KBD remote controls already use these parameters. It is
 | ||
|   recommended that plugins that implement an interface to any kind of remote controls
 | ||
|   also use the parameters Setup.RcRepeatDelay and Setup.RcRepeatDelta for the desired
 | ||
|   purpose, and remove any setup options they might have that serve the same purpose.
 | ||
| - cTimer no longer does any special "VFAT" handling to shorten directory names to 40
 | ||
|   characters. When a string is used as a directory name for a recording, the maximum
 | ||
|   length of the directory path, as well as the individual directory names, is now
 | ||
|   limited to the values specified by the new command line option --dirnames (see
 | ||
|   man vdr(1) for details). For backwards compatibility the option --vfat is still
 | ||
|   available and has the same effect as --dirnames=250,40,1.
 | ||
| - The macro MaxFileName is now obsolete and may be removed in future versions. Use
 | ||
|   NAME_MAX directly instead.
 | ||
| - There is no more fixed limit to the maximum number of cPixmap objects an OSD can
 | ||
|   create. However, a particular device may still be unable to create an arbitrary
 | ||
|   number of pixmaps, due to limited resources. So it's always a good idea to use
 | ||
|   as few pixmaps as possible.
 | ||
| - Fixed formatting and removed some superfluous break statements in vdr.c's command
 | ||
|   line option switch.
 | ||
| 
 | ||
| 2013-02-17: Version 1.7.38
 | ||
| 
 | ||
| - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Updated the Romanian OSD texts (thanks to Lucian Muresan).
 | ||
| - Updated the French OSD texts (thanks to Marc Perrudin, Bernard Jaulin and Peter
 | ||
|   M<>nster).
 | ||
| - Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
 | ||
| - Fixed moving editing marks, so that they don't get overwritten with old values
 | ||
|   through an update of the marks file.
 | ||
| - Removed an invalid line from channels.conf.terr (reported by Lars Hanisch).
 | ||
| - Fixed an unexpected k_Repeat key event after a k_Release in lirc.c.
 | ||
| - Fixed permissions of po/sr_SR.po (reported by Dominic Evans).
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Fixed using "Pause" and "Slow motion" near the end of a recording (replay stopped
 | ||
|   a few seconds after the end of the recording file has been reached).
 | ||
| - Fixed selecting the last replayed recording in the Recordings menu in case there
 | ||
|   are folders and plain recordings with names that differ only in non-alphanumeric
 | ||
|   characters (reported by Andre Weidemann).
 | ||
| - Fixed the description of the OSD drawing functions DrawEllipse() (the values -5...-8
 | ||
|   for the Quadrants parameter are not implemented).
 | ||
| - Made cOsd::DestroyPixmap() "NULL proof".
 | ||
| - Now deleting any previously allocated pixmaps in cOsd::SetAreas().
 | ||
| - Added demos of the DrawEllipse() and DrawSlope() function to the 'osddemo'
 | ||
|   plugin (press '1' or '2', respectively).
 | ||
| - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
 | ||
| - The timeout for trying to switch to a valid programme is now reset immediately once
 | ||
|   a programme has been found.
 | ||
| - No longer checking for EOPNOTSUPP in cDvbTuner::GetSignalQuality() to avoid breaking
 | ||
|   this function in case the driver suddenly decides to return a different errno value
 | ||
|   if an operation is not supported.
 | ||
| - Moved the definition of TIMERMACRO_TITLE and TIMERMACRO_EPISODE from recording.h to
 | ||
|   config.h and using them to initialize Setup.NameInstantRecord (avoids having the same
 | ||
|   information in two places).
 | ||
| - Fixed the return value of cOsdProvider::StoreImage() in case there is no OSD provider.
 | ||
| - Fixed a crash in cMenuEditChanItem::Set() when entering a channel number that
 | ||
|   doesn't exist (reported by Mikael H<>bsch).
 | ||
| - Fixed displaying pending timers in "alert" mode in the LCARS skin.
 | ||
| - Added missing $(LDFLAGS) to the Makefile of the dvbhddevice plugin (thanks to Ville
 | ||
|   Skytt<74>).
 | ||
| - Fixed some spellings in PLUGINS.html and Doxyfile (thanks to Ville Skytt<74>).
 | ||
| - Added '-p' to the cp command in the install-conf target of the Makefile (thanks to
 | ||
|   Ville Skytt<74>).
 | ||
| - Added missing 'const' to cDevice::HasProgramme() and cDevice::HasLock().
 | ||
| - Fixed determining the priority of the primary device in case it is neither replaying
 | ||
|   nor receiving a live channel (thanks to Matthias Senzel for reporting a problem with
 | ||
|   switching back to live viewing after replay in a setup with device bonding).
 | ||
| - Removed all \return and \param tags from comment lines marked with "///<" for Doxygen.
 | ||
|   There was only a rather small number of these, and I would probably always forget to
 | ||
|   put them in place when writing future comments, so I decided to drop them entirely.
 | ||
| - Added Doxyfile.filter to have special characters escaped that would otherwise be
 | ||
|   dropped by Doxygen (reported by Ville Skytt<74>).
 | ||
| - Using 'cat' instead of 'cp' to copy the Doxyfile to avoid problems in case Doxyfile
 | ||
|   is write protected.
 | ||
| - Updated the Doxyfile with a newer version of Doxygen.
 | ||
| - Turned off following symlinks in the Doxyfile.
 | ||
| - Removed trailing whitespace.
 | ||
| - Expanded tabs in PLUGINS/src/dvbhddevice/setup.c.
 | ||
| - Some formatting fixes.
 | ||
| 
 | ||
| 2013-03-03: Version 1.7.39
 | ||
| 
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Updated the Polish OSD texts (thanks to Marek Nazarko).
 | ||
| - Modified handling user inactivity in the shutdown handler to avoid a problem in case
 | ||
|   the system time is changed after VDR has been started (thanks to Udo Richter, reported
 | ||
|   by S<>ren Moch).
 | ||
| - Updated the Czech OSD texts (thanks to Ales Jurik).
 | ||
| - Changed the template for PLGCFG to $(CONFDIR)/plugins.mk (thanks to Ville Skytt<74>).
 | ||
| - Updated the Swedish OSD texts (thanks to Richard Lithvall).
 | ||
| - Now clearing device bondings for devices that don't provide DVB-S in the Setup/LNB
 | ||
|   menu (reported by Juergen Lock).
 | ||
| - Fixed a possible deadlock in handling the tuners of bonded devices (thanks to
 | ||
|   Juergen Lock).
 | ||
| - Improved working around the broken driver values for SNR in case of a "TT-budget
 | ||
|   S2-3200" receiving DVB-S2.
 | ||
| - The demos in the "osddemo" plugin can now also be ended with the "Back" key.
 | ||
| - Fixed flashing OSD in "high level OSD" mode of the TT S2-6400 in case a menu is open
 | ||
|   while subtitles are being displayed.
 | ||
| - Fixed stuttering or asynchronous audio after changing the audio track. This is done
 | ||
|   by doing a "jump" to the current position, which clears all buffers. However, this
 | ||
|   only works with TS recordings. With PES recordings it causes a segfault - haven't
 | ||
|   been able to figure out why.
 | ||
| - Added a manual page for 'svdrpsend' (thanks to Tobias Grimm).
 | ||
| - Fixed immediately disappearing subtitle track menu in "high level OSD" mode of the
 | ||
|   TT S2-6400 when selecting "No subtitles".
 | ||
| - Updated the French OSD texts (thanks to Bernard Jaulin).
 | ||
| - Updated the Dutch OSD texts (thanks to Carel Willemse).
 | ||
| - Removed all "fuzzy" translations from the files ar.po, hu_HU.po and sr_SR.po, because
 | ||
|   more often than not they are just wrong.
 | ||
| - Now calling DeviceClear() in cTransfer::Receive() if the output device blocks, instead
 | ||
|   of not retrying for 10 seconds (reported by Andreas Mair, with help from Oliver Endriss).
 | ||
| - Updated the Spanish OSD texts (thanks to Luca Olivetti).
 | ||
| - Updated the Hungarian language texts (thanks to Istv<74>n F<>ley).
 | ||
| - Changed the calls to Skins.QueueMessage() in vdr.c that are related to reporting the
 | ||
|   status of the editing process back to Skins.Message() in order to have them appear
 | ||
|   immediately.
 | ||
| - When sorting recordings by name, folders are now always at the top of the list.
 | ||
| - Updated the Russian OSD texts (thanks to Oleg Roitburd).
 | ||
| 
 | ||
| 2013-03-10: Version 1.7.40
 | ||
| 
 | ||
| - The "Recording info" page of the skins that come with VDR now displays the name of
 | ||
|   the channel (if available) from which this recording was taken.
 | ||
| - Updated the Catalan OSD texts (thanks to Luca Olivetti).
 | ||
| - Updated the Spanish OSD texts (thanks to Luca Olivetti).
 | ||
| - Added a note about the new default sort order of recordings to the release notes of
 | ||
|   version 1.7.29 and the UPDATE-2.0.0 file (pointed out by Wolfgang Rohdewald).
 | ||
| - Fixed a faulty UTF-8 character in cs_CZ.po.
 | ||
| - Added the system's character set to the page header in the epg2html script (pointed
 | ||
|   out by Dimitar Petrovski).
 | ||
| - Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
 | ||
| - The new option "Setup/OSD/Always sort folders first" can be used to control whether
 | ||
|   folders will be always at the top of the Recordings menu, or will be interspersed
 | ||
|   with plain recordings when sorted alphabetically.
 | ||
| - Updated the Swedish OSD texts (thanks to Richard Lithvall).
 | ||
| - Updated the Chinese OSD texts (thanks to Nan Feng).
 | ||
| - Updated the Slovak OSD texts (thanks to Milan Hrala).
 | ||
| - Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
 | ||
| - Updated the Dutch OSD texts (thanks to Cedric Dewijs).
 | ||
| - Updated the Czech OSD texts (thanks to Ales Jurik).
 | ||
| - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Updated the French OSD texts (thanks to Dominique Plu).
 | ||
| - Updated the Finnish OSD texts (thanks to Matti Lehtim<69>ki).
 | ||
| - Updated the Arabic OSD texts (thanks to Osama Alrawab).
 | ||
| - Updated the Romanian OSD texts (thanks to Lucian Muresan).
 | ||
| - Renamed the "plp id" to a more general "stream id" and added support for DVB-S2
 | ||
|   "Input Stream Identifier" (ISI) (based on a patch from Rolf Ahrenberg).
 | ||
|   With this VDR now supports "multi streaming" on DVB-S2 and DVB-T2 transponders.
 | ||
| - Fixed a possible deadlock when changing the audio track while replaying a recording.
 | ||
| - Fixed resuming replay of PES recordings (reported by Oliver Endriss).
 | ||
| - Limited the Goto() call in cDvbPlayer::SetAudioTrack() to the main thread, in order
 | ||
|   to avoid a crash when the track is automatically set from the player thread.
 | ||
| - The LCARS skin now calls SetAntiAliasGranularity(20, 16) in order to reserve enough
 | ||
|   fixed colors on 8bpp displays with anti-aliasing.
 | ||
| - Changed the default values for the OSD size back to those before version 1.7.29,
 | ||
|   to avoid problems with SD-FF cards in case the user switches to the "ST:TNG" or
 | ||
|   "Classic" skin.
 | ||
| 
 | ||
| 2013-03-16: Version 1.7.41
 | ||
| 
 | ||
| - Updated the Hungarian OSD texts (thanks to Istv<74>n F<>ley).
 | ||
| - Updated the Russian OSD texts (thanks to Oleg Roitburd).
 | ||
| - Updated the Polish OSD texts (thanks to Marek Nazarko).
 | ||
| - Fixed using PATH_MAX and NAME_MAX (+/-1 because the first one includes the
 | ||
|   terminating 0, while the latter doesn't).
 | ||
| - The 'plugins' target of the VDR Makefile now also copies files matching the wildcard
 | ||
|   "lib$$i-*.so" (previously only "libvdr-*.so") and also descends into subdirectories
 | ||
|   of the plugin source.
 | ||
| - The parameters PATH and NAME to the --dirnames command line option may now be left
 | ||
|   empty to use the default values if only ENC shall be set (thanks to Helmut Auer for
 | ||
|   some improvements to this change).
 | ||
| - Fixed a possible "Channel not available" if a recording starts on a system with
 | ||
|   bonded devices (thanks to Siegfried Bosch).
 | ||
| - Fixed stopping an ongoing recording on a system with bonded devices, if a timer with
 | ||
|   a higher priority requires a different band.
 | ||
| - Updated the introductory text of the vdr.1 man page.
 | ||
| - Added a note to the INSTALL file regarding multiple disk setup becoming deprecated
 | ||
|   in a future version of VDR.
 | ||
| - When switching to a less privileged user id, VDR now sets the environment variables
 | ||
|   HOME, USER, LOGNAME and SHELL accordingly (thanks to Manuel Reimer).
 | ||
| - Updated the help and man page entry about the location of the epg.data file (thanks
 | ||
|   to Ville Skytt<74>).
 | ||
| - Fixed creating a new VPS timer with the SVDRP command NEWT (thanks to Johann
 | ||
|   Friedrichs).
 | ||
| 
 | ||
| 2013-03-23: Version 1.7.42
 | ||
| 
 | ||
| - Updated the Serbian OSD texts (thanks to Zoran Turalija).
 | ||
| - Added maximum SNR and signal strength value for TechniSat SkyStar HD2 (thanks to
 | ||
|   Zoran Turalija).
 | ||
| - Renamed the language file sr_SR.po to sr_RS.po (pointed out by Zoran Turalija).
 | ||
| - Fixed loading the setup.conf file in case a parameter contains the '#' character
 | ||
|   (thanks to Johann Friedrichs).
 | ||
| - The "Resume" button in the main menu is now only active if the respective recording
 | ||
|   actually exists (reported by Johann Friedrichs).
 | ||
| - The cutter now allocates its buffers on the heap to avoid problems on systems with
 | ||
|   limited stack space (suggested by Juergen Lock).
 | ||
| - Fixed formatting the channel definition example in the vdr(5) man page (thanks to
 | ||
|   Dominic Evans).
 | ||
| - Updated the default channels.conf file.
 | ||
| 
 | ||
| 2013-03-31: Version 2.0.0
 | ||
| 
 | ||
| - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
 | ||
| - Fixed the description of the 'M' parameter of channel definitions in vdr.5.
 | ||
| - Updated the French OSD texts (thanks to Dominique Plu).
 | ||
| - Fixed handling overlapping pending timers (reported by Matthias Senzel).
 | ||
| - Bumped all version numbers to 2.0.0.
 | ||
| - Official release.
 | ||
| 
 | ||
| 2013-04-11: Version 2.0.1
 | ||
| 
 | ||
| - Fixed initializing cDevice::keepTracks.
 | ||
| - Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than
 | ||
|   one character (reported by Stefan Braun).
 | ||
| - Added definitions for older DVB API versions, back until 5.0 (based on a patch from
 | ||
|   Udo Richter).
 | ||
| - Fixed handling '/' and '~' in recording file names in case DirectoryEncoding is
 | ||
|   used (thanks to Lars Hanisch).
 | ||
| - Changed cThread::SetIOPriority() from "best effort class" to "idle class" in order to
 | ||
|   improve overall performance when an editing process is running (thanks to Jochen
 | ||
|   Dolze).
 | ||
| 
 | ||
| 2013-05-19: Version 2.0.2
 | ||
| 
 | ||
| - Fixed multiple occurrences of the same directory in the recordings list in case there
 | ||
|   are directories that only differ in non-alphanumeric characters (was broken by
 | ||
|   "Fixed selecting the last replayed recording in the Recordings menu in case there
 | ||
|   are folders and plain recordings with names that differ only in non-alphanumeric
 | ||
|   characters" in version 1.7.36).
 | ||
| - Fixed displaying the frame number when setting an editing mark (thanks to Thomas
 | ||
|   G<>nther).
 | ||
| - Fixed no longer generating any editing marks if the edited recording results in just
 | ||
|   one single sequence (reported by Halim Sahin).
 | ||
| - Fixed an error message when parsing SCR values in diseqc.conf.
 | ||
| - Fixed an unexpected RCS version tag in the newplugin script.
 | ||
| - Fixed an endless loop in the DrawEllipse() functions for very small ellipses (reported
 | ||
|   by Stefan Braun).
 | ||
| - Fixed a crash in the LCARS skin's main menu in case there is no current channel
 | ||
|   (reported by Dominique Dumont).
 | ||
| 
 | ||
| 2013-08-25: Version 2.1.1
 | ||
| 
 | ||
| - Fixed initializing cDevice::keepTracks.
 | ||
| - Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than
 | ||
|   one character (reported by Stefan Braun).
 | ||
| - Removed all "modified since version 1.6" markers from PLUGINS.html.
 | ||
| - Added definitions for older DVB API versions, back until 5.0 (based on a patch from
 | ||
|   Udo Richter).
 | ||
| - Changed cThread::SetIOPriority() from "best effort class" to "idle class" in order to
 | ||
|   improve overall performance when an editing process is running (thanks to Jochen
 | ||
|   Dolze).
 | ||
| - Fixed handling '/' and '~' in recording file names in case DirectoryEncoding is
 | ||
|   used (thanks to Lars Hanisch).
 | ||
| - Changed the sign of the satellite position value in cSource to reflect the standard
 | ||
|   of western values being negative. The new member function cSource::Position() can be
 | ||
|   used to retrieve the orbital position of a satellite.
 | ||
| - Fixed multiple occurrences of the same directory in the recordings list in case there
 | ||
|   are directories that only differ in non-alphanumeric characters (was broken by
 | ||
|   "Fixed selecting the last replayed recording in the Recordings menu in case there
 | ||
|   are folders and plain recordings with names that differ only in non-alphanumeric
 | ||
|   characters" in version 1.7.36).
 | ||
| - Fixed displaying the frame number when setting an editing mark (thanks to Thomas
 | ||
|   G<>nther).
 | ||
| - Fixed no longer generating any editing marks if the edited recording results in just
 | ||
|   one single sequence (reported by Halim Sahin).
 | ||
| - Fixed an error message when parsing SCR values in diseqc.conf.
 | ||
| - Fixed an unexpected RCS version tag in the newplugin script.
 | ||
| - Fixed an endless loop in the DrawEllipse() functions for very small ellipses (reported
 | ||
|   by Stefan Braun).
 | ||
| - Fixed a crash in the LCARS skin's main menu in case there is no current channel
 | ||
|   (reported by Dominique Dumont).
 | ||
| - Added basic support for positioners to control steerable satellite dishes (based on
 | ||
|   a patch from Seppo Ingalsuo and Ales Jurik, which in turn used code from Thomas
 | ||
|   Bergwinkl's Rotor plugin).
 | ||
|   + Supports GotoN (aka "DiSEqC 1.2") and GotoX (aka "USALS").
 | ||
|   + The new DiSEqC command code 'P' can be used to instruct a positioner to move the
 | ||
|     dish to the required satellite position. When a 'P' code is processed, further
 | ||
|     execution of the remaining DiSEqC sequence (if any) is postponed until the positioner
 | ||
|     has reached the new satellite position.
 | ||
|   + The new special source value of "S360E" can be used in diseqc.conf to indicate that
 | ||
|     an entry using a positioner can move the dish to any requested position within its
 | ||
|     range. Think of it as "full circle".
 | ||
|   + The devices a particular cDiseqc or cScr applies to are now stored directly in each
 | ||
|     cDiseqc or cScr, respectively.
 | ||
|   + A plugin can implement a custom positioner control (see PLUGINS.html, section "Positioners").
 | ||
|   + The new function cSkinDisplayChannel::SetPositioner() can be implemented by skins to
 | ||
|     show the user a progress display when the dish is being moved. The default implementation
 | ||
|     calls SetMessage() with a string indicating the new position the dish is being moved to.
 | ||
|     The LCARS skin shows a progress bar indicating the movement of the dish.
 | ||
|   + The new parameters "Site latitude", "Site longitude", "Positioner speed", and
 | ||
|     "Positioner swing" in the "Setup/LNB" menu can be used to configure the necessary
 | ||
|     values for a steerable dish.
 | ||
|   + The cDvbTuner now has a new status tsPositioning, in which it waits until a steerable
 | ||
|     dish has reached its target position. Parsing SI data is paused until the target
 | ||
|     position has been reached.
 | ||
| - The LCARS skin now shows the source value of the current channel in its channel display.
 | ||
| - Fixed asserting free disk space in the cutter.
 | ||
| - No longer trying to delete old recordings in AssertFreeDiskSpace() if the given
 | ||
|   Priority is less than 1.
 | ||
| - Fixed handling LIRC events in case repeated events are lost.
 | ||
| - Fixed a possible crash when shutting down VDR while subtitles are being displayed
 | ||
|   (reported by Ville Skytt<74>).
 | ||
| - cDevice::IsPrimaryDevice() now also checks whether the primary device actually has
 | ||
|   a decoder and returns false otherwise. This should improve device allocation on
 | ||
|   systems that are only used as a receiver and don't actually display anything.
 | ||
| - Increased the value of MAXRETRIES to 20 to reduce the probability of disturbances
 | ||
|   in transfer mode.
 | ||
| - All bonded devices (except for the master) now turn off their LNB power completely
 | ||
|   to avoid problems when receiving vertically polarized transponders (suggested by
 | ||
|   Manfred V<>lkel and Oliver Endriss).
 | ||
| - Reverted the change from version 1.5.7 that made all logging go to LOG_ERR (thanks
 | ||
|   to Christopher Reimer).
 | ||
| - Added Begin/EndSegmentTransfer() to the EPG handler interface (thanks to J<>rg Wendel).
 | ||
| - The code for distributing recordings over several video directories is now
 | ||
|   deprecated and disabled by default.
 | ||
|   You can re-enable this feature by removing the comment sign ('//') from the beginning
 | ||
|   of the line
 | ||
|   //#define DEPRECATED_DISTRIBUTED_VIDEODIR // Code enclosed with this macro is ...
 | ||
|   in the file videodir.c. Note, though, that this can only be a temporary workaround.
 | ||
|   This feature will be completely removed in one of the next developer versions.
 | ||
|   Distributing the video directory over several disks was a useful feature in times
 | ||
|   when disks were still relatively small, but it also caused serious problems in case
 | ||
|   one of the disks failed. Nowadays hard disks come in sizes measured in terabytes,
 | ||
|   and tools like "mhddfs" can be used to combine several disks to form one large volume.
 | ||
|   A recommended method for a relatively safe disk setup in a VDR system is to use two
 | ||
|   1TB (or larger) disks and use them as a RAID-1 (mirrored). That way, if one disk
 | ||
|   fails, you can replace it without data loss.
 | ||
| 
 | ||
| 2013-09-01: Version 2.0.3
 | ||
| 
 | ||
| - Fixed asserting free disk space in the cutter.
 | ||
| - No longer trying to delete old recordings in AssertFreeDiskSpace() if the given
 | ||
|   Priority is less than 1.
 | ||
| - Fixed handling LIRC events in case repeated events are lost.
 | ||
| - Fixed a possible crash when shutting down VDR while subtitles are being displayed
 | ||
|   (reported by Ville Skytt<74>).
 | ||
| - cDevice::IsPrimaryDevice() now also checks whether the primary device actually has
 | ||
|   a decoder and returns false otherwise. This should improve device allocation on
 | ||
|   systems that are only used as a receiver and don't actually display anything.
 | ||
| - Increased the value of MAXRETRIES to 20 to reduce the probability of disturbances
 | ||
|   in transfer mode.
 | ||
| - All bonded devices (except for the master) now turn off their LNB power completely
 | ||
|   to avoid problems when receiving vertically polarized transponders (suggested by
 | ||
|   Manfred V<>lkel and Oliver Endriss).
 | ||
| - Fixed cleaning up old EPG events in case no epg data file is given (reported by
 | ||
|   Dave Pickles).
 | ||
| 
 | ||
| 2013-10-19: Version 2.1.2
 | ||
| 
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed displaying DVB subtitles (thanks to Rolf Ahrenberg for helping to debug and
 | ||
|   understand subtitle page refreshes):
 | ||
|   + Fixed handling DVB subtitle fill region codes for 2 and 8 bpp.
 | ||
|   + Fixed handling pages without an explicit END_OF_DISPLAY_SET_SEGMENT.
 | ||
|     The FINISHPAGE_HACK is no longer necessary.
 | ||
|   + Fixed handling "page refreshes". The data is now parsed and stored closer to the
 | ||
|     DVB standard specs, introducing "object refs" and "region refs".
 | ||
|   + The debug output now goes into an HTML file named dbg-log.htm and shows the actual
 | ||
|     bitmaps (dbg-nnn.jpg) used to display the subtitles. That way it is much easier to
 | ||
|     see what's actually going on.
 | ||
|   + Fixed handling subtitles encoded as a string of characters (the very first
 | ||
|     character was always skipped).
 | ||
| - Fixed wrong initialization of Setup.PositionerSwing (reported by Arthur Konovalov).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Fixed cleaning up old EPG events in case no epg data file is given (reported by
 | ||
|   Dave Pickles).
 | ||
| - Unified the internal sequence of actions when pressing the Blue and the Back key,
 | ||
|   respectively, during replay (reported by Thomas Maass).
 | ||
| - The Yellow button in the main menu no longer acts as "Pause" if "Pause key handling"
 | ||
|   is set to "do not pause live video" (suggested by Ulf Kiener).
 | ||
| - The code for distributing recordings over several video directories has been
 | ||
|   removed. VDR now by default assumes that the video directory is one big disk.
 | ||
|   If you absolutely need to use several separate disks to store recordings, you can
 | ||
|   write a plugin that uses the new cVideoDirectory API to implement the necessary
 | ||
|   functionality (see PLUGINS.html, section "The video directory"). You can copy the
 | ||
|   respective code from previous versions of videodir.c.
 | ||
|   IMPORTANT NOTE: If you write a plugin that implements a distributed video directory,
 | ||
|   =============== be sure to make cVideoDirectory::Rename() follow symbolic links!
 | ||
|                   This functionality was never implemented in VDR and it therefore
 | ||
|                   used a workaround in cutter.c. See the section marked with
 | ||
|                   // XXX this can be removed once RenameVideoFile() follows symlinks
 | ||
|                   in previous versions of cutter.c.
 | ||
|   + CloseVideoFile() is obsolete and has been removed.
 | ||
|   + The functions OpenVideoFile(), RenameVideoFile(), RemoveVideoFile(), VideoFileSpaceAvailable(),
 | ||
|     VideoDiskSpace(), RemoveEmptyVideoDirectories(), IsOnVideoDirectoryFileSystem() and
 | ||
|     PrefixVideoFileName() are now static members of cVideoDirectory and need to be called
 | ||
|     with the proper prefix.
 | ||
|   + The name of the video directory is now available through cVideoDirectory::Name().
 | ||
| - Added renaming and moving recordings and folders, editing a recording's priority and
 | ||
|   lifetime, and queueing cutting jobs (inspired by the "extrecmenu" plugin from Martin
 | ||
|   Prochnow).
 | ||
|   + The "Recording info" menu now has a new Blue button named "Edit", which opens a
 | ||
|     dialog in which several properties of the selected recording can be changed. It can
 | ||
|     be renamed or moved into another folder and its priority and lifetime can be
 | ||
|     modified (inspired by the "extrecmenu" plugin from Martin Prochnow).
 | ||
|     The new blue "Edit" button in the "Recordings" menu opens a dialog in which a folder
 | ||
|     can be renamed or moved. See MANUAL, section "Managing folders".
 | ||
|   + In the "Edit recording" menu the Yellow button ("Delete marks") allows you to delete
 | ||
|     all editing marks of the selected recording.
 | ||
|   + cCutter is no longer a static class. Cutting requests should now be invoked by
 | ||
|     calling RecordingsHandler.Add(ruCut, FileName). See the new cRecordingsHandler
 | ||
|     class in recording.h.
 | ||
|   + Cutting jobs are now placed in a queue (together with any move or copy jobs) and
 | ||
|     are processed one by one.
 | ||
|   + The new SVDRP command RENR can be used to rename a recording (suggested by Rolf
 | ||
|     Ahrenberg).
 | ||
|   + Note that in several places in the source code a "copy" operation is mentioned,
 | ||
|     however there is no user interface for this, yet.
 | ||
| - Changed some variable names in positioner.c to match the names used in the page with
 | ||
|   the explanation on vdr-portal.de.
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Fixed writing group separators to channels.conf that contain a comma (reported by
 | ||
|   Eike Edener).
 | ||
| - Now also checking the source (in addition to the transponder) when setting the
 | ||
|   system time from the TDT, which avoids problems in case devices are tuned to the
 | ||
|   same transponder on different sources, and these broadcast different time data
 | ||
|   (reported by Torsten Lang).
 | ||
| - Changed cRecorder::Action() to use cTimeMs instead of time() to avoid problems with
 | ||
|   unjustified "video data stream broken" errors in case the system time is changed
 | ||
|   while a recording is active (reported by Torsten Lang).
 | ||
| - Revised the section on "Learning the remote control keys" in the INSTALL file to
 | ||
|   avoid the impression that there actually is a default remote.conf file, and to
 | ||
|   not use any alphabetic keys for special functions, so that they remain available
 | ||
|   for textual input.
 | ||
| - The function cRecordings::MBperMinute() now only takes into account recordings with
 | ||
|   less than 5 seconds per megabyte, in an attempt to filter out radio recordings
 | ||
|   (thanks to Harald Koenig). The result of this function was way off any realistic
 | ||
|   value in case there are many radio recordings in the video directory.
 | ||
| - Added maximum signal strength value for TechniSat SkyStar 2 DVB-S rev 2.3P (thanks
 | ||
|   to Guido Cordaro).
 | ||
| - Fixed an inconsistent behavior between opening the Recordings menu manually via the
 | ||
|   main menu and by pressing the Recordings key. In the latter case it automatically
 | ||
|   opened all sub folders to position the cursor to the last replayed recording, which
 | ||
|   is unexpected at this point (reported by Helmut Auer). You can still navigate to
 | ||
|   the last replayed recording (if any) by pressing Ok repeatedly in the Recordings
 | ||
|   menu.
 | ||
| 
 | ||
| 2013-10-23: Version 2.0.4
 | ||
| 
 | ||
| - Unified the internal sequence of actions when pressing the Blue and the Back key,
 | ||
|   respectively, during replay (reported by Thomas Maass).
 | ||
| - The Yellow button in the main menu no longer acts as "Pause" if "Pause key handling"
 | ||
|   is set to "do not pause live video" (suggested by Ulf Kiener).
 | ||
| - Fixed writing group separators to channels.conf that contain a comma (reported by
 | ||
|   Eike Edener).
 | ||
| - Now also checking the source (in addition to the transponder) when setting the
 | ||
|   system time from the TDT, which avoids problems in case devices are tuned to the
 | ||
|   same transponder on different sources, and these broadcast different time data
 | ||
|   (reported by Torsten Lang).
 | ||
| - Changed cRecorder::Action() to use cTimeMs instead of time() to avoid problems with
 | ||
|   unjustified "video data stream broken" errors in case the system time is changed
 | ||
|   while a recording is active (reported by Torsten Lang).
 | ||
| - Fixed an inconsistent behavior between opening the Recordings menu manually via the
 | ||
|   main menu and by pressing the Recordings key. In the latter case it automatically
 | ||
|   opened all sub folders to position the cursor to the last replayed recording, which
 | ||
|   is unexpected at this point (reported by Helmut Auer). You can still navigate to
 | ||
|   the last replayed recording (if any) by pressing Ok repeatedly in the Recordings
 | ||
|   menu.
 | ||
| 
 | ||
| 2014-01-05: Version 2.1.3
 | ||
| 
 | ||
| - Changed the return value of cPositioner::HorizonLongitude() to 0 in case the
 | ||
|   latitude of the antenna location is beyond +/-81 degrees.
 | ||
| - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
 | ||
| - Fixed some compiler warnings with gcc-4.6.3 (thanks to Rolf Ahrenberg).
 | ||
| - Changed the name of the SVDRP command RENR to MOVR (suggested by Rolf Ahrenberg).
 | ||
| - When cutting a recording it is now checked whether there is already an edited
 | ||
|   version of this recording (with the same name, but starting with '%'), and the
 | ||
|   user is prompted for confirmation to overwrite it (suggested by Rolf Ahrenberg).
 | ||
| - Revoked "Added maximum signal strength value for TechniSat SkyStar 2 DVB-S rev 2.3P"
 | ||
|   because it broke things for the "TechniSat AirStar 2" DVB-T card.
 | ||
| - The LIRC remote control now connects to the socket even if it doesn't yet exist when
 | ||
|   VDR is started (thanks to Lars Hanisch).
 | ||
| - Changed the absolute latitude limit for visible satellites to 81.2 degrees.
 | ||
| - Added code for parsing LCN and AVC descriptors to libsi (thanks to Rolf Ahrenberg).
 | ||
| - In the "Select folder" menu pressing Ok now selects the folder, even if this is a
 | ||
|   folder that contains sub folders (marked with "..."). To open such a folder you
 | ||
|   can press the Red key.
 | ||
| - Fixed a possible access to uninitialized data in cEIT::cEIT() (reported by Dominik
 | ||
|   Strasser).
 | ||
| - The new menu category mcRecordingEdit is now used to mark menus that edit recording
 | ||
|   properties (suggested by Stefan Braun).
 | ||
| - Changes in the teletext PID no longer cause retuning (and thus interrupting a
 | ||
|   recording).
 | ||
| - Removed '_' from the FileNameChars and CharMap translations in uk_UA.po.
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - Fixed a missing initialization in the c'tor of cSkinLCARSDisplayChannel (thanks to
 | ||
|   Marko M<>kel<65>).
 | ||
| - Simplified some conditional expressions in skinlcars.c and skinsttng.c (suggested
 | ||
|   by Marko M<>kel<65>).
 | ||
| - Fixed uninitialized item area coordinates in cSkinLCARSDisplayMenu (reported by
 | ||
|   Marko M<>kel<65>).
 | ||
| - Fixed a possible crash if the recordings list is updated externally while the
 | ||
|   Recordings menu is open (reported by Lars Hanisch).
 | ||
| - Added a missing closing ')' in the help and man page entry of the --vfat option
 | ||
|   (reported by Lars Hanisch).
 | ||
| - Fixed setting the name of the video directory to avoid a crash when using --genindex,
 | ||
|   and also to use the correct directory with --edit (the latter reported by Marko
 | ||
|   M<>kel<65>).
 | ||
| - The Recordings menu can now be called with a cRecordingFilter, which allows the
 | ||
|   caller to have it display only a certain subset of the recordings (thanks to Lars
 | ||
|   Hanisch).
 | ||
| - Added handling UTF-8 'umlaut' characters to cKbdRemote (thanks to Lars Hanisch).
 | ||
| - Made it clear that the Data parameter in cDevice::StillPicture() may point to a
 | ||
|   series of packets, not just a single one (thanks to Thomas Reufer).
 | ||
| - cDevice::TrickSpeed() now has an additional parameter named Forward, which indicates
 | ||
|   the direction in which replay is being done (suggested by Thomas Reufer). This
 | ||
|   information may be necessary for some output devices in order to properly implement
 | ||
|   trick modes. Authors of plugins that implement output devices will need to add this
 | ||
|   parameter to their derived cDevice class, regardless of whether they will make use
 | ||
|   of it or not.
 | ||
| - Added a note to ePlayMode in device.h that VDR itself always uses pmAudioVideo when
 | ||
|   replaying a recording (suggested by Thomas Reufer).
 | ||
| - Fixed some spellings in positioner.h and Doxyfile (thanks to Ville Skytt<74>).
 | ||
| - Changed '%a' to the POSIX compliant '%m' in all scanf() calls (thanks to Ville
 | ||
|   Skytt<74>).
 | ||
| - The new function cCamSlot::Decrypt() can be used by derived classes to implement a
 | ||
|   CAM slot that can be freely assigned to any device, without being directly inserted
 | ||
|   into the full TS data stream in hardware. A derived class that implements Decrypt()
 | ||
|   will also need to set the new parameter ReceiveCaPids in the call to the cCamSlot
 | ||
|   base class constructor to true, in order to receive the CA pid TS packets that
 | ||
|   contain data necessary for decrypting.
 | ||
| - Many member functions of cCamSlot have been made virtual to allow for easier
 | ||
|   implementation of derived classes.
 | ||
| - cTSBuffer now provides the number of available bytes in its Get() function.
 | ||
| - cDvbDevice::GetTSPacket() now calls CamSlot()->Decrypt() in order to allow CAM slots
 | ||
|   that can be freely assigned to any device access to the TS data stream.
 | ||
| - Added a check to avoid a possible NULL pointer dereference in cCiSession::SendData()
 | ||
|   (reported by Ville Skytt<74>).
 | ||
| - Deleted a superfluous assignment in cPipe::Open() (reported by Ville Skytt<74>).
 | ||
| - The script given to VDR with the '-r' option is now also called after the recording
 | ||
|   process has actually started (thanks to Christian Kaiser).
 | ||
| - Avoiding unnecessary pkg-config warnings in plugin Makefiles (thanks to Ville Skytt<74>).
 | ||
|   Plugin authors may want to apply the following change to their Makefile:
 | ||
|   -PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
 | ||
|   +PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:../../.." pkg-config --variable=$(1) vdr))
 | ||
| - Eliminated MAXDVBDEVICES (suggested by Oliver Endriss).
 | ||
| - Channels that are no longer contained in the current SDT of a transponder are now
 | ||
|   marked with the keyword OBSOLETE in their name and provider fields. That way you can
 | ||
|   identify obsolete channels when you switch to them, and you can get the complete
 | ||
|   overview of all obsolete channels by sorting the Channels list by provider (by
 | ||
|   pressing the 0 key twice). Automatic deletion of obsolete channels may follow later.
 | ||
| 
 | ||
| 2014-01-07: Version 2.0.5
 | ||
| 
 | ||
| - The LIRC remote control now connects to the socket even if it doesn't yet exist when
 | ||
|   VDR is started (thanks to Lars Hanisch).
 | ||
| - Fixed a missing initialization in the c'tor of cSkinLCARSDisplayChannel (thanks to
 | ||
|   Marko M<>kel<65>).
 | ||
| - Fixed uninitialized item area coordinates in cSkinLCARSDisplayMenu (reported by
 | ||
|   Marko M<>kel<65>).
 | ||
| - Fixed a possible crash if the recordings list is updated externally while the
 | ||
|   Recordings menu is open (reported by Lars Hanisch).
 | ||
| - Added a missing closing ')' in the help and man page entry of the --vfat option
 | ||
|   (reported by Lars Hanisch).
 | ||
| - Fixed setting the name of the video directory to avoid a crash when using --genindex,
 | ||
|   and also to use the correct directory with --edit (the latter reported by Marko
 | ||
|   M<>kel<65>).
 | ||
| 
 | ||
| 2014-01-26: Version 2.1.4
 | ||
| 
 | ||
| - Updated 'sources.conf' (thanks to Antti Hartikainen).
 | ||
| - cFont::CreateFont() now returns a dummy font in case there are no fonts installed.
 | ||
|   This prevents a crash with the LCARS skin on a system that has no fonts.
 | ||
| - Improved locking for CAM slots and made the pure functions of cCiAdapter have
 | ||
|   default implementations, to fix a possible crash with CI adapters and CAM slots
 | ||
|   that are implemented in a plugin.
 | ||
| - Added logging the supported system ids of a CAM.
 | ||
| - Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 10 in order to be able to record
 | ||
|   channels that need more than 5 TS packets for detecting frame borders (reported by
 | ||
|   Eike Sauer).
 | ||
| - Fixed deleting the source recording after moving it to a different volume (reported
 | ||
|   by Christoph Haubrich).
 | ||
| - Now waiting explicitly until all CAM slots are ready before switching to the
 | ||
|   initial channel when VDR is started. This is necessary in case CI adapters are
 | ||
|   used that are not physically connected to a dedicated device. The respective checks
 | ||
|   in cDvbDevice have been removed to avoid redundancy.
 | ||
| - Fixed detecting frame borders in MPEG-2 streams that have "bottom fields" or varying
 | ||
|   GOP structures (reported by Christian Paulick, with help from Helmut Auer).
 | ||
| - Now unassigning CAMs from their devices when they are no longer used.
 | ||
| - Now making sure the primary device goes into transfer mode for live viewing if the
 | ||
|   CAM wants to receive the TS data.
 | ||
| - Fixed a wrong alignment in cCiDateTime::SendDateTime().
 | ||
| - Since the new cRecordingsHandler that was introduced in version 2.1.2 not only
 | ||
|   handles "cutting", but also "moving" and "copying" recordings, the German word
 | ||
|   "Schnitt" has been replaced with the more generic "Bearbeitung", which covers all
 | ||
|   three variations of "editing" a recording (suggested by Christoph Haubrich).
 | ||
|   Maintainers of translations for other languages may want to change their *.po files
 | ||
|   accordingly.
 | ||
| - The new function cStatus::ChannelChange() can be implemented by plugins to be
 | ||
|   informed about changes to the parameters of a channel that may require a retune.
 | ||
|   This may, for instance, be useful for plugins that implement live streaming, so that
 | ||
|   they can react on changes to a channel's PIDs or CA descriptors (problem reported
 | ||
|   by Mariusz Bialonczyk).
 | ||
| - Fixed a superfluous call to the skin's SetRecording() function after renaming a
 | ||
|   recording (reported by Christoph Haubrich).
 | ||
| 
 | ||
| 2014-02-23: Version 2.1.5
 | ||
| 
 | ||
| - Now checking whether the primary device actually has a decoder before retuning the
 | ||
|   current channel after a change in its parameters. This fixes broken recordings on
 | ||
|   the primary device on "headless" systems.
 | ||
| - Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 100 and introduced counting the number
 | ||
|   of actual video TS packets in cTsPayload in order to be able to record channels that
 | ||
|   sometimes need even more than 10 TS packets for detecting frame borders (reported by
 | ||
|   Oliver Endriss).
 | ||
| - Fixed sorting recordings by time in the Recordings menu if "Setup/OSD/Recording
 | ||
|   directories" is set to "no".
 | ||
| - Fixed clearing non-editable members in the channel editor (thanks to Rolf Ahrenberg).
 | ||
| - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
 | ||
| - Further clarified the semantics of cCamSlot::Decrypt().
 | ||
| - Fixed flickering if subtitles are active while the OSD demo is running.
 | ||
| - Fixed numbering frames. Previously they were numbered starting from 1, while it
 | ||
|   is apparently standard to number them from 0. Any existing recordings with editing
 | ||
|   marks (which will now be off by one) can still be cut with all VDR versions from
 | ||
|   1.7.32, because these will automatically adjust editing marks to I-frames.
 | ||
|   Users of stable releases shouldn't notice any problems.
 | ||
| - Fixed a possible crash in the OSD demo (reported by Christopher Reimer).
 | ||
| - Fixed some compiler warnings with Clang 3.4.1 (reported by Paul Menzel).
 | ||
| - Added LinkageTypePremiere to libsi/si.h and eit.c to avoid a compiler warning with
 | ||
|   Clang 3.4.1 (suggested by Tony Houghten).
 | ||
| - Replaced the NULL pointer assignment in ~cReceiver() to force a segfault with
 | ||
|   a call to abort() (suggested by Tony Houghten).
 | ||
| - Fixed learning keyboard remote control codes (thanks to Lars Hanisch).
 | ||
| - Improved PAT/PMT scanning to speed up initial tuning to encrypted channels on
 | ||
|   transponders with many PAT entries (reported by Mariusz Bialonczyk).
 | ||
| - Fixed the replay progress display for very long recordings.
 | ||
| - Fixed detecting broken video data streams when recording.
 | ||
| - Fixed handling frame detection buffer length (reported by Eike Sauer).
 | ||
| 
 | ||
| 2014-03-16: Version 2.1.6
 | ||
| 
 | ||
| - Revoked "Fixed some compiler warnings with Clang 3.4.1" from ci.c, because this
 | ||
|   did not compile with older versions of gcc (thanks to S<>ren Moch).
 | ||
| - Fixed keeping the current position in the Recordings menu if a recording was
 | ||
|   deleted in a sub folder.
 | ||
| - Fixed handling transfer mode on full featured DVB cards for encrypted channels
 | ||
|   that have no audio pid (reported by Christian Winkler).
 | ||
| - Fixed a possible endless loop in cH264Parser::GetGolombUe(), which caused recordings
 | ||
|   on some HD channels to get stuck and resulted in buffer overflows.
 | ||
| - Fixed handling PAT packets when detecting frames, so that they can be properly
 | ||
|   taken into account when regenerating the index of a recording.
 | ||
| - Fixed adding new source types in case they are already registered (reported by Rolf
 | ||
|   Ahrenberg).
 | ||
| - Removed an unnecessary assignment from cMenuRecordings::~cMenuRecordings().
 | ||
| - The Recordings menu now remembers the last recording the cursor was positioned on,
 | ||
|   independent of the last replayed recording. When a replay ends, however, the cursor
 | ||
|   will initially be positioned to the last replayed recording again when the menu
 | ||
|   is opened.
 | ||
| - Updated the Finnish OSD texts (thanks to Antti Hartikainen).
 | ||
| - Fixed drawing the live indicator in the LCARS skin in case there are no devices.
 | ||
| - When checking for obsolete channels, those with an RID that is not 0 are now
 | ||
|   ignored (suggested by Oliver Endriss).
 | ||
| - The SDT is now only parsed *after* the NIT has been read, and it explicitly uses
 | ||
|   the source value derived from the NIT. This should prevent new channels from being
 | ||
|   created with the wrong source.
 | ||
| - Added a log message in case a receiver is detached from its device because the
 | ||
|   assigned CAM can't decrypt the channel.
 | ||
| - Refactored setup parameter handling for output devices:
 | ||
|   + The function cDevice::GetVideoSystem() has been deprecated and will be removed
 | ||
|     in a future version. In order to check whether a particular plugin needs to be
 | ||
|     modified if this function is removed, you can comment out the line
 | ||
|     #define DEPRECATED_VIDEOSYSTEM
 | ||
|     in device.h.
 | ||
|   + Handling the "video (display) format" (things like 16:9, 4:3, pan&scan, letterbox
 | ||
|     etc) shall now be done by the individual output devices, because the types and
 | ||
|     numbers of parameters are too device specific. The Setup/DVB parameters
 | ||
|     "Video format" and "Video display format" are still there for now and can be used
 | ||
|     by SD devices. HD devices, however, shall not use these parameters (any more),
 | ||
|     but rather implement their own setup menu with the necessary parameters for
 | ||
|     controlling output.
 | ||
|   + The dvbhdffdevice plugin has been modified accordingly.
 | ||
|   + Made it clear that cDevice::SetDigitalAudioDevice() merely tells the output device
 | ||
|     that the current audio track is Dolby Digital. This function was only used by the
 | ||
|     original "full featured" DVB cards - do not use it for new developments!
 | ||
|     If an output device has several ways of replaying audio (like HDMI or analog jack)
 | ||
|     it shall implement the proper options in its plugin's SetupMenu() function.
 | ||
| - Added support for "Pilot", "T2-System-Id" and "SISO/MISO" parameters (thanks to
 | ||
|   Rolf Ahrenberg).
 | ||
| - Now initializing the isOnVideoDirectoryFileSystem member of cRecording when
 | ||
|   scanning the video directory, so that it won't cause a delay when opening the menu
 | ||
|   on a system with a large number of recordings.
 | ||
| - Now resetting the isOnVideoDirectoryFileSystem member of a cRecording to -1 after
 | ||
|   renaming it, so that it will be re-checked upon the next call to
 | ||
|   IsOnVideoDirectoryFileSystem().
 | ||
| - Added support for systemd (thanks to Christopher Reimer). To activate this you
 | ||
|   need to add "SDNOTIFY=1" to the 'make' call.
 | ||
| 
 | ||
| 2014-04-13: Version 2.1.7
 | ||
| 
 | ||
| - No longer logging an error message in DirSizeMB() if the given directory doesn't
 | ||
|   exist. This avoids lots of log entries in case several VDRs use the same video
 | ||
|   directory and one of them has already physically removed a recording directory,
 | ||
|   while the others still have it in their list of deleted recordings.
 | ||
| - Updated the Italian OSD texts (thanks to Diego Pierotto).
 | ||
| - A cCamSlot that has WantsTsData set to true in its constructor now also gets
 | ||
|   the CAT and EMM PIDs data.
 | ||
| - Fixed a possible division by zero in frame rate detection.
 |