26 Commits

Author SHA1 Message Date
Klaus Schmidinger
59f0138a7d Version 1.7.23
Original announce message:
VDR developer version 1.7.23 is now available at

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

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.22-1.7.23.diff

MD5 checksums:

de136f7be28c4b6f1fa0e2218b4acc11  vdr-1.7.23.tar.bz2
2977b75cd8dacad187d11c10b867d56a  vdr-1.7.22-1.7.23.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.

From the HISTORY file:
- Removed the '.pl' suffix from svdrpsend.pl (sorry, I missed that one).
- Fixed bonding more than two devices.
- Fixed handling symbolic links in cRecordings::ScanVideoDir() (reported by
  Sundararaj Reel).
- Fixed a memory leak in cRecordings::ScanVideoDir() in case there are too many
  link levels (reported by Sundararaj Reel).
- Removed redundant memset() in the ctor of cSatCableNumbers (triggered by
  Ville Skyttä pointing out that the argument sequence in the call was wrong).
- Removed a redundant NULL check in cDvbSpuDecoder::setTime() (thanks to Ville Skyttä).
- Added HasSnr to the DEBUG_SIGNALQUALITY output in cDvbTuner::GetSignalQuality()
  (triggered by Ville Skyttä pointing out that the variable HasSnr was unused).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added support for HbbTV to libsi (thanks to Christoph Haubrich).
- Added support for devices with more than one delivery system per frontend.
  This requires a DVB driver with version 5.5 or higher that can handle the
  DTV_ENUM_DELSYS call. With older drivers it will fall back to one delivery
  system per frontend.
- Updated the Hungarian language texts (thanks to István Füley).
- cDvbTuner::ExecuteDiseqc() now makes sure only one tuner sends SCR commands
  at any given time (reported by Frank Neumann).
