[vdr] [ANNOUNCE] VDR developer version 2.3.4

Klaus Schmidinger Klaus.Schmidinger at tvdr.de
Thu Apr 27 09:12:46 UTC 2017

VDR developer version 2.3.4 is now available at


A 'diff' against the previous version is available at


MD5 checksums:

7b1c985d5e7703f7ec46e3818f546702  vdr-2.3.4.tar.bz2
bacbe7b334a4aa0827d95938e3a1ec6d  vdr-2.3.3-2.3.4.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.

** ==========
** If you use any of the plugins "ddci2", "satip" or "dvbapi", please make
** sure you get the latest version from their respective repositories!

The changes since version 2.3.3:

- The functionality of HandleRemoteModifications(), which synchronizes changes to
   timers between peer VDR machines, has been moved to timers.[ch] and renamed to
   HandleRemoteTimerModifications(). It now also handles deleting remote timers.
- The function cEpgHandlers::BeginSegmentTransfer() is now boolean (thanks to
   Jörg Wendel). See the description in epg.h for the meaning of the return value.
- Changed tEventID back to u_int32_t (suggested by Jörg Wendel). The change to
   u_int16_t in version 2.3.1 was ill-conceived, because the description of the
   "event id" in vdr.5 explicitly mentioned this parameter to be 32 bit in size!
   The members of cEvent have been slightly rearranged to minimize the memory
   requirements on both 32 and 64 bit systems.
- The file 'cam.data' is no longer written if it is read-only.
- Detecting whether a particular CAM actually decrypts a given channel is now
   done separately for each receiver.
- The cEvent class now has a new member 'aux', in which external applications can
   store auxiliary information with an event (thanks to Jörg Wendel). This string
   has no meaning whatsoever to VDR itself, and it will not be written into the
   info file of a recording that is made for such an event.
- Added some guidelines and recommendations to the 'Logging' section of PLUGINS.html.
   The most important being: implement a command line option to control the level
   of logging (in particular allow turning off logging completely!) and never print
   anything to stdout or stderr (unless one of the listed exceptions applies).
- Added a note to the "Pausing live video" section of the MANUAL, stating that
   the timer for paused live video will always record on the local VDR, even if
   an "SVDRP default host" has been set for normal timer recordings.
- cOsdMenu::Display() now checks whether the OSD size has changed and if so calls
- The SVDRP commands that deal with recordings (DELR, EDIT, LSTR, MOVR, and PLAY)
   now use a unique id for each recording, which remains valid as long as this
   instance of VDR is running. This means that recordings are no longer continuously
   numbered from 1 to N in LSTR. There may be gaps in the sequence, in case recordings
   have been deleted, and they are not necessarily listed in numeric order.
   Thanks to Sergey Chernyavskiy.
- Changed 'number' to 'id' in the help texts of SVDRP commands that deal with
- Fixed a deadlock in the SVDRP command PLAY in case there is currently a
   recording being replayed.
- Signal strength and quality (CNR) are now determined via DVB API 5 (if available).
   Fallback is the old DVB API 3 method.
- The function cCamSlot::Decrypt() can now also be called with Data == NULL.
   This is necessary to allow CAMs that copy the incoming data into a separate buffer
   to return previously received and decrypted TS packets. See ci.h for details.
   Plugins that implement a derived cCamSlot need to properly handle this case, and
   plugins that implement a derived cDevice need to call Decrypt() in their
   GetTSPacket() function even if the incoming buffer is currently empty (see
- cTSBuffer::Skip() no longer immediately deletes the given number of bytes from the
   TS buffer, but rather stores the number for later deletion in the next call to
   Get(). This is necessary because in cDvbDevice::GetTSPacket() tsBuffer->Skip()
   is called, but the actual TS packet returned (pointed to by Data) may well be
   (and typically is, unless the CAM copies the data) in the area of the buffer that
   would be deleted by Skip().
- The new function cDevice::SignalStats() (if implemented by an actual device) returns
   statistics about the currently received signal.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed displaying remote timers in the main menu of skin LCARS.
- Fixed editing a remote timer immediately after it has been created.
- Fixed handling the uncorrected block counter for DVB API 3 devices when calculating
   signal quality.
- The SVDRP command LSTC can now list the channels with channel ids if the option
   ':ids' is given (suggested by Dietmar Spingler).
- If 0 is given as the channel number in the SVDRP command LSTC, the data of the
   current channel is listed.
- Fixed a possible crash when pulling the CAM while decrypting a channel with MTD.

Have fun!


More information about the vdr mailing list