Tons of suggestions, bugreports, patches and other contributions have been provided by the people on the 'linux-dvb' and 'vdr' mailing lists Special thanks go to the following individuals (if your name is missing here, please send an email to kls@cadsoft.de): Carsten Koch for adding LIRC support for making the 'Recordings' menu be listed alphabetically for implementing the 'Summary' feature for adding the 'epg2timers' tool (see Tools/epg2timers) for his idea of using multiple disks (and for testing this feature) for implementing the 'new recording' indicator for suggesting that the "Back" button in replay mode should bring up the "Recordings" menu for fixing the watchdog timer if the program hangs in OSD activities for his support in keeping the Premiere World channels up to date in 'channels.conf' for fixing converting summary.vdr files that would result in a very long 'short text' for his help in testing and debugging reading the list of recordings in a separate thread for reporting some unnecessary disk access when checking if there are deleted recordings that need to be removed Plamen Ganev for fixing the frequency offset for Hotbird channels for adding the 'xtvrc2vdr' tool (see Tools/xtvrc2vdr) for adding the 'dvbrc2vdr' tool (see Tools/dvbrc2vdr) for implementing "channel grouping" Heino Goldenstein for modifying scrolling through lists to make it page up and down Guido Fiala for implementing slow forward/back for implementing the SVDRP command 'HITK' for implementing image grabbing for implementing overlay capabilities (see his 'kvdr' tool at http://www.s.netic.de/gfiala) (overlay capabilities have been removed again in VDR 0.98, since kvdr version 0.4 now does these things itself) for making the replay progress display avoid unnecessary code execution for reporting a problem with slow reaction on SVDRP input Robert Schneider for implementing EIT support for displaying the current/next info for extending EIT support to implement a complete EPG Niels de Carpentier for adding a workaround for a driver timing problem in cDvbApi::Cmd() Martin Hammerschmid for suggesting to display the direct channel select input on the OSD for suggesting to use the "Blue" button in the main menu to resume replay for implementing page up/down with the "Left" and "Right" keys for detecting a deadlock when switching channels via Schedule/Now|Next/Switch for adding a missing #include to ringbuffer.c for adding a missing 'public' keyword in device.h for pointing out a bug in displaying the group separators in the channel display for reporting a problem with a missing initialization of 'number' in cChannel for implementing a "resume ID" which allows several users to each have their own resume.vdr files for adding a call to cStatus::MsgOsdCurrentItem() to cMenuEditItem::SetValue() Bastian Guse for writing the FORMATS entry for timers.conf Matthias Schniedermeyer for implementing the 'MarkInstantRecord' setup option for his "schnitt" tools for his "master-timer" tool for helping to debug the "move to last position in list" bug for suggesting the SVDRP command CLRE for reporting a bug in handling one-shot timers that were already recording and had their start time changed into the future for suggesting to give the timer status a bit that is set when that timer is currently recording for suggesting to make the SVDRP command LSTT optionally list the channels of the timers with their unique channel ids instead of their numbers for suggesting to extend the 'event id' in EPG data to 32 bit, so that external tools can generate ids that don't collide with those from the DVB data stream Miha Setina for translating OSD texts to the Slovenian language Alberto Carraro for translating OSD texts to the Italian language Deti Fliegl for implementing the 'CurrentChannel' setup parameter for fixing setting the OSD size in the 'Confirm' interface call for fixing handling improper buffer lengths in the EIT parser Dave Chapman for implementing support for the teletext PID for his great support in switching to the NAPI for implementing DVB-T support Hans-Peter Raschke for his support in adapting VDR to DVB-C for adding the 'statdvb2vdr' tool (see Tools/statdvb2vdr) for reporting that the CA descriptors need to be sent to the CAM in the 'program' or 'ES level' sections to make SkyCrypt CAMs work Peter Hofmann for his support in adapting VDR to DVB-C Axel Gruber for his support in keeping the Premiere World channels up to date in 'channels.conf' for helping to debug support for Viaccess CAMs for reporting a problem in case none of the devices provides an OSD Arnold Niessen for translating OSD texts to the Dutch language Jürgen Sauer for implementing the -t option to set the controlling terminal Benjamin Reichardt for his help in debugging the transition to the new API Henning Holtschneider for patching 'runvdr' to check whether the driver is already loaded for reporting a bug in parsing group separators in channels.conf for pointing out a possible hangup when reading a broken epg.data file Paulo Lopes for translating OSD texts to the Portugese language Markus Lang and Ulrich Röder for making DiSEqC support configurable Markus Lang for some initial code for grouping the Setup menu into several sub-menus Jean-Claude Repetto for translating OSD texts to the French language Andre Valentin for increasing the key name buffer size for LIRC Jørgen Tvedt for translating OSD texts to the Norwegian language Stefan Huelswitt for fixing the repeat function with LIRC for making the position of the channel display configurable for making the width and height of the OSD configurable for implementing the "Jump" function in replay mode for implementing "Multi Speed Mode" for implementing backtracing for fast forward/rewind for implementing the replay mode display for fixing a crash when replaying with DEBUG_OSD=1 for fixing a crash when selecting the "Jump" function directly after setting an editing mark for reporting a possible endless loop in shifting recordings between DVB cards for making it no longer setting PIDs 0x1FFF, which apparently fixes problems with CAMs and AC3 sound only working the first time for making the main loop take an active video cutting process into account when doing shutdown or housekeeping for making the cList template class avoid ambiguities in case one defines a "list of lists" for suggesting to make the cPlugin::Start() function return a boolean value that indicates if the plugin will not be able to perform its task for suggesting to add the cPlugin::Housekeeping() function for suggesting to add 'insert' capabilities to cList for suggesting to make 'package' target in the plugin's Makefile produce a package that expands to a directory with just the plugin name and version number for suggesting to make the config directory available to plugins for suggesting to add an error message if the directory specified in the '-L' option can't be accessed for implementing several replay modes to allow players that play only audio for improving cCondVar::Wait() and implementing cCondVar::TimedWait() for reporting a bug when entering an integer value outside the limit for adding play mode pmAudioOnlyBlack for helping to fix starting a recording of the current channel with only one DVB card for making cStatus::MsgChannelSwitch() only be called if a channel is actually going to be switched or has actually been switched successfully for adding a missing StripAudioPackets() to cDvbPlayer::Action() for improving skipping channels that are (currently) not available for fixing checking the Ca() status of a cDevice for helping to fix switching audio tracks in 'Transfer Mode' on the primary DVB device for fixing handling 'Transfer Mode' on single device systems when recording an encrypted channel for reporting a problem with timers when channel IDs have a 'source' that is 0 for reporting a new/delete malloc/free mismatch in ringbuffer.c for reporting a crash in case the index file can't be accessed any more during replay for adapting VDR to 'libdtv' version 0.0.5 for reporting a bug in handling of Ca parameters with values <= MAXDEVICES, which don't indicate an actual encrypted channel for implementing setting the "broken link" flag for GOPs at the beginning of a new video sequence, which avoids artefacts when cutting for suggesting to add VDRVERSNUM to config.h for fixing a memory leak in cNonBlockingFileReader for fixing an uninitialized variable in cDisplayChannel for fixing a possible access of invalid file handles in cSIProcessor::Action() for fixing extracting the ES data in cDvbDevice::StillPicture() for changing thread handling to make it work with NPTL ("Native Posix Thread Library") for creating mutexes with PTHREAD_MUTEX_ERRORCHECK_NP, which made the 'lockingTid' stuff obsolete for suggesting to move the declaration of cMenuText to VDR/menu.h to make it available to plugins, and to add a SetText() function for reporting a bug in setting the title in the replay display of the "Classic VDR" skin in case a shorter title is set after a longer one for fixing handling of pmAudioOnlyBlack for pointing out possible race conditions in handling childTid in cThread for fixing a possible race condition in cDevice::Action() and cTSBuffer::Action() for reporting several memory leaks that were introduced through the use of cString for adding MPEG1 replay capability to cPesAssembler for fixing handling symbolic links in cRecordings::ScanVideoDir() for reporting a memory leak in tComponent for fixing a memory leak in cDvbPlayer for pointing out that recordings with empty episode names were not listed correctly in the LSTR command for fixing a memory leak in the SVDRP command LSTE for reporting a problem with the EPG scan disturbing players that have also set live PIDs for reporting a problem in SetProgress() of the 'skincurses' plugin in case Total is 0 for fixing canonicalizing the file name in the SVDRP command GRAB to allow full path names for suggesting that the SVDRP command GRAB should allow file names without extension again for reporting a problem with channel up/down switching on single card systems Ulrich Röder for pointing out that there are channels that have a symbol rate higher than 27500 for his support in keeping the Premiere World channels up to date in 'channels.conf' Mel Schächner for his support in keeping the Premiere World channels up to date in 'channels.conf' Andreas Schultz for adding support for replaying DVDs (much of this was derived from dvdplayer-0.5 by Matjaz Thaler ) for adding PTS to the converted PCM audio when replaying a DVD for fixing a crash in case there is no 'epg.data' at program start for fixing a bug in the EPG bugfix mechanism if the extended description is shorter than 3 characters for adding direct access to the index data of cPalette (needed for displaying SPUs) for pointing out a possible race condition in the cDvbPlayer for making the use of malloc/free and new/delete consistent for adding cDevice::NewOsd() to allow a derived cDevice class to implement its own OSD capabilities for implementing an SPU decoder for fixing opening /dev/video in cDvbDevice::GrabImage() in case of NEWSTRUCT driver for reporting a problem with plugin Makefiles and the NEWSTRUCT driver for pointing out some unnecessary #includes in eit.c and a problem with cMenuRecordings::Del(), which caused warnings with gcc-3.2 for suggesting a Make.config file for making EIT filtering use masks to reduce the number of filters for suggesting to remove the Mute() call from cDvbDevice::StillPicture() for suggesting to separate the startup of a plugin into an "early" and a "late" phase for changing C++ style comments in libdtv into C style to avoid warnings in gcc 3.x for implementing the TerrestrialDeliverySystemDescriptor in libdtv for fixing setting the locking pid after a timed wait for changing thread handling to make it work with NPTL ("Native Posix Thread Library") for his 'autopid' patch which was helpful when implementing automatic channel data gathering Aaron Holtzman for writing 'ac3dec' Wolfgang Henselmann-Weiss for fixing calculating the timeout value in cFile::FileReady() Uwe Scheffler for his help in keeping 'channels.conf.cable' and 'channels.conf.terr' up to date for helping to test new DVB-T handling for reporting a bug in switching the video format in the Setup/DVB menu Matjaz Thaler for improving AC3 decoding when replaying DVDs for translating OSD texts to the Slovenian language Artur Skawina for improving the font file generation in the Makefile for pointing out a problem with the ERR macro defined by ncurses.h for a patch that contained a fix for checking toFile in cCuttingThread::Action() for improving cUnbufferedFile Werner Fink for making I/O more robust by handling EINTR for fixing closing all unused file descriptors when opening a pipe for helping to debug leftover 'zombie' processes when closing a pipe for making the Dolby Digital thread start only if the recording actually contains Dolby Digital data for improving thread locking in the ring buffer to avoid possible race conditions under heavy load for improving keyboard detection for adding some missing cAudio handling calls for replacing the 'for' loops in StripAudioPackets() with memset() calls for modifying handling of audio packets in cDvbPlayer for better sync with external AC3 replay for changing thread handling to make it work with NPTL ("Native Posix Thread Library") for suggesting to replace usleep() calls with a pthread_cond_timedwait() based wait for suggesting to add more checks and polling when getting frontend events for setting the VPID before the APID in live mode to avoid unnecessary overhead in the firmware for a patch that was used as a base for implementing a modified PES packet handling in order to play AC3 audio over full featured DVB cards for pointing out an error in masking SubStreamType in cDevice::PlayPesPacket() for pointing out that the "pre 1.3.19" compatibility mode for old Dolby Digital recordings can be triggered in the default branch for pointing out that pesAssembler->Reset() needs to be called between subsequent Transfer Modes for suggestions that led to the addition of the 'Id' parameter to cAudio::Play() for pointing out that MAXDPIDS needs to be to 16 (8xAC3 + 8xDTS) for reporting a problem with ensuring there is a current audio track in case there is only one track for enabling a device to detach all receivers for a given PID for modifying switching to Dolby Digital audio in live mode, if the driver and firmware can handle live DD without the need of a Transfer Mode for fixing cDvbDevice::SetAudioBypass() in case setTransferModeForDolbyDigital is false for a patch that was used as a base to fix handling Transfer Mode when replaying Dolby Digital audio and the option '-a' was given Rolf Hakenes for providing 'libdtv' and adapting the EIT mechanisms to it Andreas Vitting for providing code that closes all unused file descriptors in the child process of a pipe (used in cPipe) Matthias Weingart for fixing handling of the volume, mute and power keys when menus are active for fixing the repeat function when using the LIRC remote control Andreas Share for his support in keeping the Premiere World channels up to date in 'channels.conf' for pointing out that section filters should only be set if the device actually has a lock for reporting a lockup with the RCU on NPTL systems Simon Bauschulte for his support in keeping the Premiere World channels up to date in 'channels.conf' Andy Grobb for completing storing the current audio volume in the setup.conf file for fixing the EPG display in case Setup.ShowInfoOnChSwitch is set to "no" for reporting a bug in handling min/max borders when entering integer values for reporting a problem with replaying in fast forward mode if the video directory is mounted via a Samba share Thomas Heiligenmann for implementing the SVDRP commands LSTR and DELR for adding MPEG1 handling to cDvbDevice::StillPicture() for extending 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 Norbert Schmidt for filling in some missing teletext PIDs Thilo Wunderlich for his help in keeping 'channels.conf' up to date for reporting a problem with accessing the epg.data file before it is fully written Stephan Schreiber for his support in keeping the Premiere World channels up to date in 'channels.conf.cable' Lauri Pesonen for avoiding linking in 'libncurses' if compiling without DEBUG_OSD=1 and REMOTE=KBD Sergei Haller for fixing the LastActivity timestamp after a shutdown prompt for fixing the "Low disk space!" message for adding the TPID to Hessen-3 in 'channels.conf' for suggesting that the EPG scan should skip channels with their 'Ca' parameter explicitly set to an other DVB card for implementing enhanced string editing with upper-/lowercase, insert/overwrite and delete Andreas Gebel for his help in keeping 'channels.conf' up to date Davide Achilli for pointing out a bug in error handling while establishing an SVDRP connection Michael Paar for enabling recording of radio channels Hannu Savolainen for translating OSD texts to the Finnish language Jürgen Schmidt for fixing a problem with 'in_addr_t' on systems with glibc < 2.2 for suggesting to optionally allow logging to LOG_LOCALn (n=0..7) Uwe Freese for suggesting to automatically close an empty recordings page after deleting an entry Rainer Zocholl for suggesting a confirmation prompt when the user presses the "Power" button and there is an upcoming timer event for reporting a bug in skipping the next hit of a repeating timer for reporting a problem with staying off the end of an ongoing recording while replaying in time shift mode for suggesting that VDR should stop if one of the configuration files can't be read correctly at program startup for reporting a possible race condition in generating the DVB device names for pointing out that non-threadsafe functions should be replaced with their threadsafe versions for pointing out a threadsafe and overflow problem with time_ms() Oleg Assovski for adding EPG scanning for another 4 days Adrian Stabiszewski for fixing the SVDRP GRAB command in case the video device can't be opened Bernd Schweikert for adding 'Ca' code 201 for 'Cryptoworks, GOD-DIGITAL' to 'ca.conf' Mirko Günther for suggesting the -m command line option for suggesting the SVDRP command VOLU for reporting a bug in keeping track of the current channel number when moving channels in the "Channels" menu for reporting a bug in toggling channels with the '0' key Achim Lange for replacing 'killproc' with 'killall' in 'runvdr' to make it work on Debian for reporting a bug in switching back the replay mode display in time shift mode for his help in keeping 'channels.conf.cable' and 'channels.conf' up to date Klaus Wolf for reporting a bug in restoring the CICAM values for a fourth DVB card Bernd Zierath for helping to debug scrolling the "Channels" menu in case the cursor ends up on a group separator Truls Slevigen for translating OSD texts to the Norwegian language Ruben Nunez Francisco for implementing FreeDiskSpaceMB() without external 'df' command for translating OSD texts to the Spanish language Mirko Dölle for reporting a bug when a timer records over midnight of a day that had a change in Daylight Saving Time for suggesting to avoid the external 'find' command to scan the video directory for reporting a problem with inconsistent channel and timer lists for making the "Play" key in live viewing mode resume a previous replay session for suggesting to allow defining key macros for all non-modeless keys for reporting a bug in entering '0' in a cMenuEditIntItem Michael Rakowski for translating OSD texts to the Polish language Michael Moster for initially reporting the problem with wrong EPG data in the Schedules menu (somehow I had misplaced his message...) Tobias Kerner for helping to debug a problem with wrong EPG data in the Schedules menu Dirk Wiebel for reporting 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 Gerald Raaf for helping to fix the still picture workaround in case the progress display is active for his support in keeping the Premiere World channels up to date in 'channels.conf' for reporting a problem in device handling in the CICAM menu in case a VDR instance was started with a specific device using the -D option Andreas Roedl for adding some DVB-T channels for Berlin (Germany) to channels.conf.terr Jean Martin for pointing out a problem with OSD color palette handling on "big endian" systems Steffen Koch for reporting a crash when selecting the "Jump" function directly after setting an editing mark Matthias Hilbig for fixing some missing ',' in i18n.c Simon Dean for reporting a problem with '.' at the end of a directory name in case of VFAT=1 (Windows can't handle these) Dimitrios Dimitrakos for translating OSD texts to the Greek language for fixing handling the LOG_LOCALn parameters in the -l option for providing the iso8859-7 fonts Marcus Kuba for reporting a bug in the unit of the "SVDRP timeout" setup parameter Ulrich Petri for his help in debugging a crash on systems with disks that have a block size larger than 1MB Oliver Lorei for his support in keeping the Premiere World channels up to date in 'channels.conf.cable' Andreas Böttger for reporting a bug in skipping forward in time shift mode near the end of the recording for fixing setting system time to avoid time jumps in case of faulty data for reporting a bug in the "Day" field of the "Edit timer" menu when pressing '0' to switch from "single shot" to "weekly", followed by the "Right" key Onno Kreuzinger for reporting leftover references to the file FORMATS in MANUAL and svdrp.c Rudi Hofer (Rudi.Hofer@cadsoft.de) for his help in keeping 'channels.conf' up to date Gregoire Favre for fixing some function headers to make them compile with gcc 3.x for reporting a bug in taking an active SVDRP connection into account when doing shutdown for translating OSD texts to the French language for suggesting to initiate an "emergency exit" if there are UPT errors during a recording Sven Grothklags for fixing the cutting mechanism to make it re-sync in case a frame is larger than the buffer for implementing the CableDeliverySystemDescriptor in libdtv Tomas Prybil for translating OSD texts to the Swedish language Matthias Fechner for pointing out a bug in parsing 'E' records in epg2html.pl Paul Lacatus for translating OSD texts to the Romanian language Istvan Koenigsberger and Guido Josten for translating OSD texts to the Hungarian language Christian Rienecker for making the VFAT handling more tolerant for users who forget to turn it on Joerg Riechardt for filling in some missing teletext PIDs Holger Wächtler for some valuable advice during adapting to the NEWSTRUCT driver for suggesting to use FE_READ_STATUS to read the current frontend status Jürgen Zimmermann for adding some missing #includes to files in libdtv for gcc 3.2 Helmut Auer for reporting a superfluous error message in cLockFile for suggesting to make the "Zap timeout" a setup variable for fixing a frequency/transponder handling mixup when setting the time from the DVB data stream for implementing a default cRemote::Initialize() for suggesting to increase the default value for 'Min. user inactivity' to 300 minutes for suggesting to add cChannel::LinkChannels() and cChannel::RefChannel() for suggesting to give a message when an instant recording is started for suggesting to retry a shutdown after a while for separating the 'install' target into several individual targets for reporting a problem with scrolling with Up/Down in case there are non-selectable items at the beginning of the menu for a patch that was used to implement stopping scanning the video directory if there are too many levels of symbolic links for reporting that an attempt to call a plugin's main menu function while a message is being displayed didn't work for reporting a problem with the "Press any key on the RC unit" step when learning LIRC remote control codes Jeremy Hall for fixing an incomplete initialization of the filter parameters in eit.c Oliver Endriss for fixing a missing Flush() call in the remote control learning procedure for helping to test and debug the new channel source and DiSEqC handling for reporting a bug when pressing the "Blue" button in the main menu without having displayed it for helping to debug a crash when closing down with remote control plugins for adding some satellites to 'sources.conf' for reporting a bug in learning remote control keys in case there is more than one remote control for reporting a crash when learning the keys of several remote controls and pressing buttons of those that have already been learned for making the remote control learn procedure accept key presses only from the current remote control for reporting a bug in the EPG scanner, which broke 'Transfer Mode' as soon as it kicked in for providing examples for 'diseqc.conf' for improving deleting stale lock files for fixing high CPU load in 'Transfer Mode' for making the "Left" and "Right" buttons 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 for reporting a bug in setting the PCR-PID in case it is equal to one of the other PIDs for reporting a problem with cPlugin::Start() being called after trying to learn the remote control keys for reporting a bug in reading 'epg.data' for channels with non-zero RID for fixing I/O handling in case an explicit controlling terminal is given for fixing displaying still pictures, now using the driver's VIDEO_STILLPICTURE call directly for reporting and helping to debug dropping out of replay mode while viewing a recording that is still going on for fixing checking for VIDEO_STREAM_S in cRemux::SetBrokenLink() for suggesting to add 'repeat' function keys '7' and '9' for fixing handling rc key learning in case cRemote::Initialize() returns 'false' for suggesting to change the default "Lifetime" to 99 for pointing out that the LNB power needs to be explicitly turned on at startup, because newer drivers don't do this any more for adding a missing cStatus::MsgOsdClear() to cDisplayChannel::~cDisplayChannel() for reporting that the "Classic VDR" skin wrongly displayed unused color buttons for reporting some missing cStatus::MsgOsdTextItem() calls for reporting a missing "Editing process finished" message with skins for adding a sample setup for 'DisiCon-4 Single Cable Network' to 'diseqc.conf' for reporting a problem with the name of the remote control for which the keys are being learned overwriting the date/time in the 'classic' skin for making cDvbOsd check available OSD memory at runtime for making cEIT::cEIT() drop EPG events that have a zero start time or duration for reporting an unnecessary OSD draw operation caused by the audio track description display in the ST:TNG skin's channel display for suggesting to make CharArray::DataOwnData::assign() in 'libsi' more robust against invalid data for reporting a problem in extracting APIVERSION with older versions of 'sed' for fixing broken APIVERSION extraction line in 'newplugin' Reinhard Walter Buchner for adding some satellites to 'sources.conf' for his help in testing tuning with "Motor-DiSEqC" for his help in debugging CAM support for reporting a problem with recording FTA channels on the CAM device in case the CAM is not connected to the primary device Lauri Tischler for helping to test and debug the new channel source and DiSEqC handling for reporting a faulty parameter initialization in menu.c for reporting a problem in case the original current channel becomes unavailable due to a recording on a different transponder for reporting a compiler warning about virtual cConfig::Load() functions for reporting a warning about character comparison in libsi/si.c for adjusting the Makefile to the dvb-kernel driver on kernel 2.6 and up Andy Carter for helping to test new DVB-T handling for his help in keeping 'channels.conf.terr' up to date Robert Schiele for his help in keeping 'channels.conf.cable' up to date for reporting some faulty default parameter initializations for suggesting to only set the Makefile variables CXX and CXXFLAGS if they are not yet defined for fixing a problem with user defined CFLAGS in libdtv/libvdr/Makefile Gerhard Steiner for suggesting that the SVDRP command PUTE shall trigger an immediate write of the 'epg.data' file for suggesting the new configuration file 'reccmds.conf' to define commands that shall be executed from the "Recordings" menu for suggesting to interpret the character '|' in the description texts of EPG records as a newline character for reporting a bug in displaying messages in the status line in case they exceed the OSD width for fixing resume file handling in case the resume.vdr file can't be written for reporting a problem with newly created timers in case they are not confirmed with "Ok" for reporting an occasional "Broken pipe" error in SVDRP connections for reporting that some cable channels don't mark short channel names according to the standard Jaakko Hyvätti for translating OSD texts to the Finnish language for adding a check if there is a connection to the keyboard for fixing recording overlapping timers on the same channel in case DO_REC_AND_PLAY_ON_PRIMARY_DEVICE and/or DO_MULTIPLE_RECORDINGS is not defined for fixing the minimum lifespan of deleted recordings for suggesting to improve channel switching in case of numerical input by switching as soon as the channel is unique for implementing an "EPG linger time" Dennis Noordsij for reporting a small glitch when switching channels Steffen Barszus for reporting a bug in switching audio tracks in 'Transfer Mode' on the primary DVB device for making the program use the values of VIDEODIR and PLUGINDIR defined in Makefile or Makefile.config as defaults for helping to debug a crash when using the --terminal option without having access to the given terminal Peter Seyringer for reporting a bug in saving the polarization parameter of channels that have a number in the 'source' parameter Stefan Schluenss for reporting a bug where PID handles were not closed correctly Régis Bossut for pointing out that with some providers the channels can only be distinguished through the RID Andreas Kool for his help in keeping 'channels.conf.cable' up to date for fixing the TS to PES repacker so that it works with MPEG1 streams for reporting a problem with empty values in setup.conf for fixing detecting the /dev/videoN devices for GRAB in case there are others before the DVB devices for fixing a possible NULL pointer access in cEITScanner::Process() for pointing out that 'vdr --version' failed on an UTF-8 system Guy Roussin for suggesting not to display channel group delimiters without text for reporting a bug in handling channels in the "Channels" menu in case there are ':@nnn' group separators without names for suggesting to clear the channel info display when entering numeric keys to switch channels Georg Hitsch for his help in keeping 'channels.conf' up to date Clemens Kirchgatterer for suggesting to change source directory name for plugins from 'SRC' to 'src' for reporting a problem with user defined CFLAGS in libdtv/libvdr/Makefile Emil Naepflein for suggesting to take an active SVDRP connection into account when doing shutdown or housekeeping for fixing selecting the device, because sometimes an FTA recording terminated a CA recording for suggesting to never delete edited recordings automatically if the disk runs full for making volume control more linear Gerald Berwolf for suggesting to deactivate some templates in tools.h in case some plugin needs to use the STL Thomas Sailer for pointing out how to set the terminal parameters to read from the keyboard Sven Goethel for making switching audio channels work without stopping/restarting the DMX for fixing initializing the highlight area in cDvbSpuDecoder for suggesting to add cDevice::GetSTC() for making some changes to the SPU decoder interface Jan Rieger for suggestions and testing raw keyboard input for suggesting to make cOsdMenu::Display() virtual, which allows plugins to do some additional processing after calling the base class function Walter Stroebel for introducing "Doxygen" to document the VDR source code Paul Gohn for adding 'Hrvatska radiotelevizija' and 'RTV Slovenija' to ca.conf Teemu Rantanen for increased the maximum possible packet size in remux.c to avoid corrupted streams with broadcasters that send extremely large PES packets for adding TS error checking to remux.c for pinpointing a problem with excessive memmove() calls in 'Transfer Mode' for fixing faulty calculation of section length in eit.c for reporting a problem in calculation of channel ids for tv stations that use the undefined NID value 0 for adding EPG preferred languages for reporting and helping to debug resetting the EPG data versions after changing the preferred languages Jan Ekholm for adding/improving some Swedish language OSD texts for reporting a compiler warning in g++ 3.2.3 regarding cReplayControl::Show() for reporting and helping to debug a problem in frequency handling when setting the CA descriptors in cDvbTuner::Action() for suggesting to add the year to recording dates in LSTR Marcel Wiesweg for pointing out a problem with high CPU load during replay for reporting broken support for raw OSDs of plugins for reporting a problem with cReceivers that want to receive from PIDs that are currently not transmitting for fixing volume display in case a plugin has its own OSD open for providing 'libsi' and adapting the EIT mechanisms to it for fixing testing for matching section filters in case they are turned off for adding 'libsi' include files to the 'include' directory, so that plugins can use them for his help in fixing some issues with gcc 3.4 for fixing a memory leak in NIT processing for adding a few missing initializations for adding play mode pmVideoOnly for fixing a possible crash with inconsistent SI data for pointing out a problem with the cChannel copy constructor for fixing cDvbTuner to avoid lockups on NPTL systems for pointing out how to detect broken PMT records Torsten Herz for fixing a possible deadlock when using the "Blue" button in the "Schedules" menu to switch to an other channel for reporting a wrong EPG bugfix code number for the MAX_USEFUL_SUBTITLE_LENGTH fix for fixing a bug in resetting OSD color palettes for adding missing 'const' to some cChannel member functions for fixing handling Priority -1 in cDvbDevice::ProvidesChannel() for fixing processing EPG data in case there is no title Steffen Becker for reporting a problem with CPU load peaks (in the EPG scanner) Florian Bartels for reporting a faulty behaviour of the "Mute" key in case the channel display is visible Sascha Volkenandt for helping to fix a faulty behaviour of the "Mute" key in case the channel display is visible for making the 'epg.data' file being read after all plugins have been started for reporting a problem with cReceivers that use a ring buffer and didn't immediately return from their Receive() function if the buffer runs full for reporting a crash in case there is no DVB hardware present for his support in debugging the the "Unknown picture type error" for reporting a crash when switching the skin and having selected a non-default theme that is not available for the newly selected skin for suggesting to map the color name "None" to #00000000 when processing XPM data for suggesting to also reset the palette in cBitmap::DrawBitmap() if the entire bitmap area is covered for reporting a bug in cBitmap::DrawPixel(), which messed with other bitmaps' palettes in case the pixel coordinates were outside this bitmap for suggesting to allow drawing "transparent" texts for suggesting to ignore unused "none" color entries in XPM files written by some broken graphics tools for fixing a memory leak in theme description handling for pointing out a "near miss" condition in cCondVar for reporting a bug in cChannel::SetName() in case only the ShortName or Provider has changed for fixing a possible recursion in cControl::Shutdown() for reporting that the "Audio" menu is not displayed with the "Green" button from the "Main" menu in case there is only one audio track 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 for reporting a bug in timeout handling in cRwLock::Lock() for pointing out that the SVDRP command DELR deleted recordings that are currently being written to by a timer for fixing a crash in cConfig::Load() when compiling on the PPC for reporting '\n' in an esyslog() call in osd.c for reporting missing '&' in the SetAreas() example in PLUGINS.html for reporting a memory leak in cString::operator=() for a patch that was used as a base to implement cPlugin::Active() Malcolm Caldwell for modifying LOF handling to allow for C-band reception for reporting a crash in creating a new timer in case there is no device in the system that can actually receive any channel for suggesting to re-introduced the code that waits for a tuner lock in VDR/device.c Ludwig Nussel for making the LIRC thread avoid high CPU load in case the connection to LIRC gets lost for fixing handling repeat function with LIRC for reporting a problem with the LIRC remote control trying to learn keys even if it couldn't connect to the LIRC daemon for making the plugin library directory configurable via Make.config for reporting a problem on systems that have UTF-8 enabled for pointing out a flaw in the the description of cRingBufferLinear for reporting a bug in cRingBufferLinear::Get() in case the buffer wraps around for adding some checks when canceling a thread and removing the usleep() in cThread::Start() for removing the LOCK_THREAD from the LIRC thread for making the Makefile patch friendlier for a patch that was used for implementing setting the user id Thomas Koch for his support in keeping the Premiere World channels up to date in 'channels.conf' for implementing the SVDRP command STAT for reporting a problem with "pending" timers that blocked others that actually could record Stefan Hußfeldt for his help in keeping 'channels.conf.cable' up to date for adding 'channels.conf.terr' entries for Lübeck Christoph Friederich for reporting a bug in deleting the last recording in the "Recordings" menu, which started pausing live video Andreas Brachold for his support in keeping 'channels.conf.terr' up to date for fixing 'newplugin' and libsi/Makefile to use the compiler defined in $(CXX) for generating file dependencies for suggesting that the 'plugins-clean' target of the Makefile should only delete the actual plugin library files from this version of VDR for making files and directories created with rights according to the shell's umask settings for reporting that there are empty info.vdr files created if there is no EPG info available for implementing the SVDRP command MOVC for fixing the "plugins-clean" and "plugins-install" targets in the Makefile for suggesting to make the log messages regarding lost lock of devices "info" instead of "error" for modifying the German OSD texts to be "less technical" Manuel Hartl for suggesting to extend the logging info when starting/stopping timers Benjamin Harling for suggesting to add a note regarding non-VDR files in the /videoX directories to INSTALL Christian Jacobsen for making the LIRC interface skip keys that come in too fast for reporting a problem in handling the '-E' options in version 1.3.18 for reporting a problem in case a station defines all 32 audio PIDs for suggestions and experiments regarding the buffer reserve in cTransfer for reporting a problem with 'summary.vdr' files with more than two empty lines for reporting a problem with multiple entries of the same subdirectory in the "Recordings" menu Andreas Mair for reporting a short display of the main menu if a plugin displays its own OSD and is started through a user defined key macro for reporting a problem with extremely long summary fields in timers for reporting a bug in handling the tfRecording flag when reading timers Olivier Jacques ) for translating OSD texts to the French language for implementing the setup option "OSD/Channel info time" Kai Moeller for reporting a double call to MainMenuAction() of a plugin if invoked via a hotkey Carsten Siebholz for adding cStatus::OsdItem() to provide the entire list of menu items to a plugin Wolfgang Goeller for reporting a bug in keeping live video active in case the primary device doesn't have an MPEG decoder Jonan Santiago for fixing handling EPG data where the "extended event descriptor" comes before the "short event" or a "time shifted event" for adding support for circular polarization Juri Haberland for his help in keeping 'channels.conf.terr' up to date Alfred Zastrow for suggesting to implement separate PausePriority and PauseLifetime parameters for the recordings created when pausing live video for reporting two warnings when compiling with gcc 3.3.1 for reporting a bug in handling menu status messages when the list contents is scrolled for reporting that without the usleep() call in cDvbPlayer::Action() VDR runs on NPTL systems for reporting a missing include statement in the 'sky' plugin Matthias Raus for reporting a problem with starting the editing process if no marks have been set Marc Rovira Vall , Ramon Roca and Jordi Vilà for translating OSD texts to the Catalanian language Lars Bläser for reporting a bug in EPG bugfix statistics which made log entries for undefined channels Niko Tarnanen for translating OSD texts to the Finnish language Rolf Ahrenberg for translating OSD texts to the Finnish language for fixing internationalization of the text for "Setup/DVB/Audio language(s)" for making pressing the Power button not stop Transfer Mode or replay immediately for making EPG events without a title display "No title" instead of "(null)" for changing the title of the recording info menu for reporting a bug in handling key macros with keys after @plugin for adding compiler options "-fPIC -g" to all plugins for adding a leading '0' to the day in the DayDateTime() function for reporting a crash in the Schedule menu with events that have no title for a patch that was used to implement automatic cursor advance when entering text via the numeric keys for reporting a problem with expired timers when shutting down via the Power key for fixing handling the "Blue" key in the "Schedule" menu for the current channel for making cMenuText use the given font for making the channel number be reset if the number entered through the numeric keys exceeds the maximum channel number for suggesting to also set the language codes when setting the audio track descriptions for reporting a problem in setting the audio language codes in 'Transfer-Mode' for fixing cReadLine::Read() for lines that end with the infamous "\r\n" for adding a missing "Button$" for the Timer button and "Key$" in skinclassic.c for reporting a bug in handling the color button texts when switching from the 'Schedule' menu of a channel without EPG info to the 'What's on now' menu for reporting a bug in handling empty titles in cEvent::FixEpgBugs() for suggesting to replace the "Really restart?" prompt in the call to cPluginManager::Active() in menu.c to "restart anyway?" Ralf Klueber for reporting a bug in cutting a recording if there is only a single editing mark for reporting a bug in handling a channels.conf that contains a ":@nnn" line as its last entry Hermann Gausterer for suggesting to switch to the recording channel in case the current channel becomes unavailable Peter Bieringer for reporting a problem with duplicate recordings with the same file name for suggesting to implement the command line option '--vfat' for reporting a leftover 'summary.vdr' in vdr.5 for adding more error messages and line numbers when reading EPG data and info.vdr for fixing handling "more than 3 byte" key sequences in cKbdRemote::ReadKeySequence() for suggesting to ignore lines tagged with '#' in the 'info.vdr' file of a recording Alexander Damhuis for reporting problems when deleting a timer that is currently recording Antonio Ospite for translating OSD texts to the Italian language Karim Afifi for reporting a problem with breaking off replay in case the user presses "Play" or "Pause" too soon after going into "Pause live video" mode Jon Burgess for pointing out a problem with NPTL ("Native Posix Thread Library") for changing thread handling to make it work with NPTL ("Native Posix Thread Library") for fixing a memory leak in thread handling when using NPTL for reporting a bug in handling the '.update' file in case the video directory is not at the default location Thomas Schmidt for reporting a crash when canceling a newly created timer for making 'diseqc.conf' a required file only if Setup.DiSEqC is activated Michael Walle for reporting a bug in channel switching after Left/Right has been pressed Thomas Keil for suggesting to change 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 for reporting a bug in handling the color buttons in the "Edit channel" menu for adding a note about the config files of plugins to INSTALL for a patch that was used as a base to implement setting the initial channel and volume Kenneth Aafløy for fixing checking CA capabilities with the dvb-kernel driver Ernst Fürst for reporting a crash in case a VFAT file system is used without compiling VDR with VFAT=1 Reinhard Nissl for reporting a name clash because of function crc32() in libdtv/libsi/si_parser.c when using other libraries that also implement a function by that name for reporting a bug in handling ':' characters in channel names when reading channels.conf for adding cDevice::Flush() to make sure that all data in the video card's buffers has been processed for reporting a bug in checking the last area for misalignment in cOsd::CanHandleAreas() for suggesting to make sure the OSD reports oeWrongAlignment errors before any oeAreasOverlap error for reporting a a crash in the time search mechanism for taking the complete size of available data into account when deciding whether to clear the transfer buffer to avoid overflows for reporting a high CPU load in still picture mode after removing the usleep() call from cDvbPlayer::Action() for reporting a race condition in starting a thread for implementing cDolbyRepacker for better handling of Dolby Digital PES packets for extending some buffer sizes to allow handling HDTV streams for adding substream handling to cDolbyRepacker for modifying cDolbyRepacker to make sure PES packets don't exceed the requested length for fixing a possible freeze in pause mode in case a device's PlayPesPacket() function permanently returns 0 for fixing a typo in detecting UTF-8 for fixing handling fragments of less than 4 byte in cPesAssembler for some rearrangements in cDvbPlayer::Action() to avoid lockups on NPTL systems for implementing cVideoRepacker in remux.c to make sure every PES packet contains only data from one frame for fixing the call to Channels.Unlock() in cEITScanner::Process() for making cDvbPlayer::Goto() append a Sequence End Code to get the image shown immediately with softdevices for fixing cDvbSpuBitmap::putPixel() for implementing cAudioRepacker in remux.c for modifying handling of audio packets for radio channels in remux.c for suggesting to always use stream id 0xE0 for the video stream, to avoid problems with post processing tools that choke on different ids for fixing cDvbPlayer::SkipFrames() to properly handle radio recordings for improving TS/PES conversion to better handle lost TS packets for suggesting to make the DVB devices retune (and, if applicable, resend the DiSEqC data) if the lock is lost for fixing handling TS packets in cTS2PES for adding a mutex to synchronize cDevice::PlayPesPacket() and SetCurrentAudioTrack() for a suggestion that lead to implementing cDevice::Transferring() for fixing replaying recordings of radio channels with many audio tracks for speeding up cRemux::ScanVideoPacket() for implementing cDevice::ForceTransferMode() for changing the behaviour when hitting the end of a recording in fast forward mode for suggesting to give the cRemote::CallPlugin() function a boolean return value Richard Robson for reporting freezing replay if a timer starts while in Transfer Mode from the device used by the timer, and the timer needs a different transponder Manfred Schmidt-Voigt for reporting a problem with running out of disk space while cutting in case there are still deleted recordings to remove Javier Marcet for reporting a problem when starting a recording on the primary device if there is a replay session active Peter Waechtler for adding channels for DVB-T Hannover (Germany) to channels.cont.terr Robert Bartl for reporting a hangup in SVDRP when the client disappears without sending QUIT Sebastian Frei for his support in keeping 'channels.conf' up-to-date for suggesting to rename the Makefile target 'plugins-clean' to 'clean-plugins' Rene Bartsch for reporting a bug in setting the primary device in case none of the devices provides an MPEG decoder Christoph Hermanns for reporting a bug in handling the "Red" button in the "Schedules" menu in case there are no events listed for a particular channel for reporting a leftover 'summary.vdr' in vdr.1 Oskar Signell for pointing out a problem with setting an editing mark while in "Pause" mode, where replay was not immediately positioned to the marked frame for making single shot timers and events show the day of week Dirk Essl for reporting a wrong URL to the 'Doxygen' tool in INSTALL Hans Dingemans for translating OSD texts to the Dutch language Alexander Wetzel for suggesting to let VDR start up even if 'keymacros.conf' references a plugin that is currently not loaded Marco Franceschetti for updating 'ca.conf' Jens Groth for reporting a an outdated driver version number in INSTALL Andreas Trauer for fixing missing channel info after an incomplete channel group switch for removing the unused 0x73 (TOT) filter in eit.c Markus Hardt for his help in keeping 'channels.conf.terr' up to date Thomas Rausch for making VDR try to get a timer's channel without RID when loading 'timers.conf' Thomas v. Keller for reporting a crash in case the CAM connection fails while a CAM menu is being presented Richard Scobie for adding Asia-Pacific satellites to 'sources.conf' Luke Jenkins for adding North American satellites to 'sources.conf' Dirk Mueller for fixing getting the list of recordings in case VDR is started from a directory where it doesn't have access to Emil Petersky for adding "Slovak Link" and "Czech Link" to 'ca.conf' Alessio Sangalli for providing the iso8859-1 small font Pedro Miguel Sequeira de Justo Teixeira for reporting a problem with crc32 in SI handling on 64bit systems for reporting an alignment problem in CAM access on 64bit systems Antonino Sergi for adding 'StreamType' setting to CAM communication Martin Holst for reporting a lockup in 1.3.0 when the EPG scanner kicks in Robert Huitl for fixing 'su' call in 'runvdr' to make it work on systems that require the user name to appear before the command option Vyacheslav Dikonov for translating OSD texts to the Russian language Stephan Epstein for reporting a wrong 'delta' value in the call to the shutdown script Christian Tramnitz for pointing out a problem with wrong parameter settings when scanning NITs for terrestrial transponders for his support in debugging a problem in setting the source type for newly detected terrestrial transponders Jens Rosenboom for fixing the SVDRP command 'STAT DISK' to avoid a 'division by 0' in case the disk is full Andreas Regel for fixing handling bitmap indexes for 256 color mode for reporting a bug in removing the "scanning recordings..." message in case the video directory is empty for pointing out a missing call to cStatus::MsgOsdtatusMessage(NULL) in cSkins::Message() for reporting a problem in handling Transfer Mode for radio channels for reporting a problem with messages when a cOsdObject uses the raw OSD for implementing palette replace mode in the OSD bitmaps Thomas Bergwinkl for fixing the validity check for channel IDs, because some providers use TIDs with value 0 for pointing out that transponder handling didn't work with satellites that provide two transponders on the same frequency, with different polarization for fixing detecting if there can be any useful further input when entering channel numbers for fixing handling the '0' key for switching between the last two channels for making cPatFilter::Process() check whether the channel exists before setting the PMT filter Stéphane Esté-Gracias for fixing a typo in libsi/si.h for fixing some descriptor handling in 'libsi' for pointing out a problem with "itemized" texts in EPG data for pointing out a problem with taking the Sid into account when detecting version changes in processing the PMT Marc Hoppe for fixing handling the current menu item Michael Pennewiß for pointing out that an empty EPG event means there is currently no running event Marcus Mönnig for adding some 3-letter language codes Pekka Virtanen for adding language code handling to the subtitling descriptor in 'libsi' for adding missing NULL checks when accessing sectionHandler in device.c John Kennedy for publishing "A Fast Bresenham Algorithm For Drawing Ellipses" (found at http://homepage.smc.edu/kennedy_john/BELIPSE.PDF) Drazen Dupor for translating OSD texts to the Croatian language Prakash K. Cheemplavam for fixing some issues with gcc 3.4 for some minor code cleanups Miko Wohlgemuth for reporting a problem with the OSD alignment in the SPU decoder Michal Dobrzynski for reporting a freezing picture when a recording starts on a system that always uses 'Transfer Mode' Wayne Keer for reporting a bug in handling descriptor loops in 'libsi', which had sometimes caused invalid CA ids to be added to the channel definitions for pointing out a problem with the initialization of aPid1 and aPid2 in cDvbDevice::cDvbDevice() in case a patch references them for suggesting to make the "Channel not available!" message and mtInfo instead of mtError for reporting an unused variable from cTimer::GetWDayFromMDay() for reporting a spelling error in 'canceling' for adding some 'mkdir -p' to the Makefile's 'install' target for reporting some missing braces in remux.c for suggesting to modifiy the Makefile to copy additional libraries a plugin might provide Marco Schlüßler for fixing handling colors in cDvbSpuPalette::yuv2rgb() for fixing setting lnb voltage if the frontend is not DVB-S for fixing missing audio after replaying a DVD for pointing out that it is unnecessary to add section filters to the list of filters if they can't be opened for fixing handling error case '-1' when polling section filters for suggesting to avoiding flashing effects in the OSD of full featured DVB cards by explicitly clearing the OSD windows before opening them for fixing a possible NULL pointer assignment in cMenuText::SetText() for doing some testing regarding buffer performance and giving me some hints that finally lead to finding out that the basic problem causing buffer overflows was in EnableGet()/EnablePut() being called too often for avoiding unnecessary section filter start/stops for pointing out that if one PID can't be added, the whole cDevice::AttachReceiver() should fail and all PIDs added so far should be deleted for fixing attaching a cPlayer to a cDevice, so that 'Operation not permitted' errors don't occur any more for reporting a problem with initialization of the main program loop variables with older compiler versions for adding the 'portal name' to cChannels for fixing the cDvbSpuDecoder for fixing a short glitch when starting a recording on the primary device while in replay or transfer mode for fixing 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" for some improvements to cPoller for implementing displaying mandatory subtitles in the SPU decoder for pointing out a problem with canceling the LIRC thread for a patch that implements substream handling into cDevice::PlayPesPacket() for pointing out that PlayPes(NULL, 0) needs to be called in cTransfer::Action() when clearing the transfer buffer to avoid overflows for adding CMD_SPU_CHG_COLCON to cDvbSpuDecoder::setTime() for suggesting to force a new resync after a call to cRemux::Clear() for suggestions that led to the addition of the 'Id' parameter to cAudio::Play() for removing the "Cleared/PlayPes(NULL, 0)" handling from cTransfer::Action(), since this is now done when attaching the player to the device for adding DeviceClrAvailableTracks() and DeviceSetCurrentAudioTrack() to cPlayer for reporting a missing 'resultSkipped = 0' in cRemux::Clear() for reporting a missing reset of the 'repacker' in cTS2PES::Clear() for avoiding unnecessary calls to SetPid() in cDvbDevice::SetAudioTrackDevice() for pointing out that EnsureAudioTrack() in cDevice::SetChannel() should not be called if a Transfer Mode is started, to avoid setting the audio PID on the primary device for fixing calling cStatus::MsgChannelSwitch() in cDevice::SetChannel() for increasing POLLTIMEOUTS_BEFORE_DEVICECLEAR in transfer.c to 6 to avoid problems with the larger buffer reserve for adding support for setting the video display mode for fixing handling transparent areas in cDvbSpuBitmap for fixing a bug in libsi's SubtitlingDescriptor::getLength() for removing scaling coordinates in letterbox mode from cDvbSpu for fixing a wrong inheritance in libsi's SubtitlingDescriptor::Subtitling for adding cPlayer::DeviceSetVideoDisplayFormat() for making the setup not being saved in case of a fatal error, to keep the volume level from being set to a wrong value for fixing a possible hangup when ending a replay session while cIndexFile::CatchUp() is waiting for improving resetting CAM connections for fixing handling EPG data for time shifted events for fixing detecting short channel names for "Kabel Deutschland" for reporting that the FATALERRNO macro needs to check for a non-zero errno value for reporting missing mutex locks in cCiMenu::Abort() and cCiEnquiry::Abort() for fixing a race condition in the SPU decoder for fixing initializing the day index when editing the weekday parameter of a repeating timer for figuring out some obscure length bytes the the CA PMT Reply data of AlphaCrypt CAMs for fixing handling OSD areas that have invalid sizes for removing unused variables in skinclassic.c and skinsttng.c for removing leftover 'needsBufferReserve' variable from cTransfer for adding an 'Id' parameter to cDevice::PlayAudio() to allow plugins to easier process the audio data for improving OSD area handling in cDvbSpuDecoder for suggesting to log the description (if present) in case a thread is canceled for fixing handling DPID when deciding whether to switch to 'Transfer Mode' for adding VBITeletextDescriptorTag, TeletextDescriptorTag, LocalTimeOffsetDescriptorTag and PremiereContentTransmissionDescriptor to 'libsi' for pointing out that plugins might be compiled with different DVB driver header files than VDR itself Jürgen Schmitz for reporting a bug in displaying the current channel when switching via the SVDRP command CHAN Philip Lawatsch for debugging a buffer overflow in eit.c Jouni Karvo for suggesting to make the cOsd constructor 'protected' for fixing checking for the presence of NPTL Olaf Henkel for reporting a problem with long event texts in the "Classic VDR" skin Martin Dauskardt for reporting a problem with switching channels while an encrypted channel is being recorded Maynard Cedric for reporting a problem in handling the color button texts in cMenuEditStrItem Jörg Knitter for reporting a problem in case the video partition is mounted with "iocharset=utf8" Mike parker for helping to test support for NVOD channels Dick Streefland for fixing a crash in case the last line in channels.conf is a group separator and that group is selected in the channel display Kimmo Tykkala for pointing out a problem in showing the replay mode if the OSD is currently in use Arthur Konovalov for translating OSD texts to the Estonian language for fixing a missing ',' in the Greek OSD texts for fixing a missing ',' in the Swedish OSD texts Milos Kapoun for suggesting to skip code table info in SI data for adding missing Czech characters to fontosd-iso8859-2.c Udo Richter for refining the formula for making volume control more linear for fixing handling lifetime when deciding whether to delete a recording for reporting a problem in handling page up/down in menu lists in case there are several non selectable items in a row for fixing handling 'page down' after it was broken in version 1.3.26 for suggesting a fix for an out-of-bounds memory access with audio language ids for reporting a problem with cRemux in a single thread for adding 'Service' functions to the plugin interface for reporting an unused MAINMENUENTRY in svdrpdemo.c for reporting a bug in opening recording folders in case the last replayed recording no longer exists for reporting a missing check against MAXOSDAREAS in cOsd::CanHandleAreas() for making the Makefile report a summary of failed plugins for reporting a problem with the new handling of k_Repeat keypresses in channel switching for reporting a problem with auto advance in string entry fields when pressing Up/Down in insert mode for fixing handling the "Setup/OSD/Menu button closes" option when set to 'yes' in case a replay is active for reporting a problem with plugins that report errors when VDR is run with the --help or --version option for suggesting to add a warning about plugins that don't honor APIVERSION in their Makefile for providing a shorter version of the 'sed' expression for extracting APIVERSION for fixing a bug in handling the "Power" key in case a recording is going on and no plugin is active for suggesting to add 'eval' to the $VDRCMD call in 'runvdr' to avoid problems with quoting for fixing handling the "Power" key in case a timer is about to start recording Sven Kreiensen for his help in keeping 'channels.conf.terr' up to date Stefan Meyknecht for a patch that fixed detecting transponder lock in cDvbTuner Lucian Muresan for updating the Romanian language texts and the iso8859-2 fonts for making VDR actually use the iso8859-15 fonts for suggesting to make the function ExchangeChars() for reporting duplicate texts in i18n.c Mattias Grönlund for pointing out a missing cleanup at program exit in case there is a problem with a plugin for fixing possible race condition in cDevice::Action() Uwe Hanke for fixing some typos in the Makefile's 'font' target Mogens Elneff for translating OSD texts to the Danish language for his help in testing automatically selecting the proper audio channel when switching to a channel with two different languages on the same PID Joachim Wilke for reporting missing calls to cStatus::MsgOsdClear() in cSkins::Message() for fixing a NULL pointer access with the cUnbufferedFile when a replay session runs all the way until the end of the recording for fixing removing the '-' when entering a channel number where there is no other one that fits the input for reporting a problem with cStatus::MsgOsdTextItem() being called without a text Sascha Klek for reporting a problem with the '0' key in the "Day" item of the "Timers" menu Andreas Brugger for reporting a possible crash when pausing live video and the recording was unable to start, maybe because there was no lock on the device for reporting the missing Euro sign in iso8859-1 for reporting a problem with making changes to timers through SVDRP while they are being edited via the menu for suggesting to change the API of the functions cStatus::Recording() and cStatus::Replaying(), so that they can provide the full file name of the recording for suggesting that externally provided EPG data (with table ID 0x00) shall get its component descriptors set from the broadcast data Dino Ravnic for fixing some characters in the iso8859-2 font file for fixing some errors in the Croatian language texts for fixing deleting a menu item in case the next item is not selectable Olaf Titz for fixing some typos in the Makefile's 'font' target for reporting a problem and some advice in fixing a possible freeze in pause mode in case a device's PlayPesPacket() function permanently returns 0 for reporting excess memory consumption due to duplicate components in EPG events Darren Salt for pointing out that the '-' and 'ö' characters need to be escaped in the man pages for a patch that was used to add the command line options '--lirc', '--rcu' and '--no-kbd' for adding '__attribute__' to functions that use printf() like parameters for suggesting to write grabbed images to the SVDRP connection encoded in base64 for suggesting to open the file handle in the SVDRP GRAB command in a way that it won't follow symbolic links, and to canonicalize the file name for making all font and image data 'const' for fixing format string handling for suggesting to add NULL checks to some strdup() calls in menuitems.c for reporting a missing "Key$" in skincurses.c for a patch that was used to implement kChanPrev Sean Carlos for translating OSD texts to the Italian language Laurence Abbott for fixing setting 'synced' in cRemux when recording radio channels Patrick Gleichmann for fixing the default quality value when grabbing a JPEG image for suggesting a modified page scrolling behaviour for suggesting wrapping around in menu lists Achim Tuffentsammer for reporting a crash in case a plugin needs to issue an error message before the skin has been set up Michael Heyse for his help in keeping 'channels.conf.terr' up to date Marco Kremer for reporting a problem with playing files with PES packets longer than 2048 byte through the full featured DVB card Walter Koch for adding channels for DVB-T Düsseldorf and Köln (Germany) to channels.cont.terr for fixing some missing '-' in the German OSD texts Rolf Groppe for suggesting to fall back to 'stereo' when switching channels in case the user had switched to 'left' or 'right' Wolfgang Rohdewald for pointing out that primaryDevice = NULL should be done before deleting the devices in cDevice::Shutdown() for removing some unneeded code and fixing access to unallocated memory in cEvent::FixEpgBugs() for adding a missing cMutexLock to cRemote::HasKeys() for removing an unnecessary #include from osd.c for reporting a problem with with numerical input to switch channels if Up, Down, Channel+ or Channel- is pressed Chad Flynt for suggestions and experiments regarding the buffer reserve in cTransfer Chris Warren for pointing out that the call to system("sync") in SpinUpDisk() should be replaced with fsync(f) to avoid problems on NPTL systems for fixing dropping EPG events that have a zero start time or duration, in case it's an NVOD event Luca Olivetti for making cDevice::AttachPlayer() keep the track language codes and descriptions in Transfer Mode for suggesting to make the "Menu" key behave consistently for suggesting to implement a timeout for remote controls that don't deliver "repeat" keypresses very fast for reporting a broken entry 'A111.1W' in sources.conf Mikko Salo for suggesting to make the setup option "DVB/Video display format" available only if "Video format" is set to "4:3" Roman Krenický for a patch that was used a a basis for changing a timer's day handling to full date for considering the "EPG linger time" when saving the EPG data to file or listing it via LSTE Ville Skyttä for reporting several compiler warnings in gcc 4.0 for including the optional user defined Make.config from the 'libsi' Makefile for making LIRC command parsing more robust for fixing some typos in MANUAL for reporting that the default value for "Setup/EPG bugfix level" was wrong for fixing initializing pthread_mutexattr_t and pthread_rwlockattr_t to avoid warnings with g++ 4.1.0 for reporting warnings with g++ 4.1.0 regarding incrementing the 'state' variables in the repacker classes in remux.c for adding a missing #include to thread.c for adding missing i18n entry for the "Timer" button for removing the obsolete "ca.conf" section from vdr.1 for making the cLircRemote try to reestablish the connection to the LIRC daemon in case it breaks for enabling generating a core dump if VDR is run with a different user id for reporting an obsolete entry 'S21.5E' in the default 'diseqc.conf' for updating the GPL copies for fixing several spelling errors Steffen Beyer for fixing setting the colored button help after deleting a recording in case the next menu entry is a directory Daniel Thompson for fixing a memory leak in tComponent for introducing a separate 'plugins-install' target in the Makefile Matthias Lötzke for adding missing text internationalization for "Starting EPG scan" Wolfgang Fritz for making recordings avoid zero sized video data files Michael Reinelt for reporting a problem with the EPG scan on systems that don't use DiSEqC Johannes Stezenbach for pointing out that the byte swap for big endian systems in cDvbOsd::Flush() is wrong for suggesting to use gettid() syscall to get a thread's pid, so that we get a useful value on NPTL systems Paavo Hartikainen for verifying that the byte swap for big endian systems in cDvbOsd::Flush() was wrong Georg Acher for making tChannelID::operator==() inline for better performance for introducing cListBase::count for better performance for a patch that was used to implement hash tables to speed up cSchedule::GetEvent() for avoiding unnecessary calls to getLength() in libsi/si.c, and avoiding the '& 0xff' in CRC32::crc32() of libsi/util.c for suggesting to reduce the priority of the section handler threads for a patch that was used to implement a hash for the channels for reporting a problem with error handling in cCiTransportConnection::RecvTPDU() Henrik Niehaus for reporting a problem with 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 Martin Wache for adding 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 Matthias Lenk for reporting an out-of-bounds memory access with audio language ids Frank Krömmelbein for adding missing storing of the MenuScrollPage parameter for reporting a problem with channel switching with the Down (Up) key in case the current channel is already the first (last) in the list for fixing some typos in the CONTRIBUTORS file Bernhard Stegmaier for reporting a problem in cEITScanner::Process() with forced EPG scans if EPG scan timeout is set to 0 Klaus Heppenheimer for reporting a race condition in cTransfer Thomas Günther for fixing handling the frame number display if '7' is pressed before the first editing mark, or '9' after the last one for suggesting to move cMenuEditTimer and cMenuEvent to menu.h so that plugins can use it for fixing converting arbitrarily formatted summary.vdr files for making the 'new' indicator in the Recordings menu kept up-to-date for reporting a crash when setting the time transponder in the Setup menu for reporting a bug in the initial setting of the time transponder setup parameter for suggesting to extend the version number reported with the '-V' option to also show the current APIVERSION David Woodhouse for his help in replacing the get/put_unaligned() macros from asm/unaligned.h with own inline functions to avoid problems on platforms that don't provide these Marcus Hilbrich for a bug report that lead to fixing the EPG scan, so that it doesn't use the primary device if that is currently in Transfer-Mode from itself Hardy Flor for a patch that was used as a base to implement SVDRP commands for plugins for implementing the SVDRP command PLAY for reporting that RemoveEmptyVideoDirectories() was called for every single recording that has been deleted Harald Milz for his CUTR patch, which was used as a base to implement the SVDRP command EDIT Marko Mäkelä for making repeat keys be ignored when waiting for a keypress to cancel an operation for reporting that a menu was automatically closed when a replay ends for suggesting to ignore k_Repeat when deciding whether the same key has been pressed in string input fields for fixing missing ',' in the Italian and Polish OSD texts Patrick Rother for reporting a bug in defining timers that only differ in the day of week Alexander Rieger for fixing two errors in 'newplugin' for fixing handling color buttons in cMenuEditStrItem for making the '.update' file in the video directory be touched when a recording is added or deleted, so that other VDR instances can update their lists for adding cSkin::GetTextAreaWidth() and cSkin::GetTextAreaFont() for fixing a typo in skins.h for making cSkins::QueueMessage() called from a background thread with an empty message clears all messages that have been previously queued by that thread Philip Prindeville for updates to 'sources.conf' Enrico Scholz for making VDR use use daemon() instead of fork() to run in daemon mode for fixing a possible endless loop in a menu with no selectable items if Setup.MenuScrollWrap is true (thanks to Enrico Scholz) Nicolas Huillard for translating OSD texts to the French language Patrick Fischer for reporting an error in the cFilter example in PLUGINS.html for making the static cControl functions thread safe for suggesting that the cTimer constructor should take an optional cChannel for suggesting that any cReceivers still attached to a cDevice when that device switches to a different transponder shall be automatically detached for reporting that characters 0x01 and 0x02 in recording names were a problem with XML Ralf Müller for a patch that was used to implement cUnbufferedFile Maarten Wisse for translating OSD texts to the Dutch language Holger Brunn for adding a copy constructor to cString and fixing its assignment operator Christian Vogt for suggesting to take deleted recordings into account when displaying the amount of free disk space Christof Steininger for fixing a possible crash when displaying the "Low disk space!" message from a background thread Kendy Kutzner for making the version number of EPG events be stored in the epg.data file for suggesting to add cTimer::SetPriority() to set a timer's priority Bob Withers for publishing a Base64 encoder at http://www.ruffboy.com/download.htm (http://www.ruffboy.com/code/Base64.zip), part of which was used when writing the cBase64Encoder class Javier Fernández-Sanguino Peña for reporting a security hole in the way the SVDRP command GRAB writes the image file Jürgen Schneider for a patch that was used as a base to fix handling multi byte key sequences in cKbdRemote Christian Wieninger for suggesting to add cMenuEditStrItem::InEditMode() for his idea of going directly into the "Edit timer" menu for a timer created from the "Schedule" menu in case it starts withing the next two minutes for reporting a problem with a format string in recording.c on 64bit systems Thiemo Gehrke for suggesting to add a setup option to turn off the automatic timeout of the channel display in case it was invoked by a press of the "Ok" key Gavin Hamill for reporting a missing #include "thread.h" in dvbspu.c Petri Hintukainen for suggesting to disable the use of "fadvise" in cUnbufferedFile because there have been several reports that it causes more problems than it solves Marcel Schaeben for his "Easy Input" patch Ingo Schneider for adding a SleepMs() in cRecorder::Action() to avoid a busy loop Patrick Cernko for suggesting to add a note about "modprobe capability" to INSTALL Philippe Gramoullé for reporting a a missing '-' in the example for viewing a grabbed image on a remote host André Weidemann for suggesting to only write Dolby Digital tracks into the 'info.vdr' file of a recording if Setup.UseDolbyDigital is true Jürgen Schilling for reporting that color buttons were displayed in the recording info menu if it has been invoked from a player Jesus Bravo Alvarez for reporting a second place where a message should be given when an instant recording is started for updating the Spanish OSD texts Francois-Xavier Kowalski for suggesting how to modify logging so that even on NPTL systems each line in the log file shows the individual thread's pid Franz Gangkofer for reporting a problem with @plugin in keymacros.conf in case the named plugin is not loaded Malte Schröder for reporting a crash after executing the SVDRP command CLRE Markus Hahn for suggesting to only start recordings if there is at least 300MB free disk space for suggesting that the "Back" key should restore the original string when pressed while editing a string item Jaroslaw Swierczynski for updating the Polish OSD texts and the fontosd-iso8859-2.c file Alexander Hans for reporting a crash when pressing '0' in the "Schedule" menu on a channel that doesn't have any EPG data for giving the DrawBitmap() function a new parameter 'Overlay' that allows a bitmap to be drawn with a transparent background for reporting that the "'1' for encrypted radio channels" part in the description of the VPID in vdr.5 is obsolete Daniel Karsubka for suggesting to write the epg.data file when VDR exits Suur Karu for reporting a problem with the tuning timeout for channels that have low symbol rates Ronny Kornexl for reporting a problem with setting "No title" for broken event data for suggesting to make the "Use small font" setup option *always* use the small font if set to '3' - even if it would have been a fixed font for reporting a bug in initializing 'noapiv' in the Makefile Vladimír Bárta for translating OSD texts to the Czech language for fixing the character 'r' in fontosd and fontsml for iso8859-2 for fixing the character #207 in fontosd for iso8859-2 Christoph Haubrich for making the "Ok" key in the "Jump" mode of the replay progress display confirm the jump instead of closing the display for reporting that the log message "deleting plugin: ..." is irritating when calling "vdr --help" Pekka Mauno for fixing cSchedule::GetFollowingEvent() in case there is currently no present event running Alexander Wenzel for fixing the shutdown timeout Jan Lenz for reporting a bug in deleting recordings that have been removed externally when running out of disk space Oleg Roitburd for translating OSD texts to the Russian language for updating 'sources.conf' Marius Heidenstecker for suggesting to make cMenuRecordings::GetRecording() 'protected' Jurij Retzlaff for fixing learning keys when VDR is already running Richard Lithvall for adding a tolerance for symbol rate values that are off by one Tobias Grimm for suggesting to use geteuid() to check whether VDR is running as user 'root' for fixing a memory leak in handling external EPG data for fixing a memory leak in closing the video file during replay Helge Lenz for reporting a bug in setting the 'Delta' parameter when calling the shutdown script with no active timer Peter Juszack for a patch that was used as a base to implement kNext and kPrev Pierre Briec for translating OSD texts to the French language Werner Schweer for pointing out that the 'z' printf modifier should be used for 'size_t' type arguments Nino Gerbino for translating OSD texts to the Italian language Markus Ehrnsperger for reporting a problem with missing 'INCLUDES += -I$(DVBDIR)/include' in an existing Make.config Werner Färber for reporting a bug in handling the cPluginManager::Active() result when pressing the "Power" key Dominique Simon for reporting a bug in handling the "Power" key in case a recording is going on and no plugin is active M. Kiesel for reporting that the 'runvdr' script still used DVBDIR