- cEvent::FixEpgBugs() now replaces any newline characters in stream component
  descriptions with blanks (thanks to Torsten Lang for reporting a problem with
  EPG data from BSkyB's "MTV MUSIC", S28.2E-2-2010-7012).
- Fixed cDvbSubtitleConverter::SetOsdData() (thanks to Rolf Ahrenberg).
- Fixed cListBase::Move() in case From and To are equal (reported by Sundararaj
  Reel).
- Added support for DVB-T2 to libsi (thanks to Rolf Ahrenberg).
- Added support for handling DVB-T2 transponders.  This requires a DVB driver
  with version 5.3 or higher that can handle the DTV_DVBT2_PLP_ID call (thanks
  to Rolf Ahrenberg).
- Fixed cConfig::Load() for g++ version 4.7.0 (thanks to Ville Skyttä).
- Fixed a possible memory corruption in cTsToPes::GetPes() in case of broken
  TS packets, e.g. when switching channels.
- Fixed the SVDRP command CLRE for a single channel in case there are events
  that have a timer (thanks to Timo Eskola).
- BIDI support now checks at runtime whether the system runs with UTF-8 (suggested
  by Torsten Lang).
- Added member functions Adapter() and Frontend() to cDvbDevice (suggested by
  Rolf Ahrenberg).
- The parameters that are only used by "second generation" delivery systems (DVB-S2
  and DVB-T2) are no longer written into channels.conf for "first generation"
  delivery systems (DVB-S and DVB-T).
- Changed IndexToHMSF() so that it can handle negative Index values.
- Added option -N to the msgmerge call in the Makefile, because fuzzy translation
  mostly resulted in useless strings.
- The new setup option "Replay/Show remaining time" can be used to switch between
  showing the total length or the remaining time of the recording that is currently
  replayed.
- Fixed wrongfully displaying the length of a recording in the title of the replay
  progress display.
- Fixed frozen live view with device bonding in case the bonded master is used for
  live viewing (reported by Uwe Scheffler).
2012-01-15 16:38:48 +01:00
Klaus Schmidinger
8b9350c091 Version 1.7.18
- Changed -O2 to -O3 in Make.config.template (reported by Matti Lehtimäki).
- Added a missing 'default' case in cPixmapMemory::DrawEllipse().
- Fixed some direct comparisons of double values.
- Fixed detecting frames on channels that broadcast with separate "fields" instead
  of complete frames.
- Made updating the editing marks during replay react faster in case the marks
  file has just been written (with a patch from Udo Richter).
- Fixed horizontal scaling of subtitles (reported by Reinhard Nissl).
- Stripped the note "The data returned by this function is only used for informational
  purposes (if any)" from the description of cDevice::GetVideoSize(). The VideoAspect
  is now used to properly scale subtitles.
- Fixed cUnbufferedFile::Seek() in case it is compiled without USE_FADVISE (thanks
  to Juergen Lock).
- Fixed the Language header of the Serbian translation file (thanks to Ville Skyttä).
- Added anti-aliasing when upscaling bitmaps, which improves the display of SD subtitles
  when replayed on an HD OSD (thanks to Reinhard Nissl for his help in debugging).
- Renamed cBitmap::Scale() to Scaled(), because it doesn't modify the bitmap itself,
  but rather returns a scaled copy.
- Fixed the description of cReceiver in PLUGINS.html, regarding detaching a receiver
  from its device before deleting it (reported by Winfried Köhler). This change in
  behavior was introduced in version 1.5.7.
- Fixed scaling subtitles in case the OSD size is exactly the same as the display
  size of the subtitles.
- Added a missing initialization to sDvbSpuRect (reported by Sergiu Dotenco).
- Replaced "%lld" and "%llX" print format specifiers with "PRId64" and "PRIX64" to
  avoid compiler warnings with gcc 4.5.2 (thanks to Sergiu Dotenco).
  On a personal note: I find it a step in the totally wrong direction that there
  have been macros introduced to work around this problem in the first place. There
  should have been "real" format specifiers defined that address this. These macros
  are nothing but an ugly workaround.
- Added Cancel(3) to ~cTrueColorDemo() in the "osddemo" plugin (thanks to Reinhard Nissl).
- Added a missing font deletion in cTrueColorDemo::Action() in the "osddemo" plugin
  (thanks to Reinhard Nissl).
- Fixed a buffer overflow in cFont::Bidi() (thanks to Reinhard Nissl).
- Added HD stream content identifiers to vdr.5 (thanks to Christoph Haubrich).
- Made cRecordingInfo::Read(FILE *f) private to avoid calls to it from outside
  cRecordingInfo or cRecording (reported by Mika Laitio).
- The dvbhddevice plugin is now part of the VDR distribution archive (thanks to
  Andreas Regel).
- Removed an obsolete local variable in dvbsdffosd.c (thanks to Paul Menzel).
- Fixed a possible NULL pointer dereference in osddemo.c (reported by Paul Menzel).
- Now using pkg-config to get fribidi, freetype and fontconfig cflags and libs (thanks
  to Ville Skyttä).
- The Makefile now also installs the include files (thanks to Ville Skyttä).
- Added handling of "ANSI/SCTE 57" descriptors (thanks too Rolf Ahrenberg).
- Avoiding an unecessary call to Recordings.ResetResume() (thanks to Reinhard
  Nissl).
2011-04-17 17:09:00 +02:00
Klaus Schmidinger
5619c0602b Version 1.7.17
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Fixed following symbolic links in RemoveFileOrDir() (cont'd) (thanks to
  Steffen Barszus).
- Changed the description of cDevice::GetSTC() to make it mandatory for devices
  that can replay.
- Removed the check for positive STC values from cDvbSubtitleConverter::Action().
- Added cString::operator=(const char *String) (suggested by Antti Seppälä).
- Some spelling fixes (thanks to Ville Skyttä).
- Passing package name and version to xgettext (thanks to Ville Skyttä).
- Made 'dist' target dependent on up to date *.po (thanks to Ville Skyttä).
- Added Language and fixed Language-Team header of *.po (thanks to Ville Skyttä).
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- Fixed detecting frames on channels that broadcast with 50 or 60 fps.
  This avoids artifacts during fast forward/rewind when replaying recordings from such
  channels. To fix the index of existing recordings from such channels, just delete the
  'index' file of the recording and VDR will generate a new one the next time you play it.
  You should also change the line "F 25" to "F 50" in the 'info' file of that recording.
- Added support for "registration descriptor" to 'libsi' and using it in pat.c (thanks
  to Rolf Ahrenberg).
- Fixed unjustified log entries about changed channel pids (reported by Derek Kelly).
- Added an include of VDR's 'Make.global' to libsi's Makefile (thanks to Rolf
  Ahrenberg).
- Removed displaying the "contents" information from the "Classic VDR" and
  "ST:TNG Panels" skins, because it is often wrong and nothing but irritating.
- Added typecasts to avoid gcc 4.5 warnings in switch statements on eKeys
  variables where additional 'k_...' flags are used.
- Fixed inclusion of <stdarg.h> (thanks to Henning Heinold).
- Changed "frame duration" to "frame rate" in vdr.5 (reported by Tobias Grimm).
- Removing a cRemote from the Remotes list in case its initialization failed (thanks
  to Dominik Strasser).
- Added LDFLAGS to the linker calls in the Makefiles (thanks to Joerg Bornkessel and
  Paul Menzel).
- Now updating the 'frames per second' data in the list of recordings when a new
  recording is started that has a frame rate other than the default.
- The include path to the freetype2 header files is now retrieved via a call to
  'pkg-config --cflags freetype2' (suggested by Andreas Oberritter).
- The OSD now has full TrueColor support. There can be several "pixmaps" that can
  be overlayed with alpha blending. All existing skins should work out of the box
  with the TrueColor OSD - the only exception being cOsd::GetBitmap(). Since the
  TrueColor OSD doesn't use bitmaps, this function will return a dummy bitmap, which
  may not be what the plugin expects. As long as this bitmap is only used for setting
  the palette, there is no problem. However, any other operations on this bitmap will
  have no effect. See the description of the cPixmap functions in osd.h for details
  about the new functionalities.
  The "ST:TNG Panels" skin has been enhanced to automatically use the TrueColor OSD
  if available.
  The "osddemo" plugin has been extended to show some of the possibilities of the
  TrueColor OSD if it is run on a system that actually provides TrueColor support.
  Thanks to Reinhard Nissl for some valuable input, help with debugging, and an
  implementation of the AlphaBlend() function.
- Updated the Slovakian language texts (thanks to Milan Hrala).
- Added Serbian language texts (thanks to Milan Cvijanovic).
- Fixed reallocating memory in the "pictures" plugin (reported by Paul Menzel, with
  input from Oliver Endriss).
- Fixed reallocating memory in cTsToPes::PutTs() (suggested by Oliver Endriss).
- Now checking the result of all realloc() calls.
- Fixed setting up the 'Recordings' menu in case there are several recordings
  with exactly the same name (reported by Marcus Hilbrich).
- Setting the audio type of language descriptors to 0x00 in the PAT/PMT generator
  (thanks to Anssi Hannula).
- Changed the compiler optimization flag to -O3, which gives quite a performance
  boost in the AlphaBlend() function.
- While replaying, the editing marks are now updated every 10 seconds (based on a
  patch from Manuel Reimer).
- Now reducing the thread and I/O priority cCuttingThread::Action() to make the
  foreground process more responsive (suggested by Frank Neumann).
- Removed checking for minimum line length of 21 characters in the LIRC receiver code
  (reported by Gerald Dachs).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Now storing the original display size when handling DVB subtitles (thanks to
  Reinhard Nissl).
- The original display size of subtitles is now used to scale them properly when
  displaying them on an HD OSD.
2011-03-19 19:02:09 +01:00
Klaus Schmidinger
58db02442b Version 1.7.16
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Added missing Dtypes for ATSC (thanks to Alex Lasnier).
- Updated the Portuguese language texts (thanks to Cristiano A. Silva).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed the array size of Atypes in cPatFilter::Process() (thanks to
  Rolf Ahrenberg).
- Added locking to the cCutter functions to avoid a crash in case CutRecording()
  is called from a plugin (reported by Andreas Mair).
- Fixed DDS detection for HD resolution subtitles (thanks to Reinhard Nissl).
- Fixed following symbolic links in RemoveFileOrDir().
- Added support for languages that are written right-to-left (based on a patch
  from Osama Alrawab). See INSTALL for information on how to turn this on.
- Added Arabian language texts (thanks to Osama Alrawab).
2010-09-19 16:00:00 +02:00
Klaus Schmidinger
939081e274 Version 1.7.11
- Fixed resetting the file size when regenerating the index file.
- The new function cDevice::PatPmtParser() can be used in derived devices to access
  the PAT/PMT of the currently replayed material.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- The PCR pid in generated PMTs is now set to 0x1FFF ("no PCR pid") in
  cPatPmtGenerator::GeneratePmt(), because VDR doesn't record the PCR pid.
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- The 'sky' plugin is no longer part of the VDR source.
- Improved SPU handling on devices with limited OSD capabilities (thanks to
  Matthieu Castet).
- Several code modifications to avoid compiler warnings (thanks to Winfried Köhler).
- Added stream type 11172 AUDIO to cPatPmtParser::ParsePmt() (thanks to Johann
  Friedrichs).
- Removed debug output of '-' from cTransfer::Receive().
- Added defines for large files to the 'newplugin' script (reported by Udo Richter).
- Removed the workaround for short channel names of "Kabel Deutschland", because
  apparently they now have their data according to the DVB standard (thanks to
  Johann Friedrichs).
- Some fixes to dvbspu.[hc] (thanks to Johann Friedrichs).
- Fixed a busy loop when moving editing marks (thanks to Johann Friedrichs).
- Updated sources.conf (thanks to Derek Kelly).
- Modified cCharSetConv so that it can be used to convert from "whatever VDR uses"
  to a given code (thanks to Joachim Wilke).
- Channel names containing commas are now handled correctly in channels.conf.
  If a channel's short name contains a comma, it is replaced with a '.'.
- cDevice now logs the device number when a new device is created.
- Fixed handling STREAMTYPE_11172_AUDIO in cPatPmtParser::ParsePmt().
- cParsePatPmt now has functions to retrieve the audio, dolby and subtitle pids.
- cPatFilter::Process() now only stores CA descriptors for video and audio pids
  (thanks to Francesco Saverio Schiavarelli for reporting a problem with channels
  that have some encrypted components that VDR doesn't use).
- cDevice::AddPid() now stores the stream type of the given pid (thanks to Andreas
  Regel).
- Added cFont::FontName() and cFont::Size() (thanks to Andreas Regel).
- cPatPmtParser now also stores the audio stream types.
- The support for full featured DVB cards of the TT/FuSi design has been moved
  into the new plugin 'dvbsddevice'. On systems that use such a card as their
  primary device, this plugin now needs to be loaded when running VDR in order
  to view live or recorded video. If the plugin is not loaded, the card will
  be treated like a budget DVB card, and there will be no OSD or viewing
  capability.
- Fixed handling the "CA PMT" generation (revised a change not mentioned in version
  1.7.9's changes, which caused a malfunction with Conax and Viaccess CAMs).
- Fixed stopping subtitle display when switching the primary device (thanks to
  Anssi Hannula).
  IMPORTANT NOTE TO PLUGIN AUTHORS: a plugin that implements a derived cDevice
  class that can replay video must now call the MakePrimaryDevice() function of
  its base class.
- Fixed compiler warnings "format not a string literal and no format arguments"
  in some syslog calls (thanks to Rolf Ahrenberg).
- The new command line options --edit and --genindex can be used to edit a
  recording or generate its index without actually starting the entire VDR
  (based on a patch from Helmut Auer).
- Improved the description of the transponder parameters in vdr.5 (thanks to
  Winfried Köhler).
- Avoiding setting the video stream type to 2 if the vpid is 0 (problem reported
  by Arthur Konovalov).
- Implemented handling the "Content Descriptor" (based on a patch from Rolf
  Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the textual
  representation of the content descriptors as "genre". The epg.data file stores
  the genre using the tag character 'G'.
- Implemented handling the "Parental Rating Descriptor" (based on a patch from Rolf
  Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the parental
  rating (if given) in their event displays. The epg.data file stores
  the parental rating using the tag character 'R'.
  IMPORTANT NOTE: if VDR doesn't display a parental rating, this does not
  necessarily mean that the given programme is suitable for all audiences!
- Rearranged cEvent members to minimize memory waste.
- After a CLRE command, no further EPG processing is now done for 10 seconds,
  so that data sent with subsequent PUTE commands doesn't interfere with data
  from the broadcasters (suggested by Helmut Auer).
- Added support for DVB cards with multiple fontends. Note that this only
  works for DVB cards where each frontend can be used independently of all
  the others on the same adapter.
- Fixed plugin arguments corruption with glibc 2.11 on x86_64 (thanks to
  Anssi Hannula).
2010-01-06 13:34:00 +01:00
Klaus Schmidinger
991eda0067 Version 1.7.7
- The new function cDevice::GetVideoSize() returns the size and aspect ratio
  of the video material currently displayed. This function is used to determine
  the proper size of the OSD. Plugin authors should implement this function in
  classes derived from cDevice, if they are able to replay video.
- The OSD and font sizes are now defined in percent of the actual video display
  size. The maximum OSD size has been raised to 1920x1080, to allow full
  screen OSD on HD systems.
- The OSD size is now automatically adjusted to the actual video display
  (provided the output device implements the GetVideoSize() function).
- cFrameDetector::Analyze() now syncs on the TS packet sync bytes (thanks to
  Oliver Endriss for reporting broken index generation after a buffer overflow).
2009-05-03 17:15:00 +02:00
Klaus Schmidinger
c848ab793a Version 1.7.1
- Adapted the tuning code to the new DVBFE_SET_DELSYS API (thanks to Reinhard Nissl).
  VDR now uses the driver from http://jusst.de/hg/multiproto_plus.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Removed obsolete $(NCURSESLIB) from the Makefile.
- Implemented handling the standard component descriptor for AC3 (stream=4), as it
  will soon be used by the German ARD channels (thanks to Michael Pennewiß for
  advance information about this change). The previously used "Premiere pseudo
  standard" (stream=2, type=5) still works, but has apparently been wrongfully used
  by broadcasters from the beginning.
- Added missing description of the 'S' channel parameter to vdr.5 (reported by
  Reinhard Nissl).
- The SVDRP signon message now indicates the character encoding in use, as in
  "220 video SVDRP VideoDiskRecorder 1.7.1; Fri May  2 16:17:10 2008; ISO-8859-1".
  This may be useful for instance for external tools that provide EPG data, so that
  they can correctly encode the strings.
- No longer calling FcFini() to avoid problems with older (broken) versions of
  fontconfig (suggested by Edgar Toernig).
- Removed the compile time option VFAT to allow users of precompiled binary
  distributions to have full control over whether or not to use the --vfat option
  at runtime (suggested by Michael Nork).
- First step towards switching to TS (Transport Stream) as recording format:
  + The new function cDevice::PlayTs() is used to play TS packets.
  + The new functions cDevice::PlayTsVideo() and cDevice::PlayTsAudio()
    are used to play video and audio TS packets, respectively.
  + The new function cAudio::PlayTs() is used to play audio TS packets.
  + The new class cPatPmtGenerator is used to generate a PAT/PMT pair that precedes
    the TS data in Transfer Mode.
  + The new class cPatPmtParser is used by cDevice to parse the PAT/PMT data in a
    TS in order to find out which streams it contains.
  + The new class cTsToPes is used to convert TS packets to a PES packet.
  + cTransfer no longer uses cRemux, and doesn't run a separate thread any more.
    It just generates a PAT/PMT and sends all received TS packets to the primary
    device's PlayTs().
  + Live subtitle display no longer uses a ring buffer and separate thread.
  + cPesAssembler has been removed. Old VDR recordings only contain complete PES
    packets.
  + Since a TS needs to have a PAT/PMT, which requires the video stream type to
    be explicitly given, the format of the VPID field in the channels.conf file
    and the SVDRP commands NEWC/MODC/LSTC has been extended. The video stream type
    now follows the VPID and optional PPID, separated by an '=' sign.
- Updated the sources.conf file (thanks to Oleg Roitburd).
- Fixed a possible integer overflow in GetAbsTime() (thanks to Alexander Rieger).
- Fixed a problem with calling isyslog() from within the SignalHandler() (thanks
  to Udo Richter).
- Replaced the Finnish language code "smi" with "suo" (thanks to Rolf Ahrenberg).
- Fixed wrong value for TableIdBAT in libsi/si.h (thanks to Winfried Köhler).
- Errors in config files no longer keep VDR from starting.
- Removed unneeded include files <linux/dvb/dmx.h> und <time.h> from remux.h
  (reported by Tobias Grimm).
2008-09-06 18:00:00 +02:00
Klaus Schmidinger
771986b89f Version 1.7.0
- Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was
  revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now
  requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto.
  Note that the channels.conf file now supports additional parameters, so you may
  want to make sure you have a backup of this file in case you need to go back to
  the previous version of VDR!
- Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl).
- Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
  Nissl).
- Improved logging system time changes to avoid problems on slow systems under
  heavy load (suggested by Helmut Auer).
- Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf
  Ahrenberg).
- Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
  Andreas Mair).
- Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald).
- Increased the time between checking the CAM status to 500ms to avoid problems
  with some CAMs (reported by Arthur Konovalov).
