DVB-Cube <<< Das deutsche PC und DVB-Forum >>>

Diverse DVB Software für verschiedene Karten => # Linux DVB (vdr, kaffeine, ect.) => # VDR => Thema gestartet von: mtron am 02 April, 2013, 08:53

Titel: [Release] VDR 2.x
Beitrag von: mtron am 02 April, 2013, 08:53
VDR Version 2.0.0 steht ab sofort zur Verfügung unter
http://tvdr.de/download.htm

Eine Zusammenfassung aller wesentlichen Änderungen seit der letzten stabilen Version 1.6.0 gibt es hier:
http://www.tvdr.de/changelog.htm

Genauere Changelogs aller Developer Versionen seit der letzten Stable Release gibts in diesem thread (http://www.dvbcube.org/index.php?topic=24549.msg134297#msg134297)

Beim Update von einer früheren Version von VDR lest bitte _vorher_ die Dateien INSTALL und MANUAL durch, die in der VDR-Source enthalten sind. Stellt sicher, daß ihr Sicherheitskopien aller Konfigurationsdateien habt, und verifiziert sorgfältig, daß eure Timer nach dem Umstieg auf diese neue Version auf die korrekten Kanäle zeigen.
Titel: Video Disk Recorder (VDR) 2.0.1
Beitrag von: SiLæncer am 14 April, 2013, 12:34
VDR Version 2.0.1 steht ab sofort zur Verfügung unter : http://tvdr.de/download.htm

Was ist neu : >>

Several minor bug fixes and improvements.
Titel: Video Disk Recorder (VDR) 2.0.2
Beitrag von: SiLæncer am 21 Mai, 2013, 19:20
VDR Version 2.0.2 steht ab sofort zur Verfügung unter : http://tvdr.de/download.htm

Was ist neu : >>

Several minor bug fixes and improvements.
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 22 Mai, 2013, 11:11
die Changelogs:

2013-04-13: VDR Version 2.0.1

- Fixed initializing cDevice::keepTracks.
- Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than
  one character (reported by Stefan Braun).
- Added definitions for older DVB API versions, back until 5.0 (based on a patch from
  Udo Richter).
- Fixed handling '/' and '~' in recording file names in case DirectoryEncoding is
  used (thanks to Lars Hanisch).
- Changed cThread::SetIOPriority() from "best effort class" to "idle class" in order to
  improve overall performance when an editing process is running (thanks to Jochen
  Dolze).

2013-05-19: VDR Version 2.0.2

- Fixed multiple occurrences of the same directory in the recordings list in case there
  are directories that only differ in non-alphanumeric characters (was broken by
  "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" in version 1.7.36).
- Fixed displaying the frame number when setting an editing mark (thanks to Thomas
  Günther).
- Fixed no longer generating any editing marks if the edited recording results in just
  one single sequence.
- Fixed an error message when parsing SCR values in diseqc.conf.
- Fixed an unexpected RCS version tag in the newplugin script.
- Fixed an endless loop in the DrawEllipse() functions for very small ellipses (reported
  by Stefan Braun).
- Fixed a crash in the LCARS skin's main menu in case there is no current channel
  (reported by Dominique Dumont).
Titel: Video Disk Recorder (VDR) 2.0.3
Beitrag von: SiLæncer am 02 September, 2013, 05:50
2013-09-01: Version 2.0.3

- Fixed asserting free disk space in the cutter.
- No longer trying to delete old recordings in AssertFreeDiskSpace() if the given
  Priority is less than 1.
- Fixed handling LIRC events in case repeated events are lost.
- Fixed a possible crash when shutting down VDR while subtitles are being displayed
  (reported by Ville Skyttä).
- cDevice::IsPrimaryDevice() now also checks whether the primary device actually has
  a decoder and returns false otherwise. This should improve device allocation on
  systems that are only used as a receiver and don't actually display anything.
- Increased the value of MAXRETRIES to 20 to reduce the probability of disturbances
  in transfer mode.
- All bonded devices (except for the master) now turn off their LNB power completely
  to avoid problems when receiving vertically polarized transponders (suggested by
  Manfred Völkel and Oliver Endriss).
- Fixed cleaning up old EPG events in case no epg data file is given (reported by
  Dave Pickles).
Titel: Video Disk Recorder (VDR) 2.0.5
Beitrag von: SiLæncer am 07 Januar, 2014, 17:58
2014-01-07: Version 2.0.5

- The LIRC remote control now connects to the socket even if it doesn't yet exist when
  VDR is started (thanks to Lars Hanisch).
- Fixed a missing initialization in the c'tor of cSkinLCARSDisplayChannel (thanks to
  Marko Mäkelä).
- Fixed uninitialized item area coordinates in cSkinLCARSDisplayMenu (reported by
  Marko Mäkelä).
- Fixed a possible crash if the recordings list is updated externally while the
  Recordings menu is open (reported by Lars Hanisch).
- Added a missing closing ')' in the help and man page entry of the --vfat option
  (reported by Lars Hanisch).
- Fixed setting the name of the video directory to avoid a crash when using --genindex,
  and also to use the correct directory with --edit (the latter reported by Marko
  Mäkelä).
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 07 Januar, 2014, 18:32
außerdem wird gerade 'offline decoding support' eingebaut um auf schwachbrüstiger Hardware verschlüsselte Sender erstmal in codierter Form auf die Festplatte zu speichern und nachher das dekodieren zu machen wenn die ARM CPU Zeit hat.

Ich werds mal auf meinem Raspberry probieren und dann berichten.
Titel: Video Disk Recorder (VDR) 2.1.6 Dev
Beitrag von: mtron am 16 März, 2014, 15:20
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR developer version 2.1.6 is now available at

      ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.6.tar.bz2

A 'diff' against the previous version is available at

      ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.5-2.1.6.diff

MD5 checksums:

79519dac59166fabc2029b916bd61d00  vdr-2.1.6.tar.bz2
99f2f7094a242462696c0da5e52bb4c3  vdr-2.1.5-2.1.6.diff

WARNING:
========

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 changes since version 2.1.5:

- Revoked "Fixed some compiler warnings with Clang 3.4.1" from ci.c, because this
  did not compile with older versions of gcc (thanks to Sören Moch).
- Fixed keeping the current position in the Recordings menu if a recording was
  deleted in a sub folder.
- Fixed handling transfer mode on full featured DVB cards for encrypted channels
  that have no audio pid (reported by Christian Winkler).
- Fixed a possible endless loop in cH264Parser::GetGolombUe(), which caused recordings
  on some HD channels to get stuck and resulted in buffer overflows.
- Fixed handling PAT packets when detecting frames, so that they can be properly
  taken into account when regenerating the index of a recording.
- Fixed adding new source types in case they are already registered (reported by Rolf
  Ahrenberg).
- Removed an unnecessary assignment from cMenuRecordings::~cMenuRecordings().
- The Recordings menu now remembers the last recording the cursor was positioned on,
  independent of the last replayed recording. When a replay ends, however, the cursor
  will initially be positioned to the last replayed recording again when the menu
  is opened.
- Updated the Finnish OSD texts (thanks to Antti Hartikainen).
- Fixed drawing the live indicator in the LCARS skin in case there are no devices.
- When checking for obsolete channels, those with an RID that is not 0 are now
  ignored (suggested by Oliver Endriss).
- The SDT is now only parsed *after* the NIT has been read, and it explicitly uses
  the source value derived from the NIT. This should prevent new channels from being
  created with the wrong source.
- Added a log message in case a receiver is detached from its device because the
  assigned CAM can't decrypt the channel.
- Refactored setup parameter handling for output devices:
  + The function cDevice::GetVideoSystem() has been deprecated and will be removed
    in a future version. In order to check whether a particular plugin needs to be
    modified if this function is removed, you can comment out the line
    #define DEPRECATED_VIDEOSYSTEM
    in device.h.
  + Handling the "video (display) format" (things like 16:9, 4:3, pan&scan, letterbox
    etc) shall now be done by the individual output devices, because the types and
    numbers of parameters are too device specific. The Setup/DVB parameters
    "Video format" and "Video display format" are still there for now and can be used
    by SD devices. HD devices, however, shall not use these parameters (any more),
    but rather implement their own setup menu with the necessary parameters for
    controlling output.
  + The dvbhdffdevice plugin has been modified accordingly.
  + Made it clear that cDevice::SetDigitalAudioDevice() merely tells the output device
    that the current audio track is Dolby Digital. This function was only used by the
    original "full featured" DVB cards - do not use it for new developments!
    If an output device has several ways of replaying audio (like HDMI or analog jack)
    it shall implement the proper options in its plugin's SetupMenu() function.
- Added support for "Pilot", "T2-System-Id" and "SISO/MISO" parameters (thanks to
  Rolf Ahrenberg).
- Now initializing the isOnVideoDirectoryFileSystem member of cRecording when
  scanning the video directory, so that it won't cause a delay when opening the menu
  on a system with a large number of recordings.
- Now resetting the isOnVideoDirectoryFileSystem member of a cRecording to -1 after
  renaming it, so that it will be re-checked upon the next call to
  IsOnVideoDirectoryFileSystem().
- Added support for systemd (thanks to Christopher Reimer). To activate this you
  need to add "SDNOTIFY=1" to the 'make' call.
Titel: Video Disk Recorder (VDR) 2.0.6 Stable
Beitrag von: SiLæncer am 23 März, 2014, 10:00
Version 2.0.6

- Updated 'sources.conf' (thanks to Antti Hartikainen).
- cFont::CreateFont() now returns a dummy font in case there are no fonts installed.
  This prevents a crash with the LCARS skin on a system that has no fonts.
- Fixed detecting frame borders in MPEG-2 streams that have "bottom fields" or varying
  GOP structures (reported by Christian Paulick, with help from Helmut Auer).
- Fixed a wrong alignment in cCiDateTime::SendDateTime().
- Now checking whether the primary device actually has a decoder before retuning the
  current channel after a change in its parameters. This fixes broken recordings on
  the primary device on "headless" systems.
- Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 100 and introduced counting the number
  of actual video TS packets in cTsPayload in order to be able to record channels that
  sometimes need even more than 10 TS packets for detecting frame borders (reported by
  Eike Sauer and Oliver Endriss).
- Fixed sorting recordings by time in the Recordings menu if "Setup/OSD/Recording
  directories" is set to "no".
- Fixed clearing non-editable members in the channel editor (thanks to Rolf Ahrenberg).
- Fixed flickering if subtitles are active while the OSD demo is running.
- Fixed a possible crash in the OSD demo (reported by Christopher Reimer).
- Fixed learning keyboard remote control codes (thanks to Lars Hanisch).
- Fixed the replay progress display for very long recordings.
- Improved PAT/PMT scanning to speed up initial tuning to encrypted channels on
  transponders with many PAT entries (reported by Mariusz Bialonczyk).
- Fixed detecting broken video data streams when recording.
- Fixed handling frame detection buffer length (reported by Eike Sauer).
- Fixed keeping the current position in the Recordings menu if a recording was
  deleted in a sub folder.
- Fixed handling transfer mode on full featured DVB cards for encrypted channels
  that have no audio pid (reported by Christian Winkler).
- Fixed a possible endless loop in cH264Parser::GetGolombUe(), which caused recordings
  on some HD channels to get stuck and resulted in buffer overflows.
- Fixed handling PAT packets when detecting frames, so that they can be properly
  taken into account when regenerating the index of a recording.
- Fixed adding new source types in case they are already registered (reported by Rolf
  Ahrenberg).
- Fixed drawing the live indicator in the LCARS skin in case there are no devices.
- The SDT is now only parsed *after* the NIT has been read, and it explicitly uses
  the source value derived from the NIT. This should prevent new channels from being
  created with the wrong source.
- Now initializing the isOnVideoDirectoryFileSystem member of cRecording when
  scanning the video directory, so that it won't cause a delay when opening the menu
  on a system with a large number of recordings.
- The APIVERSION has been increased to 2.0.6 due to the changes to pat.h, sdt.h and
  the functional modification to cFont::CreateFont().

http://tvdr.de/download.htm
Titel: VDR 2.1.7
Beitrag von: mtron am 19 Januar, 2015, 17:19
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR developer version 2.1.7 is now available at

      ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.7.tar.bz2

A 'diff' against the previous version is available at

      ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.6-2.1.7.diff

MD5 checksums:

1c954bad31ce74cd1cbd7987e62d2a98  vdr-2.1.7.tar.bz2
88a90327a75833b7723942d3bd25f954  vdr-2.1.6-2.1.7.diff

WARNING:
========

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 changes since version 2.1.6:

Changelog vdr 2.1.7
- No longer logging an error message in DirSizeMB() if the given directory doesn't
  exist. This avoids lots of log entries in case several VDRs use the same video
  directory and one of them has already physically removed a recording directory,
  while the others still have it in their list of deleted recordings.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- A cCamSlot that has WantsTsData set to true in its constructor now also gets
  the CAT and EMM PIDs data.
- Fixed a possible division by zero in frame rate detection.
- VDR now reads command line options from *.conf files in /etc/vdr/conf.d (thanks
  to Lars Hanisch). See vdr.1 and vdr.5 for details.
- Fixed a possible crash in the LCARS skin (thanks to Thomas Reufer).
- Updated the dvbhddevice plugin source.
- Fixed a bug in the Makefile when installing plugins with LCLBLD=1 (thanks to
  Stefan Huelswitt).
- The pid of the PMT in which the CA descriptors of a given channel are broadcast
  is now stored together with the CA descriptors and can be retrieved by calling
  GetPmtPid() (this information is only required to receive encrypted channels
  with the OctopusNet receiver via the 'satip' plugin).
- Channels that are not listed in the SDT are now only marked as OBSOLETE if
  "Setup/DVB/Update channels" is set to a value other than "no" or "PIDs only".
- Fixed multiple OBSOLETE marks in channels that are not listed in the SDT in case
  "Setup/Miscellaneous/Show channel names with source" is set to "yes".
- The new function cOsd::DrawScaledBitmap() is now used for drawing subtitles.
  This function can be reimplemented by high level OSDs which may be able to do
  the scaling in hardware or otherwise more efficiently (thanks to Thomas Reufer).
