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' 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 pege 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 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 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) 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() 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 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 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 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' 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 Thomas Heiligenmann for implementing the SVDRP commands LSTR and DELR 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 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 Michael Rakowski for translating OSD texts to the Polish language Michael Moster for initally 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 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 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 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 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 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 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 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 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 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 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 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 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 Jan Rieger for suggestions and testing raw keyboard input 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 Jan Ekholm for adding/improving some Swedish language OSD texts for reporting a compiler warning in g++ 3.2.3 regarding cReplayControl::Show() 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 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 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 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 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 Thomas Koch for his support in keeping the Premiere World channels up to date in 'channels.conf' for implementing the SVDRP command STAT Stefan Hußfeldt for his help in keeping 'channels.conf.cable' up to date 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 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 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 Olivier Jacques ) for translating OSD texts to the French language 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" 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 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 entires for undefined channels Niko Tarnanen and Rolf Ahrenberg for translating OSD texts to the Finnish language Ralf Klueber for reporting a bug in cutting a recording if there is only a single editing mark 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 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") Thomas Schmidt for reporting a crash when cancelling a newly created timer 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 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 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