2008-04-13 18:00:00 +02:00
Klaus Schmidinger
0872cba0a1 Version 1.5.17
- Updated the Swedish OSD texts (thanks to Tomas Berglund).
- Made the 'pic2mpg' script of the 'pictures' plugin work with uppercase filename
  extensions and relative paths (thanks to Stefan Wagner for reporting this one).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the Dutch OSD texts (thanks to Johan Schuring).
- Stripping control codes 0x86 and 0x87 from SI strings.
- Updated French language texts (thanks to Jean-Claude Repetto).
- Fixed handling 3 and 4 byte UTF-8 symbols in Utf8CharGet() (thanks to Andreas
  Mair).
- Fixed a crash in cFreetypeFont::DrawText() if an unknown symbol is encountered
  (thanks to Tobias Grimm). Unknown symbols are replaced with a '?'.
- Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
- Updated the Czech OSD texts (thanks to Vladimír Bárta and Jiri Dobry).
- Updated the Turkish OSD texts (thanks to Oktay Yolgeçen).
- The 'plugins' target in the Makefile now returns an error exit code if one of the
  plugins failed to compile (suggested by Tobias Grimm).
- Rendering the non-breaking space symbol as a blank (thanks to Tobias Grimm).
- Changed the default character set for SI data from ISO6937 (as required by the DVB
  standard ETSI EN 300 468) to ISO-8859-9, in order to work around the stupidity of
  some providers, who actually use ISO-8859-9, but fail to correctly announce that.
2008-03-02 18:00:00 +01:00
Klaus Schmidinger
9279cb21cd Version 1.5.15
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Added option -i to the pictures plugin's pic2mpg to ignore unknown file types.
- Revoked the switch to the "multiproto" driver in order to make a new stable
  version before making this big switch and forcing all users to install a
  driver that is not yet in the kernel source. The removed code will reappear
  in version 1.7.0.
  Note that you may need to switch back to an older version of your channels.conf
  file if you have already used version 1.5.14, because it introduced new parameters.
- Added the new command line option --userdump to enable core dumps in case VDR
  is run as root with option -u (thanks to Hans-Werner Hilse).
- Speeded up anti-aliased font rendering by caching the blend indexes (based on
  a suggestion by Martin Wache).
- Fixed setting the OSD area in the pictures plugin.
- Ignoring "repeat" and "release" keys in the time search entry mode during replay,
  to avoid inadvertently leaving it in case a key is pressed too long (suggested
  by Andreas Brugger).
- Improved sending all frames to devices that can handle them in fast forward
  trick speeds, including subtitles (thanks to Timo Eskola).
- The section handler is now stopped before the device is destroyed, to avoid
  accessing file handles after they have become invalid (thanks to Reinhard
  Nissl for reporting an invalid access when ending VDR, and to Deti Fliegl for
  a patch that was used to implement StopSectionHandler()).
- Fixed setting the date in the channel display of the classic and sttng skins,
  to avoid unnecessary OSD access (thanks to Marco Schlüßler).
- The free disk space is now also displayed in the title of the "Recordings"
  menu (suggested by Walter Koch).
- Changed the message "Upcoming VPS recording!" to "Upcoming recording!" because
  it applies to non-VPS recordings as well.
- Fixed a loss of a timer's 'recording' flag after modifying it via MODT.
- Fixed detecting directories in cFileNameList::Load().
- Running the thread that removes deleted recordings at a low priority to (maybe)
  avoid stuttering replay in case the thread is run during replay.
- Limiting the length of the recording name in timers in case VDR is run with
  --vfat, in order to avoid names that are too long for Windows (suggested by Rolf
  Ahrenberg).
- Using cString::sprintf() instead of asprintf() (thanks to Wolfgang Rohdewald
  for pointing out a possible problem if the return value is not checked).
  Plugin authors may want to consider doing the same. For convenience there is now
  an additional version of cString::sprintf() that accepts a va_list parameter.
- When deleting the recording that is currently replayed, the replay is now
  stopped immediately (thanks to Mikko Matilainen for reporting a possible crash
  if the Info key is pressed after deleting the currently replayed recording).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- When determining the amount of free disk space, any deleted (but not yet removed)
  recordings on different file systems (that are mounted under the video directory)
  are no longer taken into account.
- When running out of disk space during a recording, only such deleted or old
  recordings are removed, that actually are on the video directory file system(s).
  This prevents VDR from accidentally deleting recordings on other file systems,
  which would not add any free space to the video directory.
- Implemented the cStatus, cDevice and cPlayer functions for setting subtitle tracks
  in plugins (thanks to Petri Hintukainen).
- Added cStatus::TimerChange() to inform plugins about changes to the list of timers
  (based on a patch from Benedikt Elser).
- Added new cStatus functions to the 'status' plugin.
- Added missing #include <limits.h> to epg.c and menuitems.h (thanks to Ville Skyttä).
- The new function cSkin::SetScrollbar() can be implemented by skins to display
  a scrollbar in every list menu. The 'classic' and 'sttng' skins have been
  changed accordingly, as well as the 'skincurses' plugin.
- Introduced 'operator const void * ()' in cString to catch cases where operator*()
  should be used.
- Fixed calculating the scrollbar sizes in the skins.
2008-02-17 18:00:00 +01:00
Klaus Schmidinger
182cd78af0 Version 1.5.11
- Fixed checking compatibility mode for old subtitles plugin (thanks to Marco
  Schlüßler).