- Fixed detaching receivers from devices in case a CAM needs to receive the TS
  (reported by Dietmar Spingler).
- Fixed resetting the receiver for EMM pids for CAMs that need to receive the TS
  (reported by Dietmar Spingler).
- Fixed (well, actually worked around) a problem with subtitles not being displayed
  because the broadcaster doesn't set the data's version numbers as required by the
  DVB standard (thanks to Rolf Ahrenberg).
- Fixed support for systemd (thanks to Christopher Reimer).
- Added a missing backslash to the help text of the SVDRP command MOVR (thanks to
  Lars Hanisch).
- Added subsystem id support for DVB devices connected via USB (thanks to Jose
  Alberto Reguero).
- Added the functions IndexOf(), InsertUnique(), AppendUnique() and RemoveElement()
  to the cVector class (thanks to Stefan Schallenberg).
- Fixed a possible out-of-bounds access in cVector::Remove().
- Added functions to set and retrieve the priority of a cReceiver (suggested by
  Frank Schmirler).
- Added the new parameters "Setup/Miscellaneous/Volume steps" and
  ".../Volume linearize" (thanks to Claus Muus). See the MANUAL for details.
- Fixed jumping to an absolute position via the Red key in case replay was paused
  (reported by Dieter Ferdinand).
- Changed the German weekday names from "MonDieMitDonFreSamSon" to
  "Mo.Di.Mi.Do.Fr.Sa.So." (thanks to Stefan Blochberger).
- Now handling CAT sections that consist of more than one TS packet.
- Added handling for DTS audio tracks to cPatPmtParser::ParsePmt() (thanks to
  Thomas Reufer).
- Added support for PGS subtitles (thanks to Thomas Reufer).
- Use of the function cOsd::GetBitmap() outside of derived classes is now deprecated,
  and it may be made 'protected' in a future version, since it doesn't work with
  TrueColor OSDs. Plugin authors may want to modify their code so that it
  works without this function.
- Modified the descriptions of several threads, so that the important information
  (like device or frontend numbers) is within the first 15 characters of the
  string, because only these are displayed in thread listings. Plugin authors may
  want to do the same.
- Added the channel name to log messages that reference a channel (suggested by
  Dietmar Spingler).
- Modified the CAM API so that it is possible to implement CAMs that can be freely
  assigned to any devices (thanks to Jasmin Jessich).
- Plugins can now implement the function SetMenuSortMode() in their skin objects
  derived from cSkinDisplayMenu, to get informed about the currently used sort
  mode, if applicable (suggested by Martin Schirrmacher).
- Added cOsdProvider::OsdSizeChanged(), which plugins that implement an output device
  can call to signal a change in the OSD that requires a redraw of the currently
  displayed object (thanks to Thomas Reufer).
- Added a comment to cRecorder::Activate() about the need to call Detach() in the
  destructor (suggested by Eike Sauer).
- Now returning from removing deleted recordings after at most 10 seconds, or if the
  user presses a remote control key, to keep the system from getting unresponsive
  when removing a huge number of files (reported by Dieter Ferdinand).
- Fixed generating the index file of an existing recording in case at the of a TS file
  there is less data in the buffer than needed by the frame detector. In such a case
  it was possible that frames were missed, and there was most likely a distortion
  when replaying that part of a recording. This is mostly a problem for recordings that
  consist of more than one *.ts file. Single file recordings could only lose some
  frames at their very end, which probably doesn't matter. At any rate, if you have
  generated an index file with VDR version 2.0.6, 2.1.5 or 2.1.6, you may want to
  do so again with this version to make sure the index is OK.
- Added the new command line option --updindex, which can be used to update an
  incomplete index of a recording (based on a patch from Helmut Auer).
[close]

Have fun!

Klaus

_______________________________________________
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 19 Januar, 2015, 17:20
Nach langer zeit hat Klaus wiedermal was neues veröffentlicht. Aber dafür gibt es diesmal wieder jeder menge Neuerungen und Bugfixes.

Endlich kann man vdr nach einem herkömmlichen (debian, ubuntu, arch, usw.) unterstützen Schema via Conffiles in /etc konfigurieren. VDR liest nun command line Optionen von *.conf files im Ordner /etc/vdr/conf.d.

Beispiel:
https://github.com/VDR4Arch/vdr4arch/blob/master/vdr/10-vdr.conf

Für ein Plugin:
https://github.com/VDR4Arch/vdr4arch/blob/master/plugins/vdr-softhddevice/50-softhddevice.conf

weiters sollten jetzt auch CAMS von einem Device zu seinem anderen  (PCI Sat Karte und USB Empfänger) im Betrieb verlegt werden können.

und noch 2 weitere Bugfixes von denen ich mit meiner ORF Karte betroffen war:
- Fixed detaching receivers from devices in case a CAM needs to receive the TS
- Fixed resetting the receiver for EMM pids for CAMs that need to receive the TS

also ran ans bauen  ;)
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 01 Februar, 2015, 18:31
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR developer version 2.1.8 is now available       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.8.tar.bz2

A 'diff' against the previous version is available at

      ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.7-2.1.8.diff

MD5 checksums:

1d2751e87def9b18b448513f24e635e9  vdr-2.1.8.tar.bz2
0487e037278f6f6684a7933674910f05  vdr-2.1.7-2.1.8.diff

WARNING:
========

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 changes since version 2.1.7:

Changelog vdr 2.1.8
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed "warning: invalid suffix on literal" with GCC 4.8 and C++11 (thanks to Joerg
  Bornkessel).
- Fixed the link to "svdrpsend (1)" in the vdr.1 man page (thanks to Chris Mayo).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Added functionality based on the "jumpplay" patch from Torsten Kunkel and Thomas
  Günther:
  + The new option "Setup/Replay/Pause replay when jumping to a mark" can be used to
    turn off pausing replay when jumping to an editing mark with the '9' key.
  + The new option "Setup/Replay/Skip edited parts" can be used to automatically skip
    the edited parts of a recording during replay, without the need to actually cut
    the recording.
  + The new option "Setup/Replay/Pause replay at last mark" can be used to make replay
    go into Pause mode when it has reached the last "end" mark.
  + The '8' key for testing an edited sequence now also jumps to the next *end*
    mark if "Setup/Replay/Skip edited parts" is active. This allows for testing edits
    in recordings that have actually been cut, as well as recordings that have not
    been cut, in case "Skip edited parts" is enabled.
- Added support for "Satellite Channel Routing" (SCR) according to EN50607, also
  known as "JESS" (thanks to Manfred Völkel and Frank Neumann).
- The keys '1' and '3' can now be used in replay mode to position an editing mark
  in "binary" mode (based on a patch from Rolf Ahrenberg, with modifications by Helmut
  Auer). See MANUAL, section "Editing a Recording".
- The Yellow button in the "Setup/CAM" menu can now be used to put the selected
  CAM into a mode where it remains assigned to a device that is tuned to the current
  channel until the smart card it contains is activated and the CAM thus starts to
  descramble (see MANUAL, section "Setup/CAM" for details).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Added ARGSDIR to the ONEDIR section of Make.config.template (suggested by Derek
  Kelly).
- Made cRecording::GetResume() public (suggested by Stefan Braun).
- Fixed setting the read index in cDvbPlayer::Goto() in case Still is false.
- The function cDvbPlayer::Goto() now automatically calls Play() if Still is false.
- Added support for LCN (Logical Channel Numbers), which plugins may use to sort
  channels (thanks to Rolf Ahrenberg).
[close]

Have fun!

Klaus

_______________________________________________
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 08 Februar, 2015, 21:38
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR developer version 2.1.9 is now available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.9.tar.bz2

A 'diff' against the previous version is available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.8-2.1.9.diff

MD5 checksums:

59a63596f3fcfe7c81df8e92b4486f78 vdr-2.1.9.tar.bz2
e70d236f79bee5110f763a8109dba3d9 vdr-2.1.8-2.1.9.diff

Approaching version 2.2.0:
==========================

If there are no more serious bug reports, the final version 2.2.0 of VDR shall be released on February 19, 2015, which marks the 15th anniversary of VDR.
So please test this developer version intensely and report any problems you might encounter as soon as possible.


The changes since version 2.1.8:

Changelog vdr 2.1.9
- Fixed a memory leak in case of broken Extended Event Descriptors (thanks to Lars
Hanisch).
- Fixed the German translation of "Binary skip timeout (s)" (thanks to Matthias
Senzel).
- Fixed the German translation of "VDR will shut down later - press Power to force".
- Fixed the Finnish translation of "Binary skip timeout (s)" (thanks to Rolf
Ahrenberg).
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- Added SDNOTIFY to Make.config.template (suggested by Christian Richter). Also
added NO_KBD and BIDI.
- Added code from the "jumpplay" patch that makes the recording still be considered
unviewed when stopping replay within RESUMEBACKUP seconds of the first mark.
- The new option "Setup/Replay/Alternate behavior for adaptive skipping" can be used
to make adaptive skipping only halve the skip distance when the direction changes.
That way you can reach the desired point in a recording even if you make one too
many skips in a certain direction (see MANUAL for details).
- Fixed cCamSlot::Assign(), so that it actually ignores the value of Query if Device
is NULL (as described in the header file).
- Added a missing VDRDIR="$(CWD)" to the clean-plugins target of the Makefile, to
avoid error messages regarding the missing vdr.pc file.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the Hungarian OSD texts (thanks to István Füley).
- Fixed switching channels in the Schedule menu after going through various Now and
Schedule menus for different channels (reported by Matthias Senzel).
- Fixed setting the Blue button in the Schedule/Now/Next menus, so that it only shows
"Switch" if the selected event is on a different channel.
- Added "NORDIG" to the list of "DVB/Standard compliance" options and using it to
restrict the LCN (Logical Channel Numbers) parsing to networks that actually use
this non-standard feature (thanks to Rolf Ahrenberg).
- In the "Edit recording" menu the '0' key can now be used on the "Name:" field to
remove the name of the recording and replace it with the last element of the
recording's folder path name (suggested by Christoph Haubrich). See MANUAL, section
"Managing folders" for details.
- Updated the Italian OSD texts (thanks to Nino Gerbino).
- The "Select folder" menu now adds the folder names of all existing recordings to
any names that have been predefined in "folders.conf" (suggested by Sören Moch).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed the German translations of "latitude" and "longitude" (they were swapped).
- Updated the Hungarian OSD texts (thanks to Mario Fenneis).
- Modified runvdr.template to improve compatibility with the "bash" and "dash" shells.
- Changed the German translations if the texts related to "binary skipping" (based
on a suggestion by Thomas Reufer).
- Updated sources.conf to reflect the fact that Astra 4A and SES5 are actually in
two separate positions (thanks to Arthur Konovalov).
- Fixed cMarks::GetNextBegin() and cMarks::GetNextEnd() (thanks to Stefan Herdler).
The behavior of these two functions is now exacly as described in the header file.
Editing marks that are placed at exactly the same offset in a recording are now
preserved in the cutting process.
- Changed the naming of "binary skip mode" to "adaptive skip mode" (suggested by
Rolf Ahrenberg and Derek Kelly).
- cDvbPlayer and cReplayControl now use the same list of editing marks. This avoids
inconsistent behavior with the "Skip edited parts" or "Pause replay at last mark"
functions when the editing marks are manipulated during replay.
- Fixed setting an empty recording name or folder to a blank in the "Edit recording"
menu (reported by Christoph Haubrich).
- Added a confirmation before renaming a recording to its folder name (suggested
by Christoph Haubrich).
- Modified EntriesOnSameFileSystem(), so that it returns 'true' if either of the given
files doesn't exist (to avoid any actions that might be triggered if files are on
different file system), and changed handling the 'error' variable in cDirCopier, so
that it is initialized to 'true' and will only be set to 'false' if the entire
copy process has been successful (problem reported by Christoph Haubrich).
- Added the UPDATE-2.2.0 file.
[close]

Have fun!

Klaus

_______________________________________________
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 19 Februar, 2015, 18:29
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR version 2.2.0 is now available at

      ftp://ftp.tvdr.de/vdr/vdr-2.2.0.tar.bz2

A 'diff' against the previous developer version is available at

      ftp://ftp.tvdr.de/vdr/vdr-2.1.10-2.2.0.diff

MD5 checksums:

8853f64c0fc3d41ffd3b4bfc6f0a14b7  vdr-2.2.0.tar.bz2
2d75806f90a4f1c8b3e30d7568891dc6  vdr-2.1.10-2.2.0.diff

A summary of all the major changes since the last stable version 2.0.0

Changelog vdr 2.2.0
This is a summary of the changes in VDR 2.2.0 since the last stable version 2.0.0. It only contains things that are of actual importance to the user and doesn't mention the many fixes and improvements that have been made "behind the scenes". See the file HISTORY that comes with the VDR source for a detailed list of all changes.

Support for steerable satellite dishes
Added basic support for positioners to control steerable satellite dishes.
Supports GotoN (aka "DiSEqC 1.2") and GotoX (aka "USALS").
The new DiSEqC command code 'P' can be used to instruct a positioner to move the dish to the required satellite position. When a 'P' code is processed, further execution of the remaining DiSEqC sequence (if any) is postponed until the positioner has reached the new satellite position.
The new special source value of "S360E" can be used in diseqc.conf to indicate that an entry using a positioner can move the dish to any requested position within its range. Think of it as "full circle".
The devices a particular cDiseqc or cScr applies to are now stored directly in each cDiseqc or cScr, respectively.
A plugin can implement a custom positioner control (see PLUGINS.html, section "Positioners").
The new function cSkinDisplayChannel::SetPositioner() can be implemented by skins to show the user a progress display when the dish is being moved. The default implementation calls SetMessage() with a string indicating the new position the dish is being moved to. The LCARS skin shows a progress bar indicating the movement of the dish.
The new parameters "Site latitude", "Site longitude", "Positioner speed", and "Positioner swing" in the "Setup/LNB" menu can be used to configure the necessary values for a steerable dish.
The cDvbTuner now has a new status tsPositioning, in which it waits until a steerable dish has reached its target position. Parsing SI data is paused until the target position has been reached.
Changed the sign of the satellite position value in cSource to reflect the standard of western values being negative. The new member function cSource::Position() can be used to retrieve the orbital position of a satellite.

