1. 14 Jul, 2019 1 commit
  2. 15 Apr, 2018 1 commit
  3. 30 Jun, 2017 1 commit
  4. 24 Jun, 2017 1 commit
  5. 07 Jan, 2017 1 commit
  6. 09 Feb, 2015 1 commit
  7. 07 Feb, 2015 1 commit
  8. 19 Oct, 2014 1 commit
  9. 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.
  10. 18 Nov, 2012 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.32 · beffcabc
      Klaus Schmidinger authored
      VDR developer version 1.7.32 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      068ba78fd427694dcc480fe3b2d07148  vdr-1.7.32.tar.bz2
      222f1e9b4d4edaa6fe57286409614cc7  vdr-1.7.31-1.7.32.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 main focus of this version is on an improved frame detection code,
      and improvements to the cutting process. When cutting a recording, VDR
      now removes any "dangling" TS packets from the beginning of an editing
      sequence and pulls in any "pending" TS packets at the end of a sequence.
      It also fixes all timestamps and continuity counters.
      However, while the results look much better now in, for instance, Kaffeine,
      the TT S2-6400 still shows some video artifacts at the editing points, and
      the Mac video player sometimes totally chokes on edited material.
      I did spend a lot of time trying to find out what could still be wrong here,
      but couldn't come up with any new ideas. So I think it's now time to invite
      others to test this new cutting code, read the source code and try to find
      out what's still going wrong here. Maybe (hopefully ;-) it's just some stupid
      little error... ;-)
      From the HISTORY file:
      - Pressing the Play key during normal live viewing mode now opens the Recordings menu
        if there is no "last viewed" recording (thanks to Alexander Wenzel).
        The same behavior has been implemented for the Blue key in the main menu.
      - cIoThrottle::Engaged() is now also checked in cRemoveDeletedRecordingsThread::Action(),
        to suspend removing deleted recordings in case this is necessary to make room for
        new, ongoing recordings (suggested by Udo Richter).
      - The cThread constructor now has an additional boolean parameter that can be set to
        true to have this thread run at a lower priority. Plugin authors that use low
        priority threads may want to use this instead of the calls to SetPriority(19) and
        SetIOPriority(7). The priority of a thread ("low" or "high") is now logged when the
        thread starts.
      - Changed DTV_DVBT2_PLP_ID to DTV_STREAM_ID in dvbdevice.c to adapt to an incompatible
        change in DVB API 5.8 (reported by Derek Kelly).
        Removed the meanwhile obsolete definition of FE_CAN_TURBO_FEC.
      - Fixed some compiler warnings under gcc version 4.7.1.
      - Fixed setting the video format in the dvbhdffdevice (thanks to Torsten Lang).
      - Fixed 'make install' to not overwrite existing configuration files (thanks to Peter
      - Added including the Make.global and Make.config files to the dvbdhffdevice's
      - Added options to build a 32-bit version of VDR on a 64-bit machine to
      - Fixed handling VPS timers in case the running status of an event goes to '1' (not
        running) and later goes to '4' (running).
      - If a frame position in the 'marks' file of a recording doesn't point to an I-frame,
        it will now be shifted towards the next I-frame, either up or down, whichever is
        closer (suggested by Udo Richter).
      - Fixed a possible memory leak in SI::StructureLoop::getNextAsPointer() (reported by
        Sundararaj Reel).
      - Fixed handling timers in case an event is modified and "phased out" while the timer
        is recording.
      - Improved frame detection by parsing just far enough into the MPEG-4 NAL units to get
        the necessary information about frames and slices.
      - The initial syncing of the frame detector is now done immediately after the first
        complete GOP has been seen. This makes recordings and especially pausing live video
        start up to twice as fast as before.
      - Updated the Romanian OSD texts (thanks to Lucian Muresan).
      - Fixed handling the very last entry in a recording index.
      - The return type of cMarks::Add() has been changed to void, since due to the sorting
        of the list of marks the returned pointer might have pointed to a totally different
        mark. Besides, the return value was never actually used.
      - Improved editing TS recordings by
        + stripping dangling TS packets from the beginning of a sequence
        + including pending TS packets at the end of a sequence
        + fixing all timestamps and continuity counters
        + generating editing marks for the edited version in such a way that each cutting
          point is marked by an "end" and "begin" mark with the same offset
        + no longer generating an editing mark at the "end" of the edited recording (this
          was actually generated at the beginning of the last GOP, so that a subsequent
          edit would have cut off the last GOP)
        + no longer generating any editing marks if the edited recording results on just
          one single sequence
        + ignoring pairs of editing marks that are placed at exactly the same position of
          a recording when actually cutting the recording
        + not doing anything if the editing marks in place would result in the edited
          version being the same as the original recording
      - Editing marks can now be placed directly on top of each other, in which case they
        simply mark a position, but have no effect on the actual cutting process.
      - When positioned at an offset where two (or more) editing marks are placed on top
        of each other, the '4' key moves the first one of them to the left, while the '6'
        key moves the last one of them to the right. The '7' and '9' key handle multiple
        marks at the same place as if it were one single mark.
      - Modified editing marks are now written to disk whenever the replay progress display
        gets hidden (thanks to Christoph Haubrich).
  11. 04 Jun, 2012 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.28 · 5500959f
      Klaus Schmidinger authored
      Original announce message:
      VDR developer version 1.7.28 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      3ccff2dcc42d112e23dd64f2c39f02f1  vdr-1.7.28.tar.bz2
      7249ead4aca4b24e53d49d11c67e1613  vdr-1.7.27-1.7.28.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 new 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
      From the HISTORY file:
      - Fixed cPixmapMemory::DrawEllipse() for quadrants -1 and -4.
      - Fixed getting the maximum short channel name length in case there are no short names
        at all (reported by Derek Kelly).
      - The new function cDevice::DeviceType() returns a string identifying the type of
        the given device.
      - Now limiting the number of characters of a channel's (short) name to 16 in the
        schedules menus, to keep that column from getting overly wide in case there is
        a channel with a very long name that has no short name.
      - Fixed EPG scan on systems with only a single DVB device that use software output
        (reported by Juergen Lock).
      - Skins can now inquire the menu category for which their cSkinDisplayMenu is currently
        being used. This can be done either through a call to cSkinDisplayMenu::MenuCategory()
        or by reimplementing cSkinDisplayMenu::SetMenuCategory(). This information allows a
        skin to use special icons or decorations for the various types of menus in VDR.
      - The new setup option "DVB/Standard compliance" can be used to switch between different
        variations of the DVB standard (thanks to Rolf Ahrenberg). Currently there is "DVB"
        (for the original DVB standard) and "ANSI/SCTE", which is used to properly handle
        certain private stream types.
      - The disk usage is no longer automatically added to the title of the main and
        "Recordings" menus. This has always been a mekeshift solution and it is now up
        to the individual skin if, where and how it wants to display this information.
        A skin can use the new cVideoDiskUsage class to implement such a display. For
        compatibility, the default skins "Classic VDR", "ST:TNG Panels" and "Text mode"
        (i.e. curses) have been changed to behave like before. Other skins may want to
        display the disk usage in totally different ways.
      - A cOsdMenu can now handle skins that display different numbers of items in the
        various menu categories.
      - OSD and skin are now reinitialized after a plugin setup page has been confirmed,
        to have them react immediately in case any change to a plugin's setup parameter
        has an effect on the OSD.
      - The Timers list is now marked as modified whenever a recording starts or ends.
      - Fixed cDevice::StillPicture(), making sure it doesn't call the derived class's
        function if no buffer has been allocated (reported by Marcus Roscher).
      - Fixed the SVDRP command UPDR, which didn't update the global recordings list
        (reported by Lars Hanisch).
      - cControl::Control() now has an additional boolean parameter, which can be set to
        true to get the current player control even if it is hidden.
      - The new functions cControl::GetRecording() and cControl::GetHeader() can be used
        to retrieve information about what the current player is playing.
      - Fixed a possible high CPU load when pausing replay (thanks to Reinhard Nissl).
      - Fixed character comparisons in cSubtitleObject::DecodeCharacterString() (reported
        by Reinhard Mantey).
      - Renamed the function cString::sprintf(const char *fmt, va_list &ap) to vsprintf(),
        because it might inadvertently be called with a 'char *' as the second argument on
        some compilers and cause a crash (reported by Sundararaj Reel).
      - Removed the "bondedMasterFailed" mechanism from cDvbTuner, because it caused
        problems with the EPG scan in case a transponder is not receivable in a setup with
        bonded devices (reported by Michael Schneider).
      - Making sure setup strings don't contain any newline characters (thanks to Joachim
      - The new member function cSkinDisplayReplay::SetRecording() allows a skin to display
        more information about the currently played recording.
      - Fixed a mismatched 'delete' in cSchedules::SetEpgDataFileName() (thanks to Reinhard
      - The DrawText() functions of the OSD now accept the new alignment flag taBorder,
        which triggers keeping a proper distance from the edge that taLeft or taRight
        aligns to.
      - Fixed checking for UTF-8 support in cFont::Bidi() (reported by Torsten Lang).
      - If a recording has no info file, the 'title' of the recording's info is now set
        to the recording's name.
      - cVector::Clear() now reinitializes any previously used members.
      - Fixed resetting CAMs (thanks to Marco Skambraks).
      - The new function RgbShade() (include osd.h) can be used to generate a brighter or
        darker version of a given color.
      - The new class cSortedTimers can be used to quickly get a list of all timers, sorted
        by their start time.
      - The new skin "LCARS" is an enhanced version of the "ST:TNG" skin (which is still
        there in its original layout, for those who don't like the LCARS skin, or can't use
        it due to OSD limitations). The LCARS skin utilizes the new "menu category" feature
        to display additional information on the main menu page. It shows upcoming timers
        and the system's devices, as well as which device is recording which timers. The
        upper pane of the main menu displays the programme data in live and replay mode,
        and a progress bar. An indicator on the right side of the device list shows which
        device is currently used for live viewing, and whether it is in transfer mode.
        The individual device displays show the device number, the device type, which CAM
        (if any ) is currently assigned to the device, and the signal strength and quality.
        On the left side of the OSD there is a permanent display of the current date and
        time, the disk usage and the system load.
        "LCARS" is the new default skin of VDR. It requires at least a 4bpp (16 color) full
        screen OSD, but you can still operate it if your OSD can handle only fewer colors
        (in which case you may want to switch to the "ST:TNG" or "Classic VDR" skin).
      - Finally removed the code marked with __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS
      - Now making sure that the "small font" is never larger than the "osd font".
      - Fixed font handling with fontconfig 2.9.0 or newer (thanks to Joerg Bornkessel).
      - Extended the interface to the script that gets called for recordings, so that in
        the "edited" case it also provides the name of the original recording (thanks to
        Christian Richter).
      - Added DeleteEvent() to the EPG handler interface, so that an EPG handler can trigger
        deleting of an event (thanks to Christian Kaiser).
      - Speeded up opening menus on systems with many (several thousands) of recordings, by
        caching the information whether a recording is stored on the video directory file
        system within the cRecording data (based on a patch from Torsten Lang).
  12. 10 Mar, 2012 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.25 · 3df1b6d1
      Klaus Schmidinger authored
      Original announce message:
      VDR developer version 1.7.25 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      a3fd482a3dd8027706d4f32a88c6bd13  vdr-1.7.25.tar.bz2
      f34adcdc0cdab378431d8946872d6b59  vdr-1.7.24-1.7.25.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:
      - The fps value for channels where it differs from the default is now set correctly
        when pausing live video.
      - Increased the average character estimate for calculating tab positions in skins,
        to better suit wide fonts (reported by Rudi Hofer).
      - Fixed getting the subsystem ids of DVB devices in case they have been rearranged
        via udev rules.
      - Added several cTimer::Set...() functions (suggested by Alexander Rieger).
      - Changed the return value of cTimer::SetFile() to 'void'.
      - Revoked "Fixed a possible deadlock in time shift mode" because it caused trouble with
        output on vdr-xine and dxr3, and also short glitches when replaying on any output
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Fixed handling subtitle color palettes on channels where subtitles appear
        "word by word" (thanks to Rolf Ahrenberg).
      - Fixed upscaling cBitmaps with anti-aliasing (thanks to Rolf Ahrenberg for reporting
        a problem with color palettes in subtitles).
      - Fixed getting the video aspect ratio for scaling subtitles.
      - Removed the "PrimaryLimit". Old "full featured" DVB cards can be run with the
        --outputonly option to avoid problems with recording high bandwidth channels.
        Besides, with HDTV becoming ever more popular those cards are pretty much obsolete
        by now (the TT S2-6400 has no problems recording and replaying high bandwidth
        channels simultaneously). And, last but not least, people using software players
        won't notice this change, anyway.
      - Since cReceivers can have priorities between -99 and 99, the priority
        for an unused device has been changed from -1 to -100.
      - If the first event in a schedule has a table id of 0x00, any incoming EIT data for
        that schedule from the DVB stream will be completely ignored. This way an external
        EPG source can fill the schedules with EPG data that will not be messed up with
        that from the DVB data stream. Note, though, that this means VDR can not do VPS
        controlled recordings with such events!
      - Added some typecasts to silence gcc compiler warnings (thanks to Rolf Ahrenberg).
      - Fixed handling overlapping timers in case a VPS timer with higher priority needs
        to interrupt a timer with lower priority.
      - The code for the RCU remote control unit has been moved into a separate plugin
        named "rcu".
        The REMOTE=RCU option in the 'make' call for VDR is now obsolete.
        The command line option --rcu is now obsolete. Use -Prcu instead. If you have
        used --rcu with a device path, use -P"rcu -d<device>".
      - Added support for automatically selecting subtitles when playing old PES
        recordings made with the subtitles plugin (thanks to Anssi Hannula).
      - Revised priority handling to allow receivers with a priority that is lower than
        that of live viewing (with suggestions from Frank Schmirler):
        + An idle device (one that is not used for live viewing and has no receiver
          attached to it) now has priority IDLEPRIORITY (-100).
        + An unused CAM slot now has priority IDLEPRIORITY.
        + The default priority of a cReceiver is now MINPRIORITY (-99).
        + A device that is used only for live viewing (no matter whether it's in Transfer
          Mode or real live mode) now has priority TRANSFERPRIORITY (-1).
        + The function cDevice::Receiving() now returns true if there is any receiver
          attached to the device. Its boolean parameter has no meaning any more.
        + The default value for the Priority parameter of the function cDevice::ProvidesChannel()
          has been changed to IDLEPRIORITY.
      - Added a Query parameter to cDevice::GetDevice(), so that devices can be queried
        without side effects when zapping.
      - Replaced min(max()) calls with the new function constrain().
      - Fixed handling OSD color button texts in case a menu item has texts of its own
        (reported by Rolf Ahrenberg). If a plugin creates derived cMenuEditItems that set
        color button texts, these should not set the texts directly by calling
        cSkinDisplay::Current()->SetButtons(), but rather call the new member function
      - Moved the call to cStatus::MsgChannelSwitch(this, 0) to the beginning of
        cDevice::SetChannel(), so that any receivers that have been attached to the
        device by plugins may be detached before the final call to GetDevice().
        This actually reverts "Only calling cStatus::MsgChannelSwitch() if a channel
        is actually going to be switched or has actually been switched successfully"
        which was made in version 1.1.10, so please report if this has any unwanted
        side effects.
  13. 19 Jun, 2011 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.19 · bd61fee1
      Klaus Schmidinger authored
      Original announce message:
      VDR developer version 1.7.19 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      1eb04ecdc2b11ab8641ebfaa2cb93f42  vdr-1.7.19.tar.bz2
      db16ce7bb51e0db837ed56ef4744a67e  vdr-1.7.18-1.7.19.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.
      This version introduces functions to determine the "signal strength"
      and "signal quality" through cDevice. If you are using a DVB card that
      contains an stb0899 frontend chip (like the TT-budget S2-3200) you may
      want to apply the patches from
      to the LinuxDVB driver source in order to receive useful results from
      that frontend.
      Since apparently the various frontend drivers return different maximum
      values in their FE_READ_SIGNAL_STRENGTH and FE_READ_SNR functions (some
      deliver a value in the range 0x0000...0xFFFF, while others return values
      as "dB/10" or "dBm/10" (the latter with an offset to make the value positive,
      since the parameter is unsigned), the functions cDvbTuner::GetSignalStrength()
      and cDvbTuner::GetSignalQuality() use the device's "subsystem ID" to
      map these values into the range 0...100, which is the normalized return
      value of these functions.
      Take a look at these two functions and maybe remove the comment characters
      from the lines
      in dvbdevice.c to get some debug output if your device doesn't return any
      directly useful values and may have to be added appropriately to the
      'switch (subsystemId)' statement.
      The channel display of the 'sttng' skin uses these values to implement
      a signal strength/quality display.
      From the HISTORY file:
      - Fixed cString's operator=(const char *String) in case the given string is the
        same as the existing one (thanks to Dirk Leber).
      - Avoiding a gcc 4.6 compiler error in the skincurses plugin (thanks to Tobias Grimm).
      - TsGetPayload() now checks if there actually is a payload in the given TS packet
        (reported by Dirk Leber).
      - Now sorting the source file names in the call to xgettext, to make sure the results
        are not dependent on the sequence of the files.
        Plugin authors may want to change the line containing the xgettext call in their
        Makefile accordingly by changing "$^" to "`ls $^`".
      - The primary device is now only avoided for recording if it is an old SD full
        featured card. This is done through the new function cDevice::AvoidRecording().
      - Subtitle PIDs are now also decrypted (thanks to Reinhard Nissl).
      - Fixed a possible race condition in cDiseqc::Execute() (reported by Marco Göbenich).
        The return value of cDiseqcs::Get() is now const, so plugin authors may need to
        adjust their code if they use this function.
      - The new functions cDevice::SignalStrength() and cDevice::SignalQuality() can be
        used to determine the signal strength and quality of a given device (thanks to
        Rolf Ahrenberg for some input on how to use BER and UNC values to generate a
        "quality" value).
      - The 'sttng' skin now displays two colored bars at the bottom of the channel display,
        indicating the strength (upper bar) and quality (lower bar) of the received signal.
        The number to the left of these bars indicates the actual device the current
        channel is being received with.
      - Fixed detecting frames in case the Picture Start Code or Access Unit Delimiter
        extends over TS packet boundaries (reported by Johan Andersson).
        In order to fix this, the semantics of cFrameDetector had to be changed a little.
        See cRecorder::Action() and cIndexFileGenerator::Action() on how to use the new
        cFrameDetector::NewPayload() function.
      - The frame detector now only starts collecting PTS values after it has seen the
        first I-frame, otherwise it might get MaxPtsValues values and stop analyzing
        even though the incoming data is still garbage (reported by Derek Kelly).
      - The info file of a recording is now only overwritten with a new fps value if
        that new value is not the default value (thanks to Derek Kelly for reporting a
        problem with the fps value being overwritten in case a recording was interrupted
        and resumed, and the fps value could not be determined after resuming recording).
      - The initial channel is now stored by the channel ID in the setup.conf file, in
        order to avoid problems in case channels are reordered or deleted (reported by
        Lars Bläser).
      - Added support for "content identifier descriptor" and "default authority descriptor"
        to 'libsi' (thanks to Dave Pickles).
  14. 06 Jan, 2010 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.11 · 939081e2
      Klaus Schmidinger authored
      - Fixed resetting the file size when regenerating the index file.
      - The new function cDevice::PatPmtParser() can be used in derived devices to access
        the PAT/PMT of the currently replayed material.
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - The PCR pid in generated PMTs is now set to 0x1FFF ("no PCR pid") in
        cPatPmtGenerator::GeneratePmt(), because VDR doesn't record the PCR pid.
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - The 'sky' plugin is no longer part of the VDR source.
      - Improved SPU handling on devices with limited OSD capabilities (thanks to
        Matthieu Castet).
      - Several code modifications to avoid compiler warnings (thanks to Winfried Köhler).
      - Added stream type 11172 AUDIO to cPatPmtParser::ParsePmt() (thanks to Johann
      - Removed debug output of '-' from cTransfer::Receive().
      - Added defines for large files to the 'newplugin' script (reported by Udo Richter).
      - Removed the workaround for short channel names of "Kabel Deutschland", because
        apparently they now have their data according to the DVB standard (thanks to
        Johann Friedrichs).
      - Some fixes to dvbspu.[hc] (thanks to Johann Friedrichs).
      - Fixed a busy loop when moving editing marks (thanks to Johann Friedrichs).
      - Updated sources.conf (thanks to Derek Kelly).
      - Modified cCharSetConv so that it can be used to convert from "whatever VDR uses"
        to a given code (thanks to Joachim Wilke).
      - Channel names containing commas are now handled correctly in channels.conf.
        If a channel's short name contains a comma, it is replaced with a '.'.
      - cDevice now logs the device number when a new device is created.
      - Fixed handling STREAMTYPE_11172_AUDIO in cPatPmtParser::ParsePmt().
      - cParsePatPmt now has functions to retrieve the audio, dolby and subtitle pids.
      - cPatFilter::Process() now only stores CA descriptors for video and audio pids
        (thanks to Francesco Saverio Schiavarelli for reporting a problem with channels
        that have some encrypted components that VDR doesn't use).
      - cDevice::AddPid() now stores the stream type of the given pid (thanks to Andreas
      - Added cFont::FontName() and cFont::Size() (thanks to Andreas Regel).
      - cPatPmtParser now also stores the audio stream types.
      - The support for full featured DVB cards of the TT/FuSi design has been moved
        into the new plugin 'dvbsddevice'. On systems that use such a card as their
        primary device, this plugin now needs to be loaded when running VDR in order
        to view live or recorded video. If the plugin is not loaded, the card will
        be treated like a budget DVB card, and there will be no OSD or viewing
      - Fixed handling the "CA PMT" generation (revised a change not mentioned in version
        1.7.9's changes, which caused a malfunction with Conax and Viaccess CAMs).
      - Fixed stopping subtitle display when switching the primary device (thanks to
        Anssi Hannula).
        IMPORTANT NOTE TO PLUGIN AUTHORS: a plugin that implements a derived cDevice
        class that can replay video must now call the MakePrimaryDevice() function of
        its base class.
      - Fixed compiler warnings "format not a string literal and no format arguments"
        in some syslog calls (thanks to Rolf Ahrenberg).
      - The new command line options --edit and --genindex can be used to edit a
        recording or generate its index without actually starting the entire VDR
        (based on a patch from Helmut Auer).
      - Improved the description of the transponder parameters in vdr.5 (thanks to
        Winfried Köhler).
      - Avoiding setting the video stream type to 2 if the vpid is 0 (problem reported
        by Arthur Konovalov).
      - Implemented handling the "Content Descriptor" (based on a patch from Rolf
        Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the textual
        representation of the content descriptors as "genre". The epg.data file stores
        the genre using the tag character 'G'.
      - Implemented handling the "Parental Rating Descriptor" (based on a patch from Rolf
        Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the parental
        rating (if given) in their event displays. The epg.data file stores
        the parental rating using the tag character 'R'.
        IMPORTANT NOTE: if VDR doesn't display a parental rating, this does not
        necessarily mean that the given programme is suitable for all audiences!
      - Rearranged cEvent members to minimize memory waste.
      - After a CLRE command, no further EPG processing is now done for 10 seconds,
        so that data sent with subsequent PUTE commands doesn't interfere with data
        from the broadcasters (suggested by Helmut Auer).
      - Added support for DVB cards with multiple fontends. Note that this only
        works for DVB cards where each frontend can be used independently of all
        the others on the same adapter.
      - Fixed plugin arguments corruption with glibc 2.11 on x86_64 (thanks to
        Anssi Hannula).
  15. 23 Aug, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.9 · 06bf4c45
      Klaus Schmidinger authored
      - Fixed storing the current OSD size in case the device has
        changed it in its setup menu (reported by Reinhard Nissl).
      - Fixed cDevice::PlayTsVideo() and cDevice::PlayTsAudio() in case only part of the
        buffer has been accepted by the device (reported by Udo Richter).
      - Changed the EIT filter setup to save a few handles on devices that do hardware
      - Fixed deleting expired timers if they have the VPS flag set, but the event they
        are assigned to doesn't have a VPS tag.
      - Fixed handling file name length on VFAT systems in case they
        contain UTF-8 characters (thanks to Rolf Ahrenberg).
      - Fixed generating CaPmts in case audio and video are encrypted using different
        ECM pids.
      - Updated vdr.1 to use the new file names in recording directories.
      - Fixed cRecordings::DelByName() to avoid compilation errors with gcc 4.4
        (thanks to Matthias Schwarzott).
      - Increased the value of MAXFRAMESIZE to better suit HD recordings (thanks to
        Reinhard Nissl).
      - Implemented full handling of subtitling descriptors (thanks to Mikko Tuumanen).
  16. 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).
  17. 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.
  18. 07 Jan, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.0 · 66ab78a4
      Klaus Schmidinger authored
      - The CAM handling has been refactored. Instead of a cCiHandler per device there
        is now an abstract cCiAdapter and a cCamSlot. This allows each slot to be
        accessed individually.
      - The general 15 seconds workaround time before opening the CAM menu has been
        removed. If the CAM menu doesn't open within a timeout, the enter menu command
        is now sent again.
      - If a CAM is reset or pulled and reinserted, it now automatically starts
        decrypting the current channel again.
      - The Setup/CAM menu now dynamically refreshes its items and displays whether
        a CAM is present or ready. The 'Reset' function no longer leaves the menu.
      - The CAM menu will now be openend when pressing the Ok key on a slot entry.
      - The CAM menu now stays within the current menu context and doesn't close and
        reopen the menu every time an option is selected.
      - When an encrypted channel is switched to for the first time, VDR now checks
        explicitly whether a CAM can actually decrypt that channel. If there is more
        than one CAM in the system that claims to be able to decrypt the channel,
        they are all tried in turn.
        To make this possible, an encrypted channel needs to be received in Transfer
        Mode when it is switched to for the first time, so that VDR can determine
        whether the TS packets are actually decrypted. Once a channel is known to
        be decrypted by a particular CAM, the next time it is switched to it will
        be shown in normal live viewing mode.
      - A cDevice now automatically detaches all cReceiver objects that receive PIDs
        that can't be decrypted with the current CAM. A plugin that attaches a cReceiver
        to a device should therefore watch the receiver's IsAttached() function to
        see if it is still attached to the device.
      - The cReceiver constructor no longer takes an 'int Ca' as its first parameter,
        but rather a 'tChannelID ChannelID'. This is necessary for the device to be
        able to determine which CAM a particular channel can be decrypted with. If the
        channel is known to be unencrypted, or a plugin doesn't want to provide the
        channel id for other reasons, an invalid tChannelID() can be given.
      - The cThread::Start() function now waits until a previous incarnation of this
        thread has actually stopped. Before this it could happen that a thread's
        Cancel(-1) function was called and immediately after that it was started again,
        but the Start() function still found it to be 'active'.
      - The parameter NeedsDetachReceivers in cDevice::GetDevice(const cChannel *Channel, ...)
        has been removed. A call to this function will automatically detach all receivers
        from the device if it returns a non-NULL pointer.
      - The cTimeMs class now accepts an initial timeout value in its constructor.
      - A CAM is now explicitly instructed to stop decrypting when switching away from
        an encrypted channel.
      - If the CAM in use can decrypt several channels at the same time, VDR can
        now make use if this capability. Whether or not a CAM can decrypt more
        than one channel is determined by sending it an initial empty QUERY command
        and testing whether it replies to it.
      - Ca values in the range 0...F in channels.conf can still be used to assign a channel
        to a particular device, but this will no longer work with encrypted channels because
        without valid CA ids VDR can't decide which CAM slot to use. However, since VDR now
        automatically determines which CAM can decrypt which channel, setting fixed
        channel/device relations should no longer be necessary.
  19. 05 Jan, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.4.4-3 · 6d4eb0df
      Klaus Schmidinger authored
      - Fixed a possible segfault if VDR gets terminated while a message is displayed
        (thanks to Udo Richter).
      - Fixed the INSTALL section on retrying shutdown later (reported by Udo Richter).
      - When entering text via the numeric keys, the characters are now checked against
        the allowed characters (thanks to Frank Schmirler).
      - Added a missing break statement in cCiHandler::OpenSession().
  20. 20 Aug, 2006 1 commit
    • Klaus Schmidinger's avatar
      Version 1.4.1-5 · 0e310c57
      Klaus Schmidinger authored
      - Replaced the "quick workaround for additional live audio PIDs" in
        cDvbDevice::SetChannelDevice() with an actual solution in
        cDvbDevice::SetAudioTrackDevice() in order to prevent sticky PIDs in CAMs,
        which caused long switching times or completely blank screens when switching
        between encrypted channels on the same transponder (reported by Tomas Berglund).
      - Adapted cThread::ThreadId() to recent kernels (thanks to Ville Skyttä).
      - Added --remove-destination to the 'cp' command for binaries in the Makefile to
        avoid a crash in case a new version is installed on a running system (suggested
        by Petri Hintukainen).
      - Fixed handling "Ca Info" in case the CAM sends this again if the smart card is
        replaced with a different one.
  21. 13 Aug, 2006 1 commit
    • Klaus Schmidinger's avatar
      Version 1.4.1-4 · f5ad8fc5
      Klaus Schmidinger authored
      - Fixed converting the port number in the "connect from..." log message of SVDRP
        (thanks to Ville Skyttä).
      - Made the cCiSession members sessionId and resourceId uint16_t and uint32_t,
        respectively, to match their types in the CI session data (thanks to Ville Skyttä
        for reporting that there are places where ntohs() is assigned to different types).
      - Changed the way a device is selected for receiving in order to keep devices with
        CAMs better available, even if this means recording on the primary device (reported
        by Jörn Reder; thanks to Anssi Hannula for improving handling Transfer Mode devices
        in this).
      - No longer stopping removing empty directories if an error occurs (thanks to
        Oliver Endriss).
      - Added a log error message to cPlugin::ConfigDirectory() in case a plugin calls it
        from a separate thread (reported by Udo Richter).
  22. 23 Jul, 2006 1 commit
    • Klaus Schmidinger's avatar
      Version 1.4.1-2 · 80c04529
      Klaus Schmidinger authored
      - Fixed the Makefile of the 'servicedemo' plugin, so that it defines the
        PLUGIN macro, which allows the Make.config file to react properly when
        compiling the plugin (reported by Bernd Melcher).
        Note to all plugin developers: a plugin's Makefile *must* define the PLUGIN
        macro, even if it doesn't use it itself!
      - Added a comment regarding the PLUGIN macro to the 'newplugin' script.
      - Added '--vfat' to the vdr.1 man page (reported by Udo Richter).
      - Removed a double fdopen() in cPipe::Open() (reported by Stefan Huelswitt).
      - Fixed handling the running status of EPG events before the currently running one,
        in case they are added after the current event.
      - cEIT::cEIT() now calls pSchedule->SetPresentSeen() even if OnlyRunningStatus is
      - Newlines in title and short text of an EPG event are now changed into blanks only
        after all other fixes, because a short text might become a description.
      - Fixed handling network masks in the svdrphosts.conf file (thanks to Patrick
      - Fixed handling relative volume settings in the call to cStatus::MsgSetVolume()
        (reported by Norbert Wentz).
      - Added a missing initialization of 'mutex' in cCiMenu::cCiMenu() and removed
        some superfluous semicolons in ci.c (thanks to Marco Schlüßler).
      - Fixed handling client side termination of SVDRP connections (thanks to Frank
      - cDevice::GetDevice() now prefers any device that's already receiving and doesn't
        require detatching receivers (suggested by Anssi Hannula).
      - Fixed handling numeric keys in the channel display after switching channel groups
        (thanks to Andreas Regel).
      - Menu items derived from cMenuEditIntItem now loop though their values if they
        have a dedicated minimum or maximum limit (suggested by Andy Grobb). Looping is
        only done for normal keypresses, not for repeated ones. This allows the user to
        scroll the value all the way to the limit by keeping the key pressed.
  23. 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.
  24. 27 Nov, 2005 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.37 · 8c63e0fd
      Klaus Schmidinger authored
      - Added compiler options "-fPIC -g" to all plugins (thanks to Rolf Ahrenberg).
      - Fixed initializing the day index when editing the weekday parameter of a
        repeating timer (thanks to Marco Schlüßler).
      - No longer removing superfluous hyphens in EPG data - would become too
        language dependent to handle all kinds of exceptions.
      - Modified switching to Dolby Digital audio in live mode, if the driver
        and firmware can handle live DD without the need of a Transfer Mode (thanks
        to Werner Fink). Live DD mode requires a full featured DVB card and a
        LinuxDVB driver with firmware version 0x2622 or higher. Older versions will
        use Transfer Mode just like before.
      - Implemented handling of the "CA PMT Reply" for CAMs (thanks to Marco
        Schlüßler for figuring out some obscure length bytes in the CA PMT Reply
        data of AlphaCrypt CAMs).
      - Some preparations for being able to record several encrypted channels from
        the same transponder at the same time (or record and view different encrypted
        channels), provided the CAM in use can handle this. This is work in progress
        and isn't actively used, yet.
      - Fixed SetProgress() in the 'skincurses' plugin in case Total is 0 (reported
        by Stefan Huelswitt).
      - Added a copy constructor to cString and fixed its assignment operator
        (thanks to Holger Brunn).
      - The new function Skins.QueueMessage() can be called from a background thread
        to queue a message for display. See VDR/skins.h for details.
      - The SVDRP command MESG uses the new message queueing facility, so MESG
        commands may now be executed at any time, and the message will be displayed
        (no more "pending message").
  25. 06 Nov, 2005 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.36 · 812ab901
      Klaus Schmidinger authored
      - Fixed a NULL pointer access with the cUnbufferedFile when a replay session runs
        all the way until the end of the recording (thanks to Joachim Wilke).
      - A menu is no longer automatically closed when a replay ends (reported by
        Marko Mäkelä).
      - Removed '\n' from several syslog() calls (reported by Sascha Volkenandt).
      - Fixed missing '&' in the SetAreas() example in PLUGINS.html (reported by
        Sascha Volkenandt).
      - Fixed a memory leak in cString::operator=() (reported by Sascha Volkenandt).
      - Updated the Dutch OSD texts (thanks to Maarten Wisse).
      - cReadLine now dynamically allocates its buffer, so that it can handle lines
        of any length.
      - Changed cConfig::Load() to use cReadLine instead of a fixed buffer (thanks
        to Andreas Mair for reporting a problem with extremely long summary fields
        in timers).
      - cSVDRP now dynamically allocates its command buffer in order to handle
        commands of any length. The MAXPARSEBUFFER macro is now obsolete and has
        been removed. If a plugin has used that macro, it should either define
        a buffer size of its own, or use cReadLine when reading files.
      - Fixed a race condition in the SPU decoder (thanks to Marco Schlüßler).
      - The EPG scan no longer disturbs players that have also set live PIDs
        (reported by Stefan Huelswitt).
      - Fixed setting the help key display in the Recordings menu in case of several
        layers of subdirectories.
      - Removed EPG bugfix #0, because it removed actually important data.
  26. 31 Oct, 2005 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.35 · 99e3c093
      Klaus Schmidinger authored
      - Updated 'sources.conf' (thanks to Philip Prindeville).
      - Now using daemon() instead of fork() to run VDR in daemon mode (thanks to
        Enrico Scholz).
      - Fixed a possible endless loop in a menu with no selectable items if
        Setup.MenuScrollWrap is true (thanks to Enrico Scholz).
      - Making sure no item is displayed as "current" if Up, Down, Left or Right is
        pressed in a menu with no selectable items.
      - Added '__attribute__' to functions that use printf() like parameters (thanks
        to Darren Salt).
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Fixed a leftover 'summary.vdr' in vdr.1 (reported by Christoph Hermanns).
      - Added more error messages and line numbers when reading EPG data and info.vdr
        (thanks to Peter Bieringer).
      - Updated the Danish OSD texts (thanks to Mogens Elneff).
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Added missing mutex locks to cCiMenu::Abort() and cCiEnquiry::Abort() (reported
        by Marco Schlüßler).
      - Fixed lock handling in CAM communication to avoid problems with multiple CAMs
        per device or CAMs with more than one smart card.
      - Updated the Greek OSD texts (thanks to Dimitrios Dimitrakos).
      - Updated the French OSD texts (thanks to Nicolas Huillard).
      - Fixed the cFilter example in PLUGINS.html (reported by Patrick Fischer).
      - The new class cUnbufferedFile is used for the recording files to avoid
        trashing the file system cache (based on a patch by Ralf Müller).
  27. 03 Oct, 2005 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.34 · 88d8d634
      Klaus Schmidinger authored
      - Fixed a leftover 'summary.vdr' in vdr.5 (thanks to Peter Bieringer for reporting
        this one).
      - Fixed opening recording folders in case the last replayed recording no longer
        exists (reported by Udo Richter).
      - Fixed an unjustified "Error while accessing recording!" after deleting a recording
        from a subfolder.
      - Fixed handling the '.update' file in case the video directory is not at the default
        location (reported by Jon Burgess).
      - Fixed a crash in cConfig::Load() when compiling on the PPC (thanks to Sascha
      - Fixed the FATALERRNO macro to check for a non-zero errno value (reported by Marco
      - Added a check against MAXOSDAREAS in cOsd::CanHandleAreas() (reported by Udo
      - Fixed setting current menu item if the first one is non-selectable.
      - cOsdItem::cOsdItem() now has a 'Selectable' parameter.
      - Improved displaying 'sub-title' and 'bottom text' in the CAM menu.
      - Added status message "Resetting CAM..." for an immediate feedback when the CAM
        reset has been triggered.
      - The CAM menu now automatically updates itself in case of a progress display (as
        used, for instance, when updating the firmware via satellite).
      - Now skipping some funny characters sent by some CAMs at the beginning of strings.
      - The CAM menu is now completely closed when pressing the Menu key while inside
        a sub menu.
      - Reduced MAX_CONNECT_RETRIES in ci.c to 2 (waiting too long made the whole thing
        appear hanging).
      - Added status message "Opening CAM menu..." for an immediate feedback when the CAM
        menu has been requested.
      - Speeded up initial opening of the CAM menu.
      - Fixed handling of menus with no selectable items.
      - The character 0x8A in CAM menu strings is now mapped to a real newline.
      - The 'sub-title' and 'bottom text' in the CAM menu can now consist of several lines.
      - Improved the CAM enquiry menu.
  28. 25 Sep, 2005 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.33 · c16bbf74
      Klaus Schmidinger authored
      - Fixed two errors in 'newplugin' (thanks to Alexander Rieger).
      - Fixed converting arbitrarily formatted summary.vdr files (thanks to Thomas Günther).
      - Fixed handling color buttons in cMenuEditStrItem (thanks to Alexander Rieger).
      - Added cChannel::LinkChannels() and cChannel::RefChannel() (suggested by Helmut Auer).
        Note that VDR itself doesn't actually use the linked channels, yet, so there is
        no guarantee that this really works under all circumstances.
      - Added a missing include statement to the 'sky' plugin (thanks to Alfred Zastrow
        for reporting this one).
      - Fixed handling key macros with keys after @plugin (thanks to Rolf Ahrenberg for
        reporting this one).
      - Fixed error handling in cCiTransportConnection::RecvTPDU() (thanks to Georg Acher
        for reporting this one).
      - Removed obsolete 'shift' code in device.[hc].
      - The SVDRP command DELR no longer triggers a complete reload of the global Recordings
        list, but rather deletes that particular entry.
      - The list of recordings is now read in a separate thread, resulting in a faster
        startup if there are a great many of recordings, or the disk(s) have to spin up.
        If the Recordings menu is opened while the list of recordings is still being read,
        the menu will be updated accordingly.
        Plugins that access the global Recordings variable should lock the thread
        by putting something like
          cThreadLock RecordingsLock(&Recordings);
        into the respective code block. Thanks to Carsten Koch for his help in testing
        and debugging this.
      - The 'new' indicator in the Recordings menu is now kept up-to-date (thanks to
        Thomas Günther).
      - Updated the Romanian OSD texts (thanks to Lucian Muresan).
      - Updated the Russian OSD texts (thanks to Oleg Roitburd).
      - The '.update' file in the video directory is now touched when a recording is
        added or deleted, so that other VDR instances can update their lists (thanks to
        Alexander Rieger).
      - Made the function ExchangeChars() public (suggested by Lucian Muresan).
  29. 21 Aug, 2005 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.30 · dab203ef
      Klaus Schmidinger authored
      - Improved responsiveness inside CAM menus.
      - Added handling of the 'Close MMI' tag to avoid error log messages with CAMs
        that actually use it.
      - Now waiting at startup until all DVB devices are ready. This includes having
        all CAMs initialized and ready to decrypt, so that no more "channel not
        available" happens if VDR is started with the current channel being an encrypted
        one, or a timer on such a channel hits right after starting VDR.
      - Fixed cVideoRepacker to better handle errors in data (thanks to Reinhard Nissl).
      - Fixed cDvbTuner to avoid lockups on NPTL systems (thanks to Marcel Wiesweg).
      - Added 'Service' functions to the plugin interface (thanks to Udo Richter).
        See PLUGINS.html, section "Custom services" for details.
      - Replaced the get/put_unaligned() macros from <asm/unaligned.h> with own inline
        functions to avoid problems on platforms that don't provide these (thanks to
        David Woodhouse for his help).
  30. 12 Jun, 2005 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.26 · a616d4b8
      Klaus Schmidinger authored
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Fixed handling 'summary.vdr' files with more than two empty lines (thanks to
        Christian Jacobsen for reporting this one).
      - Improved resetting CAM connections (thanks to Marco Schlüßler).
      - Implemented cVideoRepacker in remux.c to make sure every PES packet contains
        only data from one frame (thanks to Reinhard Nissl).
        NOTE: currently this doesn't work with MPEG1, so if you use MPEG1 you may want
        to change line 1158 in remux.c to
        ts2pes[numTracks++] = new cTS2PES(VPid, resultBuffer, IPACKS);
        as it was before.
      - EPG events without a title now display "No title" instead of "(null)" (thanks
        to Rolf Ahrenberg).
      - A device can now detach all receivers for a given PID, as is necessary, e.g.,
        for the bitstreamout plugin (thanks to Werner Fink).
      - Added the year (two digits) to recording dates in LSTR, and thus also in menus
        (suggested by Jan Ekholm).
      - Fixed the call to Channels.Unlock() in cEITScanner::Process() (thanks to
        Reinhard Nissl).
      - Fixed handling timers with a day given as MTWTF--@6, i.e. a repeating timer with
        first day not as full date, but just day of month (thanks to Henrik Niehaus for
        reporting this one).
      - Removed an unnecessary #include from osd.c (thanks to Wolfgang Rohdewald).
      - Fixed dropping EPG events that have a zero start time or duration, in case it's
        an NVOD event (thanks to Chris Warren).
      - Fixed handling page up/down in menu lists in case there are several non selectable
        items in a row (thanks to Udo Richter for reporting this one).
      - Added cOsdMenu::SetCols() to allow adjusting the menu columns.
      - Modified cEITScanner::Process() so that it works on systems with only budget cards
        or a mix of DVB-S, DVB-C or DVB-T cards.
  31. 18 Jul, 2004 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.12 · 335a5729
      Klaus Schmidinger authored
      - Removed all error messages from cRecordings::ScanVideoDir() and just skipping
        entries that cause errors in order to avoid failure in case of things like
        broken links etc.
      - The function cTimers::SetEvents() now immediately returns if there is some user
      - Fixed handling menu status messages when the list contents is scrolled (thanks to
        Alfred Zastrow for reporting this one).
      - Fixed checking the last area for misalignment in cOsd::CanHandleAreas() (thanks
        to Reinhard Nissl for reporting this one).
      - No longer adding section filters to the list of filters if they can't be opened
        (thanks to Marco Schlüßler for pointing this out).
      - Fixed handling error case '-1' when polling section filters (thanks to Marco
      - Fixed handling error case '-1' when polling CAM connections.
      - Making sure the OSD reports oeWrongAlignment errors before any oeAreasOverlap
        error (suggested by Reinhard Nissl).
      - Avoiding flashing effects in the OSD of full featured DVB cards by explicitly
        clearing the OSD windows before opening them (suggested by Marco Schlüßler).
      - Experimental support for NVOD channels. Currently these channels are detected
        and linked to their "base" channels using the same mechanisms as for the
        "linked services" (let's see if this is useful). Thanks to Mike parker for
        helping to test this. Also used some input from the 'autopid' patch by Andreas
      - Now storing the name of the service provider (aka "bouquet") in the channel
        name, separated by a semicolon (see man vdr(5) for details). Explicit usage
        of the various parts of the channel name is yet to come.
      - The 'radio' channel icon is now only displayed in the ST:TNG skin if the channel
        actually has an APID.
  32. 08 Feb, 2004 1 commit
    • Klaus Schmidinger's avatar
      Version 1.3.4 · 3fc29659
      Klaus Schmidinger authored
      - Fixed handling language codes in case there is no audio or Dolby PID.
      - Fixed handling CA ids (was broken in 1.3.3).
      - Fixed the SVDRP command 'STAT DISK' to avoid a 'division by 0' in case the
        disk is full (thanks to Jens Rosenboom).
      - Fixed handling bitmap indexes for 256 color mode (thanks to Andreas Regel).
      - Now handling "linked services" (based on the 'autopid' patch from Andreas
        Schultz). Linked channels are detected and added to 'channels.conf', but
        currently they are not yet presented to the user other than being in the
        normal channel list (this will come later).
      - Preliminary fix for the "Unknown picture type error" (thanks to Sascha
        Volkenandt for his support in debugging this one). This may slow down switching
        between channels on different transponders for now, but a better solution will
        come later.
      - Fixed the validity check for channel IDs, because some providers use TIDs with
        value 0 (thanks to Thomas Bergwinkl).
      - Enabled switching to a channel even if it has no Vpid or Apid set, because these
        might be automatically set when tuned to that transponder.
      - No longer closing the Channels menu after trying to switch to a channel that
        is currently not available.
      - Removed the now obsolete CaCaps stuff. The Setup/CICAM menu now displays the
        actual CAM type as reported by the CAM. The 'ca.conf' file has been stripped
        down to the values 0..4.
  33. 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
  34. 26 Oct, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.2.6pre4 · d62fbea7
      Klaus Schmidinger authored
      - Fixed handling CAM menus in case the CAM connection fails while the menu
        is being presented (thanks to Thomas v. Keller for reportign this one).
      - Added missing 'const' to some cChannel member functions (thanks to Torsten
  35. 03 Aug, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.2.2 · 6c2c3ace
      Klaus Schmidinger authored
      - Fixed a bug in channel switching after Left/Right has been pressed (thanks to
        Michael Walle for reporting this one).
      - Improved channel switching in case of numerical input by switching as soon as
        the channel is unique (suggested by Jaakko Hyvätti).
      - Fixed creating a new channel in the "Channels" menu in case the 'channels.conf'
        contains ':@nnn' lines with no text (thanks to Guy Roussin for reporting this
      - Changed the behaviour of the '0' key in normal viewing mode so that a channel
        only qualifies as "previous" if it has been selected for at least 3 seconds
        (suggested by Thomas Keil).
      - Now clearing the channel info display when entering numeric keys to switch
        channels (suggested by Guy Roussin).
      - Added missing I18N entry for "Ppid" (thanks to Rolf Ahrenberg).
      - Fixed handling the color buttons in the "Edit channel" menu (thanks to Thomas
        Keil for reporting this one).
      - Fixed an occasional "Broken pipe" error in SVDRP connections (thanks to Gerhard
        Steiner for reporting this one).
      - Fixed checking CA capabilities with the dvb-kernel driver (thanks to Kenneth
      - Fixed selecting the device, because sometimes an FTA recording terminated a
        CA recording (thanks to Emil Naepflein).
      - Fixed a possible crash in case a VFAT file system is used without compiling VDR
        with VFAT=1 (thanks to Ernst Fürst for reporting this one).
      - Now the program uses the values of VIDEODIR and PLUGINDIR defined in Makefile
        or Make.config as defaults (thanks to Steffen Barszus).
      - Added the usual menu timeout to the CAM menus.
  36. 25 May, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.33 · 8ab980e1
      Klaus Schmidinger authored
      - Modified handling of audio packets in cDvbPlayer for better sync with external
        AC3 replay (thanks to Werner Fink).
      - Fixed a memory leak in cNonBlockingFileReader (thanks to Stefan Huelswitt).
      - Completed the French OSD texts (thanks to Gregoire Favre).
      - Completed the Finnish OSD texts (thanks to Niko Tarnanen and Rolf Ahrenberg).
      - Fixed I/O handling in case an explicit controlling terminal is given (thanks
        to Oliver Endriss).
      - Fixed resume file handling in case the resume.vdr file can't be written
        (thanks to Gerhard Steiner).
      - Fixed cutting a recording if there is only a single editing mark (thanks to
        Ralf Klueber for reporting this one).
      - Fixed volume display in case a plugin has its own OSD open (thanks to Marcel
      - Fixed channel switching in the EPG scanner on single device systems.
      - Completed the Swedish OSD texts (thanks to Tomas Prybil).
      - Now switching to the channel used by the most recently started timer in case
        the original current channel becomes unavailable due to a recording on a
        different transponder. If this fails, a channel up/down switch is attempted as
        a fallback solution (thanks to Lauri Tischler for reporting this one, and to
        Hermann Gausterer for suggesting to switch to the recording channel).
      - Fixed cReplayControl::Show() to avoid a compiler warning in g++ 3.2.3 (thanks
        to Jan Ekholm for reporting this one).
      - Completed the Slovenian OSD texts (thanks to Matjaz Thaler).
      - Changed the DEFAULTPRIORITY in device.c to -1, so that the primary device
        will be used for FTA recordings in case the CAM is connected to a non-primary
        device (thanks to Reinhard Walter Buchner for reporting this one).
      - The cCiHandler now closes its file handle when it gets destroyed.
      - Checking for duplicate recordings with the same file name and disabling the
        second timer (thanks to Peter Bieringer for reporting this one).
      - Fixed handling newly created timers in case they are not confirmed with "Ok"
        (thanks to Gerhard Steiner for reporting this one).
      - It is now possible to directly delete a timer that is currently recording
        (thanks to Alexander Damhuis for reporting this one).
  37. 21 Apr, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.28 · 21a52ccb
      Klaus Schmidinger authored
      - Using masks in EIT filtering to reduce the number of filters (thanks to Andreas
      - Fixed handling Ca descriptors (thanks to Stefan Huelswitt).
      - Now only those Ca descriptors are sent to a CAM that are actually understood
        by that CAM.
      - Re-enabled CAM communication during replay and on non-Ca channels. This requires
        a DVB driver with firmware version 2613 or later.
      - It is now possible to do simultaneous recording and replay with a single DVB
        card, even with encrypted channels. This requires the use of the Link Layer
        firmware, version 2613 or higher; the -icam firmware is still limited to live
        encrypted channels only. Finally we have time shift for encrypted channels on
        single card systems!
      - Enhanced detection of pending user I/O from CAMs to avoid sluggish reaction
        to remote control keypresses.
      - Implemented "pause live video". You can now press "Menu/Yellow" or "Pause" on
        your remote control while watching live video to start an instant recording
        of the current programme and immediately start replaying that recording.
  38. 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).
  39. 19 Mar, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.26 · b60eda5a
      Klaus Schmidinger authored
      - Removed signal handling and usleep(5000) from cDvbOsd::Cmd() (apparently this
        is no longer necessary with DVB driver 1.0.0pre2 or later).
      - If the primary device (as defined in setup.conf) doesn't have an MPEG decoder
        (and thus can't be used as a primary device) VDR now scans all devices at
        startup and uses the first one (if any) that actually has an MPEG decoder.
        That way this will also work automatically if the primary device is implemented
        by a plugin.
      - Fixed a possible deadlock when using the "Blue" button in the "Schedules" menu
        to switch to an other channel (thanks to Torsten Herz).
      - Fixed the EPG bugfix code number for the MAX_USEFUL_SUBTITLE_LENGTH fix (thanks to
        Torsten Herz for reporting this one).
      - Modified the EPG scanner to avoid CPU load peaks (thanks to Steffen Becker for
        reporting this one).
      - Fixed support for Viaccess CAMs (thanks to Axel Gruber for helping to debug this).
  40. 16 Feb, 2003 1 commit
    • Klaus Schmidinger's avatar
      Version 1.1.25 · b6e46373
      Klaus Schmidinger authored
      - Fixed high CPU load during replay (thanks to Marcel Wiesweg for pointing out this
      - Fixed margin handling in cRingBufferLinear.
      - Now polling the output device in 'Transfer Mode' and retrying to put packets
        into the ring buffer.
      - Resetting the CAM slot in case communication breaks down.
      - Improved keyboard detection (thanks to Werner Fink).
      - Updated 'channels.conf.terr' (thanks to Andy Carter).
      - Fixed broken support for raw OSDs of plugins (thanks to Marcel Wiesweg for
        reporting this one).
      - Broken CAM connections are now restored automatically.