- Updated the French OSD texts (thanks to Michael Nival).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- The "Play" key now starts replay of the selected recording in the Recordings
  menu (thanks to Ville Skyttä);
- Improved shutdown handling (thanks to Udo Richter).
- Housekeeping now waits for a while after a replay has ended (thanks to Udo Richter).
- Added more special characters to the list of allowed characters when entering
  strings (thanks to Thomas Günther).
- Added Ukrainian language texts (thanks to Yarema Aka Knedlyk).
- Added a workaround for recovering from wrongfully interpreted "pre 1.3.19 PS1 packets".
- Fixed a possible blocking in replay when subtitles are active.
- Fixed displaying subtitles in live mode.
- Fixed handling CONFDIR (thanks to Rolf Ahrenberg).
- Added some missing 'const' keywords (thanks to Sascha Volkenandt).
- The 'Allowed' parameter in cMenuEditStrItem() is now NULL by default, which results
  in using tr(FileNameChars) (suggested by Thomas Günther).
- Added a missing '.' to the date returned by DayDateTime() (thanks to Lauri Nurmi).
- Improved the 'i18n' target in the Makefile to avoid unnecessary work (thanks to
  Stefan Huelswitt). The 'newplugin' and 'i18n-to-gettext.pl' scripts have been
  changed accordingly. Plugin authors may want to adjust the 'i18n' target
  of their Makefiles.
- Fixed a crash if no fonts are found (thanks to Mario Ivankovits and Clemens
  Kirchgatterer).
- Fixed decoding filename characters in case there are not two hex digits after
  the '#' (reported by Helmut Auer).
2007-11-04 18:00:00 +01:00
Klaus Schmidinger
a9c7f0de90 Version 1.5.5
- Fixed a name clash between skincurses.c and the new cOsd position functions.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Changed the parameter "OSD font size" to "Default font size" in "Setup/OSD".
- Fixed handling address masks in SVDRP host settings (thanks to Frank Schmirler).
- Fonts can now be created with a width that overwrites the default width (thanks
  to Andreas Mair).
- Added full weekday names to i18n.c for plugins to use (thanks to Patrice Staudt).
  The new function WeekDayNameFull() can be used to get these names from integer
  values (just like the abbreviated weekday names).
- Fixed stripping i18n stuff from font names (reported by Anssi Hannula).
- Improved performance of the SVDRP commands LSTC and CHAN when used with a
  channel name.
2007-06-23 18:00:00 +02:00
Klaus Schmidinger
b1e4da3be6 Version 1.5.4
- Increased APIVERSION (forgot to do that in 1.5.2 and 1.5.3).
- Fixed a crash in i18n character set conversion (thanks to Alexander Riedel,
  Jose Alberto Reguero and Christian Wieninger for patches that cured part of
  the problem).
- Adjusted the 'skincurses' plugin to UTF-8 handling.
- Using nl_langinfo(CODESET) to determine the local codeset to use (thanks to
  Thomas Günther). The codeset names in 'libsi/si.c' have been changed to the
  canonical spelling with '-' (thanks to Ludwig Nussel for pointing this out).
- Modified handling invalid characters in VFAT mode.
- Replaced strn0cpy() with Utf8Strn0Cpy() where necessary.
- Now using 'fontconfig' to determine which fonts to use (thanks to Anssi Hannula
  for code and hints on how to do this).
- If no fonts are installed, VDR now uses a dummy font that doesn't actually draw
  any text, and logs an error message.
- The new function cFont::CreateFont() can be used by plugins to create and use
  fonts of their own, independent of VDR's standard fonts.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Changed the parameter "OSD font" to "Default font" in "Setup/OSD" (suggested
  by Rolf Ahrenberg).
- Fixed handling detached processes in SystemExec() (thanks to Udo Richter).
- The info.vdr file now also stores the name of the channel, and the new function
  cRecordingInfo::ChannelName() returns this information if available (based on
  a patch from Alexander Hans).
- The new function cOsd::SetOsdPosition() can be used to dynamically change the
  position and size of the OSD (based on a request from Christoph Haubrich).
  Plugins that implement skins should no longer use Setup.OSDWidth etc. directly,
  but should rather use cOsd::OsdWidth() etc. instead.
  Currently a change to the OSD position will only apply to newly opened OSDs.
2007-06-17 18:00:00 +02:00
Klaus Schmidinger
b9b9ace9a8 Version 1.5.3
- Fixed some spelling errors in 'newplugin' (thanks to Ville Skyttä).
- Fixed a busy loop in fast forward if the next video data file is missing
  (thanks to Reinhard Nissl).
- Fixed handling frequencies in NitFilter::Process() (thanks to Anssi Hannula).
- Fixed a race condition with signal handlers at program exit (thanks to Udo
  Richter).
- Non-primary devices in Transfer mode are now also used for recording (thanks
  to Anssi Hannula).
- Fixed handling ChannelUp/Down keys if there is currently a replay running
  (thanks to Marco Schlüßler).
- The new SVDRP command REMO can be used to turn VDR's remote control off and
  on in case other programs need to be controlled (based on patches from Krzysztof
  Parma and Helmut Auer).
- Increased the maximum number of CA system ids to cope with the AlphaCrypt
  CAM's version 3.11 firmware.
- Fixed getting the code setting from the locale (thanks to Matthias Schwarzott).
- Implemented support for Freetype fonts (based on a patch from Alexander Riedel).
  The font names and sizes can be adjusted in the "Setup/OSD" menu.
  Note that VDR now requires freetype fonts to be installed in
  /usr/share/fonts/truetype.
- If the OSD device in use has at least 8bpp bitmap depth and this is also
  used by the current skin, Freetype fonts are displayed "anti-aliased".
  The new setup parameter "OSD/Anti-alias" can be used to turn this off.
- The new function cOsd::SetAntiAliasGranularity() can be used to help the OSD
  in managing the available color palette entries when doing anti-aliasing.
  Skins that use 8bpp bitmaps can call this function with the maximum number
  of colors used, and the maximum number of color combinations. The OSD will
  then evenly split the available palette entries between the various colors
  combinations, so that fonts can be "anti-aliased". By default a total of
  10 colors and 10 combinations is assumed.
- The pixel fonts have been completely removed from the VDR source.
- VDR is now "UTF-8 aware". It handles strings according to the character
  encoding used on the user's system. All internationalization strings and
  incoming SI data are converted to the system encoding.
- Plugins that handle strings need to be aware that on systems with UTF-8
  encoding a "character symbol" may consist of more than a single byte in
  memory. The functions and macros named Utf8...() can be used to handle
  strings without needing to care about the underlying character encoding
  (see tools.h for details).
- Even though the weekdays of repeating timers are presented to the user as UTF-8
  characters in the OSD, the timers.conf file and the SVDRP timer commands still
  use single byte characters ("MTWTFSS") to make sure this information is handled
  correctly between systems with different character encodings.
- Added a missing i18n string for "CAM" in the Turkish OSD texts.
- Improved editing strings that are too long to fit into the editable area.
- Changes to the OSD settings in the "Setup/OSD" menu now immediately take effect
  when the "Ok" key is pressed.
2007-06-10 18:00:00 +02:00
Klaus Schmidinger
a592125294 Version 1.5.2
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed handling user activity for shutdown, which I had messed when adopting Udo's
  original patch (thanks to Udo Richter).