Conditional Access
The new function cCamSlot::Decrypt() can be used by derived classes to implement a CAM slot that can be freely assigned to any device, without being directly inserted into the full TS data stream in hardware. A derived class that implements Decrypt() will also need to set the new parameter WantsTsData in the call to the cCamSlot base class constructor to true, in order to receive all the TS packets that contain data necessary for decrypting.
Many member functions of cCamSlot have been made virtual to allow for easier implementation of derived classes.
cDvbDevice::GetTSPacket() now calls CamSlot()->Decrypt() in order to allow CAM slots that can be freely assigned to any device access to the TS data stream.
Improved locking for CAM slots and made the pure functions of cCiAdapter have default implementations, to fix a possible crash with CI adapters and CAM slots that are implemented in a plugin.
Added logging the supported system ids of a CAM.
Now waiting explicitly until all CAM slots are ready before switching to the initial channel when VDR is started. This is necessary in case CI adapters are used that are not physically connected to a dedicated device. The respective checks in cDvbDevice have been removed to avoid redundancy.
Now unassigning CAMs from their devices when they are no longer used.
Now making sure the primary device goes into transfer mode for live viewing if the CAM wants to receive the TS data.
Added a log message in case a receiver is detached from its device because the assigned CAM can't decrypt the channel.
The pid of the PMT in which the CA descriptors of a given channel are broadcast is now stored together with the CA descriptors and can be retrieved by calling GetPmtPid() (this information is only required to receive encrypted channels with the OctopusNet receiver via the 'satip' plugin).
Modified the CAM API so that it is possible to implement CAMs that can be freely assigned to any devices.
The Yellow button in the "Setup/CAM" menu can now be used to put the selected CAM into a mode where it remains assigned to a device that is tuned to the current channel until the smart card it contains is activated and the CAM thus starts to descramble (see MANUAL, section "Setup/CAM" for details).
Fixed cCamSlot::Assign(), so that it actually ignores the value of Query if Device is NULL (as described in the header file).
Satellite Channel Routing
Added support for "Satellite Channel Routing" (SCR) according to EN50607, also known as "JESS".
Subtitles
Improved displaying DVB subtitles.
The debug output now goes into an HTML file named dbg-log.htm and shows the actual bitmaps (dbg-nnn.jpg) used to display the subtitles. That way it is much easier to see what's actually going on.
The new function cOsd::DrawScaledBitmap() is now used for drawing subtitles. This function can be reimplemented by high level OSDs which may be able to do the scaling in hardware or otherwise more efficiently.
Fixed (well, actually worked around) a problem with subtitles not being displayed because the broadcaster doesn't set the data's version numbers as required by the DVB standard.
Added support for PGS subtitles.

Plugins
A plugin can implement a custom positioner control (see PLUGINS.html, section "Positioners").
The new menu category mcRecordingEdit is now used to mark menus that edit recording properties.
The Recordings menu can now be called with a cRecordingFilter, which allows the caller to have it display only a certain subset of the recordings.
cDevice::TrickSpeed() now has an additional parameter named Forward, which indicates the direction in which replay is being done. This information may be necessary for some output devices in order to properly implement trick modes. Authors of plugins that implement output devices will need to add this parameter to their derived cDevice class, regardless of whether they will make use of it or not.
Avoiding unnecessary pkg-config warnings in plugin Makefiles. Plugin authors may want to apply the following change to their Makefile:
            -PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
            +PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:../../.." pkg-config --variable=$(1) vdr))
           
The new function cStatus::ChannelChange() can be implemented by plugins to be informed about changes to the parameters of a channel that may require a retune. This may, for instance, be useful for plugins that implement live streaming, so that they can react on changes to a channel's PIDs or CA descriptors.
The new function cOsd::DrawScaledBitmap() is now used for drawing subtitles. This function can be reimplemented by high level OSDs which may be able to do the scaling in hardware or otherwise more efficiently.
Use of the function cOsd::GetBitmap() outside of derived classes is now deprecated, and it may be made 'protected' in a future version, since it doesn't work with TrueColor OSDs. Plugin authors may want to modify their code so that it works without this function.
Modified the descriptions of several threads, so that the important information (like device or frontend numbers) is within the first 15 characters of the string, because only these are displayed in thread listings. Plugin authors may want to do the same.
Plugins can now implement the function SetMenuSortMode() in their skin objects derived from cSkinDisplayMenu, to get informed about the currently used sort mode, if applicable.
Added cOsdProvider::OsdSizeChanged(), which plugins that implement an output device can call to signal a change in the OSD that requires a redraw of the currently displayed object.
cOsd::RenderPixmaps() now returns a pointer to cPixmap instead of cPixmapMemory This is necessary to allow plugins with derived cPixmap implementations to use this function. Plugins that use this function with cPixmapMemory now need to add a dynamic cast to the call, as in cPixmapMemory *pm = dynamic_cast(RenderPixmaps())); They also need to call DestroyPixmap(pm) instead of "delete pm" to properly release the resulting pixmap after use.

Skins
The new function cSkinDisplayChannel::SetPositioner() can be implemented by skins to show the user a progress display when the dish is being moved. The default implementation calls SetMessage() with a string indicating the new position the dish is being moved to. The LCARS skin shows a progress bar indicating the movement of the dish.
The LCARS skin now shows the source value of the current channel in its channel display.
Plugins can now implement the function SetMenuSortMode() in their skin objects derived from cSkinDisplayMenu, to get informed about the currently used sort mode, if applicable.
Remote control
Revised the section on "Learning the remote control keys" in the INSTALL file to avoid the impression that there actually is a default remote.conf file, and to not use any alphabetic keys for special functions, so that they remain available for textual input.
The LIRC remote control now connects to the socket even if it doesn't yet exist when VDR is started.
Added handling UTF-8 'umlaut' characters to cKbdRemote.

Devices
The cDvbTuner now has a new status tsPositioning, in which it waits until a steerable dish has reached its target position. Parsing SI data is paused until the target position has been reached.
cDevice::IsPrimaryDevice() now also checks whether the primary device actually has a decoder and returns false otherwise. This should improve device allocation on systems that are only used as a receiver and don't actually display anything.
All bonded devices (except for the master) now turn off their LNB power completely to avoid problems when receiving vertically polarized transponders.
cDevice::TrickSpeed() now has an additional parameter named Forward, which indicates the direction in which replay is being done. This information may be necessary for some output devices in order to properly implement trick modes. Authors of plugins that implement output devices will need to add this parameter to their derived cDevice class, regardless of whether they will make use of it or not.
Now checking whether the primary device actually has a decoder before retuning the current channel after a change in its parameters. This fixes broken recordings on the primary device on "headless" systems.
Refactored setup parameter handling for output devices:
The function cDevice::GetVideoSystem() has been deprecated and will be removed in a future version. In order to check whether a particular plugin needs to be modified if this function is removed, you can comment out the line #define DEPRECATED_VIDEOSYSTEM in device.h.
Handling the "video (display) format" (things like 16:9, 4:3, pan&scan, letterbox etc) shall now be done by the individual output devices, because the types and numbers of parameters are too device specific. The Setup/DVB parameters "Video format" and "Video display format" are still there for now and can be used by SD devices. HD devices, however, shall not use these parameters (any more), but rather implement their own setup menu with the necessary parameters for controlling output.
The dvbhdffdevice plugin has been modified accordingly.
Made it clear that cDevice::SetDigitalAudioDevice() merely tells the output device that the current audio track is Dolby Digital. This function was only used by the original "full featured" DVB cards - do not use it for new developments! If an output device has several ways of replaying audio (like HDMI or analog jack) it shall implement the proper options in its plugin's SetupMenu() function.
Added support for "Pilot", "T2-System-Id" and "SISO/MISO" parameters.
Added subsystem id support for DVB devices connected via USB.

DiSEqC
The new DiSEqC command code 'P' can be used to instruct a positioner to move the dish to the required satellite position. When a 'P' code is processed, further execution of the remaining DiSEqC sequence (if any) is postponed until the positioner has reached the new satellite position.

EPG
Added Begin/EndSegmentTransfer() to the EPG handler interface.

OSD
In the "Select folder" menu pressing Ok now selects the folder, even if this is a folder that contains sub folders (marked with "..."). To open such a folder you can press the Red key.
The Recordings menu now remembers the last recording the cursor was positioned on, independent of the last replayed recording. When a replay ends, however, the cursor will initially be positioned to the last replayed recording again when the menu is opened.
Added cOsdProvider::OsdSizeChanged(), which plugins that implement an output device can call to signal a change in the OSD that requires a redraw of the currently displayed object.
The "Select folder" menu now adds the folder names of all existing recordings to any names that have been predefined in "folders.conf".
Fixed an inconsistent behavior between opening the Recordings menu manually via the main menu and by pressing the Recordings key. In the latter case it automatically opened all sub folders to position the cursor to the last replayed recording, which is unexpected at this point. You can still navigate to the last replayed recording (if any) by pressing Ok repeatedly in the Recordings menu.
cOsd::RenderPixmaps() now returns a pointer to cPixmap instead of cPixmapMemory This is necessary to allow plugins with derived cPixmap implementations to use this function. Plugins that use this function with cPixmapMemory now need to add a dynamic cast to the call, as in cPixmapMemory *pm = dynamic_cast(RenderPixmaps())); They also need to call DestroyPixmap(pm) instead of "delete pm" to properly release the resulting pixmap after use.

Channels
Channels that are no longer contained in the current SDT of a transponder are now marked with the keyword OBSOLETE in their name and provider fields. That way you can identify obsolete channels when you switch to them, and you can get the complete overview of all obsolete channels by sorting the Channels list by provider (by pressing the 0 key twice). Automatic deletion of obsolete channels may follow later.
Added support for LCN (Logical Channel Numbers), which plugins may use to sort channels.
Added "NORDIG" to the list of "DVB/Standard compliance" options and using it to restrict the LCN (Logical Channel Numbers) parsing to networks that actually use this non-standard feature.
Recordings
The code for distributing recordings over several video directories has been removed. VDR now by default assumes that the video directory is one big disk. Distributing the video directory over several disks was a useful feature in times when disks were still relatively small, but it also caused serious problems in case one of the disks failed. Nowadays hard disks come in sizes measured in terabytes, and tools like "mhddfs" can be used to combine several disks to form one large volume. A recommended method for a relatively safe disk setup in a VDR system is to use two 1TB (or larger) disks and use them as a RAID-1 (mirrored). That way, if one disk fails, you can replace it without data loss.
If you absolutely need to use several separate disks to store recordings, you can write a plugin that uses the new cVideoDirectory API to implement the necessary functionality (see PLUGINS.html, section "The video directory"). You can copy the respective code from previous versions of videodir.c. IMPORTANT NOTE: If you write a plugin that implements a distributed video directory, =============== be sure to make cVideoDirectory::Rename() follow symbolic links! This functionality was never implemented in VDR and it therefore used a workaround in cutter.c. See the section marked with // XXX this can be removed once RenameVideoFile() follows symlinks in previous versions of cutter.c.
CloseVideoFile() is obsolete and has been removed.
The functions OpenVideoFile(), RenameVideoFile(), RemoveVideoFile(), VideoFileSpaceAvailable(), VideoDiskSpace(), RemoveEmptyVideoDirectories(), IsOnVideoDirectoryFileSystem() and PrefixVideoFileName() are now static members of cVideoDirectory and need to be called with the proper prefix.
The name of the video directory is now available through cVideoDirectory::Name().
Added renaming and moving recordings and folders, editing a recording's priority and lifetime, and queueing cutting jobs.
The "Recording info" menu now has a new Blue button named "Edit", which opens a dialog in which several properties of the selected recording can be changed. It can be renamed or moved into another folder and its priority and lifetime can be modified. The new blue "Edit" button in the "Recordings" menu opens a dialog in which a folder can be renamed or moved. See MANUAL, section "Managing folders".
In the "Edit recording" menu the Yellow button ("Delete marks") allows you to delete all editing marks of the selected recording.
cCutter is no longer a static class. Cutting requests should now be invoked by calling RecordingsHandler.Add(ruCut, FileName). See the new cRecordingsHandler class in recording.h.
Cutting jobs are now placed in a queue (together with any move or copy jobs) and are processed one by one.
The new SVDRP command MOVR can be used to rename a recording
Note that in several places in the source code a "copy" operation is mentioned, however there is no user interface for this, yet.
The function cRecordings::MBperMinute() now only takes into account recordings with less than 5 seconds per megabyte, in an attempt to filter out radio recordings The result of this function was way off any realistic value in case there are many radio recordings in the video directory.
When cutting a recording it is now checked whether there is already an edited version of this recording (with the same name, but starting with '%'), and the user is prompted for confirmation to overwrite it.
Fixed numbering frames. Previously they were numbered starting from 1, while it is apparently standard to number them from 0. Any existing recordings with editing marks (which will now be off by one) can still be cut with all VDR versions from 1.7.32, because these will automatically adjust editing marks to I-frames. Users of stable releases shouldn't notice any problems.
Now returning from removing deleted recordings after at most 10 seconds, or if the user presses a remote control key, to keep the system from getting unresponsive when removing a huge number of files.
Fixed generating the index file of an existing recording in case at the end of a TS file there is less data in the buffer than needed by the frame detector. In such a case it was possible that frames were missed, and there was most likely a distortion when replaying that part of a recording. This is mostly a problem for recordings that consist of more than one *.ts file. Single file recordings could only lose some frames at their very end, which probably doesn't matter. At any rate, if you have generated an index file with VDR version 2.0.6, 2.1.5 or 2.1.6, you may want to do so again with this version to make sure the index is OK.
Added the new command line option --updindex, which can be used to update an incomplete index of a recording.
In the "Edit recording" menu the '0' key can now be used on the "Name:" field to remove the name of the recording and replace it with the last element of the recording's folder path name. See MANUAL, section "Managing folders" for details.

