1. 07 Jan, 2017 1 commit
  2. 07 Feb, 2015 1 commit
  3. 09 Feb, 2013 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.37 · 14bd32b9
      Klaus Schmidinger authored
      VDR developer version 1.7.37 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      602dc7e678bcfcf075da36344a337562  vdr-1.7.37.tar.bz2
      34e953fcffc112f316cbfc1f53915324  vdr-1.7.36-1.7.37.diff
      This is a developer version. Even though I use it in my productive
      environment. I strongly recommend that you only use it under controlled
      conditions and for testing and debugging.
      Approaching version 2.0.0:
      If all goes well, there should be no more functional or API changes
      before the final version 2.0.0. There will just be a few more fixes.
      From the HISTORY file:
      - Now also using FindHeader() in cMpeg2Fixer::AdjTref() (pointed out by Sören Moch).
      - Added missing template for DVBDIR to Make.config.template (reported by Derek Kelly).
      - The LCARS menu now also works if the OSD has only 1bpp (two colors).
      - Fixed possible garbage in the remaining time of the LCARS replay display in case the
        hours change from two to one digit.
      - Fixed upscaling bitmaps. The last row and column of the scaled bitmap was not filled,
        which resulted in empty lines between scaled subtitles.
      - Fixed a leftover line in case a two line subtitle was followed by a one line
        subtitle on the dvbhddevice in "high level" OSD mode.
      - Returning 0 from cDvbSdFfDevice::NumProvidedSystems() if option --outputonly is given.
      - The index file is now closed after initially reading it if it is older than 3600 seconds.
      - Improved responsiveness during replay when close to the recording's end.
      - Fixed a leftover progress display in the LCARS main menu when replay of a recording
        ends while the menu is open, and the live channel has no EPG information.
      - Fixed possible audio chatter when a recording is replayed to its very end.
      - Added dependency on 'i18n' to 'install-i18n' in the VDR Makefile (thanks to Tobias
      - Changed several calls to Skins.Message() in vdr.c to Skins.QueueMessage() in order to
        avoid a black screen while such a message is displayed in case the channel will be
        switched (reported by Uwe Scheffler).
      - Updated the Slovakian language texts (thanks to Milan Hrala).
      - Improved LIRC timing for repeat function.
      - When pausing live video, the current audio and subtitle tracks are now retained.
      - Added some notes about plugin Makefiles to PLUGINS.html.
      - Avoiding an extra key press event if the repeat function kicks in when controlling
        VDR via the PC keyboard.
      - The new options "Setup/Miscellaneous/Remote control repeat delay" and
        "Setup/Miscellaneous/Remote control repeat delta" can be used to adjust the
        behavior of the remote control in case a key is held pressed down for a while, so
        that the repeat function kicks in (see MANUAL).
        The builtin LIRC and KBD remote controls already use these parameters. It is
        recommended that plugins that implement an interface to any kind of remote controls
        also use the parameters Setup.RcRepeatDelay and Setup.RcRepeatDelta for the desired
        purpose, and remove any setup options they might have that serve the same purpose.
      - cTimer no longer does any special "VFAT" handling to shorten directory names to 40
        characters. When a string is used as a directory name for a recording, the maximum
        length of the directory path, as well as the individual directory names, is now
        limited to the values specified by the new command line option --dirnames (see
        man vdr(1) for details). For backwards compatibility the option --vfat is still
        available and has the same effect as --dirnames=250,40,1.
      - The macro MaxFileName is now obsolete and may be removed in future versions. Use
        NAME_MAX directly instead.
      - There is no more fixed limit to the maximum number of cPixmap objects an OSD can
        create. However, a particular device may still be unable to create an arbitrary
        number of pixmaps, due to limited resources. So it's always a good idea to use
        as few pixmaps as possible.
      - Fixed formatting and removed some superfluous break statements in vdr.c's command
        line option switch.
  4. 13 Apr, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.0 · 771986b8
      Klaus Schmidinger authored
      - Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was
        revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now
        requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto.
        Note that the channels.conf file now supports additional parameters, so you may
        want to make sure you have a backup of this file in case you need to go back to
        the previous version of VDR!
      - Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl).
      - Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
      - Improved logging system time changes to avoid problems on slow systems under
        heavy load (suggested by Helmut Auer).
      - Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf
      - Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
        Andreas Mair).
      - Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald).
      - Increased the time between checking the CAM status to 500ms to avoid problems
        with some CAMs (reported by Arthur Konovalov).
  5. 24 Feb, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.16 · 83d7a4b7
      Klaus Schmidinger authored
      - Fixed setting the current subtitle track in Transfer-Mode (reported by Petri Helin,
        thanks to Reinhard Nissl for pointing out that cDevice::Transferring() doesn't
        return the right value in the early stage of channel switching).
      - Updated the Danish OSD texts (thanks to Mogens Elneff).
      - Updated the Dutch OSD texts (thanks to Carel Willemse).
      - Fixed various spelling errors and improved PLUGINS.html (thanks to Ville Skyttä).
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Fixed the format in cRemote::Put() to use "%016llX" instead of "%016LX" (thanks
        to Ludwig Nussel for pointing this out).
      - Revised the fix of calculating the scrollbar height in the skins. The scrollbar
        handle now always has a height that is at least the width of the scrollbar.
      - When switching the device that's used for live viewing away from the current
        transponder in favor of an upcoming recording, an attempt is now made to stay
        on the current channel by possibly going into 'Transfer Mode'.
      - The CAM menu now stays open as long as it is automatically updated, even without
        pressing a remote control key. This is important when updating the CAM firmware
        from the transponder.
      - No longer trying to switch to an available channel if the primary device has
        no valid programme and a menu is open (avoids interference with the CAM in
        case a CAM menu is open).
      - Increased the valid range of the "Subtitle offset" setup option to -100...100
        (thanks to Rolf Ahrenberg).
      - Added the backslash ('\') to the list of characters that need to be escaped
        when executing external commands (thanks to Peter Bieringer for reporting this one).
  6. 10 Jun, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.3 · b9b9ace9
      Klaus Schmidinger authored
      - Fixed some spelling errors in 'newplugin' (thanks to Ville Skyttä).
      - Fixed a busy loop in fast forward if the next video data file is missing
        (thanks to Reinhard Nissl).
      - Fixed handling frequencies in NitFilter::Process() (thanks to Anssi Hannula).
      - Fixed a race condition with signal handlers at program exit (thanks to Udo
      - Non-primary devices in Transfer mode are now also used for recording (thanks
        to Anssi Hannula).
      - Fixed handling ChannelUp/Down keys if there is currently a replay running
        (thanks to Marco Schlüßler).
      - The new SVDRP command REMO can be used to turn VDR's remote control off and
        on in case other programs need to be controlled (based on patches from Krzysztof
        Parma and Helmut Auer).
      - Increased the maximum number of CA system ids to cope with the AlphaCrypt
        CAM's version 3.11 firmware.
      - Fixed getting the code setting from the locale (thanks to Matthias Schwarzott).
      - Implemented support for Freetype fonts (based on a patch from Alexander Riedel).
        The font names and sizes can be adjusted in the "Setup/OSD" menu.
        Note that VDR now requires freetype fonts to be installed in
      - If the OSD device in use has at least 8bpp bitmap depth and this is also
        used by the current skin, Freetype fonts are displayed "anti-aliased".
        The new setup parameter "OSD/Anti-alias" can be used to turn this off.
      - The new function cOsd::SetAntiAliasGranularity() can be used to help the OSD
        in managing the available color palette entries when doing anti-aliasing.
        Skins that use 8bpp bitmaps can call this function with the maximum number
        of colors used, and the maximum number of color combinations. The OSD will
        then evenly split the available palette entries between the various colors
        combinations, so that fonts can be "anti-aliased". By default a total of
        10 colors and 10 combinations is assumed.
      - The pixel fonts have been completely removed from the VDR source.
      - VDR is now "UTF-8 aware". It handles strings according to the character
        encoding used on the user's system. All internationalization strings and
        incoming SI data are converted to the system encoding.
      - Plugins that handle strings need to be aware that on systems with UTF-8
        encoding a "character symbol" may consist of more than a single byte in
        memory. The functions and macros named Utf8...() can be used to handle
        strings without needing to care about the underlying character encoding
        (see tools.h for details).
      - Even though the weekdays of repeating timers are presented to the user as UTF-8
        characters in the OSD, the timers.conf file and the SVDRP timer commands still
        use single byte characters ("MTWTFSS") to make sure this information is handled
        correctly between systems with different character encodings.
      - Added a missing i18n string for "CAM" in the Turkish OSD texts.
      - Improved editing strings that are too long to fit into the editable area.
      - Changes to the OSD settings in the "Setup/OSD" menu now immediately take effect
        when the "Ok" key is pressed.
  7. 25 Feb, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.1 · 9f42c33e
      Klaus Schmidinger authored
      - Added cDevice::HasCi() so that devices with Common Interface can be avoided
        when tuning to an FTA channel, thus preserving the CAM resources even on budget
        DVB cards (suggested by Petri Helin).
      - Fixed i18n characters for the Hungarian texts (thanks to Thomas Günther).
      - Now using cPipe instead of popen() in cCommand::Execute() to avoid problems
        with open file handles when starting background commands (thanks to Reinhard
      - Removed 'assert(0)' from cDvbSpuDecoder::setTime() (thanks to Marco Schlüßler).
      - Fixed a possible crash when loading an invalid XPM file (thanks to Martin Wache).
      - Updated satellite names in 'sources.conf' (thanks to Thilo Wunderlich).
      - Adapted 'libsi' to DVB-S2 (thanks to Marco Schlüßler).
      - Fixed handling error status in cDvbTuner::GetFrontendStatus() (thanks to
        Reinhard Nissl).
      - Shutdown handling has been rewritten (thanks to Udo Richter).
      - Plugins can now implement the new function WakeupTime() to request VDR to wake
        up at a particular time (thanks to Udo Richter).
      - The HUP signal now forces a restart of VDR (thanks to Udo Richter).
      - cThread::EmergencyExit() has been replaced by ShutdownHandler.RequestEmergencyExit().
      - Several references to "button" in a remote control context have been changed
        to "key" (based on a report from Marko Mäkelä regarding the "Menu button closes"
        text). The "MenuButtonCloses" parameter in 'setup.conf' has therefore been
        renamed to "MenuKeyCloses", accordingly. This will result in an "unknown config
        parameter: MenuButtonCloses" error message in the log file, so you may want to
        remove that entry from your 'setup.conf' file.
      - Simplified the error handling in cDvbTuner::GetFrontendStatus() (based on a
        discussion with Reinhard Nissl).
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Increased the maximum number of DVB devices to 8 (thanks to Rolf Ahrenberg).
      - The new Setup parameter "Channel entry timeout" can be used to customize the time
        since the last keypress until a numerically entered channel number is considered
        complete, and the channel is switched (suggested by Helmut Auer). Setting this
        parameter to 0 turns off the automatic channel switching, and the user will
        have to confirm the entry by pressing the "Ok" key.
  8. 03 Dec, 2006 1 commit
    • Klaus Schmidinger's avatar
      Version 1.4.4-1 · 287cd613
      Klaus Schmidinger authored
      - Some improvements to the man pages (thanks to Ville Skyttä).
      - Fixed a possible segfault in cSkins::Message() (thanks to Udo Richter).
      - Made the getskyepg.pl script of the 'sky' plugin send a user agent message to
        the server, according to the rules at http://bleb.org/tv/data/listings.
        If your version of 'wget' doesn't support the -U option to set the user agent,
        use the new option -U of getskyepg.pl to have the information added to the URL
        as a query string.
      - The getskyepg.pl script now replaces "&" with "&".
      - Fixed a possible crash in remux.c on 64-bit machines (thanks to Reinhard Nissl).
      - Fixed a typo in the change to the "Use small font" setup option in version 1.3.47
        in the HISTORY and CONTRIBUTORS file (reported by Andreas Brugger).
      - Added a missing 'const' to cRecordingInfo::ChannelID() (reported by Andreas
        Brugger). This required the APIVERSION to be increased, so plugins will have to
        be recompiled.
      - Now calling cPluginManager::Active() only if VDR is really trying to shut down,
        and waiting for 5 minutes before calling it again (thanks to Jörg Wendel for
        reporting that cPlugin::Active() was called too often, and to Udo Richter for
        some hints on how to improve this).
      - Replaced 'unsigned long' with 'uint32_t' and 'uint64' with 'uint64_t' to
        avoid problems on 64-bit machines.
  9. 15 Oct, 2006 1 commit
    • Klaus Schmidinger's avatar
      Version 1.4.3-2 · 9ef312f8
      Klaus Schmidinger authored
      - Fixed clearing an event's Title, ShortText and Description in case the data comes
        from an external source.
      - Updated the Hungarian language texts (thanks to Guido Josten).
      - Fixed a possible crash if cPluginManager::GetPlugin() is called with a NULL
        pointer (thanks to Petri Hintukainen).
      - Fixed displaying the error log message in case an unknown plugin was requested
        in a key macro (thanks to Petri Hintukainen).
      - Keys from expanded key macros are now put into the front of the key queue to
        avoid problems if the queue is not empty at that time (based on a patch from
        Petri Hintukainen).
      - cKeyMacro now has an explicit counter for the number of keys it contains.
      - cRemote::PutMacro() now sets a lock while it expands the macro (thanks to
        Petri Hintukainen).
      - Fixed handling plugins from cRemote::PutMacro() and cRemote::CallPlugin()
        (based on a patch from Petri Hintukainen).
      - Increased the size of the key queue to avoid problems with long key macros.
  10. 17 Apr, 2006 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.47 · 293ed402
      Klaus Schmidinger authored
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Fixed a crash when setting the time transponder in the Setup menu, caused by the
        new 'noneString' in cMenuEditChanItem (reported by Thomas Günther).
      - Added NULL checks to some strdup() calls in menuitems.c (suggested by Darren
      - Removed the unnecessary 'value' member from cMenuEditItem.
      - Fixed the initial setting of the time transponder setup parameter (reported
        by Thomas Günther).
      - Fixed unnecessary Set() calls in cMenuEditIntItem::ProcessKey().
      - Allowing a tolerance for symbol rate values that are off by one (thanks to
        Richard Lithvall).
      - Added VBITeletextDescriptorTag, TeletextDescriptorTag, LocalTimeOffsetDescriptorTag
        and PremiereContentTransmissionDescriptor to 'libsi' (thanks to Marco Schlüßler).
      - Using geteuid() to check whether VDR is running as user 'root' (suggested by
        Tobias Grimm).
      - Added a missing "Key$" in skincurses.c (reported by Darren Salt).
      - Reintroduced the log message "deleting plugin: ..." when shutting down VDR (upon
        request by Ville Skyttä, as in the initial patch from Christoph Haubrich).
      - Fixed the vdr.1 man page (a single DVB card can record and do live tv).
      - The preferred audio language is now automatically selected when starting replay.
      - Updated the Danish OSD texts (thanks to Mogens Elneff).
      - The new function cPlugin::Active() can be used by a plugin to indicate that it
        is still busy and the system should not shut down or restart (based on a patch
        from Sascha Volkenandt). See PLUGINS.html for details.
      - Fixed setting the 'Delta' parameter when calling the shutdown script with
        no active timer (reported by Helge Lenz).
      - In order to make sure that plugins are compiled with the same DVB driver header
        files as VDR itself, the definition of DVBDIR has been removed from the VDR
        Makefile. If you are using a driver version that has its header files at a location
        other than /usr/include/linux/dvb, you can define DVBDIR in the Make.config
        file (see also INSTALL). Note that if you already have a Make.config file of your
        own, you should add the lines
        ifdef DVBDIR
        INCLUDES += -I$(DVBDIR)/include
        to its end, as in the new Make.config.template.
        Any reference to DVBDIR should be removed from all plugins' Makefiles, like this:
        --- PLUGINS/src/hello/Makefile  2005/11/11 13:20:14     1.10
        +++ PLUGINS/src/hello/Makefile  2006/04/15 11:58:46     1.11
        @@ -20,7 +20,6 @@
         ### The directory environment:
        -DVBDIR = ../../../../DVB
         VDRDIR = ../../..
         LIBDIR = ../../lib
         TMPDIR = /tmp
        @@ -40,7 +39,7 @@
         ### Includes and Defines (add further entries here):
        -INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR)/include
        +INCLUDES += -I$(VDRDIR)/include
        Thanks to Marco Schlüßler for pointing out this problem.
      - Implemented kNext and kPrev keys (based on a patch from Peter Juszack).
        See MANUAL for details.
      - Implemented kChanPrev (from a patch from Darren Salt).
      - The "Update channels" parameter in the "Setup/DVB" menu has been extended to
        allow updating only the PIDs (see MANUAL for details). When updating to this
        version of VDR, please verify that the setting is as you want it to be, because
        the values have been shifted.
      - The new APIVERSION (see config.h) now allows existing compiled plugins to be
        used with newer versions of VDR, as long as there have been no changes to the
        VDR header files since the last APIVERSION. Existing plugins' Makefiles should
        have all references to VDRVERSION changed to APIVERSION, like this:
        --- PLUGINS/src/hello/Makefile  2006/04/15 11:58:46     1.11
        +++ PLUGINS/src/hello/Makefile  2006/04/16 09:03:50     1.12
        @@ -28,9 +28,9 @@
         -include $(VDRDIR)/Make.config
        -### The version number of VDR (taken from VDR's "config.h"):
        +### The version number of VDR's plugin API (taken from VDR's "config.h"):
        -VDRVERSION = $(shell grep 'define VDRVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g')
        +APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
         ### The name of the distribution archive:
        @@ -67,7 +67,7 @@
         libvdr-$(PLUGIN).so: $(OBJS)
                $(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
        -       @cp $@ $(LIBDIR)/$@.$(VDRVERSION)
        +       @cp $@ $(LIBDIR)/$@.$(APIVERSION)
         dist: clean
                @-rm -rf $(TMPDIR)/$(ARCHIVE)
      - If a timer is newly created from within the "Schedule" menu, and its event is
        already running or has its start time within the next two minutes, it now goes
        directly into the "Edit timer" menu in order to allow the user to make further
        changes to timer parameters before the actual recording starts (inspired by
        Christian Wieninger's "epgsearch" plugin).
      - Added format check to syslog_with_tid().
      - Updated the INSTALL file's section about non-VDR files in the video directory
        (since version 1.3.38 disk access is done in a separate thread, so the watchdog
        timer won't hit).
      - Changed the behaviour of the "Use small font" setup option to *always* use the small
        font if set to '2' - even if it would have been a fixed font (suggested by Ronny
      - No longer using characters 0x01 and 0x02 for mapping single quote and slash in
        recording names (thanks to Patrick Fischer for reporting that this was a problem
        with XML). The single quote is not mapped at all, and the slash is interchanged
        with the tilde. Existing recordings will be handled like before, so there is
        no need to actually rename them.
      - The cRemote::CallPlugin() function now has a boolean return value that tells
        the caller whether initiating the plugin call was successful (suggested by
        Reinhard Nissl). If it returns false, another plugin call is currently pending
        and the caller should try again later. This also means that the SVDRP command
        PLUG can now return an error code is the call fails.
      - The new function cPlugin::MainThreadHook() can be used by plugins to perform
        actions in the context of the main program thread. Use this function with great
        care and only of you absolutely have to! See also PLUGINS.html.
  11. 09 Apr, 2006 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.46 · 396d0ad3
      Klaus Schmidinger authored
      - Fixed handling broken PMT records (thanks to Marcel Wiesweg for pointing out how
        to detect these).
      - Added a missing "Button$" for the Timer button and "Key$" in skinclassic.c
        (thanks to Rolf Ahrenberg).
      - Fixed broken entry 'A111.1W' in sources.conf (reported by Luca Olivetti).
      - Replaced the obsolete entry 'S21.5E' in the default 'diseqc.conf' with 'S13.0E'
        (reported by Ville Skyttä).
      - Fixed learning keys when VDR is already running (thanks to Jurij Retzlaff).
      - Fixed handling the system time transponder setting in the Setup/EPG menu, which
        was broken by the min/max fix in cMenuEditIntItem.
      - VPS timers now record only events that have exactly the given start time.
        This fix also implements recording several subsequent events that have the
        same VPS time (like a sports event with intermittent news breaks).
      - When checking for timers that have entered the "VPS margin", any free devices are
        now used to switch to the needed transponder. This improves cases where more than
        one VPS timer is about to start.
      - Fixed handling the VPS margin in case the event's duration is shorter than the
      - Fixed handling VPS timers in case the primary device needs to switch to the
        timer's transponder.
      - Now avoiding the 'actual' device when starting a recording, so that a Transfer
        Mode for live tv isn't interrupted.
      - Fixed a typo in skins.h (thanks to Alexander Rieger).
      - cSkins::QueueMessage() called from a background thread with an empty message
        now clears all messages that have been previously queued by that thread and have
        not yet beed displayed (thanks to Alexander Rieger).
      - Fixed handling the color button texts when switching from the 'Schedule' menu of
        a channel without EPG info to the 'What's on now' menu (reported by Rolf
      - cMenuEditIntItem and cMenuEditChanItem can now be given strings to label the
        minimum and maximum values, and the case that no channel has been selected,
      - The initial channel and volume can now be defined in the "Setup/Miscellaneous"
        menu (based on a patch from Thomas Keil).
      - When hitting the end of a recording in fast forward mode, VDR no longer switches
        back to normal speed if the recording is already finished (thanks to Reinhard
      - No longer calling cPlugin::ProcessArgs() if VDR is run with the --help or
        --version option, to avoid error messages from plugins (reported by Udo Richter).
      - Now checking whether there is any text before calling cStatus::MsgOsdTextItem()
        (reported by Joachim Wilke).
  12. 29 Jan, 2006 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.41 · c3773408
      Klaus Schmidinger authored
      - EPG events from epg.data or SVDRP's PUTE command now have their Title set to
        "No Title" if none was set.
      - Fixed checking toFile in cCuttingThread::Action() (found in a larger patch from
        Artur Skawina).
      - Fixed a crash when pressing '0' in the "Schedule" menu on a channel that doesn't
        have any EPG data (reported ny Alexander Hans).
      - Updated the Danish OSD texts (thanks to Mogens Elneff).
      - Fixed a missing ',' in the Greek OSD texts (thanks to Arthur Konovalov).
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Fixed handling the tfRecording flag when reading timers (bug reported by Andreas
      - Now checking whether the channel exists before setting the PMT filter in
        cPatFilter::Process() (thanks to Thomas Bergwinkl).
      - Now trying to reestablish the connection to the LIRC daemon in case it breaks
        (thanks to Ville Skyttä).
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Fixed channel switching with the Down (Up) key in case the current channel is
        already the first (last) in the list (reported by Frank Krömmelbein).
      - Removed the "buffer reserve" in Transfer Mode - it's no longer necessary with
        recent driver/firmware versions.
      - The epg.data file is now written when VDR exits (suggested by Daniel Karsubka).
      - Fixed cTimers::GetNextActiveTimer() so that it won't return an expired timer
        (reported by Rolf Ahrenberg).
      - Changed DVBS_TUNE_TIMEOUT and DVBC_TUNE_TIMEOUT to 9000ms to avoid problems with
        channels that have low symbol rates (reported by Suur Karu).
      - Fixed displaying the current audio track in the channel display.
      - When reading epg.data (or data from PUTE), the version number of events with
        table IDs smaller than 0x50 is now ignored because otherwise the current
        running status would not be set after a restart of VDR.
      - Implemented a timeout for remote controls that don't deliver "repeat" keypresses
        very fast (based on a suggestion by Luca Olivetti; problem with the new handling
        of k_Repeat keypresses in channel switching reported by Udo Richter).
      - When looking for the present or following EPG event, the running status is now
        always taken into account.
      - Now initializing the channels' schedule pointers when reading the epg.data file,
        so that the first WhatsOn menu will come up faster.
      - If a shutdown is requested, but the shutdown script doesn't actually halt the
        system, it is now tried again after 5 minutes (suggested by Helmut Auer).
      - Separated the 'install' target into several individual targets; renamed the
        'plugins-install' target to 'install-plugins' (thanks to Helmut Auer).
  13. 08 Jan, 2006 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.38 · da948a50
      Klaus Schmidinger authored
      - Fixed handling second audio and Dolby Digital PIDs for encrypted channels
        (was broken in version 1.3.37).
      - Improved TS/PES conversion to better handle lost TS packets (thanks to
        Reinhard Nissl).
      - Limited the frequency of log messages from the cRepackers.
      - Now using the gettid() syscall to get a thread's pid, so that we get a
        useful value on NPTL systems (suggested by Johannes Stezenbach).
      - Fixed the RCU remote control handling to avoid problems with NPTL (thanks
        to Andreas Share for reporting a lockup with the RCU on NPTL systems).
      - When displaying the amount of free disk space, the space consumed by
        recordings that have been "deleted" but not yet actually "removed" is now
        taken into account (suggested by Christian Vogt).
      - Now avoiding unnecessary disk access when checking if there are deleted
        recordings that need to be removed (reported by Carsten Koch).
      - Fixed handling the DELETEDLIFETIME when removing deleted recordings. Now
        a deleted recording is retained at least DELETEDLIFETIME seconds before
        actually removing it.
        The value of DELETEDLIFETIME has been changed to 300. So after (possibly
        inadvertently) deleting a recording, there will be at least 5 minutes
        in which it can be recovered (unless a new recording immediately requires
        the disk space). The count starts again at 0 every time VDR is started.
      - Fixed a possible crash when displaying the "Low disk space!" message from
        a background thread (thanks to Christof Steininger).
      - Fixed handling OSD areas that have invalid sizes (thanks to Marco Schlüßler).
      - Added a mutex to AssertFreeDiskSpace() to make sure calls from foreground
        and background threads won't interfere.
      - The main menu now dynamically updates its contents in case an instant
        recording or replay stops, etc.
      - The version number of EPG events is now also stored in the epg.data file
        (thanks to Kendy Kutzner).
      - EPG events that are no longer in the currently broadcasted data stream are
        now automatically deleted.
      - Removed an invalid access to Event->schedule in cSchedule::DelEvent().
      - Modified cSchedule::Cleanup() (events are always sorted by time).
      - Schedules are now cleaned up once every hour (not only at 05:00).
      - The "Schedule" and "What's on now/next?" menus are now updated if a timer
        is set or modified.
      - cTimer no longer has its own 'schedule' member, it rather uses that of the
        event it has been set to.
      - The "Red" button in the "Schedule", "What's on now/next?" and "Event" menus
        now immediately creates a timer for the selected event and marks it with 'T'.
        If the event is already marked with 'T', the "Red" button opens the "Edit
        timer" menu for that timer.
      - Removing deleted recordings is now done in a separate thread.
      - Dropped the unused "stop recording on primary interface" stuff.
      - Converting a grabbed image to JPEG is now done with the new function
        RgbToJpeg() (see tools.h).
      - The SVDRP command GRAB now determines the image type (JPEG or PNM) from the
        extension (".jpg", ".jpeg" or ".pnm") of the given file name. The explicit
        'jpeg' or 'pnm' parameter is still accepted for backward compatibility, but
        has no meaning any more.
      - The function cDevice::GrabImage() no longer writes the grabbed image to a
        file, but rather returns a pointer to the image in memory. The wrapper
        function cDevice::GrabImageFile() can be used to write the grabbed image
        directly to a file. Plugins that used the old version of cDevice::GrabImage()
        need to be adapted to the new interface.
      - The new class cBase64Encoder (see tools.h) can be used to encode data in
        base64 (thanks to Bob Withers for publishing his Base64 class).
      - The SVDRP command GRAB now writes the image data to the SVDRP connection
        (encoded in base64) if the given file name consists of only the file
        extension (".jpg", ".jpeg" or ".pnm"), or if only "-" is given as file
        name (based on a suggestion from Darren Salt).
        A simple way of viewing a grabbed image on a remote host is:
        svdrpsend.pl -d <hostname> 'grab -' | sed -n -e 's/^216-//p' -e '1ibegin-base64 644 -' -e '$a====' | uudecode | display -
      - The new command line option '-g' must be given if the SVDRP command GRAB
        shall be allowed to write image files to disk. The parameter to this option
        must be the full path name of an existing directory, without any "..", double
        '/' or symlinks. By default, or if "-g- is given, grabbing to files is
        not allowed any more because of potential security risks.
      - Modified the way the SVDRP command GRAB writes the grabbed image to a file
        to avoid a security hole (CAN-2005-0071, reported by Javier Fernández-Sanguino
        + The file handle is now opened in a way that it won't follow symbolic links
          (suggested by Darren Salt).
        + The given file name is now canonicalized, so that it won't contain any
          ".." or symlinks (suggested by Darren Salt).
        + Grabbing to files is limited to the directory given in the the command
          line option '-g'. By default grabbing to files is not allowed any more.
      - Updated the Greek OSD texts (thanks to Dimitrios Dimitrakos).
      - Changed all "illegal" to "invalid" in error messages (there's nothing "illegal"
        in VDR ;-).
      - When started as user 'root' VDR now switches to a lesser privileged user id,
        keeping the capability to set the system time (based on a patch from Ludwig
        Nussel). By default the user id 'vdr' is used, which can be changed through
        the new command line option '-u'. Note that for security reasons VDR will no
        longer run as user 'root' (unless you explicitly start it with '-u root',
        but this is not recommended!). The 'runvdr' script has been changed to
        use the '-u' option.
      - Changed the API of the functions cStatus::Recording() and cStatus::Replaying(),
        so that they can provide the full file name of the recording. Plugins that use
        these (or the related cStatus::Msg...() functions) need to be adapted
        (suggested by Andreas Brugger).
      - The DVB devices now retune (and, if applicable, resend the DiSEqC data) if
        the lock is lost (based on a patch from Reinhard Nissl).
      - Fixed handling multi byte key sequences in cKbdRemote (based on a patch from
        Jürgen Schneider).
      - Removed unused variables in skinclassic.c and skinsttng.c (thanks to Marco
      - Made the static cControl functions thread safe (thanks to Patrick Fischer).
      - Fixed initializing pthread_mutexattr_t and pthread_rwlockattr_t to avoid
        warnings with g++ 4.1.0 (thanks to Ville Skyttä).
      - Fixed incrementing the 'state' variables in the repacker classes in remux.c
        to avoid warnings with g++ 4.1.0 (reported by Ville Skyttä).
      - The Makefile now reports a summary of failed plugins (thanks to Udo Richter).
      - The cTimer constructor can now take an optional cChannel (suggested by
        Patrick Fischer).
      - Fixed setting the main thread id if VDR is running as a daemon.
      - Fixed handling TS packets in cTS2PES (thanks to Reinhard Nissl).
      - Added cTimer::SetPriority() to set a timer's priority (suggested by Kendy Kutzner).
      - Added cMenuEditStrItem::InEditMode() (suggested by Christian Wieninger).
      - Now using FE_READ_STATUS to read the current frontend status (suggested by
        Holger Wächtler).
      - The "Menu" key now behaves consistently. If there is anything on the OSD, it
        is closed when the "Menu" key is pressed, and if there is nothing on the OSD,
        the "Menu" key opens the main menu (suggested by Luca Olivetti).
      - The new option "Setup/OSD/Timeout requested channel info" can be used to turn
        off the automatic timeout of the channel display in case it was invoked by
        a press of the "Ok" key (suggested by Thiemo Gehrke).
      - A message is now given when an instant recording is started (suggested by
        Helmut Auer). Actually the code was already there, just commented out - don't
        remember why it wasn't active...
      - Removed an obsolete "Summary" text from i18n.c and preceded all key definition
        texts with "Key$" to avoid duplicates (reported by Lucian Muresan).
      - Preceded all button texts with "Button$".
      - Removed obsolete "Eject", "Language" and "scanning recordings..." texts.
      - Added missing #include "thread.h" to dvbspu.c (reported by Gavin Hamill).
      - Disabled the use of "fadvise" in cUnbufferedFile because there have been
        several reports that it causes more problems than it solves (suggested by
        Petri Hintukainen). If you want to use "fadvise", you can activate the line
        //#define USE_FADVISE
        in tools.c.
      - Removed unused 'offset' member from cOsdItem.
      - In the "Channels" menu the numeric keys now position the cursor to the channel
        with the given number (see MANUAL, section "Remote Control Keys", note (3) for
      - The "Mark/Move" function in the "Channels" menu now also works in the non-numeric
        sort modes.
      - The default cOsdObject::Show() now automatically calls cOsdMenu::Display() if
        this is a menu.
      - The new "Info" key brings up information on the currently viewed programme
        or recording. For a live programme this is the same as "Schedule/Ok", i.e. the
        description of the current EPG event. For a recording this is the same as shown
        by the "Info" button in the "Recordings" menu. Plugins that implement players
        can overwrite their cControl::GetInfo() function to show their own info (see
        PLUGINS.html for details). Pressing the "Info" key again while the info is
        displayed will close the OSD. In order to assign this new key to an existing
        remote control setup, the remote.conf file needs to be deleted and VDR has
        to be restarted to go through the process of learning the remote control keys.
      - Any cReceivers still attached to a cDevice when that device switches to a
        different transponder are now automatically detached (suggested by Patrick
      - The "flags" of a timer are now handled as an unsigned integer value. In order
        to do this, the interface of cMenuEditBitItem also had to be changed.
      - In string entry fields (like, e.g., the file name of a recording) the characters
        can now be entered by pressing the numeric keys, the same way as on a
        telephone keypad (based on the "Easy Input" patch from Marcel Schaeben).
      - Fixed the "Day" field of the "Edit timer" menu when pressing '0' to switch
        from "single shot" to "weekly", followed by the "Right" key (reported by
        Andreas Böttger).
      - The file 'ca.conf' is obsolete and has been removed.
      - Revised all descriptions regarding CICAM.
      - Adapted c(Dvb)Device::ProvidesCa() to the dynamic CA handling.
      - Added a mutex to synchronize cDevice::PlayPesPacket() and SetCurrentAudioTrack()
        (thanks to Reinhard Nissl).
      - Added a SleepMs() in cRecorder::Action() to avoid a busy loop (thanks to Ingo
      - Cleaned up some trailing white space.
  14. 11 Sep, 2005 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.32 · d5c85f5f
      Klaus Schmidinger authored
      - Added some missing braces in remux.c (thanks to Wayne Keer for reporting this one).
      - Removed unused MAINMENUENTRY from svdrpdemo.c (thanks to Udo Richter for reporting
        this one).
      - Fixed appending sequence end code in cDvbPlayer::Goto() (thanks to Reinhard Nissl).
      - Fixed syncing in cRepacker (thanks to Reinhard Nissl).
      - Now always using stream id 0xE0 for the video stream, to avoid problems with
        post processing tools that choke on different ids (suggested by Reinhard Nissl).
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Fixed cDvbPlayer::SkipFrames() to properly handle radio recordings (thanks to
        Reinhard Nissl).
      - Updated the Swedish OSD texts (thanks to Tomas Prybil).
      - Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
      - Updated the Danish OSD texts (thanks to Mogens Elneff).
      - Made LIRC command parsing more robust (thanks to Ville Skyttä).
      - Introduced a separate 'plugins-install' target in the Makefile (thanks to Daniel
      - Re-introduced the code that waits for a tuner lock in VDR/device.c, since
        apparently some users actually need it. It's not active by default, you'll have
        to define the WAIT_FOR_TUNER_LOCK macro in that file if you need it (suggested
        by Malcolm Caldwell).
      - Adjusted the Makefile to the dvb-kernel driver on kernel 2.6 and up (thanks to
        Lauri Tischler).
      - Repeat keys are now ignored when waiting for a keypress to cancel an operation
        (thanks to Marko Mäkelä).
      - The main menu function of a plugin can now be activated through a key macro of
        the form "@plugin" even if that plugin doesn't have a main menu entry (using
        part of a patch by Hardy Flor, which originally implemented calling plugins from
      - The menu timeout handling is now done centrally in the main program loop.
      - Added missing help for the 'help' keyword in the SVDRP command PLUG.
      - The main menu function of a plugin can now be called programmatically through
        the static function cRemote::CallPlugin().
      - The SVDRP command PLUG now has a new option 'main' which can be used to initiate
        a call to the main menu function of a plugin (using part of a patch by Hardy Flor).
      - The new command line option '--vfat' can be used to make VDR encode special
        characters in recording file names, even if it wasn't compiled with VFAT=1
        (suggested by Peter Bieringer). The compile time option VFAT still exists and
        creates a VDR that always behaves as if it were called with '--vfat'.
      - Replaced the ':' delimiter between hour and minute in recording file names with
        a '.' under Linux, too. Existing recordings with ':' as delimiter will still work.
      - Implemented the SVDRP command MOVC (thanks to Andreas Brachold).
      - Added support for multiple audio language codes in ISO639LanguageDescriptors to
        'libsi' (thanks to Marcel Wiesweg).
      - Changed the audio PID language codes to hold up to two 3 letter codes, separated
        by '+', to store separate languages broadcast in two channel audio mode.
      - If the preferred audio language is broadcast on a PID that has two different
        languages in the two stereo channels, the audio channel is now properly set when
        switching to such a channel (thanks to Mogens Elneff for his help in testing this).
      - Fixed some typos in MANUAL (thanks to Ville Skyttä).
      - Fixed the default value for "Setup/EPG bugfix level" (thanks to Ville Skyttä for
        reporting this one).
      - Fixed defining timers that only differ in the day of week (thanks to Patrick
        Rother for reporting this one).
      - Fixed converting summary.vdr files that would result in a very long 'short text'
        (thanks to Carsten Koch).
      - Implemented a hash for the channels to reduce the system load in the EIT scanning
        thread (based on a patch by Georg Acher).
  15. 15 Aug, 2005 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.29 · ddd1e13e
      Klaus Schmidinger authored
      - Fixed a race condition in cTransfer (thanks to Klaus Heppenheimer for reporting this one).
        In doing so, the 'active' variables used by the actual derived cThread classes
        have been replaced by the cThread::Running() function.
        Plugin authors may want to check their derived cThread classes and replace any 'active'
        variables the same way as, for instance, done in transfer.c.
      - Fixed handling EPG data for time shifted events (thanks to Marco Schlüßler).
      - Increased the default value for 'Min. user inactivity' to 300 minutes (suggested
        by Helmut Auer).
      - Now storing the channel id in the info.vdr file even if there is no EPG info
        available (thanks to Andreas Brachold for reporting that there are empty info.vdr
        files created in that case).
      - Added some 'mkdir -p' to the Makefile's 'install' target (thanks to Wayne Keer).
      - Changed the title of the recording info menu (thanks to Rolf Ahrenberg).
      - Fixed handling the frame number display if '7' is pressed before the first editing
        mark, or '9' after the last one (thanks to Thomas Günther).
      - Now discarding any previous numerical input to switch channels if Up, Down, Channel+,
        Channel-, Left or Right is pressed (thanks to Wolfgang Rohdewald for reporting a
        problem with this).
      - Pressing Ok while entering a channel number now immediately switches to that
        channel, without waiting for further input.
      - Avoiding unnecessary OSD draw operations caused by the audio track description
        display in the ST:TNG skin's channel display (thanks to Oliver Endriss for reporting
        cDvbDevice::StillPicture(), since apparently the VIDEO_STILLPICTURE call works.
  16. 31 May, 2004 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.9 · b81bf2d1
      Klaus Schmidinger authored
      - Completed Croatian language texts (thanks to Drazen Dupor).
      - New iso8859-2 font to fix the problem with program freezes (thanks to Drazen Dupor).
      - Implemented a default cRemote::Initialize() that waits 10 seconds for a keypress
        in order to prevent a "hangup" in case, e.g., the LIRC driver is not loaded (thanks
        to Helmut Auer).
      - Updated 'channels.conf.terr' for Hannover (thanks to Peter Waechtler).
      - cBitmap::DrawBitmap() now also resets the palette if the entire bitmap area is
        covered (suggested by Sascha Volkenandt).
      - Fixed setting the title in the replay display of the "Classic VDR" skin in case
        a shorter title is set after a longer one (thanks to Stefan Huelswitt for
        reporting this one).
      - Now using more separate areas in the "ST:TNG Panels" skin to allow a theme to
        use more independent clrMenu* colors.
      - Fixed removing the "scanning recordings..." message in case the video directory
        is empty (thanks to Andreas Regel for reporting this one).
      - Added SetMessage() functions to the Replay and Channel skin functions. Plugins
        that implement skins will need to implement these functions. This fixes a missing
        "Editing process finished" message (thanks to Oliver Endriss for reporting this
      - Fixed the height of the channel display in the "Classic VDR" skin.
      - Fixed handling descriptor loops in 'libsi', which had sometimes caused invalid
        CA ids to be added to the channel definitions (thanks to Wayne Keer for reporting
        this one, and Marcel Wiesweg for fixing it).
      - Fixed handling colors in cDvbSpuPalette::yuv2rgb() (thanks to Marco Schlüßler).
      - Made some functions of cFont virtual to allow implementing dummy fonts for the
        'curses' skin.
      - The new plugin 'skincurses' re-implements the functionality that was previously
        available by compiling VDR with DEBUG_OSD. Some things may not yet work as they
        should, but it's a starting point.
  17. 04 May, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.30 · af2a1352
      Klaus Schmidinger authored
      - Fixed minimum lifespan of deleted recordings (thanks to Jaakko Hyvätti).
      - Updated French OSD texts (thanks to Olivier Jacques).
      - Fixed paging through lists with repeated Left/Right keys.
      - Fixed setting the PCR-PID in case it is equal to one of the other PIDs (thanks
        to Oliver Endriss for reporting this one).
      - Fixed double call to MainMenuAction() of a plugin if invoked via a hotkey (thanks
        to Kai Moeller for reporting this one).
      - Fixed handling dedicated keys.
      - Now turning off live PIDs when replaying. This avoids short spikes from other
        channels when switching between Transfer Mode channels, and also lets an ongoing
        replay continue even if a recording is started on the primary device.
      - The RCU channel display no longer changes when a recording on a different
        channel starts on the primary device.
      - Restoring the current channel in case a recording has switched the transponder.
        If all devices are busy and none of them can provide the current channel, the
        message "Channel not available!" will be displayed.
      - Removed the (no longer necessary) 'panic' stuff from cThread.
      - Added cStatus::OsdItem() to provide the entire list of menu items to a plugin
        (thanks to Carsten Siebholz).
      - The red ("Record") and yellow ("Pause") button in the "Main" menu are no longer
        available when replaying.
  18. 27 Apr, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.29 · 0686038a
      Klaus Schmidinger authored
      - Fixed detecting broken connection to the LIRC daemon (thanks to Ludwig Nussel).
      - Now sending CA descriptors to the CAM in the same sequence as they were originally
        received (thanks to Stefan Huelswitt).
      - The PCR PID can now be set separately from the video PID. The syntax in the
        'channels.conf' file is, for example, ...:164+17:..., where 164 is the video PID
        and 17 is the PCR PID. The separator is a '+' sign, not a comma or semicolon as
        with the audio PIDs, because this is not an alternate PID, but rather an
        additional, necessary PID. In order to use this feature you need a driver version
        dated 2003-04-27 or higher (setting the PCR PID didn't work in earlier versions).
      - Fixed deleting the last recording in the "Recordings" menu, which started pausing
        live video (thanks to Christoph Friederich for reporting this one).
      - Now setting the "broken link" flag for GOPs at the beginning of a new video
        sequence, which avoids artefacts when cutting (thanks to Stefan Huelswitt).
      - Removed the Mute() call from cDvbDevice::StillPicture() (suggested by Andreas
      - Updated 'channels.conf.terr' for Berlin (thanks to Andreas Brachold).
      - Extended logging info when starting/stopping timers to show the channel number,
        start/stop time and the file name (suggested by Manuel Hartl).
      - Added a note regarding non-VDR files in the /videoX directories to INSTALL
        (suggested by Benjamin Harling).
      - Skipping keys that come in too fast from LIRC (thanks to Christian Jacobsen).
      - Avoiding short display of the main menu if a plugin displays its own OSD and
        is started through a user defined key macro (thanks to Andreas Mair for reporting
        this one).
      - Reduced the time to wait for EPG data when starting a recording to 3 seconds.
      - The new SVDRP command STAT can be used to request information about the disk
        usage (thanks to Thomas Koch).
      - Fixed faulty calculation of section length in eit.c (thanks to Teemu Rantanen).
  19. 13 Apr, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.27 · 9f919801
      Klaus Schmidinger authored
      - The CAM is now accessed only if the current channel actually has a non-zero Ca
        value, and CAM access is completely suppressed during replay, which avoids
        problems in case the CAM is attached to the primary DVB device.
      - The "Left" and "Right" buttons now set the cursor to the first or last list item
        even if the list consist only of a single page, like, for instance, the Main menu
        (thanks to Oliver Endriss).
      - Made the log message "OSD window width must be a multiple of 4..." a debug message
        instead of an error message, so it can be avoided by using a log level less than 3.
      - Updated Greek language texts (thanks to Dimitrios Dimitrakos).
      - Fixed faulty behaviour of the "Mute" key in case the channel display is visible
        (thanks to Florian Bartels for reporting this one and Sascha Volkenandt for
        helping to fix it).
      - Modified LOF handling to allow for C-band reception (thanks to Malcolm Caldwell).
      - Added some missing cAudio handling calls (thanks to Werner Fink).
      - Replaced the 'for' loops in StripAudioPackets() with memset() calls (thanks to
        Werner Fink).
      - Further increased the timeout until an index file is considerd no longer to be
      - Fixed a crash in case the index file can't be accessed any more during replay
        (thanks to Stefan Huelswitt for reporting this one).
      - Fixed displaying messages in the status line in case they exceed the OSD width
        (thanks to Gerhard Steiner for reporting this one).
      - Avoiding high CPU load in case the connection to LIRC gets lost (thanks to
        Ludwig Nussel).
      - Fixed handling repeat function with LIRC (thanks to Ludwig Nussel).
      - Fixed handling min/max borders when entering integer values (thanks to Andy
        Grobb for reporting this one).
      - Implemented a "resume ID" which allows several users to each have their own
        resume.vdr files (thanks to Martin Hammerschmid). This parameter can be set in
        the "Setup/Replay" menu (see MANUAL for details).
      - Now using 'libdtv' version 0.0.5 (thanks to Rolf Hakenes for the new version
        and Stefan Huelswitt for adapting VDR to it).
      - If no device with an MPEG decoder can be found at startup, the first device
        is now used as primary device (just to have some device).
      - Adjusted some Premiere channels in 'channels.conf' (thanks to Thomas Koch).
      - Updated 'channels.conf.cable' (thanks to Stefan Hußfeldt).
      - The 'epg.data' file is now read after all plugins have been started (thanks
        to Sascha Volkenandt).
      - The LIRC remote control no longer tries to learn keys if it can't connect to
        the LIRC daemon (thanks to Ludwig Nussel for reporting this one). The same
        applies to the RCU remote control in case of errors during startup.
      - Fixed handling of Ca parameters with values <= MAXDEVICES, which don't indicate
        an actual encrypted channel (thanks to Stefan Huelswitt for reporting this one).
  20. 15 Dec, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.20 · 48fd2b04
      Klaus Schmidinger authored
      - Now checking if there is a connection to the keyboard (thanks to Jaakko Hyvätti)
        and only creating the KBD remote control if VDR is running in the foreground.
      - Fixed taking an active SVDRP connection into account when doing shutdown (thanks
        to Gregoire Favre for reporting this one).
      - Changed setting of CXX and CXXFLAGS variables in Makefile, so that an externally
        defined value will be taken if present (suggested by Robert Schiele).
        Plugin authors should please change the lines
        CXX      = g++
        CXXFLAGS = -O2 -Wall -Woverloaded-virtual
        in their Makefile to
        CXX      ?= g++
        CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual
      - Fixed recording overlapping timers on the same channel in case
        (thanks to Jaakko Hyvätti).
      - No longer stopping/restarting the DMX when switching audio channels (thanks to
        Sven Goethel).
      - Fixed high CPU load in 'Transfer Mode' (thanks to Oliver Endriss).
      - If a PC keyboard is used as remote control, the string entry fields in the
        menus now accept character input directly (however, this works only for keys that
        are not otherwise defined as remote control keys). Also, plugins can switch the
        cKbdRemote class into "raw mode", where all keyboard input will be made available
        through the new 'kKbd' key code and none of it will be processed as normal remote
        control functions (thanks to Jan Rieger for suggestions and testing).
      - Fixed deleting characters in string entry fields in 'insert' mode.
      - Now using "Doxygen" to generate source documentation (thanks to Walter Stroebel
        for providing an initial 'Doxyfile' configuration and adjusting some comments).
        See INSTALL for information how to do this. Some function descriptions have
        already been adapted to Doxygen, more will follow.
  21. 08 Dec, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.19 · 2b15337b
      Klaus Schmidinger authored
      - The character '|' in description texts of EPG records is now interpreted as a
        newline character (suggested by Gerhard Steiner).
      - Updated 'channels.conf.cable' (thanks to Andreas Kool).
      - Improved handling of repeated remote keys.
      - The RCU now only sets the channel number display when there are no incoming remote
        control keys, which improves reaction on repeated keys.
      - The actual tuning is now done in a separate thread, which makes zapping through the
        channels a lot faster and no longer gets stuck on channels that don't broadcast.
        This also makes "Motor-DiSEqC" work (thanks to Reinhard Walter Buchner for his help
        in testing this). Since switching channels now no longer explicitly waits for a
        channel lock in the foreground thread, the "panic level" mechanism is no longer
        used (maybe we don't need it any more, anyway).
      - The keyboard is now by default always active to control VDR. The 'make' option
        REMOTE=KBD is therefore obsolete. When compiling VDR with REMOTE=RCU or REMOTE=LIRC,
        the keyboard can thus now be active together with the remote control. If you want
        to build VDR _without_ keyboard support you can set NO_KBD=1 in the 'make' call.
        Since the keyboard codes are now different from the ones used previously (which
        were mapped by the 'ncurses' library) you will need to go through the "Learning
        keys" procedure again. To do so, either delete the file /video/remote.conf or
        remove the KBD.* entries from it before starting this version of VDR.
        (Thanks to Thomas Sailer for pointing out how to set the terminal parameters to
        read from the keyboard).
      - The 'ncurses' library is now only necessary when compiling VDR with DEBUG_OSD=1.
  22. 01 Dec, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.18 · 96ebdbf4
      Klaus Schmidinger authored
      - Fixed missing initialization of 'number' in cChannel (thanks to Martin Hammerschmid
        for reporting this one).
      - Fixed a misplaced ')' in the fix about the stale lock files (thanks again to
        Oliver Endriss for pointing this out - it was my fault).
      - Group delimiters in the 'channels.conf' file that have no text (like a simple ":"
        or ":@201") no longer show up in the Channels menu (suggested by Guy Roussin).
      - Added "Tele 5" to 'channels.conf' (thanks to Georg Hitsch).
      - Changed the source directory name for plugins from 'SRC' to 'src' (suggested by
        Clemens Kirchgatterer).
      - Removed transponders 10788, 11739 and 12266 from 'channels.conf' (apparently they
        are no longer active).
      - Deactivated some templates in tools.h in case some plugin needs to use the STL
        (suggested by Gerald Berwolf).
      - Timers now accept channel IDs even if the 'source' is 0 (thanks to Stefan Huelswitt
        for reporting this one).
      - Now taking an active SVDRP connection into account when doing shutdown or
        housekeeping (suggested by Emil Naepflein).
      - Macros in 'keymacros.conf' can now use "@plugin" to directly access the main menu
        function of a given plugin (see man vdr(5) for details).
      - The new plugin 'sky' can be used to integrate a Sky Digibox into the VDR system,
        using a Kfir MPEG2 encoder card (see PLUGINS/src/sky/README for details).
  23. 10 Nov, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.16 · 8b5d4040
      Klaus Schmidinger authored
      - Fixed saving the polarization parameter of channels that have a number in the
        'source' parameter (thanks to Peter Seyringer for reporting this one).
      - Updated 'channels.conf.terr' (thanks to Andy Carter).
      - Updated 'channels.conf.cable' (thanks to Achim Lange).
      - First step towards a "unique channel ID". The channel ID is a human readable
        string, made up from several parameters of the channel's definition in the file
        'channels.conf' (see man vdr(5) for details).
        In order for the "unique channel ID" to work, all channel definitions now must
        be unique with respect to the combination of their Source, Frequency and SID
        parameters. You may have to fix your 'channels.conf' manually if there are error
        messages in the log file when loading it. BE SURE TO MAKE A BACKUP COPY OF YOUR
        'channels.conf' AND 'timers.conf' FILE BEFORE SWITCHING TO THIS VERSION, AND CHECK
        When reading an existing 'timers.conf', the channels will be identified as before
        by their numbers. As soon as this file is written back, the channel numbers will
        be replaced by the channel IDs. After that it is possible to manually edit the
        'channels.conf' file and rearrange the channels without breaking the timers.
        Note that you can still define new timers manually by using the channel number.
        VDR will correctly identify the 'channel' parameter in a timer definition and
        use it as a channel number or a channel ID, respectively. Also, the SVDRP commands
        that return timer definitions will list them with channel numbers in order to
        stay compatible with existing applications.
        The channel ID is also used in the 'epg.data' file to allow EPG information from
        different sources to be stored, which would previously have been mixed up in case
        they were using the same 'service ID'. Note that the contents of an existing
        'epg.data' file from a previous version will be silently ignored, since it doesn't
        contain the new channel IDs. When inserting EPG data into VDR via SVDRP you now also
        need to use the channel IDs.
        Currently the EPG data received from the DVB data stream only uses the 'Source'
        and 'Service ID' part of the channel ID. This makes it work for channels with
        the same service IDs on different sources (like satellites, cable or terrestrial).
        However, it doesn't work yet if the service IDs are not unique within a specific
        source. This will be fixed later.
      - Added missing SID parameters to 'channels.conf'. Some channels have been removed
        since they are apparently no longer broadcasted.
      - Removed dropping EPG events from "other" streams that have a duration of 86400
        seconds or more (was introduced in version 1.1.10). This has become obsolete by
        the modification in version 1.1.13, which fixed fetching the current/next information
        to handle cases where the duration of an event is set wrongly and would last beyond
        the start time of the next event. Besides, the change in 1.1.10 broke handling EPG
        data for NVOD channels.
      - Fixed a compiler warning regarding cMenuChannels::Del() and MenuTimers::Del() hiding
        the base class virtual functions.
  24. 03 Nov, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.15 · 1a8a0816
      Klaus Schmidinger authored
      - Completely switched to the new CVS HEAD version of the linux-dvb driver.
        The NEWSTRUCT compile time switch is now obsolete. The required driver is now
        the CVS HEAD version dated 2002-11-01 or later.
      - Adjusted the INSTALL file to the 1.1.x version.
      - Only accepting key presses from the current remote control when learning (thanks to
        Oliver Endriss).
      - Fixed the EPG scanner, which broke 'Transfer Mode' as soon as it kicked in
        (thanks to Oliver Endriss for reporting this one).
      - Fixed handling audio tracks in cDvbDevice.
      - Updated channels.conf.terr (thanks to Uwe Scheffler).
      - Fixed displaying the group separators in the channel display (thanks to Martin
        Hammerschmid for pointing out this one).
      - The Makefile now includes the file Make.config (if present in the VDR source
        directory), which allows the user to overwrite several settings with individual
        values (suggested by Andreas Schultz). The VDR distribution archive does not
        contain this file in order to not overwrite a user defined file. There is a
        Make.config.template which contains the default values of the macros the user
        can overwrite.
      - Since there have been changes to the 'newplugin' script authors of plugins
        may want to newly create their plugins' Makefiles with the new version of this
        script, and adapt them to their individual needs (make sure you don't overwrite
        your existing plugin directory - make a backup copy first!).
      - Fixed reading EPG data via the SVDRP command PUTE (it changed the current
        service ID).
      - Fixed closing all dup'ed file descriptors in cPipe.
      - Implemented a plugin interface for additional audio processing (see PLUGINS.html
        under "Dolby Digital").
        The functionality of the '-a' command line option has been reactivated.
        Since the author doesn't have any Dolby Digital equipment this may or may not
        work as expected. There may still be some places where a call to cAudios::Clear()
        or cAudios::Mute() is necessary. Those with Dolby Digital equipment should please
        take a look at this and maybe send patches.
        Replaying Dolby Digital in ways other than through VDR's '-a' option will have to
        be implemented as plugins. Those who have written patches for VDR version 1.0.x
        should convert their work into the proper plugins for version 1.1.x.
        Note to authors of cPlayer derived plugins: please read the modified comments
        in device.h regarding the member functions cDevice::Clear(), cDevice::Mute() and
        cDevice::PlayAudio(). Derived classes must call these base class member functions
        to make sure all registered cAudio objects are properly handled. Also note that
        the return type of cDevice::PlayAudio() has been changed to 'void', since this
        function always has to accept the entire data block immediately and there is
        nothing that could be reasonably done in case an error occurs in one of the
        cAudio objects.
      - Now checking the driver's DVB_API_VERSION in dvbdevice.h. Since VDR now requires
        a driver dated 2002-11-01 or later the MIN_DVB_DRIVER_VERSION_FOR_TIMESHIFT and
        DVB_DRIVER_VERSION stuff has been replaced with DO_REC_AND_PLAY_ON_PRIMARY_DEVICE,
        which can be used to disable simultaneous recording and replaying on the primary
        DVB device in case there are problems with this.
  25. 27 Oct, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.14 · 57bd7eee
      Klaus Schmidinger authored
      - Fixed some faulty default parameter initializations (thanks to Robert Schiele).
      - Added further satellites to 'sources.conf' (thanks to Reinhard Walter Buchner
        and Oliver Endriss).
      - Updated Finnish OSD texts (thanks to Jaakko Hyvätti).
      - Fixed a small glitch when switching channels (thanks to Dennis Noordsij for
        reporting this one).
      - Fixed handling multiple 'CaCaps' entries in 'setup.conf'.
      - Group separators in 'channels.conf' may now be given like ':@201 My Channels',
        where '@201' indicates the number to be given to the next channel. This can be
        used to create 'gaps' in the channel numbering (see 'man 5 vdr'). BE CAREFUL
        'channels.conf' FILE!
      - Timers now internally have a pointer to their channel (this is necessary to
        handle gaps in channel numbers, and in preparation for unique channel ids).
      - Fixed slow reaction on SVDRP input (thanks to Guido Fiala for reporting this one).
      - Added KI.KA to channels.conf.cable (thanks to Robert Schiele).
      - Frequency values for cable and terrestrial channels in 'channels.conf' can
        now be given either in MHz, kHz or Hz. The actual value given will be multiplied
        by 1000 until it is larger than 1000000.
      - Fixed skipping unavailable channels when zapping downwards.
      - Fixed checking the Ca() status of a cDevice (thanks to Stefan Huelswitt).
      - Fixed switching audio tracks in 'Transfer Mode' on the primary DVB device
        (thanks to Steffen Barszus and Stefan Huelswitt for reporting this one and
        helping to fix it).
      - Fixed channel switching in case of an active 'Transfer Mode' on the primary
        device ('Transfer Mode' is now launched with priority '-1').
      - Fixed a ternary expression in dvbspu.c.
      - Fixed handling 'Transfer Mode' on single device systems when recording an
        encrypted channel (thanks to Stefan Huelswitt).
      - Fixed blocking replaying in case an encrypted channel is being recorded on
        the primary device.
      - Now the name of the remote control is displayed when learning the keys.
      - Fixed learning remote control keys in case there is more than one remote
        control (thanks to Oliver Endriss for reporting this one).
      - Implemented additional dedicated keys for "Play", "Pause", "Stop", "Record",
        "FastFwd", "FastRew", "Channel+" and "Channel-". If your remote control supports
        any of these keys you can delete your 'remote.conf' file and restart VDR to
        go through the key learning procedure again in order to assign these new keys.
        See MANUAL for more information.
        Authors of player plugins should update their ProcessKey() functions so that
        the new player keys have the same functionality as the "Up", "Down", "Left",
        "Right" and "Blue" keys, respectively. Note that the existing functionality
        of these keys should by all means be retained, since VDR (and any plugins)
        shall be fully usable with just the basic set of keys. These new keys are only
        for additional comfort in case the remote control in use supports them.
      - Implemented new keys to directly access the VDR main menu functions "Schedule",
        "Channels", "Timers", "Recordings", "Setup" and "Commands". If your remote
        control provides keys you want to assign these functions to, you can delete
        your 'remote.cof' file and restart VDR to  go through the key learning procedure
        again in order to assign these new keys. See MANUAL for more information.
      - The new configuration file 'keymacros.conf' can be used to assign macros to
        the color buttons in normal viewing mode, as well as to up to 9 user defined
        keys. See MANUAL and man vdr(5) for more information. The default 'keymacros.conf'
        implements the functionality of the "color button patch".
      - Fixed a crash when learning the keys of several remote controls and pressing
        buttons of those that have already been learned (thanks to Oliver Endriss for
        reporting this one).
  26. 29 Sep, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.11 · d0807381
      Klaus Schmidinger authored
      - Fixed an incomplete initialization of the filter parameters in eit.c (thanks
        to Jeremy Hall).
      - Fixed the 'newplugin' script for use with the NEWSTRUCT driver (thanks to
        Andreas Schultz for reporting this one). If you have already created a plugin
        directory and Makefile with 'newplugin', please apply the following patch to it:
        --- Makefile    2002/06/10 16:24:06     1.4
        +++ Makefile    2002/09/17 15:36:36     1.5
        @@ -15,7 +15,12 @@
         ### The directory environment:
        +ifdef NEWSTRUCT
        +DVBDIR = ../../../../DVB/include
         DVBDIR = ../../../../DVB/ost/include
         VDRDIR = ../../..
         VDRINC = $(VDRDIR)/include
         LIBDIR = ../../lib
        @@ -34,7 +39,7 @@
        +DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
         ### The object files (add further files here):
        This is the diff for the 'setup' example that comes with VDR, so your line
        numbers may be different.
      - Added a missing 'public' keyword in device.h (thanks to Martin Hammerschmid).
      - Fixed a race condition when starting 'Transfer Mode'.
      - Rearranged the remote control key handling to allow plugins to implement
        additional types of remote controls (see PLUGINS.html, section "Remote Control").
        The previously used files 'keys.conf' and 'keys-pc.conf' have been replaced
        by the file 'remote.conf', which holds the key definitions of all remote controls.
      - The LIRC remote control keys are now handled just like the keyboard and RCU keys.
        This means that you can use the lircd.conf file as is for your remote control,
        without the need of editing it to make the key names the same as used in VDR.
        When first starting VDR it will go into the "Learning keys" mode and ask you
        to press the various keys. The resulting key assignment will be stored in
        the file 'remote.conf'.
        Since I have no way of testing the LIRC support, I hope I didn't break it in
        the process...
      - While learning the remote control keys it is now possible to press the 'Menu'
        key to skip the definition of keys that are not available on your particular
        RC unit.
      - Fixed handling DVD subtitles in the SPU decoder (thanks to Andreas Schultz).
      - Avoiding restarts due to 'panic level' when switching channels on the primary
        device during EPG scan.
  27. 09 May, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.0 · ae8a9473
      Klaus Schmidinger authored
      - Begin of the 1.1 development branch. THIS IS NOT A STABLE VERSION!
        The current stable version for every day use is still the 1.0 branch.
      - First step towards a universal plugin interface. See the file PLUGINS.html
        for a detailed description. The man page vdr(1) describes the new options '-L'
        and '-P' used to load plugins. This first step implements the complete "outer"
        shell for plugins. The "inner" access to VDR data structures will follow.
      - The VDR version number is now displayed in the title line of the "Setup" menu.
  28. 29 Jul, 2001 1 commit
    • Klaus Schmidinger's avatar
      Version 0.85 · 8f9cc68f
      Klaus Schmidinger authored
      - Added Norwegian language texts (thanks to Jørgen Tvedt).
      - Increased the usleep value in cDvbOsd::Cmd() to 5000 in order to work on
        systems with the KURT/utime-patch (thanks to Guido Fiala).
      - Changed the check whether the driver is loaded in runvdr to check for the
        'dvb' module (the last one loaded).
      - Fixed repeat function with LIRC (thanks to Stefan Huelswitt).
      - Increased the upper limit for the symbol rate to 30000 (thanks to Ulrich
      - Made the position of the channel display configurable (thanks to Stefan
      - Made the width and height of the OSD configurable (thanks to Stefan Huelswitt).
      - DiSEqC support can now be generally enabled/disabled in the Setup menu. This
        may be necessary if your multiswitch gets irritated by the default DiSEqC
        codes '0' (thanks to Markus Lang).
      - Fixed replaying in case there is no index file.
      - Fixed jumping to an editing mark when replay has been paused.
      - Avoiding unnecessary code execution in the replay progress display (thanks
        to Guido Fiala).
      - When entering time values the digits that still have to be entered are now
        shown as '-' (as in "1-:--").
      - When setting an editing mark while the progress display is not active, the
        display will now be turned on for a short while to indicate the successful
        setting of the mark.
      - Updated 'channels.conf' for Premiere World (thanks to Helmut Schächner).
        Check your timers if you use this channels.conf file, since the sequence of
        several PW channels has been changed.
      - Changed the color of "Info" messages to "black on green" and that of the
        confirmation messages (like "Delete...") to "black on yellow".
      - Fixed display with DEBUG_OSD (it still crashes sometimes, esp. when replaying,
        but I can't seem to find what causes this... any ideas anybody?).
      - Avoiding audio/video distortions in 'Transfer Mode' by no longer actually
        tuning the primary interface (which can't receive this channel, anyway).
        Apparently the driver gets irritated when the channel is switched and a
        replay session is started immediately after that.
      - Increased timeout until reporting "video data stream broken" when recording.
      - Explicitly switching back to the previously active channel after ending a
        replay session (to have it shown correctly in case it was in 'Transfer Mode').
  29. 24 Feb, 2001 1 commit
    • Klaus Schmidinger's avatar
      Version 0.71 · f2937af9
      Klaus Schmidinger authored
      - Fixed 'Transfer Mode' in cases where a non-primary interface was switched to
        a channel that only the primary interface can receive (which could happen in
        the EPG scanner).
      - The EPG scanner now starts with the first channel (it used to start with the
        second channel).
      - Reacitvated setting the PNR.
      - Adapted the frame scanning to the new muxing of the driver.
      - The new compile time option REMOTE=NONE can be used to compile VDR without
        any remote control support (for applications where it shall be controlled
        exclusively via SVDRP).
      - The new command line option -D can be used to define which DVB interfaces
        a certain instance of VDR shall use.
      - The "Left" and "Right" keys are now used to page up and down in lists (thanks
        to Martin Hammerschmid). Since the "Timers" menu already uses these keys to
        (de)activate timers, this functionality is not available there.
      - The "Main" and "Commands" menu now support "hotkeys", which means that if the
        first non-blank character of a menu item is a digit in the range 1..9, that
        item can be selected by pressing the respective numeric key on the remote
      - The channel data in 'channels.conf' now contains the teletext PID (thanks to
        Dave Chapman). Existing files will be read normally (and the teletext PID set
        to 0), but once they are written back (due to some channel editing) the file
        will have the new format.
      - The EPG scanner now scans each transponder only once per cycle.
      - Deleted recordings are now automatically removed from disk after a while (not
        only when disk space is being needed for a new recording).
      - Fixed repeat function in LIRC remote control.
      - Changed the MAXDVBAPI macro in dvbapi.c to 4 in order to directly support the
        maximum possible number of DVB cards.
      - The 'Ca' parameter in the default 'channels.conf' has been changed from '2'
        to '3' because the VDR prototype now has 3 DVB cards (and currently the CAM
        module only works if it is inserted into the last DVB card).
      - The "Now", "Next" and "Schedule" menus now remember the current channel and
        restore the list when switching between them.
      - The "Green" button in the "Recordings" menu can now be used to rewind a
        recording and play it from the very beginning.
      - Fixed handling ':' in timer filenames and '\n' in timer summaries (see FORMATS).
      - When removing recordings empty directories are now removed from the video
      - Added the "schnitt" tools from Matthias Schniedermeyer.
      - New SVDRP command MESG to display a short message on the OSD.
      - The Perl script 'svdrpsend.pl' can be used to send SVDRP commands to VDR.
      - SVDRP can now immediately reuse the same port if VDR is restarted.
      - SVDRP now has a timeout after which the connection is automatically closed
        (default is 300 seconds, can be changed in "Setup").
      - The compile time switch VFAT can be used to make VDR avoid the ':' character
        in file names (VFAT can't handle them). Do 'make VFAT=1' to enable this.
      - Support for DVB-C (thanks to Hans-Peter Raschke and Peter Hofmann).
        See the INSTALL file for more information about the use of VDR with cable.
      - Fixed an occasional segfault in the EIT processor.
      - A value of '0' for the EPGScanTimeout setup parameter now completely turns off
        scanning for EPG data on both single and multiple card systems.
      - New setup parameter "PrimaryLimit" that allows to prevent timers from using the
        primary DVB interface in multi card systems. Default value is 0, which means
        that every timer may use the primary interface.
      - The 'active' field of a timer will now be explicitly set to '1' if the user
        modifies an active timer (see FORMATS for details).
      - The new command line option -w can be used to activate a watchdog that makes
        VDR exit in case the main program loop does not respond for more than the
        given number of seconds. This is mainly useful in combination with the new
        'runvdr' script that restarts VDR in case is has exited.
  30. 08 Oct, 2000 1 commit
    • Klaus Schmidinger's avatar
      Version 0.66 · a379eb71
      Klaus Schmidinger authored
      - Remote control data is now received in a separate thread, which makes things
        a lot smoother.
      - Repeat and release of remote control keys is now explicitly distinguished.
      - In replay mode the search forward/back and skip functions now have two modes:
        Pressing the key shortly and releasing it starts the function, and pressing it
        again stops it. Pressing and holding down the key starts the function and
        releasing the key stops it.
      - The '@' character that marks an "instant recording" can now be turned off
        in the "Setup" menu (thanks to Matthias Schniedermeyer).
      - Pressing the "Back" button while replaying now stops replaying and brings up
        the "Recordings" menu (suggested by Carsten Koch). This can be used to easily
        delete a recording after watching it, or to switch to a different recording.
      - The "Recordings" menu now places the cursor on the last replayed recording, if
        that file still exists.
      - The "Blue" button in the "Main" menu can now be used to "Resume" a previously
        stopped replay session (suggested by Martin Hammerschmid).
      - The low and high LNB frequencies can now be changed in the "Setup" menu.
  31. 03 Oct, 2000 1 commit
    • Klaus Schmidinger's avatar
      Version 0.65 · ef8fe3f0
      Klaus Schmidinger authored
      - Modified LIRC interface to better handle repeat function.
      - Faster OSD by first writing into a bitmap and then sending the entire bitmap
        to the DVB driver at once (requires the patch 'dvb.c.071.diff' to be applied
        against the version 0.71 DVB driver file 'dvb.c').
      - When switching channels the channel is now immediately displayed, and the
        current/next information is shown as soon as it becomes available.
      - No longer displaying the year in the 'Recordings' menu to saves space for the
      - The 'Recordings' menu now displays a '*' to indicate new recordings.
      - Added the description of the timers.conf file to the FORMATS file (thanks to
        Bastian Guse).
      - Displaying as much as possible of the current/next info (dropping characters
        that would display only partially).
      - In normal viewing mode the '0' key now toggles between the current and the
        previous channel.
  32. 20 Sep, 2000 1 commit
    • Klaus Schmidinger's avatar
      Version 0.64 · 7e4b4d29
      Klaus Schmidinger authored
      - NOTE: If you are using DVB driver version 0.7 you need to load the dvb.o
        module with option outstream=0, so your insmod statement should read
        'insmod dvb.o outstream=0'. This is currently necessary because 'vdr'
        still works with AV_PES data.
      - Video files now have the 'group read' bit set.
      - Fixed handling errors in 'readstring()'.
      - Handling SIGPIPE and re-establishing handler after intercepting a signal.
      - The configuration files are now by default read from the video directory.
        This can be changed by using the new '-c' option. Make sure you copy your
        current '*.conf' files to your video directory ('/video' by default), or
        use "-c ." to get the old behaviour of loading the configuration files
        from the current directory.
      - Waiting for input is now handled by a common function, which improves
        response time on user actions. As a consequence the EIT data may sometimes
        not be displayed, but this will change later when cEIT runs as a separate
      - The new SVDRP command 'HITK' (thanks to Guido Fiala!) can be used to 'hit'
        a remote control key.  Establish an SVDRP connection and enter HITK without
        a parameter for a list of all valid key names.
      - The new SVDRP command 'GRAB' (thanks to Guido Fiala!) can be used to grab
        the current frame and save it to a file.
      - The new SVDRP commands 'OVL*' can be used to control video overlays (thanks
        to Guido Fiala!). This is mainly for use in the 'kvdr' tool (see the 'kvdr'
        page at http://www.s.netic.de/gfiala).
      - If the name of the video directory used with the '-v' option had trailing
        slashes, the recording file names have been damaged. Trailing slashes are
        now silently removed.
      - Fixed a buffer overflow in EIT parsing.
      - Added a security warning regarding SVDRP to the INSTALL file.
      - Fixed 'confirm' dialog.
      - The daemon mode (option '-d') now no longer works with REMOTE=KBD (there
        is no stdin in daemon mode, so KBD makes no sense - plus it sometimes
  33. 25 Jul, 2000 1 commit
    • Klaus Schmidinger's avatar
      Version 0.6 · 1d22145c
      Klaus Schmidinger authored
      - Added support for LIRC remote control (thanks to Carsten Koch!).
        There are now three different remote control modes: KBD (PC-Keyboard), RCU
        and LIRC. See the INSTALL file for information on how to enable either of
        these modes. The default mode is now KBD, not RCU as before (to make it
        work immediately even if there is no actual remote control).
      - Fixed small bug in dvbapi.c that was causing some channels (many on hotbird)
        not to be correctly tuned (thanks to Plamen Ganev!).
      - Now clearing the replay buffer in search forward/back, which results in
        faster reaction.
      - The 'Recordings' menu is now listed alphabetically (thanks to Carsten Koch!).
      - The new 'epg2timers' tool (thanks to Carsten Koch!) can be used to convert
        an EPG "merkliste" page (http://www.tvtv.de) to vdr timer entries.
      - The new 'xtvrc2vdr' tool (thanks to Plamen Ganev!) can be used to convert
        'xtvrc' channel files into 'vdr' format.
      - When more than one timer matches at the same time, the first one in the list
        with the highest 'Priority' is selected.
      - The MANUAL section on "Programming the Timer" has been filled in.
      - The year in the "Recordings" menu as well as in the progress display during
        replay has been reduced to 2 digits to allow more space for the recording's
        title. In the internal file structure the year is still stored with 4 digits,
        so there will be no problem at the next turn of the century ;-)
      - Channel names and timer filenames can now contain blanks. To avoid problems
        with file names that contain blanks, all blanks in recording file names are
        converted to underscores.
      - The polarization can now be given in uppercase or lowercase characters in
      - Fixed buffer initialization to work with DVB driver version 0.6.
      - Implemented the "Simple Video Disk Recorder Protocol" (SVDRP) to control
        the VDR over a network connection.
      - Implemented command line option handling.
      - The program can now run in full background mode by using the --daemon option.
      - Added a "summary" field to the timers (thanks to Carsten Koch!).
        This field can contain a descriptive text of the programme and will be
        displayed when the "Blue" key is pressed on a recording that was created by
        this timer. If the text contains the special character '|', a newline will
        be inserted at that place.  When pressing "Ok" on a timer that contains a
        summary field, the summary will be displayed. To edit such a timer the "Red"
        key must be pressed. Timers without a summary still go into Edit mode when
        pressing "Ok".  The summary field can only be filled in directly by editing
        the 'timers.conf' file with a text editor, or by defining/modifying the timer
        via the SVDRP interface.
  34. 15 Jul, 2000 1 commit
    • Klaus Schmidinger's avatar
      Version 0.06 · 3b78ec83
      Klaus Schmidinger authored
      - Added support for LIRC remote control (thanks to Carsten Koch!).
        There are now three different remote control modes: KBD (PC-Keyboard), RCU
        and LIRC. See the INSTALL file for information on how to enable either of
        these modes. The default mode is now KBD, not RCU as before (to make it
        work immediately even if there is no actual remote control).
  35. 27 May, 2000 1 commit
    • Klaus Schmidinger's avatar
      Version 0.05 · 9599a8fd
      Klaus Schmidinger authored
      - Support for more than one DVB card.
      - Simultaneous record and replay (with two DVB cards).
      - Instant recordings no longer get the name "instant". They now get the name
        of the channel, with a prepended '@' character.
      - Timers that are not given an explicit Name now use the channel name with
        a prepended '@' character.
      - If an instant recording is currently active, the Main menu now contains
        an option to stop that recording.
      - Timers are now only processed when the Menu is not active. So after editing
        a timer the effect will take place only after the menu has been closed.
        In order to avoid missing a timer event by inadvertently leaving the menu
        open, the menu will be closed automatically after about two minutes of
      - If a recording is currently being replayed, the Main menu now contains an
        option to stop replaying.
      - Displaying the recording DVB interface status in the decimal points of the
        RCU display.
      - Reduced the number of remote control keys. Modified the key assignments for
        the PC keyboard to better resemble the "up-down-left-right-ok" layout on
        menu controlling remote control units.
  36. 24 Apr, 2000 1 commit
    • Klaus Schmidinger's avatar
      Version 0.04 · 85b8e41e
      Klaus Schmidinger authored
      - Changed name from 'osm' to 'vdr' to avoid mixups with the 'oms' program that
        appears to be in use with DVD replay.
      - Implemented a channel display in the top menu line.
      - Implemented replay progress display (press "Ok" when replaying to bring it up).
      - Implemented direct channel selecting by pressing the numeric keys.
      - Added several 'const' keywords to please stricter compilers.
      - The repeat function for the remote control no longer adapts dynamically
        to the timing of the RCU (this sometimes caused the repeat function to
        kick in too early).
      - Channel selection is now blocked when recording or replaying.
      - Improved process handling.
  37. 19 Feb, 2000 1 commit