- Added Turkish language texts (thanks to Oktay Yolgeçen).
- Added missing rules for generating iso8859-13 font to Makefile.
- 'libsi' now converts the incoming strings into the system's character set
  according to the DVB standard. The system's character set is determined from
  the LANG environment variable. If no recognizable setting can be found, no
  conversion will take place. Note that currently only the strings received from the
  SI data stream are converted, there have not been any changes regarding displaying
  UTF-8 characters on the OSD, yet - this will follow in one of the next steps.
  With this conversion, it should now be safe to run VDR on a UTF-8 file system,
  because all incoming characters are converted to UTF-8. This will most likely
  result in wrong characters being displayed on the OSD (because there UTF-8 is
  not known, yet), but the file names should be ok (haven't tested this myself,
  though, because I don't do UTF-8 - so please be very careful when testing!).
  There's one piece of bad news here: the German pay-tv broadcaster Premiere
  apparently encodes all EPG strings as ISO8859-1, but fails to correctly mark
  these strings as such. Therefore 'libsi' (following the DVB standard) considers
  the strings to be encoded in the default ISO6937 and converts them to whatever
  the system's character set is. This, of course, results in wrong umlauts.
  On its old transponder, the ProSieben/SAT.1 channels also had their EPG data
  wrongly encoded, but apparently on the new transponder they started broadcasting
  on this month, they got it right.
2007-04-22 18:00:00 +02:00
Klaus Schmidinger
293ed4027e Version 1.3.47
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed a crash when setting the time transponder in the Setup menu, caused by the
  new 'noneString' in cMenuEditChanItem (reported by Thomas Günther).
- Added NULL checks to some strdup() calls in menuitems.c (suggested by Darren
  Salt).
- Removed the unnecessary 'value' member from cMenuEditItem.
- Fixed the initial setting of the time transponder setup parameter (reported
  by Thomas Günther).
- Fixed unnecessary Set() calls in cMenuEditIntItem::ProcessKey().
- Allowing a tolerance for symbol rate values that are off by one (thanks to
  Richard Lithvall).
- Added VBITeletextDescriptorTag, TeletextDescriptorTag, LocalTimeOffsetDescriptorTag
  and PremiereContentTransmissionDescriptor to 'libsi' (thanks to Marco Schlüßler).
- Using geteuid() to check whether VDR is running as user 'root' (suggested by
  Tobias Grimm).
- Added a missing "Key$" in skincurses.c (reported by Darren Salt).
- Reintroduced the log message "deleting plugin: ..." when shutting down VDR (upon
  request by Ville Skyttä, as in the initial patch from Christoph Haubrich).
- Fixed the vdr.1 man page (a single DVB card can record and do live tv).
- The preferred audio language is now automatically selected when starting replay.
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- The new function cPlugin::Active() can be used by a plugin to indicate that it
  is still busy and the system should not shut down or restart (based on a patch
  from Sascha Volkenandt). See PLUGINS.html for details.
- Fixed setting the 'Delta' parameter when calling the shutdown script with
  no active timer (reported by Helge Lenz).
- In order to make sure that plugins are compiled with the same DVB driver header
  files as VDR itself, the definition of DVBDIR has been removed from the VDR
  Makefile. If you are using a driver version that has its header files at a location
  other than /usr/include/linux/dvb, you can define DVBDIR in the Make.config
  file (see also INSTALL). Note that if you already have a Make.config file of your
  own, you should add the lines

  ifdef DVBDIR
  INCLUDES += -I$(DVBDIR)/include
  endif

  to its end, as in the new Make.config.template.
  Any reference to DVBDIR should be removed from all plugins' Makefiles, like this:

  ------------------------------------------------------------
  --- PLUGINS/src/hello/Makefile  2005/11/11 13:20:14     1.10
  +++ PLUGINS/src/hello/Makefile  2006/04/15 11:58:46     1.11
  @@ -20,7 +20,6 @@

   ### The directory environment:

  -DVBDIR = ../../../../DVB
   VDRDIR = ../../..
   LIBDIR = ../../lib
   TMPDIR = /tmp
  @@ -40,7 +39,7 @@

   ### Includes and Defines (add further entries here):

  -INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR)/include
  +INCLUDES += -I$(VDRDIR)/include

   DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
  ------------------------------------------------------------

  Thanks to Marco Schlüßler for pointing out this problem.
- Implemented kNext and kPrev keys (based on a patch from Peter Juszack).
  See MANUAL for details.
- Implemented kChanPrev (from a patch from Darren Salt).
- The "Update channels" parameter in the "Setup/DVB" menu has been extended to
  allow updating only the PIDs (see MANUAL for details). When updating to this
  version of VDR, please verify that the setting is as you want it to be, because
  the values have been shifted.