Replay
The new option "Setup/Replay/Pause replay when jumping to a mark" can be used to turn off pausing replay when jumping to an editing mark with the '9' key.
The new option "Setup/Replay/Skip edited parts" can be used to automatically skip the edited parts of a recording during replay, without the need to actually cut the recording.
The new option "Setup/Replay/Pause replay at last mark" can be used to make replay go into Pause mode when it has reached the last "end" mark.
The '8' key for testing an edited sequence now also jumps to the next *end* mark if "Setup/Replay/Skip edited parts" is active. This allows for testing edits in recordings that have actually been cut, as well as recordings that have not been cut, in case "Skip edited parts" is enabled.
A recording is now still considered unviewed when stopping replay within 10 seconds of the first mark.
The keys '1' and '3' can now be used in replay mode to position an editing mark in "adaptive" mode. See MANUAL, section "Editing a Recording".
The new option "Setup/Replay/Alternate behavior for adaptive skipping" can be used to make adaptive skipping only halve the skip distance when the direction changes. That way you can reach the desired point in a recording even if you make one too many skips in a certain direction (see MANUAL for details).
The new options "Setup/Replay/Skip distance with Green/Yellow keys" and "Setup/Replay/Skip distance with Green/Yellow keys in repeat" can be used to configure the number of seconds to skip when pressing these keys once or pressing and holding them.
The new option "Setup/Replay/Use Prev/Next keys for adaptive skipping" can be used to change the behavior of these keys during replay. They normally jump between editing marks, but with this option set to 'yes' they will do adaptive skipping.

SVDRP
The new SVDRP command MOVR can be used to rename a recording

Audio
Added the new parameters "Setup/Miscellaneous/Volume steps" and ".../Volume linearize". See the MANUAL for details.
Added handling for DTS audio tracks to cPatPmtParser::ParsePmt().

Misc
Reverted the change from version 1.5.7 that made all logging go to LOG_ERR.
The Yellow button in the main menu no longer acts as "Pause" if "Pause key handling" is set to "do not pause live video".
Added code for parsing LCN and AVC descriptors to libsi.
Changes in the teletext PID no longer cause retuning (and thus interrupting a recording).
Made it clear that the Data parameter in cDevice::StillPicture() may point to a series of packets, not just a single one.
Changed '%a' to the POSIX compliant '%m' in all scanf() calls.
cTSBuffer now provides the number of available bytes in its Get() function.
The script given to VDR with the '-r' option is now also called after the recording process has actually started.
Updated 'sources.conf'.
Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 100 and introduced counting the number of actual video TS packets in cTsPayload in order to be able to record channels that sometimes need many TS packets for detecting frame borders.
Improved PAT/PMT scanning to speed up initial tuning to encrypted channels on transponders with many PAT entries.
The SDT is now only parsed *after* the NIT has been read, and it explicitly uses the source value derived from the NIT. This should prevent new channels from being created with the wrong source.
Added support for systemd. To activate this you need to add "SDNOTIFY=1" to the 'make' call.
No longer logging an error message in DirSizeMB() if the given directory doesn't exist. This avoids lots of log entries in case several VDRs use the same video directory and one of them has already physically removed a recording directory, while the others still have it in their list of deleted recordings.
VDR now reads command line options from *.conf files in /etc/vdr/conf.d. See vdr.1 and vdr.5 for details.
Added the functions IndexOf(), InsertUnique(), AppendUnique() and RemoveElement() to the cVector class.
Added functions to set and retrieve the priority of a cReceiver.
Changed the German weekday names from "MonDieMitDonFreSamSon" to "Mo.Di.Mi.Do.Fr.Sa.So.".
Added the channel name to log messages that reference a channel.
Added ARGSDIR to the ONEDIR section of Make.config.template.
Added SDNOTIFY, NO_KBD, BIDI and REMOTE to Make.config.template.
Modified runvdr.template to improve compatibility with the "bash" and "dash" shells.
Updated sources.conf to reflect the fact that Astra 4A and SES5 are actually in two separate positions.
Fixed cMarks::GetNextBegin() and cMarks::GetNextEnd(). The behavior of these two functions is now exacly as described in the header file. Editing marks that are placed at exactly the same offset in a recording are now preserved in the cutting process.

The new command line option --chartab can be used to set the default character table to use for strings in the DVB data stream that don't begin with a proper character table indicator. The old mechanism of using the environment variable VDR_CHARSET_OVERRIDE still works, but is now deprecated and may be removed in a future version. The value given in the --chartab option takes precedence over that in VDR_CHARSET_OVERRIDE.
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Thanks to the many people who have contributed in the making, testing and
debugging of this new version of VDR, and also to all users who have been
enjoying VDR over the past 15 years!

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 27 März, 2017, 22:06
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR version 2.3.1 is now available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.1.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.2.0-2.3.1.diff

MD5 checksums:

391c2ed60e2f7d24563fe3ed5854bc4f  vdr-2.3.1.tar.bz2
983fd4bad7d19cd98301d54173107129  vdr-2.2.0-2.3.1.diff

A summary of all the major changes since the last stable version 2.2.0

Changelog vdr 2.3.1
This is a summary of the changes in VDR 2.3.1 since the last stable version 2.2.0. It only contains things that are of actual importance to the user and doesn't mention the many fixes and improvements that have been made "behind the scenes". See the file HISTORY that comes with the VDR source for a detailed list of all changes.

- The new function cOsd::MaxPixmapSize() can be called to determine the maximum size
   a cPixmap may have on the current OSD. The 'osddemo' example has been modified
   accordingly. Plugin authors may want to use this function in case they use pixmaps
   that are larger than the full OSD size. The default implementation sets this limit
   to 2048x2048 pixel.
- The Setup/CAM menu now displays which device an individual CAM is currently
   assigned to (suggested by Frank Neumann).
- Added detection of 24fps (thanks to Thomas Reufer).
- Added a note about the VDR User Counter and VDR's facebook page to the README file.
- The dvbhddevice plugin is no longer part of the VDR source archive.
   You can get the latest version of this plugin from the author's repository at
   https://bitbucket.org/powARman/dvbhddevice.
- The dvbsddevice and rcu plugins are no longer part of the VDR source archive.
   You can get the latest versions of these plugins from ftp://ftp.tvdr.de/vdr/Plugins.
- Added a section about Output Devices to the INSTALL file.
- Fixed setting the source value of newly created channels, in case the NIT is
   received from a different, but very close satellite position (reported by Daniel
   Ribeiro). The code for handling different NITs has been removed from nit.c, because
   according to the DVB standard table id 0x40 carries only the NIT of the actual
   network.
- Added some comment to cPixmap about the relation between OSD, ViewPort and DrawPort
   (suggested by Thomas Reufer).
- Improved syncing on sections when parsing the NIT and SDT.
- Fixed scaling subtitles (their areas could sometimes extend outside the actual OSD).
- Reduced the priority of the "video directory scanner" thread (suggested by Thomas
   Reufer) and checking cIoThrottle::Engaged() when it is running.
- The script that gets called for recordings is now also called right before a
   recording is edited, with the first parameter being "editing" (suggested by
   Dieter Ferdinand).
- The new setup option "OSD/Default sort mode for recordings" can be used to define
   how recordings shall be sorted by default (either by time or by name, with "by time"
   being the default). If a particular sort mode has been selected for a folder by
   pressing '0', the default no longer applies to that folder. Repeating timers no
   longer write a ".sort" file into a recordings folder to have the recordings sorted
   by time.
- The command line option -D now accepts the value '-' (as in -D-), which prevents
   VDR from using any DVB devices (suggested by Dietmar Spingler).
- The -V and -h options now list the plugins in alphabetical order (suggested by
   Dietmar Spingler).
- Fixed a compiler warning in font.c.
- Commented out the line
   #define DEPRECATED_VIDEOSYSTEM
   in device.h. If a plugin doesn't compile with this version of VDR, you can uncomment
   this line as a quick workaround. In the long run the plugin will need to be adapted.
- The function cOsd::GetBitmap() is now 'protected'. If a plugin doesn't compile with
   this version of VDR, you can uncomment the line
   //#define DEPRECATED_GETBITMAP
   in osd.h as a quick workaround. In the long run the plugin will need to be adapted.
- The -u option now also accepts a numerical user id (suggested by Derek Kelly).
- The SVDRP port now accepts multiple concurrent connections. You can now keep an
   SVDRP connection open as long as you wish, without preventing others from
   connecting. Note, though, that SVDRP connections still get closed automatically
   if there has been no activity for 300 seconds (configurable via
   "Setup/Miscellaneous/SVDRP timeout (s)").
- The SVDRP log messages have been unified and now always contain the IP and port
   number of the remote host.
- SVDRP connections are now handled in a separate "SVDRP server handler" thread,
   which makes them more responsive. Note that there is only one thread that handles
   all concurrent SVDRP connections. That way each SVDRP command is guaranteed to be
   processed separately, without interfering with any other SVDRP commands that might
   be issued at the same time. Plugins that implement SVDRP commands may need to take
   care of proper locking if the commands access global data.
- VDR now sends out a broadcast to port 6419/udp, which was assigned to 'svdrp-disc'
   by the IANA. VDRs listening on that port will automatically initiate an SVDRP
   connection to the broadcasting VDR, and in turn send out a broadcast to make
   other VDRs connect to them. That way all VDRs within the local network will
   have permanent "peer-to-peer" SVDRP connections between each other. The
   configuration in the svdrphosts.conf file is taken into account when considering
   whether or not to respond to an SVDRP discover broadcast.
- The new SVDRP command PING is used by automatically established peer-to-peer
   connections to keep them alive.
- The new function GetSVDRPServerNames() can be used to get a list of all VDRs
   this VDR is connected to via SVDRP.
- The new function ExecSVDRPCommand() can be used to execute an SVDRP command on
   one of the servers this VDR is connected to, and retrieve the result.
   The helper functions SVDRPCode() and SVDRPValue() can be used to easily access
   the codes and values returned by ExecSVDRPCommand().
- The cTimer class now has a new member named 'remote', which holds the name of the
   remote server this timer will record on. If this is NULL, it is a local timer.
- Timers from other VDRs that are connected to this VDR via SVDRP are now
   automatically fetched and stored in the global Timers list. In order for this
   to work, all of the channels used by timers on the remote VDR must also be
   defined on the local VDR (however, not necessarily in the same sequence).
   Automatic channel syncing will be implemented later.
- The main menu of the LCARS skin now displays a small rectangle on the left side
   of a timer if this is a remote timer. The color of that rectangle changes if
   the timer is currently recording on the remote VDR.
- Accessing the global Timers list now has to be protected by proper locking,
   because SVDRP commands are now executed in a separate thread.
   The introduction of this locking mechanism required the following changes:
   + The new classes cStateLock and cStateKey are used to implement locking
     with quick detection of state changes.
   + cConfig::cConfig() now has a parameter that indicates whether this list
     requires locking.
   + The global lists of Timers, Channels, Schedules and Recordings are no longer
     static variables. They are now pointers that need to be retrieved through
     a call to cTimers::GetTimersRead/Write(), cChannels::GetChannelsRead/Write(),
     cSchedules::GetSchedulesRead/Write() and cRecordings::GetRecordingsRead/Write(),
     respectively.
   + References from/to link channels are now removed in cChannels::Del() rather
     than cChannel::~cChannel(), to make sure the caller holds a proper lock.
   + cChannel::HasTimer() has been removed. This information is now retrieved
     via cSchedule::HasTimer().
   + Several member functions of cChannel, cTimer, cMarks and cRecording have
     been made 'const', and some of them are now available as both 'const' and
     'non-const' versions.
   + The cChannel::Set...() functions are now 'bool' and return true if they have
     actually changed any of the channels's members.
   + cChannels::SetModified() has been renamed to cChannels::SetModifiedByUser().
   + cChannels::Modified() has been renamed to cChannels::ModifiedByUser(), and
     now has a 'State' parameter that allows the caller to see whether a channel
     has been modified since the last call to this function with the same State
     variable.
   + The macros CHANNELSMOD_NONE/_AUTO/_USER have been removed.
   + cMarks now requires locking via cStateKey.
   + cSortedTimers now requires a pointer to the list of timers.
   + cEvent::HasTimer() no longer scans the list of timers to check whether an event
     is referenced by a timer, but rather keeps score of how many timers reference
     it. This was necessary in order to avoid having to lock the list of timers from
     within a cEvent.
   + The new class cListGarbageCollector is used to temporary store any objects deleted
     from cLists that require locking. This allows pointers to such objects to be
     dereferenced even if the objects are no longer part of the list.
   + cListBase::Contains() can be used to check whether a particular object is still
     contained in that list.
   + Outdated events are no longer "phased out", but rather deleted right away and thus
     taken care of by the new "garbage collector" of the list.
   + Deleted cRecording objects are no longer kept in a list of "vanished" recordings,
     but are rather taken care of by the new "garbage collector" of the list.
   + cSchedules::ClearAll() has been removed. The functionality is now implemented
     directly in cSVDRPServer::CmdCLRE().
   + tEventID has been changed to u_int16_t in order to make room for the new member
     numTimers in cEvent.
   + cSchedule now has a member Modified(), which can be used with a State variable
     to quickly determine whether this schedule has been modified since the last call
     to this function with the same State variable.
   + cSchedulesLock has been removed. Locking the list of schedules is now done via
     the cList's new locking mechanism.
   + The 'OnlyRunningStatus' parameters in cEpgHandler::BeginSegmentTransfer() and
     cEpgHandler::EndSegmentTransfer() are now obsolete. They are still present in
     the interface for backward compatibility, but may be removed in a future version.
     Their value is always 'false'.
   + The constant tcMod is no longer used in cStatus::TimerChange(). The definition is
     still there for backward compatibility.
   Plugins that access the global lists of Timers, Channels, Recordings or Schedules
   will need to be adapted as follows:
   + Instead of directly accessing the global variables Timers, Channels or Recordings,
     they need to set up a cStateKey variable and call the proper getter function,
     as in
       cStateKey StateKey;
       if (const cTimers *Timers = cTimers::GetTimersRead(StateKey)) {
          // access the timers
          StateKey.Remove();
          }
     and
       cStateKey StateKey;
       if (cTimers *Timers = cTimers::GetTimersWrite(StateKey)) {
          // access the timers
          StateKey.Remove();
          }
     See timers.h, thread.h and tools.h for details on this new locking mechanism.
   + There are convenience macros for easily accessing these lists without having
     to explicitly set up a cStateKey and calling its Remove() function. These macros
     have the form LOCK_*_READ/WRITE (with '*' being TIMERS, CHANNELS, SCHEDULES or
     RECORDINGS). Simply put such a macro before the point where you need to access
     the respective list, and there will be a pointer named Timers, Channels, Schedules
     or Recordings, respectively, which is valid until the end of the current block.
   + If a plugin needs to access several of the global lists in parallel, locking must
     always be done in the sequence Timers, Channels, Recordings, Schedules. This is
     necessary to make sure that different threads that need to lock several lists at
     the same time don't end up in a deadlock.
   + Some pointer variables may need to be made 'const'. The compiler will tell you
     about these.
