1. 24 Jun, 2017 1 commit
  2. 07 Jan, 2017 1 commit
  3. 07 Feb, 2015 1 commit
  4. 17 Feb, 2013 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.38 · 4c59501a
      Klaus Schmidinger authored
      VDR developer version 1.7.38 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      f4ef0f60ed662f3c983a830da67df9b2  vdr-1.7.38.tar.bz2
      e945b0f44e13ed768de726cf6e66317c  vdr-1.7.37-1.7.38.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:
      - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Updated the Romanian OSD texts (thanks to Lucian Muresan).
      - Updated the French OSD texts (thanks to Marc Perrudin, Bernard Jaulini and Peter
      - Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
      - Fixed moving editing marks, so that they don't get overwritten with old values
        through an update of the marks file.
      - Removed an invalid line from channels.conf.terr (reported by Lars Hanisch).
      - Fixed an unexpected k_Repeat key event after a k_Release in lirc.c.
      - Fixed permissions of po/sr_SR.po (reported by Dominic Evans).
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Fixed using "Pause" and "Slow motion" near the end of a recording (replay stopped
        a few seconds after the end of the recording file has been reached).
      - Fixed selecting the last replayed recording in the Recordings menu in case there
        are folders and plain recordings with names that differ only in non-alphanumeric
        characters (reported by Andre Weidemann).
      - Fixed the description of the OSD drawing functions DrawEllipse() (the values -5...-8
        for the Quadrants parameter are not implemented).
      - Made cOsd::DestroyPixmap() "NULL proof".
      - Now deleting any previously allocated pixmaps in cOsd::SetAreas().
      - Added demos of the DrawEllipse() and DrawSlope() function to the 'osddemo'
        plugin (press '1' or '2', respectively).
      - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
      - The timeout for trying to switch to a valid programme is now reset immediately once
        a programme has been found.
      - No longer checking for EOPNOTSUPP in cDvbTuner::GetSignalQuality() to avoid breaking
        this function in case the driver suddenly decides to return a different errno value
        if an operation is not supported.
      - Moved the definition of TIMERMACRO_TITLE and TIMERMACRO_EPISODE from recording.h to
        config.h and using them to initialize Setup.NameInstantRecord (avoids having the same
        information in two places).
      - Fixed the return value of cOsdProvider::StoreImage() in case there is no OSD provider.
      - Fixed a crash in cMenuEditChanItem::Set() when entering a channel number that
        doesn't exist (reported by Mikael Hübsch).
      - Fixed displaying pending timers in "alert" mode in the LCARS skin.
      - Added missing $(LDFLAGS) to the Makefile of the dvbhddevice plugin (thanks to Ville
      - Fixed some spellings in PLUGINS.html and Doxyfile (thanks to Ville Skyttä).
      - Added '-p' to the cp command in the install-conf target of the Makefile (thanks to
        Ville Skyttä).
      - Added missing 'const' to cDevice::HasProgramme() and cDevice::HasLock().
      - Fixed determining the priority of the primary device in case it is neither replaying
        nor receiving a live channel (thanks to Matthias Senzel for reporting a problem with
        switching back to live viewing after replay in a setup with device bonding).
      - Removed all \return and \param tags from comment lines marked with "///<" for Doxygen.
        There was only a rather small number of these, and I would probably always forget to
        put them in place when writing future comments, so I decided to drop them entirely.
      - Added Doxyfile.filter to have special characters escaped that would otherwise be
        dropped by Doxygen (reported by Ville Skyttä).
      - Using 'cat' instead of 'cp' to copy the Doxyfile to avoid problems in case Doxyfile
        is write protected.
      - Updated the Doxyfile with a newer version of Doxygen.
      - Turned off following symlinks in the Doxyfile.
      - Removed trailing whitespace.
      - Expanded tabs in PLUGINS/src/dvbhddevice/setup.c.
      - Some formatting fixes.
  5. 30 Sep, 2012 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.31 · fa684532
      Klaus Schmidinger authored
      VDR developer version 1.7.31 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      a3edd18a352465dd26c97c1990f7bcfd  vdr-1.7.31.tar.bz2
      32ff98697d1b383478a6e1932e4afc9c  vdr-1.7.30-1.7.31.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.
      The default skin "LCARS" displays the signal strengths and qualities of
      all devices in its main menu. For devices that have an stb0899 frontend chip
      (like the TT-budget S2-3200) retrieving this information from the driver is
      rather slow, which results in a sluggish response to user input in the main
      menu. To speed this up you may want to apply the patches from
      to the LinuxDVB driver source.
      The changes since version 1.7.30:
      - If regenerating an index file fails and no data is written to the file, VDR now
         reports this error and removes the empty index file.
      - The setup parameter "Recording/Instant rec. time (min)" can now be set to '0',
         which means to record only the currently running event (based on a patch from Matti
      - Decreased the ring buffer put/get trigger sizes from 1/3 to 1/10.
      - The script given to VDR with the '-r' option is now also called whenever a
         recording is deleted (thanks to Alexander Wenzel).
      - Improved detecting frames in MPEG 4 video (reported by Andrey Pridvorov).
      - cPatPmtParser::ParsePmt() now also recognizes stream type 0x81 as "AC3", so that
         recordings that have been converted from the old PES format to TS can be played
         (suggested by Jens Vogel).
      - Fixed a leftover frame counter in the LCARS skin's replay display after jumping to
         an editing mark and resuming replay.
      - The new class cIoThrottle is used to allow I/O intense threads to temporarily
         suspend their activities in case buffers run full (suggested by Torsten Lang).
         Currently the cutter thread is suspended if the TS or Recorder buffer use more
         than 50% of their capacity. Plugin authors may want to participate in this
         mechanism if they use intense background I/O.
      - Increased the size of the TS buffer to 5MB and that of the Recorder buffer to
         20MB to better handle HD recordings (suggested by Torsten Lang).
      - Moved cleaning up the EPG data and writing the epg.data file into a separate
         thread to avoid sluggish response to user input on slow systems (based on a patch from
         Sören Moch).
      - Fixed sorting folders before recordings in case of UTF-8 (thanks to Sören Moch).
      - Reactivated stripping control characters from EPG texts and adapted it to UTF-8.
      - Added missing decrementing of 'len' in libsi/si.c's String::decodeText() functions.
      - When checking whether a video directory is empty, file names that start with a
         dot ('.') are no longer automatically ignored and implicitly removed if the directory
         contains no other files. Instead, RemoveEmptyDirectories() now has an additional
         parameter that can be given a list of files that shall be ignored when considering
         whether a directory is empty. This allows users to continue to use files such as
         ".keep" to prevent a directory from being deleted when it is empty. Currently the
         only file name that is ignored is ".sort".
  6. 05 Dec, 2011 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.22 · 5a28d999
      Klaus Schmidinger authored
      Original announce message:
      VDR developer version 1.7.22 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      b9c0fe1aac8e653c0d0234bc72c2bb2c  vdr-1.7.22.tar.bz2
      868bb332342c9a78beda17cc85e0bb93  vdr-1.7.21-1.7.22.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.
      From the HISTORY file:
      - Fixed scaling subtitles in case the primary device's GetVideoSize() function doesn't
        return actual values (thanks to Luca Olivetti).
      - The DiSEqC codes are now copied in the call to cDiseqc::Execute().
      - VDR now supports "Satellite Channel Routing" (SCR) according to EN50494 (based on
        the "unicable" patch from Lars Hanisch).
        Since "Unicable" is a registered trademark and stands for only one of many
        implementations of SCR, the following changes have been made compared to the patch,
        which need to be taken into account by people who have set up their system using
        the patch:
        - The 'U' parameter in the diseqc.conf file has been changed to 'S' ("Scr").
        - The configuration file name has been changed from "unicable.conf" to "scr.conf".
      - Updated sources.conf (thanks to Arthur Konovalov).
      - The SVDRP command LSTC now also accepts channel IDs (thanks to Dominic Evans).
      - Fixed handling DVB subtitles and implemented decoding textual DVB subtitles (thanks
        to Rolf Ahrenberg).
      - Added cap_net_raw to the capabilities that are not dropped (thanks to Dominic Evans).
      - Fixed setting the start time of an edited recording (thanks to Christoph Haubrich).
      - Temporarily switching free devices to transponders in order to have their running
        status updated is now done by marking the devices as "occupied" for a certain
        amount of time.
      - The new setup options "LNB/Device n connected to sat cable" can be used to define
        which DVB-S devices are connected to the same sat cable and are therefore "bonded".
        This obsoletes the LNBSHARE patch. Users of the LNBSHARE patch will need to newly
        set up their sat devices with the above options.
      - Fixed a crash when deleting a recording while cutting it (thanks to Ville Skyttä).
      - Fixed several spelling errors (thanks to Ville Skyttä).
      - The new SVDRP command UPDR can be used to trigger an update of the list of
        recordings (thanks to Lars Hanisch).
      - Added generating a pkg-config file to the Makefile (thanks to Ville Skyttä).
      - Removed the '.pl' suffix from all scripts (thanks to Ville Skyttä).
      - Changed the default location for the LIRC socket to /var/run/lirc/lircd (thanks
        to Ville Skyttä).
      - Added file name and line number to LOG_ERROR_STR() (thanks to Rolf Ahrenberg).
      - Replaced all calls to sleep() with cCondWait::SleepMs() (thanks to Rolf Ahrenberg).
      - Fixed a crash with malformed SI data (patch from vdr-portal).
  7. 22 Nov, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.10 · ea01358b
      Klaus Schmidinger authored
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Fixed wrong bracketing in cChannel::SubtitlingType() etc.
        (thanks to Rolf Ahrenberg).
      - Fixed not logging changes for channels that have no number
        (reported by Timothy D. Lenz).
      - Changed the project's URLs and email to tvdr.de.
      - Added Lithuanian language translations (thanks to Valdemaras Pipiras).
      - Updated Chinese language texts (thanks to Nan Feng).
      - Only checking DVB_API_VERSION to be >=5 in order to stay compileable in case
        the DVB API version number is increased (the API claims to always be backward
      - Fixed saving terminal settings when running in background (thanks to Manuel
      - Fixed cFrameDetector::Analyze() to handle video streams where the frame type
        is not detectable from the first TS packet of a frame.
      - Fixed writing the PCR pid into the PMT in cPatPmtGenerator::GeneratePmt()
        (reported by Rene van den Braken).
      - Added Slovakian language texts (thanks to Milan Hrala).
      - Fixed EntriesOnSameFileSystem() to avoid using f_fsid, which may be 0 (thanks
        to Frank Schmirler).
      - Fixed starting a recording at an I-frame.
      - Fixed generating the index for recordings from channels that put a whole
        GOP into one payload unit.
      - The index file for TS recordings is now regenerated on-the-fly if a
        recording is replayed that has no index. This can also be used to
        re-create a broken index file by manually deleting the index file and then
        replaying the recording (at least until the index file has been generated).
      - The cRingBufferLinear::Read() function now returns -1 and sets errno to
        EAGAIN if the buffer is already full.
      - Fixed handling DVB subtitles for PES recordings (thanks to Rolf Ahrenberg).
      - Added the audio id to the call of PlayAudio() in cDevice::PlayTsAudio()
        (thanks to Andreas Schaefers).
      - Fixed references to old *.vdr file names in MANUAL (reported by Arthur Konovalov).
      - Reverted "Removed limitation to PAL resolution from SPU handling" because it
        cause nothing but trouble. Besides, the core VDR doesn't use this, anyway.
      - Fixed the default value for "Pause key handling" in the MANUAL (reported by
        Diego Pierotto).
  8. 12 Apr, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.5 · 1aadb31f
      Klaus Schmidinger authored
      - Fixed a hangup when replaying a TS recording with subtitles activated (reported
        by Timo Helkio).
      - Fixed handling the 'new' indicator in the recordings menu for TS recordings
        (thanks to Derek Kelly).
      - Added cap_sys_nice to the capabilities that are not dropped (thanks to Rolf
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Added cRecordingInfo::GetEvent() (thanks to Marcel Unbehaun).
      - Improved synchronizing the progress display, trick modes and subtitle display
        to the actual audio/video. This now works independent of any buffer sizes the
        output device might use.
        + The cBackTrace class has been replaced with cPtsIndex, which keeps track
          of the PTS timestamps of recently played frames.
        + cDevice::GetSTC() is now required to deliver the STC even in trick modes.
          It is sufficient if it returns the PTS of the most recently presented
          audio/video frame.
        + The full-featured DVB cards need an improved firmware in order to return
          proper STC values in trick modes (thanks to Oliver Endriss for enhancing the
          av7110 firmware).
      - Adapted cFrameDetector::Analyze() to HD NTSC broadcasts that split frames over
        several payload units (thanks to Derek Kelly for reporting this and helping in
      - Modified cFrameDetector::Analyze() to make it process whole frames at once, so
        that file I/O overhead is minimized during recording (reported by Günter
      - Added command line help for the '-i' option.
      - Fixed cDvbPlayer::NextFile() to handle files larger than 2GB (thanks to Jose
        Alberto Reguero).
      - Improved replay at the begin and end of a recording. The very first and very last
        frame is now sent to the output device repeatedly until GetSTC() reports that it
        has been played. cDvbPlayer::Action() no longer calls DeviceFlush() (thanks to
        Reinhard Nissl for making sure vdr-xine no longer needs this).
      - Added missing '[]' to the delete operator in cMenuEditStrItem::~cMenuEditStrItem().
      - Added missing virtual destructor to cPalette.
      - Now freeing configDirectory before setting it to a new value in
      - Fixed a crash when jumping to an editing mark in an audio recording.
      - Fixed the 'VideoOnly' condition in the PlayPes() and PlayTs() calls in
        cDvbPlayer::Action() (thanks to Reinhard Nissl).
      - cDevice::PlayTs() now plays as many TS packets as possible in one call.
      - Making sure any floating point numbers written use a decimal point (thanks to
        Oliver Endriss for pointing out a problem with the F record in the info file of
        a recording).
      - Fixed detecting the frame rate for radio recordings.
      - Added missing AUDIO_PAUSE/AUDIO_CONTINUE calls to cDvbDevice (thanks to Oliver
      - No longer writing the video type into channels.conf if VPID is 0 (thanks to
        Oliver Endriss for reporting this).
      - Improved efficiency of cEIT::cEIT() (thanks to Tobias Bratfisch).
  9. 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).
  10. 18 Nov, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.12 · 29b2d48b
      Klaus Schmidinger authored
      - Fixed assembling PS1 packets in cTS2PES::instant_repack() (thanks to Reinhard
      - Updated the Russian OSD texts (thanks to Oleg Roitburd).
      - Fixed handling small PES packets that caused subtitles to be displayed late
        in live mode (based on a patch from Reinhard Nissl).
      - Fixed stopping live subtitles when a player is attached to the device.
      - Fixed suddenly stopping subtitles in live mode.
  11. 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.
  12. 17 Oct, 2004 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.13 · af483c11
      Klaus Schmidinger authored
      - Fixed checking for the presence of NPTL (thanks to Jouni Karvo).
      - Making sure section filters are only set if the device actually has a lock
        (thanks to Andreas Share for pointing this out).
      - Fixed a possible NULL pointer assignment in cMenuText::SetText() (thanks to
        Marco Schlüssler).
      - Fixed a crash in case the last line in channels.conf is a group separator and
        that group is selected in the channel display (thanks to Dick Streefland).
      - Added cRingBufferLinear::Read() to read directly from a file handle into the
        ring buffer.
      - Using timeouts in ring buffers to avoid 'usleep()'.
      - Clearing the 'Transfer Mode' ring buffer after clearing the device to avoid
        an "almost full" ring buffer.
      - Removed locking from cRingBufferLinear for better performance under high load.
      - Using a cRingBufferLinear in cRemux to avoid unnecessary copying of data.
      - Using a cRingBufferLinear in cTSBuffer and filling it in a separate thread
        to avoid buffer overflows. Plugins using cTSBuffer will need to remove the
        call to the now obsolete Read() function (see cDvbDevice::GetTSPacket() for
        the new usage of cTSBuffer).
      - cRemux::Process() has been split into Put(), Get() and Del() to allow for a
        better decoupling of the remuxing and disk writing process. Plugins using
        cRemux will need to be modified accordingly.
      - The actual disk writing in recordings is now done in a separate thread to
        improve the overall throughput.
      - Changed cRemux so that it returns the maximum available amount of data with
        each call, not just 2048 byte.
      - Added a visual display of all cRingBufferLinear buffers for debugging. To
        activate it, define DEBUGRINGBUFFERS in ringbuffer.h.
      - Instead of cCondVar now using the new cCondWait (which also avoids a possible
        "near miss" condition; thanks to Sascha Volkenandt for pointing out this one).
        cCondVar is still present for plugins that use it (and VDR itself also still
        uses it in cRemote).
      - The cRingBuffer now does EnableGet()/EnablePut() only if the buffer is more than
        one third full or empty, respectively. This dramatically improves recording
        performance and reduces system load (thanks to Marco Schlüßler for doing some
        testing regarding buffer performance and giving me some hints that finally led
        to finding out that this was the basic problem causing buffer overflows).
      - Improved Transfer Mode (thanks to Marco Schlüßler for suggestions and testing).
      - Fixed a possible crash with inconsistent SI data (thanks to Marcel Wiesweg).
      - Fixed showing the replay mode if the OSD is currently in use (thanks to Kimmo
        Tykkala for pointing out this problem).
      - cOsdProvider::NewOsd() now always returns a valid pointer, even if the OSD is
        currently in use (it will then return a dummy cOsd object and write a message to
        the log file).
      - Added Estonian language texts (thanks to Arthur Konovalov).
      - Fixed 'newplugin' and libsi/Makefile to use the compiler defined in $(CXX) for
        generating file dependencies (thanks to Andreas Brachold).
      - Moved the initialization of aPid1 and aPid2 to the beginning of cDvbDevice::cDvbDevice()
        to have them set in case a patch references them (thanks to Wayne Keer for pointing
        this out).
      - Completed the Russian OSD texts (thanks to Vyacheslav Dikonov).
      - Avoiding unnecessary section filter start/stops (thanks to Marco Schlüßler).
      - Made the "Channel not available!" message and mtInfo instead of mtError (suggested
        by Wayne Keer).
      - Made volume control more linear (thanks to Emil Naepflein and Udo Richter).
      - Now skipping code table info in SI data (suggested by Milos Kapoun).
      - Added missing Czech characters to fontosd-iso8859-2.c (thanks to Milos Kapoun).
      - Fixed a crash in the time search mechanism (reported by Reinhard Nissl).
      - If one PID can't be added, the whole cDevice::AttachReceiver() will now fail
        and all PIDs added so far will be deleted (thanks to Marco Schlüßler for
        pointing out this one).
      - Now only saving channels.conf after a modification made by the user (avoids
        lots of disk access due to automatic channel updates). Automatic channel
        modifications will be saved every 10 minutes if no recording is currently
      - Removed the 'Log' parameter from the cChannel::Set... functions. Instead
        checking if the channel has a non-zero number.
      - Updated 'channels.conf.terr' for Hannover (thanks to Sven Kreiensen).
  13. 19 Jun, 2004 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.11 · eb52e300
      Klaus Schmidinger authored
      - In order to avoid problems on NPTL systems, VDR now checks for the presence
        of NPTL at program start, and if it is, exits and tells the user to do
        'export LD_ASSUME_KERNEL=2.4.1' before starting VDR.
      - Revisited the "Fixed missing audio after replaying a DVD" change because it
        introduced a sound disturbance when switching between channels on the same
        transponder (thanks to Marco Schlüßler).
      - In order to avoid problems on UTF-8 systems, VDR now checks for the presence
        of UTF-8 at program start, and if it is, exits and tells the user to turn off
        UTF-8 before starting VDR (thanks to Ludwig Nussel for pointing out a problem
        with systems that are set to use UTF-8). There are also problems in case the
        video partition is mounted with "iocharset=utf8" (thanks to Jörg Knitter for
        reporting this one).
        Please also read the "IMPORTANT NOTES" section in the INSTALL file!
      - Some changes to the SPU decoder interface (thanks to Sven Goethel).
      - Some improvements in cOsd creation (thanks to some suggestions by Jouni Karvo).
      - Fixed calculating the OSD width and height (thanks to Olaf Henkel for reporting
        a problem with long event texts in the "Classic VDR" skin).
      - Fixed switching channels while an encrypted channel is being recorded, because the
        channel was switched if the new channel was on the same transponder and was
        a radio channel or an unencrypted channel (thanks to Martin Dauskardt for reporting
        this one).
      - No longer using the external 'find' command to scan the video directory for
        recordings (based on a suggestion by Mirko Dölle).
      - The list of recordings is now kept statically in memory to avoid long delays
        when opening the "Recordings" menu. As a side effect, external modifications to
        the video directory are no longer immediately reflected in the "Recordings" menu.
        If a plugin manipulates the video directory in any way, it can call the function
        Recordings.TriggerUpdate() to trigger an update of the list of recordings.
        If some external tool manipulates the video directory, it can touch the file
        '.update' in the video directory to trigger an update of the list of recordings.
      - Fixed a memory leak in theme description handling (thanks to Sascha Volkenandt).
      - Added cDevice::Flush() to make sure that all data in the video card's buffers
        has been processed (thanks to Reinhard Nissl). Currently this is not yet actually
        implemented for FF DVB cards.
      - Fixed handling the color button texts in cMenuEditStrItem (thanks to Maynard
        Cedric for reporting this one).
      - Fixed the description of cRingBufferLinear (thanks to Ludwig Nussel for pointing
        out this one).
      - Fixed cRingBufferLinear::Get() in case the buffer wraps around (thanks to Ludwig
        Nussel for reporting this one).
  14. 14 Mar, 2004 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.6 · 9384e565
      Klaus Schmidinger authored
      - Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Fixed some descriptor handling in 'libsi' (thanks to Stéphane Esté-Gracias).
      - Fixed handling the current menu item (thanks to Marc Hoppe).
      - Fixed assigning events to timers (they no longer get "stuck").
      - Added log entries whenever the running status of an event changes (currently
        only logging the first 30 channels).
      - Fixed handling timers in VPS margin if the EPG scan is turned on (the EPG scan
        switched the device away from the channel, so it wouldn't see the change of
        the running status).
      - Fixed handling "itemized" texts in EPG data (thanks to Stéphane Esté-Gracias
        for pointing out this problem, and Marcel Wiesweg for improving 'libsi').
      - Fixed handling VPS times at year boundaries.
      - Avoiding too many consecutive "ring buffer overflow" messages (which only
        slowed down performance even more).
      - Taking the Sid into account when detecting version changes in processing the
        PMT (thanks to Stéphane Esté-Gracias for pointing out this problem).
      - Completed the Russian OSD texts (thanks to Vyacheslav Dikonov).
      - Any newline characters in the 'description' of EPG events are now preserved
        to allow texts to be displayed the way the tv stations have formatted them.
        This was also necessary to better display itemized texts.
      - Fixed detecting the running status in case an empty EPG event is broadcast (thanks
        to Michael Pennewiß for pointing this out).
      - Improved performance when paging through very long menu lists.
      - Removed cSchedule::GetEventNumber() and cSchedule::NumEvents(). There is now
        cSchedule::Events() that returns the list of events directly.
      - Avoiding occasional bad responsiveness to user interaction caused by assigning
        events to timers.
      - Now explicitly turning on the LNB power at startup, because newer drivers don't
        do this any more (thanks to Oliver Endriss for pointing this out).
  15. 04 Jan, 2004 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.0 · 93a94b18
      Klaus Schmidinger authored
      - Changed thread handling to make it work with NPTL ("Native Posix Thread Library").
        Thanks to Jon Burgess, Andreas Schultz, Werner Fink and Stefan Huelswitt.
      - The cThread class now accepts a 'Description' parameter, which is used to log
        the beginning and end of the thread, together with its process and thread id.
        For descriptions that need additional parameters you can use the function
        cThread::SetDescription(), which accepts 'printf()' like arguments.
        Existing plugins that use threads should be changed to use this functionality
        instead of explicit 'dsyslog()' calls inside their Action() function in order
        to support logging the thread ids.
      - Added "Slovak Link" and "Czech Link" to 'ca.conf' (thanks to Emil Petersky).
        However, 'ca.conf' is now pretty much obsolete due to the automatic CA handling.
      - Mutexes are now created with PTHREAD_MUTEX_ERRORCHECK_NP, which makes the
        'lockingTid' stuff obsolete (thanks to Stefan Huelswitt).
      - Changed font handling to allow language specific character sets.
      - Adopted the small font character set from the "Elchi" patch (originally
        provided by Alessio Sangalli).
      - Greek language texts now use iso8859-7 character set (thanks to Dimitrios
      - Rearranged section data handling, so that the actual data handling can be done
        separately, even from within plugins.
      - The EPG data structures have been moved from eit.[hc] to epg.[hc] and have been
        adapted to the general VDR coding style. Plugins that use these data structures
        may need to change some function names (which should be obvious).
        The name 'subtitle' has been changed to 'shortText' to avoid clashes with actual
        subtitles that are part of a movie. The name 'extendedDescription' has been
        shortened to 'description'.
      - Replaced 'libdtv' with 'libsi' (thanks to Marcel Wiesweg), which is thread
        safe and can be used by multiple section filters simultaneously.
      - Added 'cRwLock' to 'thread.[hc]'. Note that all plugin Makefiles need to
        define _GNU_SOURCE for this to work (see the example plugin Makefiles and
      - Fixed a problem with crc32 in SI handling on 64bit systems (thanks to Pedro
        Miguel Sequeira de Justo Teixeira for reporting this one).
      - Fixed an alignment problem in CAM access on 64bit systems  (thanks to Pedro
        Miguel Sequeira de Justo Teixeira for reporting this one).
      - Added 'StreamType' setting to CAM communication, which is important for
        Aston/SECA CAMs (thanks to Antonino Sergi).
      - Now the CA descriptors are sent to the CAM in the 'program' or 'ES level'
        sections, depending on where they are found in the PMT (thanks to Hans-Peter
        Raschke for reporting this one). This should make SkyCrypt CAMs work.
      - Now using the 'version number' of EPG events to avoid unnecessary work.
      - Channel data is now automatically derived from the DVB data stream (inspired
        by the 'autopid' patch from Andreas Schultz).
      - The current channel is now automatically re-tuned if the PIDs or other settings
        change. If a recording is going on on a channel that has a change in its
        settings, the recording will be stopped and immediately restarted to use the
        new channel settings.
      - EPG events now use the complete channel ID with NID, TID and SID.
      - Channel names in 'channels.conf' can now have a short form, as provided
        by some tv stations (see man vdr(5)). Currently channels that provide short
        names in addition to long ones are listed in the OSD as "short,long name",
        as in "RTL,RTL Television". The short names will be used explicitly later.
      - The Ca parameter in 'channels.conf' has been extended and now contains all the
        CA system ids for the given channel. When switching to a channel VDR now tests
        for a device that provides one of these CA system ids. The devices automatically
        get their supported ids from the CI handler.
      - The values in 'ca.conf' are currently without any real meaning. Whether or not
        a channel with conditional access can be received is now determined automatically
        by evaluating its CA descriptors and comparing them to the CA system ids
        provided by the installed CAM. Only the special values 1-16 are used to assign
        a channel to a particular device.
      - Increased the maximum number of possible OSD colors to 256.
      - Limited the line length in the EPG bugfix report, which appears to fix a buffer
        overflow that caused a crash when cleaning up the EPG data (at 05:00 in the
  16. 18 May, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.32 · 3bd9a7cc
      Klaus Schmidinger authored
      - Removed a faulty parameter initialization in menu.c (thanks to Lauri Tischler for
        reporting this one).
      - Re-implemented the WaitForPut/WaitForGet stuff in cRingBuffer, since some plugins
        actually need this. By default the buffer does not wait; if a plugin needs the
        waiting functionality it can call the new SetTimeouts() function.
      - Moved the call to cPlugin::Start() further up in vdr.c, to make sure it gets
        called before trying to learn the keys (problem reported by Oliver Endriss).
      - No longer starting the editing process if no marks have been set (thanks to
        Matthias Raus for reporting this one).
      - Added Catalanian language texts (thanks to Marc Rovira Vall and Ramon Roca).
        Plugin authors may want to add the new entries to their I18N texts and contact
        the translators to have their texts translated. Note that there are now 16
        different OSD languages, so please make sure you have 16 versions for each of
        your texts.
      - Moved the detection of a broken video data stream from the cDevice into the
        cRecorder to avoid problems with cReceivers that want to receive from PIDs
        that are currently not transmitting (thanks to Marcel Wiesweg for reporting
        this one).
      - Fixed setting the locking pid after a timed wait (thanks to Andreas Schultz).
      - Avoiding spurious section filter settings after a channel switch.
      - Updated 'channels.conf.cable' (thanks to Stefan Hußfeldt).
      - Fixed reading 'epg.data' for channels with non-zero RID (thanks to Oliver
        Endriss for reporting this one).
      - Fixed EPG bugfix statistics to avoid log entires for undefined channels (thanks
        to Lars Bläser for reporting this one).
      - No longer waiting inside cIndexFile::CatchUp() to avoid shortly blocking replay
        at the end of a recording.
  17. 11 May, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.31 · c8402255
      Klaus Schmidinger authored
      - Introduced the new function cPlugin::Initialize(), in order to be able to separate
        the startup of a plugin into an "early" (Initialize()) and "late" (Start()) phase
        (suggested by Andreas Schultz). Plugin authors should please read the section
        about "Getting started" in PLUGINS.html and adapt their code if applicable.
      - Implemented the CableDeliverySystemDescriptor and TerrestrialDeliverySystemDescriptor
        in libdtv (thanks to Sven Grothklags and Andreas Schultz).
      - Fixed keeping live video active in case the primary device doesn't have an MPEG
        decoder (thanks to Wolfgang Goeller for reporting this one).
      - Implemented cDevice::ActualDevice(), which returns the actual receiving device in
        case of 'Transfer Mode', or the primary device otherwise. This may be useful for
        plugins that want to attach a cReceiver to the device where the current live video
        is actually coming from.
      - Added VDRVERSNUM to config.h, which can be used by the preprocessor to check the
        actual VDR version (suggested by Stefan Huelswitt).
      - Removed the WaitForPut/WaitForGet stuff from cRingBuffer, since it appears to
        no longer be necessary due to the implementation of cNonBlockingFileReader in
        dvbplayer.c. Also, the long timeout in WaitForPut caused problems with cReceivers
        that use a ring buffer and didn't immediately return from their Receive() function
        if the buffer runs full (thanks to Sascha Volkenandt for reporting this one).
      - Fixed handling EPG data where the "extended event descriptor" comes before the
        "short event" or a "time shifted event" (thanks to Jonan Santiago).
      - Disabled the "Received stuffing section in EIT" log message.
      - Updated 'channels.conf.terr' for Berlin (thanks to Juri Haberland).
      - Avoiding short display of the "Main" menu when pressing the "Recordings" button
        or the "Back" button during replay.
      - Further increased the timeout until an index file is considerd no longer to be
      - Implemented separate PausePriority and PauseLifetime parameters for the recordings
        created when pausing live video (suggested by Alfred Zastrow).
      - Changed C++ style comments in libdtv into C style to avoid warnings in gcc 3.x
        (thanks to Andreas Schultz).
  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. 26 Jan, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.22 · a3942b4d
      Klaus Schmidinger authored
      - Added 'Hrvatska radiotelevizija' and 'RTV Slovenija' to ca.conf (thanks to
        Paul Gohn).
      - Implemented actual user input for CAM enquiry menus.
      - Since disk file systems apparently don't honor the O_NONBLOCK flag to read from
        a file in non-blocking mode the cDvbPlayer now uses a non blocking file reader
        class to make sure replay remains smooth even under heavy system load.
      - Increased the maximum possible packet size in remux.c to avoid corrupted streams
        with broadcasters that send extremely large PES packets (thanks to Teemu Rantanen).
      - Added TS error checking to remux.c (thanks to Teemu Rantanen).
      - Modified cRingBufferLinear to avoid excessive memmove() calls in 'Transfer Mode'
        and during recordings, which dramatically reduces CPU load. Thanks to Teemu
        Rantanen for pinpointing the problem with the excessive memmove() calls.
      - Updated 'channels.conf' (thanks to Achim Lange).
      - Added/improved Swedish language texts (thanks to Jan Ekholm).
      - Fixed the description of the "Scroll pages" OSD setup parameter ('yes' and 'no'
        were mixed up).
      - Fixed handling the LOG_LOCALn parameters in the -l option (thanks to Dimitrios
      - Changed EIT processing to always read a full section.
      - Fixed handling user defined CFLAGS in libdtv/libvdr/Makefile (thanks to Clemens
        Kirchgatterer and Robert Schiele).
      - Fixed skipping unavailable channels in the EPG scanner.
  20. 04 Aug, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.6 · 52774882
      Klaus Schmidinger authored
      - Re-visited the race condition fix in the cDvbPlayer (thanks again to Andreas
      - Changed the VFAT handling to allow users who normally use it but have forgotten
        to set it when compiling a new version of VDR to at least see their recordings
        made with VFAT enabled (thanks to Christian Rienecker).
      - Added some missing teletext PIDs (thanks to Joerg Riechardt).
      - Fixed PID handling for cReceiver.
      - Added a missing #include to ringbuffer.c (thanks to Martin Hammerschmid).
      - Now using CC, CFLAGS, CXX and CXXFLAGS in Makefile.
      - Changed the cDevice class to allow plugins to implement their own devices (see
        PLUGINS.html for details).
  21. 16 Jun, 2002 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.3 · f06d2c27
      Klaus Schmidinger authored
      - Improved the VDR Makefile to avoid a warning if the '.dependencies' file does
        not exist, and also using $(MAKE) to call recursive makes.
      - Changed the name of the 'package' target in the plugin Makefiles to 'dist'
        (following the suggestions in the "GNU Make" manual). If you already have started
        a plugin project, you may want to change this in your Makefile accordingly.
      - Improved the plugin Makefile to avoid a warning if the '.dependencies' file does
        not exist, and also using $(shell...) to get the version numbers. If you already have
        started a plugin project, you may want to change this in your Makefile accordingly.
      - Fixed some function headers to make them compile with gcc 3.x (thanks to
        Gregoire Favre).
      - Fixed the cutting mechanism to make it re-sync in case a frame is larger than the
        buffer (thanks to Sven Grothklags).
      - Added an error message if the directory specified in the '-L' option can't be
        accessed (suggested by Stefan Huelswitt).
      - Rearranged OSD class names to make 'cOsd' available for the main OSD interface.
      - Completely moved OSD handling out of the cDvbApi class, into the new cOsd.
      - Implemented cStatus to allow plugins to set up a status monitor.
        See PLUGINS.html for details.
      - Moved the cEITScanner out of dvbapi.h/.c, into the new eitscan.h/.c.
      - Added Swedish language texts (thanks to Tomas Prybil).
      - Fixed parsing 'E' records in epg2html.pl (thanks to Matthias Fechner for pointing
        out this one).
      - Removed compiler option '-m486' to make it work on non-Intel platforms. If you
        have already started a plugin project, you may want to make sure you remove this
        option from your existing Makefile.
      - Completely rearranged the recording and replay functions to make them available
        to plugins.
      - Replay is now done in a single thread (no more syncing between input and output
        thread necessary).
      - It is now possible to record several channels on the same transponder with "budget
        cards". VDR automatically attaches a recording timer to a card that already
        records on the appropriate transponder. How many parallel recordings can actually
        be done depends on the computer's performance. Currently any number of recordings
        gets attached to a card, so you should carefully plan your timers to not exceed
        the limit. On a K6-II/450 it was possible to record three channels from transponder
        12480 with a single WinTV NOVA-S.
      - Timers that record two successive shows on the same channel may now overlap and
        will use the same DVB card. During the time where both timers record the data
        is simply saved to both files.
      - The following limitations apply to this version:
        + Transfer mode doesn't work yet.
        + The '-a' option (for Dolby Digital audio) doesn't work yet.
        + Switching between different language tracks doesn't work yet.
        + Cutting doesn't work yet.
  22. 04 Nov, 2001 1 commit
    • Klaus Schmidinger's avatar
      Version 0.98 · 6e1fd835
      Klaus Schmidinger authored
      - Completed storing the current audio volume in the setup.conf file (thanks
        to Andy Grobb).
      - Fixed closing the progress display with the "Back" key when in trick mode
        and Setup.ShowReplayMode is enabled (thanks to Stefan Huelswitt).
      - New SVDRP commands LSTR and DELR to list and delete recordings (thanks to
        Thomas Heiligenmann).
      - Fixed a crash when pressing the '2' button while replaying a DVD.
      - Updated 'channels.conf' for the "Bundesliga" channels of Premiere World
        (thanks to Mel Schächner).
      - Changed the tuning code to use FrontendInfo to detect the type of DVB card.
      - Removed the recursion stuff from cThread (cMutex already does this).
      - Fixed handling the repeat function in the channel display.
      - Avoiding multiple EPG entries for the same event (thanks to Rolf Hakenes
        for some valuable information on how to do this).
      - A recording on the primary interface can now be stopped to make it continue
        on an other free DVB card (if one is free at the moment). See MANUAL for
      - Added some missing teletext PIDs (thanks to Norbert Schmidt).
      - Added PTS to the converted PCM audio when replaying a DVD (thanks to Andreas
        Schultz). Now the audio and video of a DVD replayed over the DVB card's A/V
        out should always be in sync.
      - Fixed handling the "Power" key in case Setup.MinUserInactivity is set to 0 to
        disable automatic shutdown.
      - Added a fifth parameter to the 'shutdown' call that indicates the reason for
        this shutdown request (see INSTALL).
      - Fixed releasing 'index' memory after recording or playback.
      - Fixed ejecting a DVD while it is being replayed.
      - Removed all video overlay stuff from cDvbApi and SVDRP. Guido Fiala's new
        'kvdr' version 0.4 now does these things itself. As a consequence of this you
        will now need to use kvdr 0.4 or later.
      - The device /dev/video is now opened only if necessary (to GRAB an image),
        allowing other programs (like 'kvdr', for instance) to use that device.
  23. 06 Aug, 2001 1 commit
    • Klaus Schmidinger's avatar
      Version 0.90 · f1d1c984
      Klaus Schmidinger authored
      - Modified the display of the channel group separators (thanks to Markus Lang
        for this suggestion).
      - Added support for replaying DVDs (thanks to Andreas Schultz). See INSTALL for
        instructions on how to compile VDR with DVD support.
      - Fixed replay progress display in case replay is paused while watching an
        ongoing recording.
      - Ringbuffer uses semaphores to signal empty/full conditions.
      - Fixed calculating the timeout value in cFile::FileReady() (thanks to
        Wolfgang Henselmann-Weiss).
  24. 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').
  25. 01 Apr, 2001 1 commit
    • Klaus Schmidinger's avatar
      Version 0.72 · 610c5600
      Klaus Schmidinger authored
      - Fixed SVDRP commands LSTC and LSTT to make them return an error message if
        no channels or timers are defined.
      - Enhanced 'channels.conf.cable' (thanks to Hans-Peter Raschke).
      - Fixed switching to another channel via the EPG while a recording is being
      - Fixed a memory leak in the EIT processor that happened when the system time
        was set.
      - Removed some redundant code from the cListBase destructor.
      - Fixed internationalization of some Main menu texts.
      - Updated 'channels.conf' after the recent changes of Premiere World (thanks
        to Axel Gruber).
      - Redesigned the ring buffer to make it work with two separate threads for
        input and output (also prepared for using a remultiplexer).
      - Fixed setting system time from transponders.
      - Fixed a segfault in the Schedule menu in case there is no EPG information.
      - The 'runvdr' script now kills any leftover vdr threads before restarting it.
      - Fixed a problem with Daylight Saving Time when displaying the times of
      - Added Dutch language texts (thanks to Arnold Niessen).
      - The new command line option -t can be used to set the controlling terminal
        (thanks to Jürgen Sauer). This is especially useful when starting VDR through
        an entry in /etc/inittab (see INSTALL).
      - Since the CAM module only works if it is installed in the "highest" DVB card,
        recordings now search for a free DVB card from lowest to highest index (as
        opposed to the previous "highest to lowest" search) in order to not use the
        CAM card for FTA recordings unless necessary. This is only important for
        systems with three or more DVB cards.
      - Added the "statdvb2vdr" tool from Hans-Peter Raschke.
      - Fixed a segfault that sometimes happened when killing VDR.
      - VDR now returns an exit status of '2' in case of an error at startup, instead
        of terminating with 'abort()' (which caused a core dump).
      - SVDRP now also works with clients that don't do line buffering (like the
        Windows 'telnet').
      - Empty lines in config files no longer cause error messages.
      - New SVDRP command LSTE to list the EPG data.
      - The SVDRP HELP command now prints the topics in several columns.