- The new APIVERSION (see config.h) now allows existing compiled plugins to be
  used with newer versions of VDR, as long as there have been no changes to the
  VDR header files since the last APIVERSION. Existing plugins' Makefiles should
  have all references to VDRVERSION changed to APIVERSION, like this:

  ------------------------------------------------------------
  --- PLUGINS/src/hello/Makefile  2006/04/15 11:58:46     1.11
  +++ PLUGINS/src/hello/Makefile  2006/04/16 09:03:50     1.12
  @@ -28,9 +28,9 @@

   -include $(VDRDIR)/Make.config

  -### The version number of VDR (taken from VDR's "config.h"):
  +### The version number of VDR's plugin API (taken from VDR's "config.h"):

  -VDRVERSION = $(shell grep 'define VDRVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g')
  +APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)

   ### The name of the distribution archive:

  @@ -67,7 +67,7 @@

   libvdr-$(PLUGIN).so: $(OBJS)
          $(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
  -       @cp $@ $(LIBDIR)/$@.$(VDRVERSION)
  +       @cp $@ $(LIBDIR)/$@.$(APIVERSION)

   dist: clean
          @-rm -rf $(TMPDIR)/$(ARCHIVE)
  ------------------------------------------------------------
- If a timer is newly created from within the "Schedule" menu, and its event is
  already running or has its start time within the next two minutes, it now goes
  directly into the "Edit timer" menu in order to allow the user to make further
  changes to timer parameters before the actual recording starts (inspired by
  Christian Wieninger's "epgsearch" plugin).
- Added format check to syslog_with_tid().
- Updated the INSTALL file's section about non-VDR files in the video directory
  (since version 1.3.38 disk access is done in a separate thread, so the watchdog
  timer won't hit).
- Changed the behaviour of the "Use small font" setup option to *always* use the small
  font if set to '2' - even if it would have been a fixed font (suggested by Ronny
  Kornexl).
- No longer using characters 0x01 and 0x02 for mapping single quote and slash in
  recording names (thanks to Patrick Fischer for reporting that this was a problem
  with XML). The single quote is not mapped at all, and the slash is interchanged
  with the tilde. Existing recordings will be handled like before, so there is
  no need to actually rename them.
- The cRemote::CallPlugin() function now has a boolean return value that tells
  the caller whether initiating the plugin call was successful (suggested by
  Reinhard Nissl). If it returns false, another plugin call is currently pending
  and the caller should try again later. This also means that the SVDRP command
  PLUG can now return an error code is the call fails.
- The new function cPlugin::MainThreadHook() can be used by plugins to perform
  actions in the context of the main program thread. Use this function with great
  care and only of you absolutely have to! See also PLUGINS.html.
2006-04-17 18:00:00 +02:00
Klaus Schmidinger
c23992b807 Version 1.3.42
- Removed leftover 'needsBufferReserve' variable from cTransfer (thanks to Marco
  Schlüßler).
- Fixed setting "No title" for broken event data (reported by Ronny Kornexl).
- Fixed channel up/down switching on single card systems (reported by Stefan
  Huelswitt).
- Fixed handling "pending" timers that blocked others that actually could record
  (reported by Thomas Koch).
- Speeded up cVideoRepacker (thanks to Reinhard Nissl).
- Added an 'Id' parameter to cDevice::PlayAudio() to allow plugins to easier
  process the audio data (thanks to Marco Schlüßler).
- Added Czech language texts (thanks to Vladimír Bárta).
  Plugin authors may want to add the new entries to their I18N texts and contact
  the translators to have their texts translated. Note that there are now 21
  different OSD languages, so please make sure you have 21 versions for each of
  your texts.
- Updated the Polish OSD texts (thanks to Jaroslaw Swierczynski).
- Fixed auto advance in string entry fields when pressing Up/Down in insert mode
  (reported by Udo Richter).
- Fixed handling the "Setup/OSD/Menu button closes" option when set to 'yes' in
  case a replay is active (thanks to Udo Richter).
- Improved cUnbufferedFile; USE_FADVISE is now defined in tools.c by default, so
  if you don't want to use "fadvise" you need to comment out that line (thanks to
  Artur Skawina).
- Fixed a missing ',' in the Swedish OSD texts (thanks to Arthur Konovalov).
- cDevice::Transferring() can now be used to determine whether the (primary)
  device is currently playing in Transfer Mode (based on a suggestion by
  Reinhard Nissl).
- The 'runvdr' script no longer uses the $VDRUSR environment variable to set
  the user id under which 'vdr' shall run. Just add the '-u username' option
  when you call 'runvdr'.
- Fixed multiple entries of the same subdirectory in the "Recordings" menu
  (reported by Christian Jacobsen).
- Enabled generating a core dump if VDR is run with a different user id (thanks
  to Ville Skyttä).
- Fixed handling the "Blue" key in the "Schedule" menu for the current channel
  (thanks to Rolf Ahrenberg).
- Renamed the Makefile target 'plugins-clean' to 'clean-plugins' (suggested by
  Sebastian Frei).
- Made all font and image data 'const' (thanks to Darren Salt).
- Fixed scrolling with Up/Down in case there are non-selectable items at the
  beginning or end of the menu (reported by Helmut Auer).
- Added cSkin::GetTextAreaWidth() and cSkin::GetTextAreaFont(), so that a plugin
  that wants to do special text formatting can do so (thanks to Alexander Rieger).
2006-02-05 18:00:00 +01:00
Klaus Schmidinger
e36fe18c48 Version 1.3.19
- Making sure at least the default skin is available at program start in case a
  plugin needs to issue an error message (thanks to Achim Tuffentshammer for
  reporting a crash in such a case). Also checking if there is a current skin
  in cSkins::Message().
- Completed the Finnish OSD texts and fixed internationalization of the text
  for "Setup/DVB/Audio language(s)" (thanks to Rolf Ahrenberg).
- Completed the Estonian OSD texts and switched to iso8859-13 character set
  (thanks to Arthur Konovalov).
- Made cCondWait::SleepMs() sleep at least 3ms to avoid a possible busy wait.
- Fixed canceling the LIRC thread (thanks to Marco Schlüßler for pointing out
  this one).
- The "Green" button in the "Main" menu is now always "Audio", since the audio
  channel might be changed even if there is only one actual audio PID.
- Fixed handling the '-E' option which was broken in version 1.3.18 (thanks to
  Christian Jacobsen for reporting this one).
- Added 'channels.conf.terr' entries for Mainz (thanks to Michael Heyse).
- Implemented cDolbyRepacker for better handling of Dolby Digital PES packets
  (thanks to Reinhard Nissl).
- Fixed playing files with PES packets longer than 2048 byte through the full
  featured DVB card (thanks to Marco Kremer for reporting this one and providing
  a test sample).
- Recording and Transfer Mode now handle more than 2 audio PIDs. For this the
  interfaces of the following functions have been changed:
  cTransferControl::cTransferControl()
  cTransfer::cTransfer()
  cRecorder::cRecorder()
  cReceiver::cReceiver()
  cRemux::cRemux()
- Fixed a possible race condition in cDevice::Action() and cTSBuffer::Action()
  (thanks to Stefan Huelswitt).
- Extended some buffer sizes to allow handling HDTV streams (thanks to Reinhard
  Nissl).
- Added 'channels.conf.terr' entries for Düsseldorf and Köln (thanks to Walter Koch).
- Falling back to 'stereo' when switching channels in case the user had switched
  to 'left' or 'right' (suggested by Rolf Groppe).
- Completed the Danish OSD texts (thanks to Mogens Elneff).
- Recording and Transfer Mode can now handle up to 8 Dolby Digital tracks (thanks
  to Marco Schlüßler for a patch that implements substream handling into
  cDevice::PlayPesPacket(), and Reinhard Nissl for adding substream handling to
  cDolbyRepacker).
- Added PlayPes(NULL, 0) to cTransfer::Action() when clearing the transfer buffer
  to avoid overflows (thanks to Marco Schlüßler for pointing this out).
2005-01-23 18:00:00 +01:00
Klaus Schmidinger
fb5cccb2df Version 1.3.18
- Removed an unused variable from cTimer::GetWDayFromMDay() (thanks to Wayne Keer
  for reporting this one).
- Some more changes to the 'childTid' handling in cThread (based on suggestions by
  Stefan Huelswitt).
- Fixed the spelling of 'canceling' (thanks to Wayne Keer for reporting this one).
- Re-introduced a sleep to cDvbPlayer::Action() to avoid high CPU load in still
  picture mode (thanks to Reinhard Nissl for reporting this one).
- Fixed a possible race condition in generating the DVB device names (thanks to
  Rainer Zocholl for reporting this one).
- Changed the way PES packets are played to allow replay of AC3 sound over the
  full featured DVB cards (partially based on a patch from Werner Fink).
  + The new function cDevice::PlayPes() is now called with the complete PES data
    stream and calls PlayVideo() and PlayAudio() as necessary.
  + cDevice::PlayVideo() is now only called with actual video PES packets.
  + cDevice::PlayAudio() is now called with the actual audio PES packets, which
    can be either "normal" audio or AC3 data. You need at least firmware version
    0x261d to replay AC3 sound over a full featured DVB card. This function now
    has an 'int' return value.
  + PlayAudio() of derived cDevice classes shall no longer call the base class
    function. It shall just play the given data as audio.
  + cPlayer::PlayVideo() and cPlayer::PlayAudio() are now obsolete and have been
    replaced with cPlayer::PlayPes().
  + All StripAudioPackets() functions are now obsolete. The functionality has been
    moved into cDevice::PlayPes(), where only the video and audio packets that are
    actually required will be processed.
  + All audio track handling is now done by cDevice; cTransfer and cDvbPlayer no
    longer care about audio tracks. cPlayer, however, still has the virtual hooks
    for audio track handling in order to allow plugins to implement players that
    have their own idea about this.
  + cChannel::[AD]pid[12]() have been replaced with cChannel::[AD]pid(int i) to
    allow access to all available PIDs.
- Escaped the '-' and 'ö' characters in the man pages (thanks to Darren Salt for
  pointing this out).
- Completed the Italian OSD texts (thanks to Sean Carlos).
- Fixed setting 'synced' in cRemux when recording radio channels (thanks to
  Laurence Abbott).
- Removed the LOCK_THREAD from the LIRC thread (thanks to Ludwig Nussel).
- Fixed genfontfile.c (sometimes the character width was wrong, and the codes were
  shifted one too far to the left).
- Fixed the character width and shifted the codes one to the right in all font
  files.
- Renamed font???.c to font???-iso8859-1.c for symmetry.
- Switched the character set to iso8859-15 for English, German and Finnish (thanks
  to Andreas Brugger for reporting the missing Euro sign in iso8859-1).
- Added 'channels.conf.terr' entries for Lübeck (thanks to Stefan Hußfeldt).
- Fixed a race condition in starting a thread (thanks to Reinhard Nissl for
  reporting this one).
- Replaced non-threadsafe library functions with their threadsafe versions (thanks
  to Rainer Zocholl for pointing this out).
- Other non-threadsafe functions have been replaced by threadsafe classes that hide
  the actual buffering. In particular these are:
  readdir() -> cReadDir
  readline() -> cReadLine
- Several formerly non-threadsafe functions now have a return type of cString:
  cChannel::ToText()
  tChannelID::ToString()
  cEvent::GetDateString()
  cEvent::GetTimeString()
  cEvent::GetEndTimeString()
  cEvent::GetVpsString()
  cMark::ToText()
  cTimer::ToText()
  cSource::ToString()
  cTimer::PrintDay()
  cTimer::PrintFirstDay()
  PrefixVideoFileName()
  IndexToHMSF()
  ChannelString()
  strescape()
  AddDirectory()
  itoa()
  WeekDayName()
  DayDateTime()
  When using these functions in a 'const char *' context there is nothing special
  to consider, except that you can no longer have a pointer to the return value,
  as in
  const char *date = DayDateTime();
  Although this will compile without error message, the resulting 'date' will not
  be valid after this line. Use this instead:
  cString date = DayDateTime();
  In a 'const void *' context (as in printf() etc.) the result needs to be
  dereferenced with a '*', as in
  printf("%s", *DayDateTime());
  to make it a 'const char *'.
- Removed delay_ms(), using cCondWait::SleepMs() instead.
- Replaced time_ms() with a threadsafe and non-overflowing cTimeMs (thanks to Rainer
  Zocholl for pointing out this problem).
- Added cDevice::mutexReceiver to avoid a race condition when attaching/detaching
  receivers from different threads.
- The new remote control button "Audio" can be used to switch between different
  audio tracks. The "Green" button in the "Main" menu has been changed from "Language"
  to "Audio", since it now also controls switching between normal and Dolby Digital
  audio tracks (see MANUAL for details).
- The description of the audio tracks is now taken from the "component descriptors"
  that are broadcast in the EPG data. However (as no big surprise), not all channels
  actually provide useful data here, so there are now some additional EPG bugfixes,
  which can be activated by setting the "EPG bugfix level" to 3.
- The format of the 'epg.data' files has been extended by the new tag 'X', which
  contains the stream components of an event (see man vdr(5) for details).
- The cStatus class now has the new member function SetAudioTrack(), which can be
  used to get notified when the audio track has been switched, and the new member
  function SetAudioChannel() which is called when the audio channel is changed.
- Skins need to implement the new cSkinDisplayTrack class to display the audio
  track menu.
- The ST:TNG skin now displays the current audio track description (if any) at the
  botton left side.
- The new setup option "DVB/Audio languages" can be used to control which audio
  language shall be selected in case a channel broadcasts in different languages
  (see MANUAL for details).
- The "Left" and "Right" keys in the "Audio" menu can be used to switch between
  the left and right stereo channels in case there are different audio tracks
  in these channels (see MANUAL for details).
- Fixed a possible race condition in cDevice::Action() (thanks to Mattias Grönlund).
- Fixed the default quality value when grabbing a JPEG image (thanks to Patrick
  Gleichmann).
- Fixed deleting a menu item in case the next item is not selectable (thanks to
  Dino Ravnic).
- Implemented displaying mandatory subtitles in the SPU decoder (thanks to Marco
  Schlüßler).
- The setup option "Recording/Record Dolby Digital" has been renamed and moved to
  "DVB/Use Dolby Digital". It now controls whether Dolby Digital is recorded and
  whether an available DD audio track will appear in the "Audio" menu.
- Added support for circular polarization (thanks to Jonan Santiago).
- Thanks to Werner Fink, Reinhard Nissl, Sascha Volkenandt and Bjørnar Nilsen for
  their support in testing and fine tuning this version.
2005-01-09 18:00:00 +01:00
Klaus Schmidinger
6f93a5f781 Version 1.3.14
- Fixed detecting transponder lock in cDvbTuner (based on a patch from Stefan
  Meyknecht).
- What was previously marked with WAIT_FOR_LOCK_AFTER_TUNING is now permanently
  active and uses a cCondVar to signal when a transponder is locked.
- Added some missing 'const' to cChannel.
- Added a sample setup for 'DisiCon-4 Single Cable Network' to 'diseqc.conf'
  (thanks to Oliver Endriss).
- Fixed attaching a cPlayer to a cDevice, so that 'Operation not permitted'
  errors don't occur any more (thanks to Marco Schlüßler).
- Fixed a case where the resultBuffer in cRemux ran full before getting a sync.
- Removed the usleep() call from cDvbPlayer::Action() to make VDR run on NPTL
  systems (thanks to Alfred Zastrow). The NPTL check at startup has also been
  removed.
- Taking the complete size of available data into account when deciding whether
  to clear the transfer buffer to avoid overflows (thanks to Reinhard Nissl).
- Updated Romanian language texts and the iso8859-2 fonts (thanks to Lucian Muresan).
- Now actually using the iso8859-15 fonts (thanks to Lucian Muresan).
- Some minor code cleanups (thanks to Prakash K. Cheemplavam).
- Fixed missing cleanup at program exit in case there is a problem with a plugin
  (thanks to Mattias Grönlund for pointing this out).
- Increased the required free buffer space in the resultBuffer of cRemux to
  2 * IPACKS to avoid a buffer overflow in case a cTS2PES writes one complete
  packet and then (within processing the same TS packet) wants to write another
  small packet.
- Removed the signal handler and WakeUp() call from cThread (it is no longer
  needed).
- Added some checks when canceling a thread and removed the usleep() in
  cThread::Start() (suggested by Ludwig Nussel). Also removed 'running' from
  cThread and using only childTid to indicate whether a thread is actually
  running.
- Added cCondWait::Sleep() and using it to replace all usleep() calls (based
  on a suggestion by Werner Fink).
- Only assigning events to timers if the related schedule has actually been
  modified.
- When searching for the present event, the running status is now only taken
  into account if the event has been "seen" within the past 30 seconds.
  This avoids shortly seeing the wrong events in the channel display when
  switching to a channel that hasn't been tuned to in a while.
2004-10-24 18:00:00 +02:00
Klaus Schmidinger
b81bf2d1c9 Version 1.3.9
- Completed Croatian language texts (thanks to Drazen Dupor).
- New iso8859-2 font to fix the problem with program freezes (thanks to Drazen Dupor).
- Implemented a default cRemote::Initialize() that waits 10 seconds for a keypress
  in order to prevent a "hangup" in case, e.g., the LIRC driver is not loaded (thanks
  to Helmut Auer).
- Updated 'channels.conf.terr' for Hannover (thanks to Peter Waechtler).
- cBitmap::DrawBitmap() now also resets the palette if the entire bitmap area is
  covered (suggested by Sascha Volkenandt).
- Fixed setting the title in the replay display of the "Classic VDR" skin in case
  a shorter title is set after a longer one (thanks to Stefan Huelswitt for
  reporting this one).
- Now using more separate areas in the "ST:TNG Panels" skin to allow a theme to
  use more independent clrMenu* colors.
- Fixed removing the "scanning recordings..." message in case the video directory
  is empty (thanks to Andreas Regel for reporting this one).
- Added SetMessage() functions to the Replay and Channel skin functions. Plugins
  that implement skins will need to implement these functions. This fixes a missing
  "Editing process finished" message (thanks to Oliver Endriss for reporting this
  one).
- Fixed the height of the channel display in the "Classic VDR" skin.
- Fixed handling descriptor loops in 'libsi', which had sometimes caused invalid
  CA ids to be added to the channel definitions (thanks to Wayne Keer for reporting
  this one, and Marcel Wiesweg for fixing it).
- Fixed handling colors in cDvbSpuPalette::yuv2rgb() (thanks to Marco Schlüßler).
- Made some functions of cFont virtual to allow implementing dummy fonts for the
  'curses' skin.
- The new plugin 'skincurses' re-implements the functionality that was previously
  available by compiling VDR with DEBUG_OSD. Some things may not yet work as they
  should, but it's a starting point.
2004-05-31 18:00:00 +02:00
Klaus Schmidinger
c80a53ff6e Version 1.3.7
- Fixed a memory leak in thread handling when using NPTL (thanks to Jon Burgess).
- Fixed handling Setup.RecordDolbyDigital, which was broken since version 1.1.6.
- Fixed handling text lengths for itemized EPG texts (thanks to Marcel Wiesweg).
- Fixed the help for LSTE and LSTR (was broken in 1.3.6).
- Improved iso8859-7 fonts (thanks to Dimitrios Dimitrakos).
- Added some 3-letter language codes (thanks to Marcus Mönnig).
- Added language code handling to the subtitling descriptor in 'libsi' (thanks to
  Pekka Virtanen).
- Moved several menu item classes from menu.c to menuitems.[hc] to make them
  available for plugins.
- The epg2html.pl script now handles '|' in description texts.
- The new setup option "OSD/Use small font" can be used to control the use of
  the small font (see MANUAL for details).
- Swapped osd.[hc] and osdbase.[hc] to have the virtual OSD base class named cOsd.
  Plugins may need to adjust their #include statements.
- Colors are now given as AARRGGBB instead of AABBGGRR. The values are mapped to
  the driver's (wrong) sequence in dvbosd.c (this should really be fixed in the
  driver, together with the endian problem).
- The new OSD setup parameters "Left" and "Top" can be used to define the top left
  corner of the OSD.
- The OSD size parameters are now in pixel (as opposed to formerly characters).
  When reading a 'setup.conf' file from an older version of VDR, the OSDwidth
  and OSDheight values will be converted to pixel automatically.
- The OSD is now fully device independent. See the comments in VDR/osd.h and the
  description in PLUGINS.html for information on how a plugin can implement an OSD
  display on arbitrary hardware.
- The OSD (actually its cBitmap class) can now handle XPM files. There are several
  XPM files in the VDR/symbols directory which can be used by skins (some of these
  have been taken from the "elchi" patch). See VDR/skinsttng.c for examples on how
  to use these.
- Due to the changes in the OSD handling the DEBUG_OSD option for a textual OSD
  has been dropped. There will be a plugin that implements a skin with this
  functionality later.
- The entire OSD display can now be implemented via "skins". See VDR/skins.[hc],
  VDR/skinclassic.[hc], VDR/skinsttng.[hc] and PLUGINS.html for information on how
  a plugin can implement its own skin. By default VDR comes with a "Classic" skin
  that implements the OSD display known from previous versions, and the new skin
  named "ST:TNG Panels", which is also the default skin now. The actual skin can
  be selected through "Setup/OSD/Skin".
- The colors used in a skin can now be configured using "themes". See PLUGINS.html
  for information on how a skin can make use of themes, and man vdr(5) for the
  structure of a theme file. The actual theme to use can be selected through
  "Setup/OSD/Theme".
- Added Croatian language texts (thanks to Drazen Dupor).
  NOTE: there is apparently a problem with the newly introduced iso8859-2 font,
  because as soon as Setup/OSD/Language is set to Croatian (currently the last one
  in the list) everything freezes and the vdr processes have to be killed with -9
  and the driver needs to be reloaded. Maybe somebody else can find out what's
  going wrong here...
- Added missing NULL checks when accessing sectionHandler in device.c (thanks to
  Pekka Virtanen).
- Fixed setting the time from the DVB data stream (thanks to Helmut Auer for
  pointing out a frequency/transponder handling mixup). This now also takes the
  actual source (sat, cable etc.) into account. Please go into "Setup/EPG" and
  set the "Set system time" and "Use time from transponder" parameters accordingly
  (this is necessary even if you have already set them before!).
2004-05-16 18:00:00 +02:00
Klaus Schmidinger
b8e837dbbb Version 1.3.2
- Fixed resetting the EPG data versions after changing the preferred languages
  (thanks to Teemu Rantanen for reporting this one and helping to debug it).
- Added LinkageDescriptor handling to 'libsi' (thanks to Marcel Wiesweg).
- Added Russian language texts (thanks to Vyacheslav Dikonov).
  Plugin authors may want to add the new entries to their I18N texts and contact
  the translators to have their texts translated. Note that there are now 17
  different OSD languages, so please make sure you have 17 versions for each of
  your texts.
- Some corrections and additions to the Finnish OSD texts (thanks to Rolf
  Ahrenberg and Niko Tarnanen).
- Fixed a wrong 'delta' value in the call to the shutdown script (thanks to
  Stephan Epstein for reporting this one).
- Activated detection of radio channels (to avoid reports about "channels not
  being detected that used to be detected with the 'scan' utility or the
  original 'autopid' patch ;-).
- Channels with a zero VPID no longer write a PPID into channels.conf.
- Short channel names are now only stored if they actually differ from the
  full name.
- The EPG scan now scans newly found transponders together with already existing
  ones.
- The "Red" button in the "Setup/EPG" menu can now be used to force an EPG
  scan on a single DVB card system (see MANUAL for details).
- The new SVDRP command 'SCAN' can be used to force  an EPG scan on a single
  DVB card system (see MANUAL under Setup/EPG for details).
- Fixed handling PID changes in 'Transfer Mode'.
- Excess blanks in channel names read from the SDT are now removed.
- Fixed wrong parameter settings when scanning NITs for terrestrial transponders
  (thanks to Christian Tramnitz for pointing out this one).
- Fixed some out of bounds parameter settings when scanning NITs for cable
  and satellite transponders.
- Added 'libsi' include files to the 'include' directory, so that plugins can
  use them (thanks to Marcel Wiesweg).
- Now only processing NITs that contain the transponder they are actually
  broadcast on.
- Fixed setting the source type for newly detected terrestrial transponders
  (thanks to Christian Tramnitz for his support in debugging this).
2004-01-18 18:00:00 +01:00
Klaus Schmidinger
93a94b18b5 Version 1.3.0
- Changed thread handling to make it work with NPTL ("Native Posix Thread Library").
  Thanks to Jon Burgess, Andreas Schultz, Werner Fink and Stefan Huelswitt.
- The cThread class now accepts a 'Description' parameter, which is used to log
  the beginning and end of the thread, together with its process and thread id.
  For descriptions that need additional parameters you can use the function
  cThread::SetDescription(), which accepts 'printf()' like arguments.
  Existing plugins that use threads should be changed to use this functionality
  instead of explicit 'dsyslog()' calls inside their Action() function in order
  to support logging the thread ids.
- Added "Slovak Link" and "Czech Link" to 'ca.conf' (thanks to Emil Petersky).
  However, 'ca.conf' is now pretty much obsolete due to the automatic CA handling.
- Mutexes are now created with PTHREAD_MUTEX_ERRORCHECK_NP, which makes the
  'lockingTid' stuff obsolete (thanks to Stefan Huelswitt).
- Changed font handling to allow language specific character sets.
- Adopted the small font character set from the "Elchi" patch (originally
  provided by Alessio Sangalli).
- Greek language texts now use iso8859-7 character set (thanks to Dimitrios
  Dimitrakos).
- Rearranged section data handling, so that the actual data handling can be done
  separately, even from within plugins.
- The EPG data structures have been moved from eit.[hc] to epg.[hc] and have been
  adapted to the general VDR coding style. Plugins that use these data structures
  may need to change some function names (which should be obvious).
  The name 'subtitle' has been changed to 'shortText' to avoid clashes with actual
  subtitles that are part of a movie. The name 'extendedDescription' has been
  shortened to 'description'.
- Replaced 'libdtv' with 'libsi' (thanks to Marcel Wiesweg), which is thread
  safe and can be used by multiple section filters simultaneously.
- Added 'cRwLock' to 'thread.[hc]'. Note that all plugin Makefiles need to
  define _GNU_SOURCE for this to work (see the example plugin Makefiles and
  'newplugin').
- Fixed a problem with crc32 in SI handling on 64bit systems (thanks to Pedro
  Miguel Sequeira de Justo Teixeira for reporting this one).
- Fixed an alignment problem in CAM access on 64bit systems  (thanks to Pedro
  Miguel Sequeira de Justo Teixeira for reporting this one).
- Added 'StreamType' setting to CAM communication, which is important for
  Aston/SECA CAMs (thanks to Antonino Sergi).
- Now the CA descriptors are sent to the CAM in the 'program' or 'ES level'
  sections, depending on where they are found in the PMT (thanks to Hans-Peter
  Raschke for reporting this one). This should make SkyCrypt CAMs work.
- Now using the 'version number' of EPG events to avoid unnecessary work.
- Channel data is now automatically derived from the DVB data stream (inspired
  by the 'autopid' patch from Andreas Schultz).
- The current channel is now automatically re-tuned if the PIDs or other settings
  change. If a recording is going on on a channel that has a change in its
  settings, the recording will be stopped and immediately restarted to use the
  new channel settings.
- EPG events now use the complete channel ID with NID, TID and SID.
- Channel names in 'channels.conf' can now have a short form, as provided
  by some tv stations (see man vdr(5)). Currently channels that provide short
  names in addition to long ones are listed in the OSD as "short,long name",
  as in "RTL,RTL Television". The short names will be used explicitly later.
- The Ca parameter in 'channels.conf' has been extended and now contains all the
  CA system ids for the given channel. When switching to a channel VDR now tests
  for a device that provides one of these CA system ids. The devices automatically
  get their supported ids from the CI handler.
- The values in 'ca.conf' are currently without any real meaning. Whether or not
  a channel with conditional access can be received is now determined automatically
  by evaluating its CA descriptors and comparing them to the CA system ids
  provided by the installed CAM. Only the special values 1-16 are used to assign
  a channel to a particular device.
- Increased the maximum number of possible OSD colors to 256.
- Limited the line length in the EPG bugfix report, which appears to fix a buffer
  overflow that caused a crash when cleaning up the EPG data (at 05:00 in the
  morning).
2004-01-04 18:00:00 +01:00
Klaus Schmidinger
9aa2cda494 Version 0.68
- Date and time in the title of an event info page are now always right adjusted.
- The 'current channel' is now handled device specific (in case there is more
  than one DVB card).
- The 'SetSystemTime' option in the "Setup" menu is now shown as "yes/no".
- Implemented "internationalization" (see 'i18n.c' for information on how to
  add new languages). Thanks to Miha Setina for translating the OSD texts to
  the Slovenian language.
- Fixed learning keys on the PC keyboard (display oscillated).
- Fixed a timing problem with OSD refresh and SVDRP.
- Avoiding multiple definitions of the same timer in the "Schedule" menu (this
  could happen when pressing the "Red" button while editing the timer).
- There can now be a configuration file named 'commands.conf' that defines
  commands that can be executed through the "Main" menu's "Commands" option
  (see FORMATS for details on how to define these commands).
- Added a 'fixed' font for use with the output of system commands.
- The 'Priority' parameter of the timers is now also used to interrupt a low
  priority timer recording if a higher priority timer wants to record.
- A timer recording on a DVB card with a CAM module will now be interrupted
  by a timer that needs to use this specific DVB card to record an encrypted
  channel, if the timer currently occupying this DVB card doesn't need the
  CAM module (and thus can continue recording on a different DVB card).
- The "Yellow" button in the "What's on now/next?" menus now displays the
  schedule of the current channel from that menu.
- All DVB cards in a multi-card system now write their EIT information into the
  same data structure.
- If there is more than one DVB card in the system, the non-primary cards are
  now used to periodically scan through the channels in order to keep the
  EPG info up-to-date. Scanning kicks in after 60 seconds of user inactivity
  (timeout in order to keep user interactions instantaneously) and each channel
  that has the 'pnr' parameter defined in 'channels.conf' is switched to for
  20 seconds. If there is only one DVB card in the system, that card will start
  scanning after 5 hours (configurable through the "Setup" menu) of user inactivity
  and will switch back to the channel it originally displayed at the first sign of
  user activity. Any scanning will only occur if that particular card is not
  currently recording or replaying.
- Now shifting the 'Subtitle' info into the 'ExtendedDescription' on stations
  that don't send the EIT information correctly (like, e.g., 'VOX').
- Implemented a 10 seconds latency when removing files.
- Fixed unwanted reaction on the "Green" and "Yellow" button in the "Event" display.
- Implemented 'Transfer Mode' to display video data from the DVB card that actually
  can receive a certain channel on the primary interface. This is currently in
  an early state and may still cause some problems, but it appears to work nice
  already.
2000-11-19 18:00:00 +01:00
Klaus Schmidinger
ef8fe3f04c Version 0.65
- Modified LIRC interface to better handle repeat function.
- Faster OSD by first writing into a bitmap and then sending the entire bitmap
  to the DVB driver at once (requires the patch 'dvb.c.071.diff' to be applied
  against the version 0.71 DVB driver file 'dvb.c').
- When switching channels the channel is now immediately displayed, and the
  current/next information is shown as soon as it becomes available.
- No longer displaying the year in the 'Recordings' menu to saves space for the
  title.
- The 'Recordings' menu now displays a '*' to indicate new recordings.
- Added the description of the timers.conf file to the FORMATS file (thanks to
  Bastian Guse).
- Displaying as much as possible of the current/next info (dropping characters
  that would display only partially).
- In normal viewing mode the '0' key now toggles between the current and the
  previous channel.
2000-10-03 18:00:00 +02:00