- cSectionSyncer has been improved to better handle missed sections.
- Added a missing initialization of 'seen' in cChannel's copy constructor.
- Background modifications of channels, timers and events are now displayed immediately
   in the corresponding menus.
- cEIT now checks the version of the tables before doing any processing, which saves
   a lot of locking and processing.
- If a timer is newly created with the Red button in the Schedule menu, and the timer
   is presented to the user in the "Edit timer" menu because it will start immediately,
   it now *must* be confirmed with "Ok" to set the timer. Otherwise the timer will not
   be created.
- Recordings and deleted recordings are now scanned in a single thread.
- The new SVDRP command POLL is used by automatically established peer-to-peer
   connections to trigger fetching remote timers.
- You can now set DumpSVDRPDataTransfer in svdrp.c to true to have all SVDRP
   communication printed to the console for debugging.
- Added a missing 'const' to cReceiver::Receive(), to protect the given Data from
   being modified.
- The SVDRP commands that deal with timers (DELT, LSTT, MODT, NEWT, NEXT and UPDT)
   as well as any log messages that refer to timers, now use a unique id for each
   timer, which remains valid as long as this instance of VDR is running. This means
   that timers are no longer continuously numbered from 1 to N in LSTT. There may be
   gaps in the sequence, in case timers have been deleted.
- The Timers menu now displays the name of the remote VDR in front of the timer's
   file name, if this is a remote timer.
- The new options "Setup/Miscellaneous/SVDRP peering", ".../SVDRP host name" and
   ".../SVDRP default host" can be used to configure automatic peering between VDRs
   in the same network. Peering is disabled by default and can be enabled by setting
   "SVDRP peering" to "yes".
- The function cTimer::ToText() no longer returns a newline character at the end of
   the string. The newline is now added by the caller as necessary. This was changed
   because cTimer::ToText() is now also needed in a context where the terminating
   newline can't be used. Consequently, cChannel::ToText() and cMark::ToText() have
   been modified accordingly.
- All timer related response strings from SVDRP commands now use the channel ID
   instead of channel numbers.
- The "Edit timer" menu now has a new parameter "Record on", which can be used to
   select the VDR on which this timer shall record. Timers can be freely moved
   between connected VDRs by simply selecting the desired machine in this field.
- The SVDRP command DELT no longer checks whether the timer that shall be deleted
   is currently recording.
- The character 0x0D is now stripped from EPG texts (reported by Janne Pänkälä).
- The EPG scanner no longer moves the dish if there is a positioner.
- The 'newplugin' script now creates the 'po' subdirectory for translations (thanks
   to Thomas Reufer).
- Skins can now implement cSkinDisplayMenu::MenuOrientation() to display horizontal
   menus (thanks to Stefan Braun).
- Fixed a possible stack overflow in cListBase::Sort() (thanks to Oliver Endriss).
- Changed the description of the --chartab option in the INSTALL file to refer to
   "DVB SI table strings" instead of "EPG data".
- The width and height of the OSD are now limited to the actual maximum dimensions
   of the output device, taking into account the top and left offset.
- The new setup option "Recording/Record key handling" can be used to define
   what happens if the Record key on the remote control is pressed during
   live tv (suggested by Dietmar Spingler).
- Empty adaptation field TS packets are now skipped when recording (thanks to
   Christopher Reimer, based on the "AFFcleaner" by Stefan Pöschel).
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Thanks to the many people who have contributed in the making, testing and
debugging of this new version of VDR, and also to all users who have been
enjoying VDR over the past 15 years!

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus

Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 27 März, 2017, 22:10
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR version 2.3.2 is now available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.2.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.1-2.3.2.diff

MD5 checksums:

6dbb208ea3d59658a18912b49af175b3  vdr-2.3.2.tar.bz2
68a0ed9f01048026333939d30e0a6474  vdr-2.3.1-2.3.2.diff

A summary of all the major changes since the last stable version 2.3.1

Changelog vdr 2.3.2
This is a summary of the changes in VDR 2.3.2 since the last developer version 2.3.1. It only contains things that are of actual importance to the user and doesn't mention the many fixes and improvements that have been made "behind the scenes". See the file HISTORY that comes with the VDR source for a detailed list of all changes.

- Fixed a crash when deleting a recording (reported by Oliver Endriss).
- Fixed an overflow of PIDs in a receiver (thanks to Robert Hannebauer).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed initializing device specific parameters in cDvbTransponderParameters.
- The function SetCurrentChannel(const cChannel *Channel) is now deprecated and
   may be removed in a future version. Use SetCurrentChannel(int ChannelNumber)
   instead.
- The SVDRP command DELC now refuses to delete the very last channel in the list,
   to avoid ending up with an empty channel list.
- The cRwLock class now allows nested read locks within a write lock from the
   same thread. This fixes possible crashes when moving or deleting channels in
   the menu or through SVDRP (as well as other operations that try to acquire a
   read lock within a write lock).
- Fixed a crash when trying to delete a channel that is being used by a timer.
- Fixed setting the current item and counter values in the Recordings menu after
   deleting the last recording in a subfolder.
- Fixed a crash when deleting a recording that is currently being replayed.
- Fixed a crash when moving a recording to a folder on a different volume.
   The cRecordingsHandler now performs its actual operations in a separate thread,
   thus avoiding locking problems and reducing the time between subsequent
   operations.
- Added a note to the description of cFont::Size(), regarding possible differences
   between it and cFont::Height() (suggested to Thomas Reufer).
- Made the cPlayer member functions FramesPerSecond, GetIndex and GetReplayMode
   'const' (thanks to Thomas Reufer).
- Fixed resuming replay at a given position, which was off by one frame (thanks
   to Thomas Reufer).
- Improved handling frame numbers to have a smoother progress display during
   replay of recordings with B-frames (thanks to Thomas Reufer).
- Fixed replaying recordings to their very end, if they don't end with an I-frame
   (thanks to Thomas Reufer).
- Implemented a frame parser for H.265 (HEVC) recordings (thanks to Thomas Reufer).
- Added cFont::Width(void) to get the default character width and allow stretched
   font drawing in high level OSDs (thanks to Thomas Reufer).
- Fixed regenerating the index of audio recordings (thanks to Thomas Reufer).
- Fixed building VDR with systemd >= 230 (thanks to Ville Skyttä).
- Sorted sources.conf by continous azimuth (thanks to Lucian Muresan).
- Added 'S58.5E Kazsat 3' to sources.conf (thanks to Aitugan Sarbassov).
- Fixed truncated date/time strings in the skins on multi-byte UTF-8 systems
   (reported by Sergey Chernyavskiy).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Added a 'const' version of cTimers::GetTimer() (thanks to Lars Hanisch).
- Fixed a typo in the description of cTimers::GetTimersRead() (thanks to Lars
   Hanisch).
- Fixed a possible buffer overflow in handling CA descriptors (suggested by
   Lars Hanisch).
- Avoiding some duplicate code and unnecessary work in nit.c (thanks to Ville
   Skyttä).
- Added support for the systemd watchdog (thanks to Marc Perrudin),
- Added a short sleep to cTSBuffer::Action() to avoid high CPU usage (thanks to
   Sergey Chernyavskiy).
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Thanks to the many people who have contributed in the making, testing and
debugging of this new version of VDR, and also to all users who have been
enjoying VDR over the past 15 years!

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
_______________________________________________
vdr mailing list (https://www.linuxtv.org/pipermail/vdr/2016-December/029178.html)
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 28 März, 2017, 21:54
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR version 2.3.3 is now available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.3.tar.bz2

A 'diff' against the previous version is available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.2-2.3.3.diff

MD5 checksums:

73182b570bcf5a67ab56f7734e479631 vdr-2.3.3.tar.bz2
112c2057dbd7e86c31f8227f61cfd2a6 vdr-2.3.2-2.3.3.diff

A summary of all the major changes since the last stable version 2.3.2

Changelog vdr 2.3.3
This is a summary of the changes in VDR 2.3.3 since the last developer version 2.3.2. See the file HISTORY that comes with the VDR source for a detailed list of all changes.
- Added 'S3W ABS-3A' to sources.conf (thanks to Frank Richter).
- Fixed a possible deadlock in the recordings handler thread.
- Updated the Russian OSD texts (thanks to Andrey Pridvorov).
- Added a missing dependency to the Makefile to avoid error messages in the
clean-plugins target (thanks to Tobias Grimm).
- The channel/CAM relations (i.e. the information which CAM can decrypt a given
channel) are now stored in the file 'cam.data' in the cache directory (suggested
by Dietmar Spingler). This speeds up switching to encrypted channels after
newly starting VDR, in case there is more than one CAM in the system.
- Fixed a flaw in handling timeouts for encrypted channels.
- The mechanism of trying different CAMs when switching to an encrypted channel is
now only triggered if there acually is more than one CAM in the system.
- Fixed updating the elapsed/remaining time in the progress display during fast
forward/rewind.
- Changed 'unsigned' to 'signed' in some places to avoid trouble with abs() in
gcc6+ (reported by Derek Kelly).
- CAMs that can handle multiple devices at the same time can now indicate this
by creating the first cCamSlot as usual, and every other cCamSlot by giving
it the first one as its "MasterSlot". To VDR this means that when searching
for a CAM that can decrypt a particular channel, it only needs to ask the
master CAM slot whether it is suitable for decrypting, and can skip all the
other slots belonging to the same master. This can greatly speed up channel
switching on systems with more than one CAM (that can handle multiple devices).
- The LCARS skin now displays the master CAM's number when a device is tuned to
an encrypted channel.
- The Setup/CAM menu now only displays master CAMs.
- Fixed setting the local machine's SVDRP host name (was overwritten if setup.conf
contained an empty string).
- PIDs can now be added to and deleted from a cReceiver while it is attached to
a cDevice, without having to detach it first and re-attach it afterwards.
- Implemented support for MTD ("Multi Transponder Decryption"). This allows a CAM
that is capable of decrypting more than one channel ("Multi Channel Decryption")
to decrypt channels from different transponders. See the remarks in mtd.h on
what a derived cCamSlot class needs to do in order to activate MTD (thanks to
Jasmin Jessich for writing the ddci2 plugin and for valuable input and help
with testing and debugging).
- The function cRingBufferLinear::Clear() can now be called safely from the
reading thread, without additional locking.
- Now stopping any ongoing recordings before stopping the plugins, to avoid
a crash when stopping VDR while recording.
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
_______________________________________________
vdr mailing list (https://www.linuxtv.org/pipermail/vdr/2017-March/029236.html)
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 08 Mai, 2017, 20:10
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR Developer Version 2.3.4 is now available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.4.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.3-2.3.4.diff

MD5 checksums:

7b1c985d5e7703f7ec46e3818f546702  vdr-2.3.4.tar.bz2
bacbe7b334a4aa0827d95938e3a1ec6d  vdr-2.3.3-2.3.4.diff

A summary of all the major changes since the last stable version 2.3.3

Changelog vdr 2.3.4
This is a summary of the changes in VDR 2.3.4 since the last developer version 2.3.3. See the file HISTORY that comes with the VDR source for a detailed list of all changes.
- 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
   SetDisplayMenu().
- 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
   timers.
- 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
   cDvbDevice::GetTSPacket()).
- 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.
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
_______________________________________________
vdr mailing list (https://www.linuxtv.org/pipermail/vdr/2017-April/029243.html)
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 04 Juli, 2017, 18:36
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR Developer Version 2.3.5 is now available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.5.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.4-2.3.5.diff

MD5 checksums:

9ca7c556d1fdd733facb6cd9053a4067  vdr-2.3.5.tar.bz2
fbadd411b1ef36dcd8be67d23b3ea41d  vdr-2.3.4-2.3.5.diff


A summary of all the major changes since the last dev version 2.3.4

Changelog vdr 2.3.5
This is a summary of the changes in VDR 2.3.5 since the last developer version 2.3.4. See the file HISTORY that comes with the VDR source for a detailed list of all changes.
- CAMs are now sent a generated EIT packet that contains a single 'present event' for
   the current SID, in order to avoid any parental rating dialogs.
- Fixed handling UNC values (the shift operator behaves unexpected for shift values
   larger than the size of the variable).
- Log messages about switching channels now include the channel ID (suggested by
   Dietmar Spingler).
- Events in the EIT that end before the EPG linger time are now ignored in the incoming
   data stream, because they would just be deleted in the next schedules cleanup anyway.
- The constructor of cHash (via cHashBase) now has an additional parameter (OwnObjects)
   which, if set to true, makes the hash take ownership of the hashed objects, so that
   they are deleted when the hash is cleared or destroyed.
- Fixed a memory leak in cSectionSyncerHash. The cSectionSyncerEntry objects put into
   the hash were never explicitly deleted. Now the cSectionSyncerHash takes ownership of
   these objects.
- cListObject now implements a private copy constructor and assignment operator, to keep
   derived objects from calling them implicitly.
- When selecting a device/CAM combination for live viewing, CAMs that are known to decrypt
   the requested channel are now given a higher priority than prefering the primary device
   (reported by Christian Winkler).
- Changed the default return value of cEpgHandler::BeginSegmentTransfer() to true, to
   avoid problems with derived classes that don't implement this function (reported by
   Frank Neumann).
- Fixed selecting delivery system names in case of undefined indexes (thanks to Jasmin
   Jessich).
- Changed the legacy delivery system name "DMBTH" to "DTMB", and added names for
   DVBC_ANNEX_C and DVBC2.
- Added a Status parameter to the interface of cDevice::SignalStats() and
   cDvbDevice::SignalStats() (thanks to Rolf Ahrenberg).
- Fixed handling line numbers in error messages when reading EPG data.
- Added handling RI_HOST_CONTROL to the CI protocol (no actual processing, but its
   presence is required by some CAMs).
- Fixed a crash in case the bottom text of a CAM menu is empty.
- Extended the CI API to allow plugins to implement additional CAM resources.
- Fixed a race between SVDRP CHAN and cDevice::HasProgramme() (reported by Dietmar
   Spingler).
- Reduced the time before a CAM is marked as known to decrypt a particular channel to
   3 seconds.
- When the connection to a peer VDR is terminated, any remote timers of that peer
   are no longer shown on the local VDR.
- No longer setting a new timer's remote host name if "SVDRP peering" is turned off.
- Fixed a double deletion of a cTimer in case HandleRemoteModifications() returned
   false (thanks to Johann Friedrichs).
- Removed TsGetContinuityCounter() from remux.h, using TsContinuityCounter() instead.
- Fixed setting the local machine's SVDRP host name (was overwritten if setup.conf
   contained an empty string). The SVDRP host name is now only written to setup.conf
   if it differs from the system's host name.
- If the Channel+/- keys are pressed while in the Schedules menu, the menu is now
   switched to the EPG of the new current channel.
- The Makefiles have been modified so that during the build process they no longer
   display the actual (lengthy) commands, but rather just the name of the file that
   is being built, as in
   CC vdr.o
   The first two characters indicate the kind of operation (CC=compile, LD=link,
   AR=archive, MO=msgfmt, GT=xgettext, PO=msgmerge, IN=install).
   This way it is much easier to spot error messages and warnings, since they are not
   buried under tons of text.
   Plugin authors should modify their makefiles accordingly, by simply preceeding
   the respective commands with an '@' and inserting '@echo XX $@' (where XX is one
   of the character combinations listed above) before the command.
   The newplugin script has also been modified accordingly.
- Fixed detecting the inclusion of STL header files in tools.h (thanks to Jasmin
   Jessich).
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
_______________________________________________
vdr mailing list (https://www.linuxtv.org/pipermail/vdr/2017-May/029262.html)
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 04 Juli, 2017, 18:38
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR Developer Version 2.3.6 is now available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.6.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.5-2.3.6.diff

MD5 checksums:

eab982df03da492a7d263718a8c487c2  vdr-2.3.6.tar.bz2
84a53afa495740bfdf9aab4b8900df99  vdr-2.3.5-2.3.6.diff

A summary of all the major changes since the last dev version 2.3.5

Changelog vdr 2.3.6
This is a summary of the changes in VDR 2.3.6 since the last developer version 2.3.5. See the file HISTORY that comes with the VDR source for a detailed list of all changes.
- Added backtrace functions for debugging (see cBackTrace in thread.h).
- Added checking the correct sequence of locking global lists (with help and
   suggestions from Jasmin Jessich). At the first occurrence of an invalid locking
   sequence, the 20 most recent locks will be written to the log file, followed by a
   backtrace that led to the call in question. This code can be activated by defining
   the macro DEBUG_LOCKSEQ in thread.c (which is on by default).
   When debugging an actual invalid locking sequence, you can additionally define
   the macro DEBUG_LOCKCALL in thread.c, which will add information about the caller
   of each lock. Note that this may cause some stress on the CPU, therefore it is off
   by default.
- The file Make.config.template now reacts on DEBUG=1 in the 'make' command line,
   and disables code optimizations by setting -O0 (thanks to Jasmin Jessich).
   This can be helpful when backtracing highly optimized code. You may want to
   'make distclean' before running 'make' with a modified setting of DEBUG, to make
   sure all object files are newly compiled.
- Fixed the locking sequence when dumping EPG data.
- Fixed the locking sequence when starting a recording.
- The Makefiles now use the macro $(Q) instead of a plain '@' in front of their
   commands, so that verbosity can be controlled by the user (suggested by Jasmin
   Jessich). Add VERBOSE=1 to the 'make' call in the VDR source directory to see the
   actual commands that are executed.
   Plugin authors should modify their makefiles accordingly, by simply preceeding
   the respective commands with '$(Q)' and inserting '@echo XX $@' (where XX is one
   of the character combinations listed in the release note for version 2.3.5) before
   the command.
   The newplugin script has also been modified accordingly.
   Note that if you build a plugin directly in the plugin's own source directory,
   the $(Q) macro won't be defined and commands will be displayed. You can add
   Q=@ to the make call to have it less verbose (provided the plugin's Makefile
   was modified as described above).
- Added clearing CiResourceHandlers before shutting down the plugin manager.
- Fixed a double channel switch when pressing the Channel+/- keys while no menu
   or channel display is open.
- Fixed generating k_Release key events for LIRC remote controls (due to the short
   timeout another normal key was sometimes put into the queue after the generated
   release). Also removed some code redundancy and added some buffer checks.
- Now using a separate mutex to fix the race between SVDRP CHAN and
   cDevice::HasProgramme(), because the previous fix caused a deadlock (reported by
   Derek Kelly).
- Fixed a possible crash in case the SVDRP connection to a peer VDR is terminated
   while getting remote timers.
- Fixed the locking sequence when creating a new timer from the Schedules menu.
- Fixed the locking sequence when switching between 'Now', 'Next' and 'Schedule'
   in the Schedules menu.
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
_______________________________________________
vdr mailing list (https://www.linuxtv.org/pipermail/vdr/2017-June/029265.html)
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 04 Juli, 2017, 18:40
(http://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR Developer Version 2.3.7 is now available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.7.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.6-2.3.7.diff

MD5 checksums:

0df2c8b40c89d142c698200ac3dcb14a  vdr-2.3.7.tar.bz2
fbe211e46b12a2fcf2f19054d3ce62cf  vdr-2.3.6-2.3.7.diff

A summary of all the major changes since the last dev version 2.3.6

Changelog vdr 2.3.7
This is a summary of the changes in VDR 2.3.7 since the last developer version 2.3.6. See the file HISTORY that comes with the VDR source for a detailed list of all changes.
- Fixed false positives when checking the locking sequence, in case of nested locks
   within the same thread.
- Fixed uninitialized variable SdWatchdog in vdr.c (reported by Frank Neumann).
- Fixed the locking sequence when starting an instant recording.
- Fixed L(ock) and U(nlock) indicators in cStateLockLog.
- Increased SLL_LENGTH in thread.c to better handle long caller lines, and enclosed
   logCaller with DEBUG_LOCKCALL to preserve memory in normal operation.
- Fixed a typo in CAMMENURETYTIMEOUT and added logging CAM enquiries.
- The new configuration file 'camresponses.conf' can be used to define automatic
   responses to CAM menus, for instance to avoid annyoing popup messages or entering
   the parental rating PIN. See vdr.5 for details.
- The option "Setup/Miscellaneous/Show channel names with source" can now be set to
   "type" or "full" to show either the type or the full name of the source (thanks to
   Martin Wache).
- The "Channels" menu now indicates whether a channel is encrypted ('X') or a radio
   channel ('R') (thanks to Martin Wache).
- Changed ##Lock to ##_Lock in the DEF_LIST_LOCK and USE_LIST_LOCK macros defined
   in tools.h, so that there is no cSchedulesLock any more. The epgsearch plugin still
   had an abandoned member of class cSchedulesLock, which, as a side effect, caused an
   invalid lock sequence to be flagged (reported by Johann Friedrichs). In order to
   have the compiler report such things, these macros have been changed.
- Introduced the new macro DISABLE_TEMPLATES_COLLIDING_WITH_STL, which can be defined
   before including tools.h in case some plugin needs to use the STL and gets error
   messages regarding one of the template functions defined in tools.h.
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
_______________________________________________
vdr mailing list (https://www.linuxtv.org/pipermail/vdr/2017-June/029266.html)
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 04 Juli, 2017, 18:42
(https://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR Developer Version 2.3.8 is now available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.8.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.7-2.3.8.diff

MD5 checksums:

2afe8b899b3af1967320c216c1315f3e  vdr-2.3.8.tar.bz2
d6ef77c644432dde9a01a05280ca5228  vdr-2.3.7-2.3.8.diff

A summary of all the major changes since the last dev version 2.3.7

Changelog vdr 2.3.8
This is a summary of the changes in VDR 2.3.8 since the last developer version 2.3.7. See the file HISTORY that comes with the VDR source for a detailed list of all changes.
- Updated links in the INSTALL file (thanks to Chris Mayo).
- Fixed detecting whether a CAM replies to queries, which didn't work on some systems
   since the implementation of RI_HOST_CONTROL (reported by Daniel Scheller).
- Added some missing locks when calling functions from cStatus or cSkin*, and added
   some text to status.h and skins.h, explaining the locking situation when such
   functions are called.
- Fixed a possible crash in cStateLockLog.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Now skipping a leading '/' in AddDirectory(), to avoid double slashes (reported by
   Chris Mayo).
- Fixed drawing very long menu titles in the LCARS skin (reported by Matthias Senzel).
- Timers are now linked to EPG events even if they are inactive. By default Events that
   are linked to inactive timers are marked with 'I' and 'i', depending on whether the
   timer would record the entire Event or only part of it.
   The function cSkinDisplayMenu::SetItemEvent() now has an additional parameter named
   TimerActive, which indicates whether the timer that would record this event (if any)
   is active. A plugin may react on this when displaying a menu line for an event.
   The old version of cSkinDisplayMenu::SetItemEvent() (without the TimerActive parameter)
   is still there for backwards compatibility. It may be removed in a future version,
   so plugin authors should switch to the new one.
- Now using readdir() instead of readdir_r(), if GLIBC version 2.24 or newer is used
   (suggested by Frank Neumann).
- Added a note to the log, indicating that no further invalid lock sequences will be
   reported until VDR is restarted.
- Whenever a change is made to the recordings in the video directory, the SVDRP command
   UPDR is now sent to all peer VDRs, so that they will update their recordings list.
   This is especially useful if one VDR mounts the video directory of an other one into
   a subdirectory.
- SVDRP peering can now be limited to the default SVDRP host (see MANUAL for details).
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
_______________________________________________
vdr mailing list (https://www.linuxtv.org/pipermail/vdr/2017-June/029281.html)
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 19 April, 2018, 08:35
(https://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR Developer Version 2.3.9 is now available at

ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.9.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.8-2.3.9.diff

MD5 checksums:

9e4202b046df9ea960d930ce99e967ab  vdr-2.3.9.tar.bz2
38a0f436fbed219665725aa2e54a9ca0  vdr-2.3.8-2.3.9.diff

A summary of all the major changes since the last dev version 2.3.8

Changelog vdr 2.3.9
This is a summary of the changes in VDR 2.3.9 since the last developer version 2.3.8. See the file HISTORY that comes with the VDR source for a detailed list of all changes.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed a possible crash when stopping VDR (thanks to Matthias Senzel for reporting and
   helping to debug this one).
- Fixed handling VPS events outside the LingerLimit, which could cause recordings to
   stop prematurely (thanks to Johann Friedrichs).
- Fixed an invalid lock sequence when trying to remove a deleted recording in case
   of low disk space.
- Now making sure that AssertFreeDiskSpace() is called with the maximum timer
   priority in case there are several timers recording with different priorities.
- The MTD mapper now avoids immediately reusing unique PIDs when switching channels,
   to prevent possible problems with old data in buffers (thanks to Onur Sentürk).
- The function cDevice::GetVideoSystem() (which has been deprecated since version 2.1.6)
   has been finally removed.
- The macros used to control deprecated code or functions have been changed to hold
   numeric values (0 and 1), so that they can be controlled at compile time, without
   having to edit the actual source code (suggested by Jasmin Jessich).
- The default for DEPRECATED_VDR_CHARSET_OVERRIDE has been set to 0, which means VDR
   no longer reacts on the environment variable VDR_CHARSET_OVERRIDE. You can add
   'DEPRECATED_VDR_CHARSET_OVERRIDE=1' when compiling in order to restore this
   functionality. However, it is recommended to use the command line option --chartab
   instead.
- The timeout for the channel display is now reset whenever the channel or EPG data
   changes.
- OSD menus now try to keep the offset of the list cursor at a constant position on
   the screen, even if the list is modified while being displayed.
- The LCARS skin's main menu now reacts to changes of the current channel's name.
- If an event in the Schedules menu is marked with a 'T' or 'I' and the user presses the
   Red button to edit the timer, local timers are now preferred over remote timers
   in case there is more than one timer that will record that event.
- Switching the primary device is no longer done via osSwitchDvb (which has been
   removed), but rather by the main program loop reacting to changes in Setup.PrimaryDVB.
- The new SVDRP commands 'LSTD' and 'PRIM' can be used to list all available devices
   and to switch the primary device (thanks to Thomas Reufer).
- Added some comments regarding font height (thanks to Thomas Reufer).
- Fixed handling timers during the change from DST to winter time (thanks to Johann
   Friedrichs).
- Added missing checks of 'player' in member functions of cControl, and setting
   cControl::player to NULL in cDvbPlayerControl::Stop() to avoid a possible crash
   with plugins that retrieve player information after a replay has been stopped, but
   before the replay control has been destroyed (thanks to Johann Friedrich).
- Now calling Hide() and cStatus::MsgReplaying(..., false) from cReplayControl::Stop(),
   to inform plugins about an ending replay session before the replay control gets
   destroyed.
- Fixed a possible crash when moving a recording between different volumes (reported by
   Matthias Senzel).
- Fixed positioning the cursor in the Recordings menu when moving a recording between
   different volumes.
- Added a note to PLUGINS.html about writing log messages in English.
- Fixed a deadlock when moving a folder containing several recordings between
   different volumes (reported by Matthias Senzel).
- Fixed positioning to the current item when changing the sort mode in the Recordings
   menu, in case there is a LastReplayed recording.
- The CAM menu is now automatically closed when the current channel is switched
   (suggested by Dietmar Spingler).
- Fixed a lengthy write lock on the Recordings list in case of moving a folder with
   more than one recording (thanks to Matthias Senzel).
- If TS packets are not accepted by the output device in Transfer Mode, this is now
   reported only once per minute in the log file.
- The new setup option "OSD/Sorting direction for recordings" can be used to switch
   the sequence in which recordings are presented in the "Recordings" menu between
   ascending (oldest first) and descendeng (newest first) (thanks to Matthias Senzel).
- When moving recordings between volumes, the "Recordings" menu now displays those items
   that have not yet been moved completely as non-selectable. This avoids situations
   where trying to play such a recording might fail.
- Fixed canceling moving a folder with several recordings between volumes.
- When moving a recording to a different folder, the cursor is no longer placed on the
   new location of the recording, but rather stays in the original folder (suggested by
   Matthias Senzel). If the original folder got empty by moving away the last recording
   it contained, the cursor is moved up until a non empty folder is found.
- Changed the log message ""ERROR: copying directory '%s' to '%s' ended prematurely" from
   "error" to "info", because any actual error would have already been reported before this
   (suggested by Matthias Senzel).
- When selecting a folder for a recording or timer, it is now possible to open a folder
   even if it doesn't contain any subfolders (suggested by Matthias Senzel).
- Fixed a possible deadlock when detaching a receiver from a device.
- Moved any locking from cutter.c into recording.c, to avoid a problem with locking
   the Recordings list (reported by Matthias Senzel).
- Now using the 'example' macro in vdr.5 (thanks to Chris Mayo).
- Now unlocking the Recordings list before displaying an error message in
   cMenuPathEdit::ApplyChanges() and cReplayControl::Stop() (reported by Matthias Senzel).
- Fixed a possible deadlock when quickly zapping through encrypted channels (reported
   by Jörg Wendel).
- The new function cStatus::MarksModified() can be implemented by plugins to get
   informed about any modifications to the editing marks of the currently played
   recording (based on a patch from Jörg Wendel).
- Fixed handling editing marks in the replay progress display, in case the marks are
   deleted via the Info/Edit menu of the currently played recording (the progress
   display still displayed them).
- Limited some CAM related log messages to the actual master CAM, if any.
- The Perl script 'peerdemo' shows how one can find all the VDRs in the local network
   using the peer connection mechanism.
- Added the UPDATE-2.4.0 file.
- Making sure cSVDRPClient::Process() reads the entire reply once it started reading,
   even if no Response parameter is given.
- Replaced the warning regarding the open SVDRP port in the INSTALL file with a remark
   about using svdrphosts.conf to completely disable SVDRP access.
- Added a note about the fixed UDP port for SVDRP discovery to vdr.1.
- Fixed updating the Timers menu after turning a local timer on/off with the Red
   button.
- Fixed keeping the cursor position in the Recordings menu in case a timer starts
   recording while the menu is open.
- When a timer is newly created in the Timers menu, it now immediately appears at the
   correct position in the list, rather than first being added at the end and then
   jumping to the proper offset.
- Fixed getting the info of a newly edited recording (reported by Matthias Senzel).
- Improved calculating signal strength and quality (thanks to Helmut Binder).
- While a timer is recording, the file '.timer' in the recording directory now contains
   the full id of the timer that is currently recording into this directory. This is used
   to determine whether a timer is still recording on a remote VDR when deleting a recording
   from the Recordings menu.
- Fixed handling SVDRP peering for more than one instance of VDR on the same machine, and
   improved logging and debug output.
- Fixed case inconsistency with SVDRPDefaultHost in config.c.
- Added a section about the '.sort' file to vdr.5.
- Initiating the client side of a peer-to-peer SVDRP connection is now done with the new
   SVDRP command CONN instead of using the UDP port with the server's address.
   This change requires that all VDRs that shall take part in a peer-to-peer network need
   to be updated to this version.
- Moved handling remote timers into cSVDRPClientHandler::ProcessConnections().
- Combined Start/StopSVDRPServer/ClientHandler() into Start/StopSVDRPHandler().
- Updated the Polish OSD texts (thanks to Tomasz Maciej Nowak).
- When remote timers are fetched from a peer VDR, we no longer blindly delete and re-add
   them, but rather compare them and make only the minimum necessary changes.
- Fixed the CompareInts() function.
- Disabled the use of posix_fadvise() when reading (i.e. replaying), since it caused
   stuttering replay in fast forward and fast rewind mode in case the video directory
   is mounted via NFS. You can re-enable it by setting the macro USE_FADVISE_READ to 1
   in tools.c.
- Modified cStateLock's SetExplicitModify() and IncState() (changed to SetModified()) to
   allow for the introduction of syncing a separate cStateKey to a cStateLock.
- Assigning events to timers no longer triggers sending a POLL to all peer VDRs.
- When making modifications to remote timers, the local VDR no longer sends a POLL to
   all remote VDRs.
- Fixed removing a cStateKey from a cStateLock (setting StateKey.stateLock = NULL was
   done too late, after the lock had already been released).
- Now writing the info file before attaching the recorder to the device, to make sure it
   is present when the recorder needs to update the fps value.
- Making sure the Schedules menu has a proper title, even if it is empty.
- Removed sending the SVDRP command UPDR to peer VDRs whenever a change is made to the
   recordings in the video directory (which was introduced in version 2.3.8), because it
   triggered re-reading the video directory too fast.
- Improved handling VPS timers to better react to EPG changes during an ongoing recording.
- Commented out the logging in cMarks::Align(), to avoid log entries in case of editing
   marks that are not generated by VDR itself, and thus may be a little off (suggested by
   Jörg Wendel). You can activate this line again for debugging if necessary.
- Made the input buffer in cSVDRPClient dynamic.
- Fixed handling parameters in the S2SatelliteDeliverySystemDescriptor and
   T2DeliverySystemDescriptor that were overwritten when parsing the
   SatelliteDeliverySystemDescriptor or TerrestrialDeliverySystemDescriptor, respectively.
- Modified cMenuTimers::Delete() to avoid a lengthy lock on the Timers list while prompting
   the user.
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
_______________________________________________
vdr mailing list (https://www.linuxtv.org/pipermail/vdr/2018-March/029378.html)
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Titel: Re: [Release] VDR 2.x
Beitrag von: mtron am 19 April, 2018, 08:40
(https://www.dvbcube.org/index.php?action=dlattach;topic=31387.0;attach=2246;image)
VDR  Version 2.4.0 is now available at

       ftp://ftp.tvdr.de/vdr/vdr-2.4.0.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.3.9-2.4.0.diff

MD5 checksums:

12c6a3abeadfa915fcfe736bb047a3ab  vdr-2.4.0.tar.bz2
6d98c2d619e82f3d4503146602fccde7  vdr-2.3.9-2.4.0.diff

A summary of all the major changes since the last stable Release

Changelog vdr 2.4.0
This is a summary of the changes in VDR 2.4.0 since the last stable version 2.2.0 See the file HISTORY that comes with the VDR source for a detailed list of all changes.

Peering

    If there is more than one VDR in the local network, they can now form a peer-to-peer network, so that timers can be moved freely between them. The following changes have been made to implement this:
        VDR now sends out a broadcast to port 6419/udp, which was assigned to 'svdrp-disc' by the IANA. VDRs listening on that port will automatically initiate an SVDRP connection to the broadcasting VDR, and in turn send out a broadcast to make other VDRs connect to them. That way all VDRs within the local network will have permanent "peer-to-peer" SVDRP connections between each other. The configuration in the svdrphosts.conf file is taken into account when considering whether or not to respond to an SVDRP discover broadcast.
        The new SVDRP command PING is used by automatically established peer-to-peer connections to keep them alive.
        The new function GetSVDRPServerNames() can be used to get a list of all VDRs this VDR is connected to via SVDRP.
        The new function ExecSVDRPCommand() can be used to execute an SVDRP command on one of the servers this VDR is connected to, and retrieve the result. The helper functions SVDRPCode() and SVDRPValue() can be used to easily access the codes and values returned by ExecSVDRPCommand().
        The new SVDRP command POLL is used by automatically established peer-to-peer connections to trigger fetching remote timers.
        The new options "Setup/Miscellaneous/SVDRP peering", ".../SVDRP host name" and ".../SVDRP default host" can be used to configure automatic peering between VDRs in the same network. Peering is disabled by default and can be enabled by setting "SVDRP peering" to "yes".
        The "Edit timer" menu now has a new parameter "Record on", which can be used to select the VDR on which this timer shall record. Timers can be freely moved between connected VDRs by simply selecting the desired machine in this field.
        The cTimer class now has a new member named 'remote', which holds the name of the remote server this timer will record on. If this is NULL, it is a local timer.
        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.
        The Perl script 'peerdemo' shows how one can find all the VDRs in the local network using the peer connection mechanism.

Conditional Access

    Implemented support for MTD ("Multi Transponder Decryption"). This allows a CAM that is capable of decrypting more than one channel ("Multi Channel Decryption") to decrypt channels from different transponders. See the remarks in mtd.h on what a derived cCamSlot class needs to do in order to activate MTD.
    The Setup/CAM menu now displays which device an individual CAM is currently assigned to.
    The channel/CAM relations (i.e. the information which CAM can decrypt a given channel) are now stored in the file 'cam.data' in the cache directory. This speeds up switching to encrypted channels after newly starting VDR, in case there is more than one CAM in the system. The file 'cam.data' is not written if it is read-only.
    The mechanism of trying different CAMs when switching to an encrypted channel is now only triggered if there acually is more than one CAM in the system.
    CAMs that can handle multiple devices at the same time can now indicate this by creating the first cCamSlot as usual, and every other cCamSlot by giving it the first one as its "MasterSlot". To VDR this means that when searching for a CAM that can decrypt a particular channel, it only needs to ask the master CAM slot whether it is suitable for decrypting, and can skip all the other slots belonging to the same master. This can greatly speed up channel switching on systems with more than one CAM (that can handle multiple devices).
    The LCARS skin now displays the master CAM's number when a device is tuned to an encrypted channel.
    The Setup/CAM menu now only displays master CAMs.
    Detecting whether a particular CAM actually decrypts a given channel is now done separately for each receiver.
    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 cDvbDevice::GetTSPacket()).
    CAMs are now sent a generated EIT packet that contains a single 'present event' for the current SID, in order to avoid any parental rating dialogs.
    When selecting a device/CAM combination for live viewing, CAMs that are known to decrypt the requested channel are now given a higher priority than prefering the primary device.
    Extended the CI API to allow plugins to implement additional CAM resources.
    The new configuration file 'camresponses.conf' can be used to define automatic responses to CAM menus, for instance to avoid annyoing popup messages or entering the parental rating PIN. See vdr.5 for details.

Timers

    The cTimer class now has a new member named 'remote', which holds the name of the remote server this timer will record on. If this is NULL, it is a local timer.
    Timers from other VDRs that are connected to this VDR via SVDRP are now automatically fetched and stored in the global Timers list. In order for this to work, all of the channels used by timers on the remote VDR must also be defined on the local VDR (however, not necessarily in the same sequence).
    Accessing the global Timers list now has to be protected by proper locking, because SVDRP commands are now executed in a separate thread. The introduction of this locking mechanism required the following changes:
        The new classes cStateLock and cStateKey are used to implement locking with quick detection of state changes.
        cConfig::cConfig() now has a parameter that indicates whether this list requires locking.
        The global lists of Timers, Channels, Schedules and Recordings are no longer static variables. They are now pointers that need to be retrieved through a call to cTimers::GetTimersRead/Write(), cChannels::GetChannelsRead/Write(), cSchedules::GetSchedulesRead/Write() and cRecordings::GetRecordingsRead/Write(), respectively.
        References from/to link channels are now removed in cChannels::Del() rather than cChannel::~cChannel(), to make sure the caller holds a proper lock.
        cChannel::HasTimer() has been removed. This information is now retrieved via cSchedule::HasTimer().
        Several member functions of cChannel, cTimer, cMarks and cRecording have been made 'const', and some of them are now available as both 'const' and 'non-const' versions.
        The cChannel::Set...() functions are now 'bool' and return true if they have actually changed any of the channels's members.
        cChannels::SetModified() has been renamed to cChannels::SetModifiedByUser().
        cChannels::Modified() has been renamed to cChannels::ModifiedByUser(), and now has a 'State' parameter that allows the caller to see whether a channel has been modified since the last call to this function with the same State variable.
        The macros CHANNELSMOD_NONE/_AUTO/_USER have been removed.
        cMarks now requires locking via cStateKey.
        cSortedTimers now requires a pointer to the list of timers.
        cEvent::HasTimer() no longer scans the list of timers to check whether an event is referenced by a timer, but rather keeps score of how many timers reference it. This was necessary in order to avoid having to lock the list of timers from within a cEvent.
        The new class cListGarbageCollector is used to temporary store any objects deleted from cLists that require locking. This allows pointers to such objects to be dereferenced even if the objects are no longer part of the list.
        cListBase::Contains() can be used to check whether a particular object is still contained in that list.
        Outdated events are no longer "phased out", but rather deleted right away and thus taken care of by the new "garbage collector" of the list.
        Deleted cRecording objects are no longer kept in a list of "vanished" recordings, but are rather taken care of by the new "garbage collector" of the list.
        cSchedules::ClearAll() has been removed. The functionality is now implemented directly in cSVDRPServer::CmdCLRE().
        cSchedule now has a member Modified(), which can be used with a State variable to quickly determine whether this schedule has been modified since the last call to this function with the same State variable.
        cSchedulesLock has been removed. Locking the list of schedules is now done via the cList's new locking mechanism.
        The 'OnlyRunningStatus' parameters in cEpgHandler::BeginSegmentTransfer() and cEpgHandler::EndSegmentTransfer() are now obsolete. They are still present in the interface for backward compatibility, but may be removed in a future version. Their value is always 'false'.
        The constant tcMod is no longer used in cStatus::TimerChange(). The definition is still there for backward compatibility.
    Plugins that access the global lists of Timers, Channels, Recordings or Schedules will need to be adapted as follows:
        Instead of directly accessing the global variables Timers, Channels or Recordings, they need to set up a cStateKey variable and call the proper getter function, as in cStateKey StateKey; if (const cTimers *Timers = cTimers::GetTimersRead(StateKey)) { // access the timers StateKey.Remove(); } and cStateKey StateKey; if (cTimers *Timers = cTimers::GetTimersWrite(StateKey)) { // access the timers StateKey.Remove(); } See timers.h, thread.h and tools.h for details on this new locking mechanism.
        There are convenience macros for easily accessing these lists without having to explicitly set up a cStateKey and calling its Remove() function. These macros have the form LOCK_*_READ/WRITE (with '*' being TIMERS, CHANNELS, SCHEDULES or RECORDINGS). Simply put such a macro before the point where you need to access the respective list, and there will be a pointer named Timers, Channels, Schedules or Recordings, respectively, which is valid until the end of the current block.
        If a plugin needs to access several of the global lists in parallel, locking must always be done in the sequence Timers, Channels, Recordings, Schedules. This is necessary to make sure that different threads that need to lock several lists at the same time don't end up in a deadlock.
        Some pointer variables may need to be made 'const'. The compiler will tell you about these.
    If a timer is newly created with the Red button in the Schedule menu, and the timer is presented to the user in the "Edit timer" menu because it will start immediately, it now *must* be confirmed with "Ok" to set the timer. Otherwise the timer will not be created.
    The function cTimer::ToText() no longer returns a newline character at the end of the string. The newline is now added by the caller as necessary. This was changed because cTimer::ToText() is now also needed in a context where the terminating newline can't be used. Consequently, cChannel::ToText() and cMark::ToText() have been modified accordingly.
    Timers now have unique ids instead of numbers, which remain valid as long as this instance of VDR is running. This means that timers are no longer continuously numbered from 1 to N in LSTT. There may be gaps in the sequence, in case timers have been deleted.
    Timers are now linked to EPG events even if they are inactive. By default Events that are linked to inactive timers are marked with 'I' and 'i', depending on whether the timer would record the entire Event or only part of it. The function cSkinDisplayMenu::SetItemEvent() now has an additional parameter named TimerActive, which indicates whether the timer that would record this event (if any) is active. A plugin may react on this when displaying a menu line for an event. The old version of cSkinDisplayMenu::SetItemEvent() (without the TimerActive parameter) is still there for backwards compatibility. It may be removed in a future version, so plugin authors should switch to the new one.
    Improved handling VPS timers to better react to EPG changes during an ongoing recording.

Plugins

    The dvbhddevice plugin is no longer part of the VDR source archive. You can get the latest version of this plugin from the author's repository at https://bitbucket.org/powARman/dvbhddevice.
    The dvbsddevice and rcu plugins are no longer part of the VDR source archive. You can get the latest versions of these plugins from ftp://ftp.tvdr.de/vdr/Plugins.
    The -V and -h options now list the plugins in alphabetical order.
    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 PLUGINS.html about writing log messages in English.
    The new function cStatus::MarksModified() can be implemented by plugins to get informed about any modifications to the editing marks of the currently played recording.

Skins

    The main menu of the LCARS skin now displays a small rectangle on the left side of a timer if this is a remote timer. The color of that rectangle changes if the timer is currently recording on the remote VDR.
    Skins can now implement cSkinDisplayMenu::MenuOrientation() to display horizontal menus.
    The LCARS skin now displays the master CAM's number when a device is tuned to an encrypted channel.

Remote control

    The new setup option "Recording/Record key handling" can be used to define what happens if the Record key on the remote control is pressed during live tv.
    If the Channel+/- keys are pressed while in the Schedules menu, the menu is now switched to the EPG of the new current channel.

Devices

    The command line option -D now accepts the value '-' (as in -D-), which prevents VDR from using any DVB devices.
    The function cDevice::SetCurrentChannel(const cChannel *Channel) is now deprecated and may be removed in a future version. Use SetCurrentChannel(int ChannelNumber) instead.
    Signal strength and quality (CNR) are now determined via DVB API 5 (if available). Fallback is the old DVB API 3 method.
    The new function cDevice::SignalStats() (if implemented by an actual device) returns statistics about the currently received signal.
    The function cDevice::GetVideoSystem() (which has been deprecated since version 2.1.6) has been finally removed.
    Switching the primary device is no longer done via osSwitchDvb (which has been removed), but rather by the main program loop reacting to changes in Setup.PrimaryDVB.

EPG

    The character 0x0D is now stripped from EPG texts.
    The EPG scanner no longer moves the dish if there is a positioner.
    The function cEpgHandlers::BeginSegmentTransfer() is now boolean. See the description in epg.h for the meaning of the return value.
    The cEvent class now has a new member 'aux', in which external applications can store auxiliary information with an event. 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.
    Changed the default return value of cEpgHandler::BeginSegmentTransfer() to true, to avoid problems with derived classes that don't implement this function.
    The EIT filter no longer parses data from "other TS", to avoid problems with broadcasters who transmit faulty EIT data.

OSD

    The new function cOsd::MaxPixmapSize() can be called to determine the maximum size a cPixmap may have on the current OSD. The 'osddemo' example has been modified accordingly. Plugin authors may want to use this function in case they use pixmaps that are larger than the full OSD size. The default implementation sets this limit to 2048x2048 pixel.
    Added some comment to cPixmap about the relation between OSD, ViewPort and DrawPort.
    The new setup option "OSD/Default sort mode for recordings" can be used to define how recordings shall be sorted by default (either by time or by name, with "by time" being the default). If a particular sort mode has been selected for a folder by pressing '0', the default no longer applies to that folder. Repeating timers no longer write a ".sort" file into a recordings folder to have the recordings sorted by time.
    The function cOsd::GetBitmap() is now 'protected'. If a plugin doesn't compile with this version of VDR, you can uncomment the line //#define DEPRECATED_GETBITMAP in osd.h as a quick workaround. In the long run the plugin will need to be adapted.
    Background modifications of channels, timers and events are now displayed immediately in the corresponding menus.
    The Timers menu now displays the name of the remote VDR in front of the timer's file name, if this is a remote timer.
    The width and height of the OSD are now limited to the actual maximum dimensions of the output device, taking into account the top and left offset.
    Added a note to the description of cFont::Size(), regarding possible differences between it and cFont::Height().
    Added cFont::Width(void) to get the default character width and allow stretched font drawing in high level OSDs.
    cOsdMenu::Display() now checks whether the OSD size has changed and if so calls SetDisplayMenu().
    The option "Setup/Miscellaneous/Show channel names with source" can now be set to "type" or "full" to show either the type or the full name of the source.
    The "Channels" menu now indicates whether a channel is encrypted ('X') or a radio channel ('R').
    The timeout for the channel display is now reset whenever the channel or EPG data changes.
    OSD menus now try to keep the offset of the list cursor at a constant position on the screen, even if the list is modified while being displayed.
    If an event in the Schedules menu is marked with a 'T' or 'I' and the user presses the Red button to edit the timer, local timers are now preferred over remote timers in case there is more than one timer that will record that event.
    The new setup option "OSD/Sorting direction for recordings" can be used to switch the sequence in which recordings are presented in the "Recordings" menu between ascending (oldest first) and descendeng (newest first).
    When selecting a folder for a recording or timer, it is now possible to open a folder even if it doesn't contain any subfolders.

Recordings

    Recordings now have unique ids instead of numbers, which remain 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.
    Added detection of 24fps.
    The script that gets called for recordings is now also called right before a recording is edited, with the first parameter being "editing".
    Implemented a frame parser for H.265 (HEVC) recordings.
    When moving recordings between volumes, the "Recordings" menu now displays those items that have not yet been moved completely as non-selectable. This avoids situations where trying to play such a recording might fail.
    When moving a recording to a different folder, the cursor is no longer placed on the new location of the recording, but rather stays in the original folder. If the original folder got empty by moving away the last recording it contained, the cursor is moved up until a non empty folder is found.

SVDRP

    The SVDRP port now accepts multiple concurrent connections. You can now keep an SVDRP connection open as long as you wish, without preventing others from connecting. Note, though, that SVDRP connections still get closed automatically if there has been no activity for 300 seconds (configurable via "Setup/Miscellaneous/SVDRP timeout (s)").
    The SVDRP log messages have been unified and now always contain the IP and port number of the remote host.
    SVDRP connections are now handled in a separate "SVDRP server handler" thread, which makes them more responsive. Note that there is only one thread that handles all concurrent SVDRP connections. That way each SVDRP command is guaranteed to be processed separately, without interfering with any other SVDRP commands that might be issued at the same time. Plugins that implement SVDRP commands may need to take care of proper locking if the commands access global data.
    You can now set DumpSVDRPDataTransfer in svdrp.c to true to have all SVDRP communication printed to the console for debugging.
    The SVDRP commands that deal with timers (DELT, LSTT, MODT, NEWT, NEXT and UPDT) as well as any log messages that refer to timers, now use a unique id for each timer, which remains valid as long as this instance of VDR is running. This means that timers are no longer continuously numbered from 1 to N in LSTT. There may be gaps in the sequence, in case timers have been deleted.
    All timer related response strings from SVDRP commands now use the channel ID instead of channel numbers.
    The SVDRP command DELT no longer checks whether the timer that shall be deleted is currently recording.
    The SVDRP command DELC now refuses to delete the very last channel in the list, to avoid ending up with an empty channel list.
    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.
    Changed 'number' to 'id' in the help texts of SVDRP commands that deal with timers.
    The SVDRP command LSTC can now list the channels with channel ids if the option ':ids' is given.
    If 0 is given as the channel number in the SVDRP command LSTC, the data of the current channel is listed.
    The new SVDRP commands 'LSTD' and 'PRIM' can be used to list all available devices and to switch the primary device.

Misc

    Added a section about Output Devices to the INSTALL file.
    The -u option now also accepts a numerical user id.
    The cRwLock class now allows nested read locks within a write lock from the same thread. This fixes possible crashes when moving or deleting channels in the menu or through SVDRP (as well as other operations that try to acquire a read lock within a write lock).
    Added support for the systemd watchdog.
    PIDs can now be added to and deleted from a cReceiver while it is attached to a cDevice, without having to detach it first and re-attach it afterwards.
    Log messages about switching channels now include the channel ID.
    The constructor of cHash (via cHashBase) now has an additional parameter (OwnObjects) which, if set to true, makes the hash take ownership of the hashed objects, so that they are deleted when the hash is cleared or destroyed.
    cListObject now implements a private copy constructor and assignment operator, to keep derived objects from calling them implicitly.
    The Makefiles have been modified so that during the build process they no longer display the actual (lengthy) commands, but rather just the name of the file that is being built, as in CC vdr.o The first two characters indicate the kind of operation (CC=compile, LD=link, AR=archive, MO=msgfmt, GT=xgettext, PO=msgmerge, IN=install). This way it is much easier to spot error messages and warnings, since they are not buried under tons of text. Add VERBOSE=1 to the 'make' call in the VDR source directory to see the actual commands that are executed. Plugin authors should modify their makefiles accordingly, by simply preceeding the respective commands with '$(Q)' and inserting '@echo XX $@' (where XX is one of the character combinations listed above) before the command. The newplugin script has also been modified accordingly. Note that if you build a plugin directly in the plugin's own source directory, the $(Q) macro won't be defined and commands will be displayed. You can add Q=@ to the make call to have it less verbose (provided the plugin's Makefile was modified as described above).
    Added backtrace functions for debugging (see cBackTrace in thread.h).
    Added checking the correct sequence of locking global lists. At the first occurrence of an invalid locking sequence, the 20 most recent locks will be written to the log file, followed by a backtrace that led to the call in question. This code can be activated by defining the macro DEBUG_LOCKSEQ in thread.c (which is on by default). When debugging an actual invalid locking sequence, you can additionally define the macro DEBUG_LOCKCALL in thread.c, which will add information about the caller of each lock. Note that this may cause some stress on the CPU, therefore it is off by default.
    The file Make.config.template now reacts on DEBUG=1 in the 'make' command line, and disables code optimizations by setting -O0. This can be helpful when backtracing highly optimized code. You may want to 'make distclean' before running 'make' with a modified setting of DEBUG, to make sure all object files are newly compiled.
    Introduced the new macro DISABLE_TEMPLATES_COLLIDING_WITH_STL, which can be defined before including tools.h in case some plugin needs to use the STL and gets error messages regarding one of the template functions defined in tools.h.
    The macros used to control deprecated code or functions have been changed to hold numeric values (0 and 1), so that they can be controlled at compile time, without having to edit the actual source code.
    The default for DEPRECATED_VDR_CHARSET_OVERRIDE has been set to 0, which means VDR no longer reacts on the environment variable VDR_CHARSET_OVERRIDE. You can add 'DEPRECATED_VDR_CHARSET_OVERRIDE=1' when compiling in order to restore this functionality. However, it is recommended to use the command line option --chartab instead.
    Disabled the use of posix_fadvise() when reading (i.e. replaying), since it caused stuttering replay in fast forward and fast rewind mode in case the video directory is mounted via NFS. You can re-enable it by setting the macro USE_FADVISE_READ to 1 in tools.c.
[close]

When updating from an earlier version of VDR please make sure you read the INSTALL
and MANUAL files that come with the VDR source before doing so!
Please make sure you have backup copies of all your configuration files,
and verify carefully that your timers will be set to the correct channels
after switching to this new version.

Please also visit the VDR homepage at

     http://www.tvdr.de

and VDR's facebook page at

     https://www.facebook.com/VideoDiskRecorder

Have fun!

Klaus
_______________________________________________
vdr mailing list (https://www.linuxtv.org/pipermail/vdr/2018-April/029407.html)
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr