209 Commits

Author SHA1 Message Date
Klaus Schmidinger
c2d9577b3d Version 1.7.24
Original announce message:
VDR developer version 1.7.24 is now available at

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

A 'diff' against the previous version is available at

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

MD5 checksums:

a034c5e399417dfc583483f650d003ee  vdr-1.7.24.tar.bz2
aa1a2b202da92e65945ff39470b26618  vdr-1.7.23-1.7.24.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:
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed a high load in case a transponder can't be received.
- Improved the way DVB_API_VERSION is checked.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed asserting there is a live programme if the primary device is bonded with
  a device that starts a recording on a different band.
- Fixed the return type of cMyDeviceHook::DeviceProvidesTransponder() in PLUGINS.html.
- Fixed a crash in a plugin using cDeviceHook when VDR ends (reported by Oliver Endriss).
- Some improvements to the Makefiles (thanks to Christian Ruppert).
- Fixed cRecording::LengthInSeconds(), which wrongfully rounded the result to full
  minutes (thanks to Christoph Haubrich).
- Symbolic links are no longer resolved in cRecordings::ScanVideoDir() (thanks to
  Sundararaj Reel).
- The epg.data file is now read in a separate thread to make the startup process
  faster in case the file is very large (suggested by Helmut Auer).
- Fixed selecting the primary device for receiving the live viewing channel in
  case it is bonded with an other device and has no receiver attached to it.
- Fixed a possible crash when canceling VDR while displaying subtitles, and the
  primary device is no longer available.
- Improved handling subtitles of BBC channels.
- No longer using tabs as delimiter in the EPG bugfix log (they were garbled in the
  log file).
- Added a missing '.' after the month in VPS strings.
- Added some missing 'const' to cDevice (thanks to Joachim Wilke).
- Fixed handling the PrimaryLimit when requesting a device for live viewing
  (reported by Uwe Scheffler).
- Removed superfluous calls to SetVideoFormat() from device constructors. This
  function is called in cDevice::SetPrimaryDevice(), anyway.
- An ongoing editing process is now canceled if either the original or the edited
  version of the recording is deleted from the Recordings menu.
- The SVDRP command DELR now won't delete a recording that is currently being edited.
- Removed code stub for obsolete SVDRP command MOVT.
- The DVB device adapters/frontends are now probed by scanning the /dev/dvb directory
  instead of looping through adapter/frontend numbers. This allows for "holes" in the
  device numbering.
- cReadDir::Next() now skips directory entries "." and "..".
- Fixed a possible deadlock in time shift mode.
- Fixed switching into time shift mode when pausing live video (thanks to Reinhard
  Nissl for helping to debug this one).
2012-02-19 16:36:45 +01:00
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
5a28d99936 Version 1.7.22
Original announce message:
VDR developer version 1.7.22 is now available at

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

A 'diff' against the previous version is available at

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

MD5 checksums:

b9c0fe1aac8e653c0d0234bc72c2bb2c  vdr-1.7.22.tar.bz2
868bb332342c9a78beda17cc85e0bb93  vdr-1.7.21-1.7.22.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:
- Fixed scaling subtitles in case the primary device's GetVideoSize() function doesn't
  return actual values (thanks to Luca Olivetti).
- The DiSEqC codes are now copied in the call to cDiseqc::Execute().
- VDR now supports "Satellite Channel Routing" (SCR) according to EN50494 (based on
  the "unicable" patch from Lars Hanisch).
  Since "Unicable" is a registered trademark and stands for only one of many
  implementations of SCR, the following changes have been made compared to the patch,
  which need to be taken into account by people who have set up their system using
  the patch:
  - The 'U' parameter in the diseqc.conf file has been changed to 'S' ("Scr").
  - The configuration file name has been changed from "unicable.conf" to "scr.conf".
- Updated sources.conf (thanks to Arthur Konovalov).
- The SVDRP command LSTC now also accepts channel IDs (thanks to Dominic Evans).
- Fixed handling DVB subtitles and implemented decoding textual DVB subtitles (thanks
  to Rolf Ahrenberg).
- Added cap_net_raw to the capabilities that are not dropped (thanks to Dominic Evans).
- Fixed setting the start time of an edited recording (thanks to Christoph Haubrich).
- Temporarily switching free devices to transponders in order to have their running
  status updated is now done by marking the devices as "occupied" for a certain
  amount of time.
- The new setup options "LNB/Device n connected to sat cable" can be used to define
  which DVB-S devices are connected to the same sat cable and are therefore "bonded".
  This obsoletes the LNBSHARE patch. Users of the LNBSHARE patch will need to newly
  set up their sat devices with the above options.
- Fixed a crash when deleting a recording while cutting it (thanks to Ville Skyttä).
- Fixed several spelling errors (thanks to Ville Skyttä).
- The new SVDRP command UPDR can be used to trigger an update of the list of
  recordings (thanks to Lars Hanisch).
- Added generating a pkg-config file to the Makefile (thanks to Ville Skyttä).
- Removed the '.pl' suffix from all scripts (thanks to Ville Skyttä).
- Changed the default location for the LIRC socket to /var/run/lirc/lircd (thanks
  to Ville Skyttä).
- Added file name and line number to LOG_ERROR_STR() (thanks to Rolf Ahrenberg).
- Replaced all calls to sleep() with cCondWait::SleepMs() (thanks to Rolf Ahrenberg).
- Fixed a crash with malformed SI data (patch from vdr-portal).
2011-12-05 20:36:02 +01:00
Klaus Schmidinger
0c96d6b626 Version 1.7.21
Original announce message:
VDR developer version 1.7.21 is now available at

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

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.20-1.7.21.diff

MD5 checksums:

7300bfd997db1a848bd774fefe4aec80  vdr-1.7.21.tar.bz2
c4e745939f31543dd607b97d58fc86be  vdr-1.7.20-1.7.21.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.

This version contains functions to determine the "signal strength"
and "signal quality" through cDevice. If you are using a DVB card that
contains an stb0899 frontend chip (like the TT-budget S2-3200) you may
want to apply the patches from

   ftp://ftp.tvdr.de/vdr/Developer/Driver-Patches

to the LinuxDVB driver source in order to receive useful results from
that frontend.

From the HISTORY file:
- Fixed detecting frames for channels that split frames into several payloads
  (reported by Derek Kelly).
- Now initializing Setup.InitialChannel to an empty string to avoid problems in
  case there is no setup.conf.
- The start time of an edited recording is now set to the time of the first
  editing mark (thanks to Udo Richter).
  This obsoletes the CUTTIME patch.
- Direct access to the members start, priority, lifetime, and deleted of cRecording
  as well as to position and comment of cMark is now deprecated. Plugin authors
  should switch to the new access functions for these members. For now the macro
  __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS is defined in recording.h, which
  exposes these members, so that existing plugins will still compile. Comment out
  this #define to check whether a particular plugin needs to be modified.
  This #define may be removed in a future version.
- The new functions cRecording::NumFrames() and cRecording::LengthInSeconds() return
  the number of frames and length (in seconds) of a recording (suggested by Steffen
  Barszus).
- The subtitle PIDs are now stored in the channels.conf file as an extension to the
  TPID field (thanks to Rolf Ahrenberg).
- The new function cDevice::ProvidesEIT() is used to determine whether a device can
  provide EIT data and will thus be used in cEITScanner::Process() to receive EIT
  data from the channels it can receive (suggested by Rolf Ahrenberg). Note that by
  default it is assumed that a device can't provide EIT data, and only the builtin
  cDvbDevice returns true from this function.
- The Audio and Subtitles options are now available through the Green and Yellow
  keys in the Setup/DVB menu (thanks to Rolf Ahrenberg). This is mainly for remote
  controls that don't have dedicated keys for these functions.
- The SVDRP command HITK now accepts multiple keys (up to 31).
- The Recordings menu now displays the length (in hours:minutes) of each recording
  (thanks to Rolf Ahrenberg). Note that the "new" indicator has been moved from the
  recording time to the length column. This new format is also used by the SVDRP
  command LSTR, so in case you have an application that parses the LSTR output,
  you will need to adjust it to the new format.
- The dvbsddevice plugin now supports the new option --outputonly, which disables
  receiving on SD FF devices and uses the device only for output (thanks to Udo
  Richter).
- Fixed detecting frames on radio channels (reported by Chris Mayo).
- Revoked the changes to cFrameDetector that have been introduced in version 1.7.19.
  Detecting frames in case the Picture Start Code or Access Unit Delimiter
  extends over TS packet boundaries is now done by locally skipping TS packets
  in cFrameDetector.
2011-09-04 17:50:17 +02:00
Klaus Schmidinger
7df66b0587 Version 1.7.20
Original announce message:
VDR developer version 1.7.20 is now available at

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

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.19-1.7.20.diff

MD5 checksums:

eda2911fff1715ba5b1482b20ad18188  vdr-1.7.20.tar.bz2
a8f5bcaf3294cc9fce87283a618d5ce1  vdr-1.7.19-1.7.20.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.

This version contains functions to determine the "signal strength"
and "signal quality" through cDevice. If you are using a DVB card that
contains an stb0899 frontend chip (like the TT-budget S2-3200) you may
want to apply the patches from

   ftp://ftp.tvdr.de/vdr/Developer/Driver-Patches

to the LinuxDVB driver source in order to receive useful results from
that frontend.

From the HISTORY file:
- Added some missing 'const' to tChannelID (reported by Sundararaj Reel).
- The isnumber() function now checks the given pointer for NULL (thanks to Holger
  Dengler).
- Now checking Setup.InitialChannel for NULL before using it (reported by
  Christoph Haubrich).
- cSkins::Message() now blocks calls from background threads (thanks to Michael
  Eiler for reporting a crash in such a scenario).
- Fixed the return value of the svdrpsend.pl script in case of an error (thanks to
  Jonas Diemer).
- Increased MAXCAIDS to 12 (thanks to Jerome Lacarriere).
- Fixed handling DiSEqC codes (thanks to Mark Hawes for reporting the bug, and
  Udo Richter for suggesting the fix).
- Added a mechanism to defer timer handling in case of problems (reported by
  Frank Niederwipper).
- Fixed distortions that happened when splitting recording into several files
  (was a side effect of "Fixed detecting frames in case the Picture Start Code or
  Access Unit Delimiter extends over TS packet boundaries" in version 1.7.19).
  cRecorder::Action() now buffers TS packets in case the frame type is
  not yet known when a new payload starts. This adds no overhead for channels
  that broadcast the frame type within the first TS packet of a payload; it only
  kicks in if that information is not in the first TS packet.
- Fixed handling the channelID in cMenuEditChanItem (thanks to Udo Richter).
- cStringList::Sort() can now be called with a boolean parameter that controls
  case insensitive sorting (suggested by Sundararaj Reel).
- Now scanning new transponders before old ones, to make sure transponder changes
  are recognized (thanks to Reinhard Nissl).
- Implemented static cIndexFile::IndexFileName().
- The length (as number of frames) of a recording's index file can now be determined
  by a call to cIndexFile::GetLength() (suggested by Christoph Haubrich).
- Fixed some crashes in subtitle display (thanks to Rolf Ahrenberg).
- Made DELETENULL() thread safe (reported by Rolf Ahrenberg).
- The pic2mpg script of the 'pictures' plugin now generates HD images (thanks to
  Andre Weidemann for his support in using convert/ffmpeg). The old SD version is
  still available as pic2mpg-sd.
- Added a mutex to protect cOsd::Osds from simultaneous access from different threads
  (reported by Rolf Ahrenberg).
- The cutter now sets the 'broken link' flag for MPEG2 TS recordings (thanks to
  Oliver Endriss).
- Fixed language code entry for Portuguese.
- The new command line options --filesize (suggested by Marco Göbenich) and --split
  can be used together with --edit to set the maximum video file size and turn on
  splitting edited files at the editing marks. These options must be given before
  --edit to have an effect.
- cTimeMs is no longer initialized to the current time if the value given to the
  constructor is negative (avoids the "cTimeMs: using monotonic clock..." log message
  before VDR's starting log message).
2011-08-16 20:32:01 +02:00
Klaus Schmidinger
bd61fee1e9 Version 1.7.19
Original announce message:
VDR developer version 1.7.19 is now available at

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

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.18-1.7.19.diff

MD5 checksums:

1eb04ecdc2b11ab8641ebfaa2cb93f42  vdr-1.7.19.tar.bz2
db16ce7bb51e0db837ed56ef4744a67e  vdr-1.7.18-1.7.19.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.

This version introduces functions to determine the "signal strength"
and "signal quality" through cDevice. If you are using a DVB card that
contains an stb0899 frontend chip (like the TT-budget S2-3200) you may
want to apply the patches from

   ftp://ftp.tvdr.de/vdr/Developer/Driver-Patches

to the LinuxDVB driver source in order to receive useful results from
that frontend.
Since apparently the various frontend drivers return different maximum
values in their FE_READ_SIGNAL_STRENGTH and FE_READ_SNR functions (some
deliver a value in the range 0x0000...0xFFFF, while others return values
as "dB/10" or "dBm/10" (the latter with an offset to make the value positive,
since the parameter is unsigned), the functions cDvbTuner::GetSignalStrength()
and cDvbTuner::GetSignalQuality() use the device's "subsystem ID" to
map these values into the range 0...100, which is the normalized return
value of these functions.
Take a look at these two functions and maybe remove the comment characters
from the lines
//#define DEBUG_SIGNALSTRENGTH
//#define DEBUG_SIGNALQUALITY
in dvbdevice.c to get some debug output if your device doesn't return any
directly useful values and may have to be added appropriately to the
'switch (subsystemId)' statement.
The channel display of the 'sttng' skin uses these values to implement
a signal strength/quality display.

From the HISTORY file:
- Fixed cString's operator=(const char *String) in case the given string is the
  same as the existing one (thanks to Dirk Leber).
- Avoiding a gcc 4.6 compiler error in the skincurses plugin (thanks to Tobias Grimm).
- TsGetPayload() now checks if there actually is a payload in the given TS packet
  (reported by Dirk Leber).
- Now sorting the source file names in the call to xgettext, to make sure the results
  are not dependent on the sequence of the files.
  Plugin authors may want to change the line containing the xgettext call in their
  Makefile accordingly by changing "$^" to "`ls $^`".
- The primary device is now only avoided for recording if it is an old SD full
  featured card. This is done through the new function cDevice::AvoidRecording().
- Subtitle PIDs are now also decrypted (thanks to Reinhard Nissl).
- Fixed a possible race condition in cDiseqc::Execute() (reported by Marco Göbenich).
  The return value of cDiseqcs::Get() is now const, so plugin authors may need to
  adjust their code if they use this function.
- The new functions cDevice::SignalStrength() and cDevice::SignalQuality() can be
  used to determine the signal strength and quality of a given device (thanks to
  Rolf Ahrenberg for some input on how to use BER and UNC values to generate a
  "quality" value).
- The 'sttng' skin now displays two colored bars at the bottom of the channel display,
  indicating the strength (upper bar) and quality (lower bar) of the received signal.
  The number to the left of these bars indicates the actual device the current
  channel is being received with.
- Fixed detecting frames in case the Picture Start Code or Access Unit Delimiter
  extends over TS packet boundaries (reported by Johan Andersson).
  In order to fix this, the semantics of cFrameDetector had to be changed a little.
  See cRecorder::Action() and cIndexFileGenerator::Action() on how to use the new
  cFrameDetector::NewPayload() function.
- The frame detector now only starts collecting PTS values after it has seen the
  first I-frame, otherwise it might get MaxPtsValues values and stop analyzing
  even though the incoming data is still garbage (reported by Derek Kelly).
- The info file of a recording is now only overwritten with a new fps value if
  that new value is not the default value (thanks to Derek Kelly for reporting a
  problem with the fps value being overwritten in case a recording was interrupted
  and resumed, and the fps value could not be determined after resuming recording).
- The initial channel is now stored by the channel ID in the setup.conf file, in
  order to avoid problems in case channels are reordered or deleted (reported by
  Lars Bläser).
- Added support for "content identifier descriptor" and "default authority descriptor"
  to 'libsi' (thanks to Dave Pickles).
2011-06-19 18:35:46 +02: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
c2c45d68c6 Version 1.7.15
- Added Macedonian language texts (thanks to Dimitar Petrovski).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added handling of EnhancedAC3DescriptorTag (thanks to Eric Valette).
- The default SVDRP port is now 6419 (registered with ICANN/IANA by Christian Tramnitz).
  Use '-p 2001' to switch back to the old port if necessary.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- cDvbDevice::ProvidesTransponder() now checks the modulation capabilities of the
  device (as far as the driver allows this).
- Fixed cFrameDetector::Analyze() in case part of the data has been processed and
  there is less than MIN_TS_PACKETS_FOR_FRAME_DETECTOR left (reported by Derek Kelly).
- Added a note about not deleting cDeviceHook objects to device.h.
- Added user defined key kUser0 (suggested by Ulf Kiener).
- Include paths are now added instead of overwriting INCLUDES in the Makefile (thanks
  to Paul Menzel).
- The various modulation types are now taken into account when selecting a device for
  a recording or live viewing, so that devices that provide more capabilities are
  spared.
- Fixed generating PMT language descriptors for multi language PIDs (thanks to Rolf
  Ahrenberg).
- Transponders that use "8psk turbo fec" (a non-standard mode used by North American
  providers) are now identified by assuming that all 8psk transponders on DVB-S use
  "turbo fec". In order to determine whether a certain device can handle "turbo fec",
  the new driver flag FE_CAN_TURBO_FEC is checked. If your device can handle "turbo
  fec", and your driver doesn't have that flag, yet, you can apply the patch from
  ftp://ftp.tvdr.de/vdr/Developer/v4l-dvb-add-FE_CAN_TURBO_FEC.diff. A temporary
  macro in dvbdevice.c defines the flag for all those who don't need this in the
  driver, so that they can continue using an unmodified driver.
  Thanks to Derek Kelly for testing this.
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Fixed handling "none" color entries in XPM files (thanks to Thomas Günther).
- Fixed a crash when creating a new channel if the channel list is empty (reported
  by Halim Sahin).
- Updated the Czech OSD texts (thanks to Radek Stastny).
- Fixed a possible out of buffer memory access in case of bad TS data (reported
  by Rolf Ahrenberg).
- Implemented handling of HD resolution subtitles according to v1.3.1 of
  ETSI EN 300 743, chapter 7.2.1 (thanks to Rolf Ahrenberg).
- The EPG data now handles stream components 5 (H.264-video) and 6 (HEAAC-audio).
- Fixed a problem with external Dolby Digital processing via the '-a' option in live
  mode and with TS recordings (reported by Christopher Reimer).
- Added handling MPEG audio types "ISO/IEC 14496-3 Audio with LATM transport syntax"
  and "ISO/IEC 13818-7 Audio with ADTS transport syntax" (suggested by Luis Fernandes).
  See man vdr(5) on how the APID section of channels has been extended to store
  this information.
- Added detecting channels that use service type 0x16.
- Added full handling of the stream types of Dolby Digital pids
  (thanks to Jose Alberto Reguero).
- The new setup option "OSD/Number keys for characters" can be used to control whether
  the number keys can be used to enter characters in a text input field (suggested
  by Stefan Huskamp).
2010-06-06 14:49:00 +02:00
Klaus Schmidinger
1eb12b4973 Version 1.7.14
- Fixed handling empty strings in cSource::FromString().
- Assigned the source character 'I' to "IPTV" (suggested by Rolf Ahrenberg).
- Assigned the source character 'V' to "Analog Video" (suggested by Lars Hanisch).
  This obsoletes the ANALOGTV patch.
- Added support for ATSC devices (thanks to Alex Lasnier).
  This obsoletes the ATSC patch.
- The "Source" item in the "Edit channel" menu now wraps around the list of sources
  (suggested by Halim Sahin).
- Fixed editing channel parameters.
- The new setup option "Recording/Delete timeshift recording" controls whether a timeshift
  recording is automatically deleted after viewing it.
  This obsoletes the DELTIMESHIFTREC patch.
  Note that the meaning of the values for this option is different from the DELTIMESHIFTREC
  patch: 0 means timeshift recordings are not automatically deleted (the default behavior
  as in previous versions), while 1 means to ask the user whether the recording shall be
  deleted.
- Added cChannel::IsSourceType() to test if a channel's source is of a given type.
- Changed the polarization characters in cDvbSourceParam::GetOsdItem() to uppercase.
- The full timer file name is now displayed if it ends with "TITLE" or "EPISODE"
  (pointed out by Udo Richter).
- Fixed "attempt to drop wrong frame from ring buffer" when skipping +/- one minute
  during replay.
- The new setup option "Folders in timer menu" controls whether the file names in
  the timer menu are shown with their full folder path.
2010-03-14 11:56:00 +01:00
Klaus Schmidinger
5ce592e54a Version 1.7.13
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Changed the position of Sirius 4 to S4.8E in sources.conf (thanks to Alexander Gross).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Moved the declaration of cMenuCommands to menu.h, so that plugins can use it.
- Added a note to the MANUAL, saying that adding new transponders only works if the
  "EPG scan" is active (suggested by Halim Sahim).
- Improved handling frames at the beginning and end of a recording in cDvbPlayer for
  devices with large buffers (thanks to Reinhard Nissl).
- Implemented cDeviceHook to allow plugins more control over which device can
  provide which transponder (thanks to Reinhard Nissl).
- Implemented cDevice::GetCurrentlyTunedTransponder() (thanks to Reinhard Nissl).
- Moved strictly necessary Makefile options into Make.global, which is included
  by all plugins (thanks to Paul Menzel). The Makefiles of existing plugins should be
  modified like this:

  ------------------------------------------------------------
  --- PLUGINS/src/hello/Makefile  2009/10/18 14:00:07      2.1
  +++ PLUGINS/src/hello/Makefile  2010/02/06 14:50:03      2.2
  @@ -18,7 +18,7 @@
   ### The C++ compiler and options:

   CXX      ?= g++
  -CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
  +CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses

   ### The directory environment:

  @@ -26,6 +26,10 @@
   LIBDIR = ../../lib
   TMPDIR = /tmp

  +### Make sure that necessary options are included:
  +
  +include $(VDRDIR)/Make.global
  +
   ### Allow user defined options to overwrite defaults:

   -include $(VDRDIR)/Make.config
  ------------------------------------------------------------
- Added device definitions to the diseqc.conf file format, so that certain satellite
  positions can be limited to a given list of devices.
  This obsoletes the SOURCECAPS patch.
- Keeping subtitles visible when pausing replay (thanks to Rolf Ahrenberg).
- Fixed adding new transponders in case there is only a single channel in the
  channel list (reported by Halim Sahin).
- The file name in the "Timers" menu now shows only the base name of the recording
  without the folder path (if any). Otherwise with long folder paths the actual
  recording name was not visible at all.
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Exported some libsi functions (thanks to Lucian Muresan).
- Improved scalability of the default skins.
- Fixed the German translation of "Folder name must not contain '%c'!" (thanks to
  Frank Schmirler).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Plugins can now define new sources. In order to implement this, the following
  changes were made:
  + The transponder parameter string is no longer interpreted by cChannel, but rather
    stored as is and used only by the respective device. That way plugins can use a
    channel's parameter string to store arbitrary data (see vdr.5).
  + The new class cSourceParam can be used by plugins to define new sources, and to
    implement OSD items that will be used in the channel editor for editing the source
    specific parameters of a channel (see dvbdevice.c for an example of how this is
    done for the default DVB devices).
  + Purely numerical values are no longer accepted in the 'source' parameter of a
    channel.
  This obsoletes the PLUGINPARAM patch.
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- cSafeFile::Close() now flushes the file (suggested by Stephan Austermühle).
- The option "Setup/DVB/Use Dolby Digital" now only controls whether Dolby Digital
  tracks appear in the "Audio" menu. Dolby Digital is always recorded.
  This obsoletes the DOLBYINREC patch.
2010-02-28 16:07:00 +01:00
Klaus Schmidinger
09a17d56e2 Version 1.7.12
- Changed the EVCONTENTMASK_* macros to enums and changed "mask" to "group".
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- The "Edit timer" menu can now set the folder for the recording from a list of
  folders stored in "folders.conf".
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- If svdrphosts.conf contains only the address of the local host, the SVDRP port
  is opened only for the local host (thanks to Manuel Reimer).
- Renamed 'runvdr' to 'runvdr.template' and no longer copying it to the BINDIR
  in 'make install' (thanks to Martin Dauskardt).
- Added plain text error messages to log entries from cOsd::SetAreas() (suggested
  by Rolf Ahrenberg).
- cPalette::ClosestColor() now treats fully transparent colors as "equal"; improved
  cDvbSpuBitmap::getMinBpp() (thanks to Matthieu Castet and Johann Friedrichs).
- The new setup option "Miscellaneous/Channels wrap" controls whether the current
  channel wraps around the beginning or end of the channel list when zapping (thanks
  to Matti Lehtimäki).
- Fixed determining the frame duration on channels where the PTS deltas jitter by
  +/-1 around 1800.
- The PCR pid in generated PMTs is now set to the channel's PCR pid again.
- Fixed determining the frame duration on channels where the PTS deltas jitter by
  +/-1 around 3600.
- The PCR pid is now recorded for channels where this is different from the video
  PID. To facilitate this, the interfaces of cTransfer, cTransferControl, cRecorder
  and cReceiver have been modified, so that the PIDs are no longer given in separate
  parameters, but rather the whole channel is handed down for processing. The old
  constructor of cReceiver is still available, but it is recommended to plugin authors
  that they switch to the new interface as soon as possible.
  When replaying such a recording, the PCR packets are sent to PlayTsVideo()
- The files "commands.conf" and "reccmd.conf" can now contain nested lists of
  commands. See vdr.5 for information about the new file format.
2010-01-31 15:42:00 +01: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
ea01358b3b Version 1.7.10
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed wrong bracketing in cChannel::SubtitlingType() etc.
  (thanks to Rolf Ahrenberg).
- Fixed not logging changes for channels that have no number
  (reported by Timothy D. Lenz).
- Changed the project's URLs and email to tvdr.de.
- Added Lithuanian language translations (thanks to Valdemaras Pipiras).
- Updated Chinese language texts (thanks to Nan Feng).
- Only checking DVB_API_VERSION to be >=5 in order to stay compileable in case
  the DVB API version number is increased (the API claims to always be backward
  compatible).
- Fixed saving terminal settings when running in background (thanks to Manuel
  Reimer).
- Fixed cFrameDetector::Analyze() to handle video streams where the frame type
  is not detectable from the first TS packet of a frame.
- Fixed writing the PCR pid into the PMT in cPatPmtGenerator::GeneratePmt()
  (reported by Rene van den Braken).
- Added Slovakian language texts (thanks to Milan Hrala).
- Fixed EntriesOnSameFileSystem() to avoid using f_fsid, which may be 0 (thanks
  to Frank Schmirler).
- Fixed starting a recording at an I-frame.
- Fixed generating the index for recordings from channels that put a whole
  GOP into one payload unit.
- The index file for TS recordings is now regenerated on-the-fly if a
  recording is replayed that has no index. This can also be used to
  re-create a broken index file by manually deleting the index file and then
  replaying the recording (at least until the index file has been generated).
- The cRingBufferLinear::Read() function now returns -1 and sets errno to
  EAGAIN if the buffer is already full.
- Fixed handling DVB subtitles for PES recordings (thanks to Rolf Ahrenberg).
- Added the audio id to the call of PlayAudio() in cDevice::PlayTsAudio()
  (thanks to Andreas Schaefers).
- Fixed references to old *.vdr file names in MANUAL (reported by Arthur Konovalov).
- Reverted "Removed limitation to PAL resolution from SPU handling" because it
  cause nothing but trouble. Besides, the core VDR doesn't use this, anyway.
- Fixed the default value for "Pause key handling" in the MANUAL (reported by
  Diego Pierotto).
2009-11-22 15:58:00 +01:00
Klaus Schmidinger
06bf4c453e Version 1.7.9
- Fixed storing the current OSD size in case the device has
  changed it in its setup menu (reported by Reinhard Nissl).
- Fixed cDevice::PlayTsVideo() and cDevice::PlayTsAudio() in case only part of the
  buffer has been accepted by the device (reported by Udo Richter).
- Changed the EIT filter setup to save a few handles on devices that do hardware
  filtering.
- Fixed deleting expired timers if they have the VPS flag set, but the event they
  are assigned to doesn't have a VPS tag.
- Fixed handling file name length on VFAT systems in case they
  contain UTF-8 characters (thanks to Rolf Ahrenberg).
- Fixed generating CaPmts in case audio and video are encrypted using different
  ECM pids.
- Updated vdr.1 to use the new file names in recording directories.
- Fixed cRecordings::DelByName() to avoid compilation errors with gcc 4.4
  (thanks to Matthias Schwarzott).
- Increased the value of MAXFRAMESIZE to better suit HD recordings (thanks to
  Reinhard Nissl).
- Implemented full handling of subtitling descriptors (thanks to Mikko Tuumanen).
2009-08-23 16:04:00 +02:00
Klaus Schmidinger
ab6f2ccf42 Version 1.7.8
- The name of the function cDevice::GetVideoSize() wasn't very well chosen
  for its purpose of defining the optimum size of the OSD for the current
  output device. Therefore a new function named cDevice::GetOsdSize() has
  been introduced (suggested by Rolf Ahrenberg). Plugin authors should
  implement this function in classes derived from cDevice, if they are able
  to replay video. cDevice::GetVideoSize() still exists and should return the
  actual size of the video material that is currently replayed. Note that
  because of the many possible aspect ratios for video material, the type
  of the Aspect parameter of GetVideoSize() has been changed to 'double',
  and the Aspect parameter in both functions is named differently, because
  it returns different values (suggested by Reinhard Nissl).
  Thanks to Oliver Endriss for his input on calculating the Aspect factor in
  GetOsdSize().
- Fixed the way the OSD size is determined on full featured DVB cards (thanks
  to Oliver Endriss).
- Increased MAXOSDHEIGHT to 1200 (suggested by Nicolas Huillard).
- Removed limitation to PAL resolution from SPU handling.
- Checking fd_video in cDvbDevice::GetVideoSize() to avoid error messages on
  systems with no real primary replay device (reported by Martin Neuditschko).
- Added a note to cTsToPes::GetPes() about having to call it repeatedly, once
  it has returned a non-NULL value.
- Added MPEG 1 handling to remux.c (thanks to Ales Jurik).
- Fixed use of time_t in cEIT::cEIT() (thanks to Tobias Bratfisch).
- Added missing update of lastOsdSizeUpdate.
- EIT events are now only processed if a plausible system time is available, to
  avoid wrong handling of PDC descriptors (thanks to Tobias Bratfisch).
- Removed unused 'synced' member from cTsToPes (reported by Christoph Haubrich).
- Added a note to cTsToPes about all TS packets having to belong to the same PID,
  and that for video data GetPes() may only be called if the next TS packet that
  will be given to PutTs() has the "payload start" flag set (suggested by Christoph
  Haubrich).
- Added a note about the meaning of PERCENTAGEDELTA in cRingBuffer::UpdatePercentage()
  (thanks to Rolf Ahrenberg).
- The new setup option "Recording/Pause key handling" can be used to define
  what happens if the Pause key on the remote control is pressed during
  live tv (thanks to Timo Eskola).
- Added a note about cFont::GetFont() not being thread-safe.
- Fixed generating PAT/PMT version numbers in case the PIDs change during
  recording (reported by Reinhard Nissl).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Fixed a memory leak when reaching the end of a recording during replay (reported
  by Reinhard Nissl).
- Fixed calling close(-1) in cUnbufferedFile::Close() (reported by Reinhard Nissl).
- Added a workaround for the broken linux-dvb driver header files (based on a patch
  from Tobias Grimm).
- Fixed handling the length of DiSEqC command sequences (reported by Reinhard Nissl).
- Fixed cOsdMenu::Display() in case the menu size has changed (thanks to
  Reinhard Nissl).
- Added some missing 'const' keywords to avoid compilation errors with gcc 4.4
  (thanks to Ville Skyttä and Ludwig Nussel).
- Modified cSVDRP::CmdGRAB() to avoid writing into const data (reported by
  Ludwig Nussel).
- Fixed calculating menu colum widths in case the font has a size other than the
  default size (reported by Reinhard Nissl).
- Added a plausibility check for the OSD percentage parameters
  to avoid problems in case the values are stored in the setup.conf
  file in a  wrong way.
- Fixed variable types in cIndexFile (reported by Udo Richter).
2009-06-14 13:49:00 +02: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
733a2becc4 Version 1.7.6
- cDevice::PlayTs() now syncs on the TS packet sync bytes.
- Made MAXFRAMESIZE a multiple of TS_SIZE to avoid breaking up TS packets.
- No longer resetting the patPmtParser in cDevice::PlayTs(), because this
  caused the selected audio and subtitle tracks to fall back to the default.
- The SVDRP command PUTE now supports reading the EPG data from a given file
  (thanks to Helmut Auer).
- Added cThread::SetIOPriority() and using it in cRemoveDeletedRecordingsThread
  (thanks to Rolf Ahrenberg).
- Fixed the MEGABYTE() macro to make it correctly handle parameters resulting in
  values larger than 2GB.
- Added cDevice::NumProvidedSystems() to PLUGINS.html (was missing since it had
  been implemented).
- Fixed distortions when switching to the next file during replay.
- Fixed detecting the frame rate for streams with PTS distances of 1800, which
  apparently split one frame over two payload units.
- Added missing 'const' to cRecording::FramesPerSecond() (thanks to Joachim Wilke).
- Any TS packets in the first "frame" after a cut in an edited recording that don't
  belong to a payload unit that started in that frame now get their TEI flag set,
  so that a decoder will ignore them together with any PES data collected for that
  PID so far (thanks to Oliver Endriss for reporting chirping sound disturbences at
  editing points in TS recordings).
- cDvbPlayer::Empty() subtracts 1 from readIndex, because Action() will first
  increment it.
- Only storing non-zero Pts values in ptsIndex.
- Added a note to the INSTALL file about using subdirectories to split a large
  disk into separate areas for VDR's video data and other stuff (suggested by
  Udo Richter).
2009-04-26 12:19:00 +02:00
Klaus Schmidinger
1aadb31fb3 Version 1.7.5
- Fixed a hangup when replaying a TS recording with subtitles activated (reported
  by Timo Helkio).
- Fixed handling the 'new' indicator in the recordings menu for TS recordings
  (thanks to Derek Kelly).
- Added cap_sys_nice to the capabilities that are not dropped (thanks to Rolf
  Ahrenberg).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Added cRecordingInfo::GetEvent() (thanks to Marcel Unbehaun).
- Improved synchronizing the progress display, trick modes and subtitle display
  to the actual audio/video. This now works independent of any buffer sizes the
  output device might use.
  + The cBackTrace class has been replaced with cPtsIndex, which keeps track
    of the PTS timestamps of recently played frames.
  + cDevice::GetSTC() is now required to deliver the STC even in trick modes.
    It is sufficient if it returns the PTS of the most recently presented
    audio/video frame.
  + The full-featured DVB cards need an improved firmware in order to return
    proper STC values in trick modes (thanks to Oliver Endriss for enhancing the
    av7110 firmware).
- Adapted cFrameDetector::Analyze() to HD NTSC broadcasts that split frames over
  several payload units (thanks to Derek Kelly for reporting this and helping in
  testing).
- Modified cFrameDetector::Analyze() to make it process whole frames at once, so
  that file I/O overhead is minimized during recording (reported by Günter
  Niedermeier).
- Added command line help for the '-i' option.
- Fixed cDvbPlayer::NextFile() to handle files larger than 2GB (thanks to Jose
  Alberto Reguero).
- Improved replay at the begin and end of a recording. The very first and very last
  frame is now sent to the output device repeatedly until GetSTC() reports that it
  has been played. cDvbPlayer::Action() no longer calls DeviceFlush() (thanks to
  Reinhard Nissl for making sure vdr-xine no longer needs this).
- Added missing '[]' to the delete operator in cMenuEditStrItem::~cMenuEditStrItem().
- Added missing virtual destructor to cPalette.
- Now freeing configDirectory before setting it to a new value in
  cPlugin::SetConfigDirectory().
- Fixed a crash when jumping to an editing mark in an audio recording.
- Fixed the 'VideoOnly' condition in the PlayPes() and PlayTs() calls in
  cDvbPlayer::Action() (thanks to Reinhard Nissl).
- cDevice::PlayTs() now plays as many TS packets as possible in one call.
- Making sure any floating point numbers written use a decimal point (thanks to
  Oliver Endriss for pointing out a problem with the F record in the info file of
  a recording).
- Fixed detecting the frame rate for radio recordings.
- Added missing AUDIO_PAUSE/AUDIO_CONTINUE calls to cDvbDevice (thanks to Oliver
  Endriss).
- No longer writing the video type into channels.conf if VPID is 0 (thanks to
  Oliver Endriss for reporting this).
- Improved efficiency of cEIT::cEIT() (thanks to Tobias Bratfisch).
2009-04-12 11:39:00 +02:00
Klaus Schmidinger
084e16c057 Version 1.7.4
- Removed the '#define FE_CAN_2ND_GEN_MODULATION', since it was wrong and the
  flag is now in the driver, anyway.
- The full-featured DVB cards are now given the TS data directly for replay
  (thanks to Oliver Endriss for enhancing the av7110 driver to make it replay
  TS data). The patch from ftp://ftp.cadsoft.de/vdr/Developer/av7110_ts_replay__1.diff
  implements this change in the driver.
  The patch av7110_v4ldvb_api5_audiobuf_test_1.diff mentioned in version 1.7.2
  is still necessary to avoid audio and video glitches on some channels.
- Added a typecast in cUnbufferedFile::Write() to avoid an error message when
  compiling on 64 bit systems.
- Added some missing 'const' statements to cBitmap (thanks to Andreas Regel).
- Fixed returning complete PES packets in cTsToPes::GetPes() (thanks to Reinhard
  Nissl).
- Added a missing Detach() in cTransfer::Activate() (thanks to Marco Schller).
- Added clearing the TS buffers in cDevice::Detach() (thanks to Marco Schller).
- Fixed incrementing the continuity counter in cPatPmtGenerator::GetPmt() (thanks
  to Johann Friedrichs).
- Fixed removing deleted recordings in case there is a problem. Once a recording
  caused a problem with removing, no others were removed any more and an ongoing
  recording could fill up the disk and cause other recordings to be deleted
  automatically (reported by Reinhard Nissl).
- Added "DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
  to Make.config.template (thanks to Johann Friedrichs for pointing this out).
  Plugin authors should add this line to their Makefile or Make.config if they use
  file access functions that need special versions for 64 bit offsets.
- The new command line option -i can be used to set an "instance id", which will
  be used to distinguish recordings of the same broadcast made by different instances
  of VDR (suggested by Frank Schmirler). This replaces the use of the "resume id"
  that was introduced in version 1.7.3.
- Added checking mutexCurrentAudioTrack to cDevice::PlayTs() (thanks to Reinhard
  Nissl for pointing this out).
- Fixed handling the pointer field in cPatPmtParser::ParsePmt() (thanks to Frank
  Schmirler - sorry I swapped two lines when adopting the original patch).
- Checking the remaining packet length after processing the pointer field in
  cPatPmtParser::ParsePat() and cPatPmtParser::ParsePmt() (suggested by Frank
  Schmirler).
- Checking the pointer field in cPatPmtParser::ParsePmt() only in 'payload start'
  packets (suggested by Frank Schmirler).
- Changed cPatPmtGenerator to make sure the PMT pid doesn't collide with any of
  the actual pids of the channel.
- Fixed cDevice::PlayTsAudio() and made cDevice::PlayTsVideo() return 0 if
  PlayVideo() didn't play anything.
- Added an 'int' typecast to calculations involving FramesPerSecond() to avoid
  compiler warnings (reported by Winfried Koehler).
- Fixed detecting frames for pure audio recordings.
- Fixed editing PES recordings. The frame type in the index.vdr file generated for
  the edited PES recording is set to 1 for I-frames and 2 for all others (P- and
  B-frames). The exact frame type doesn't matter for VDR, it only needs to know if
  it's an I-frame or not.
- The PAT/PMT is now only processed if its version changes (reported by Reinhard
  Nissl).
- Fixed handling the maximum video file size (reported by Udo Richter).
- Improved fast-forward/-rewind for audio recordings. The actual data is now sent
  to the output device, so that it can be replayed and thus cause the proper delay.
  For pure audio recordings the audio is no longer muted in fast-forward/-rewind
  mode, so that some orientation regarding the position within the recording is
  possible. There may still be some offset in the replay position displayed by the
  progress indicator when switching from fast-forward/-rewind to play mode, as well
  as in the current position during normal play mode. This is due to the various
  buffers between the player and the output device and will be addressed later.
  Note the new function cDevice::IsPlayingVideo(), which is used to inform the
  player whether there is video data in the currently replayed stream. If a derived
  cDevice class reimplements PlayTs() or PlayPes(), it also needs to make sure this
  new function works as expected.
2009-01-25 13:13:00 +01:00
Klaus Schmidinger
c296647594 Version 1.7.3
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- Fixed handling the 'pointer field' in generating and parsing PAT/PMT (thanks to
  Frank Schmirler).
- Fixed handling modulation types for DVB-S transponders when processing the NIT.
- Changed cDvbDevice::GrabImage() to use V4L2 (thanks to Marco Schller).
- Added a poll to cDvbDevice::PlayVideo() and cDvbDevice::PlayAudio() to avoid
  excessive CPU load (this is just a makeshift solution until the FF DVB cards
  can play TS directly).
- The recording format is now Transport Stream. Existing recordings in PES format
  can still be replayed and edited, but new recordings are done in TS.
  All code for recording in PES has been removed.
  The following changes were made to switch to TS recording format:
  + The index file format has been changed to support file sizes of up to 1TB
    (previously 2GB), and up to 65535 separate files per recording (previously
    255).
  + The recording file names are now of the form 00001.ts (previously 001.vdr).
  + The frame rate is now detected by looking at two subsequent PTS values.
    The "frame duration" (in multiples of 1/90000) is stored in the info.vdr
    file using the new tag F (thanks to Artur Skawina for helping to get the
    IndexToHMSF() calculation right).
  + Several functions now have an additional parameter FramesPerSecond.
  + Several functions now have an additional parameter IsPesRecording.
  + The functionality of cFileWriter was moved into cRecorder, and cRemux is
    now obsolete. This also avoids one level of data copying while recording.
  + cRemux, cRingBufferLinearPes, cTS2PES and all c*Repacker classes have been
    removed.
  + A PAT/PMT is inserted before every independent frame, so that no extra
    measures need to be taken when editing a recording.
  + The directory name for a recording has been changed from
    YYYY-MM-DD-hh[.:]mm.pr.lt.rec (pr=priority, lt=lifetime) to
    YYYY-MM-DD-hh.mm.ch-ri.rec (ch=channel, ri=resumeId).
    Priority and Lifetime are now stored in the info.vdr file with the new
    tags P and L (if no such file exists, the maximum values are assumed by
    default, which avoids inadvertently deleting a recording if disk space
    is low). No longer storing Priority and Lifetime in the directory name
    avoids starting a new recording if one of these is changed in the timer
    and the recording is re-started for some reason.
    Instead of Priority and Lifetime, the directory name now contains the
    channel number from which the recording was made, and the "resume id" of
    this instance of VDR. This avoids problems if several VDR instances record
    the same show on different channels, or even on the same channel.
    The '-' between channel number and resumeId prevents older versions of
    VDR from "seeing" these recordings, which makes sure they won't even try
    to replay them, or remove them in case the disk runs full.
  + The semantics of PlayTs*() have been changed. These functions are now
    required to return the given Length (which is TS_SIZE) if they have
    processed the TS packet.
  + The files "index", "info", "marks" and "resume" within a TS recording
    directory are now created without the ".vdr" extension.
  + The "resume" file is no longer a binary file, but contains tagged lines
    to be able to store additional information, like the selected audio or
    subtitle track.
  + cDevice::StillPicture() will now be called with either TS or PES data.
  + cDvbPlayer::Goto() no longer appends a "sequence end code" to the data.
    If the output device needs this, it has to take care of it by itself.
- Fixed cPatPmtParser::ParsePmt() to reset vpid and vtype when switching from
  a video to an audio channel (thanks to Reinhard Nissl).
- cDvbDevice now uses the FE_CAN_2G_MODULATION flag to determine whether a device
  can handle DVB-S2. The #define is still there to allow people with older drivers
  who don't need DVB-S2 to use this version without pathcing.
2009-01-06 20:31:53 +01:00
Klaus Schmidinger
1834751c45 Version 1.7.2
- Added a note about 'Id' being obsolete to the description of cDevice::PlayAudio().
- Switched to the new S2API driver API, which was decided to become the official
  DVB API in the kernel (based on patches from Igor M. Liplianin, Niels Wagenaar
  and Edgar Hucek). VDR now uses the S2API driver from http://linuxtv.org/hg/v4l-dvb.
  In order to correctly detect DVB-S2 capable devices, you need to apply the patch
  from ftp://ftp.cadsoft.de/vdr/Developer/v4l-dvb-s2api-add-s2-capability.diff to
  the driver source, because the S2API doesn't provide a way of telling whether a
  device can handle DVB-S2 transponders.
- The cDvbTuner::IsTunedTo() function now also checks the symbol rate in case of
  DVB-S and DVB-C.
- Improved handling PES video packets with zero length when converting from TS to PES.
  For good replay in Transfer Mode on full featured DVB cards you may want to apply
  the patch from ftp://ftp.cadsoft.de/vdr/Developer/av7110_v4ldvb_api5_audiobuf_test_1.diff
  to the driver (thanks to Oliver Endriss).
2008-12-14 16:54:12 +01: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
fa56503b9a Version 1.6.0
- Updated the Croatian language texts (thanks to Adrian Caval).
- Added Chinese language texts (thanks to Nan Feng).
- Updated the Portuguese language texts.
- Added a note about VDR_CHARSET_OVERRIDE to the INSTALL file.
2008-03-23 18:00:00 +01:00
Klaus Schmidinger
7ba8708b5b Version 1.5.18
- Added a missing reset of maxNumber in cChannels::Renumber() (reported by Sundararaj
  Reel).
- Revoked the fixed change of the default character set for SI data and introduced
  an environment variable to control it (thanks to Ales Jurik for reporting broken
  SI data on the Czech/Slovak channels, which actually do follow the standard).
  Users who want to set the default character set to something different can do this
  by setting the environment variable VDR_CHARSET_OVERRIDE to something like
  ISO-8859-9.
- Fixed a signed character used as index in cBase64Encoder::NextLine() (thanks
  to Tobias Grimm).
- Updated the Spanish and Catalanian OSD texts (thanks to Luca Olivetti).
- Fixed automatically selecting the preferred subtitle language (based on a patch
  from Rolf Ahrenberg).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Updated the Polish OSD texts (thanks to Michael Rakowski).
- Fixed formatting the name section in the VDR man pages (thanks to Tobias Grimm).
- Updated the Swedish OSD texts (thanks to Magnus Andersson).
- Added Russian translations to the 'skincurses' and 'pictures' plugins (thanks
  to Alexander Gross).
- Fixed displaying the free disk space when entering the recordings menu where the
  last replayed recording was in a subdirectory, and pressing Back (thanks to Rolf
  Ahrenberg).
- Fixed tuning to a live channel after a recording has been stopped using the
  'Back' key.
- Resetting a timer's 'pending' flag when it has ended.
2008-03-16 18:00:00 +01: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
83d7a4b783 Version 1.5.16
- Fixed setting the current subtitle track in Transfer-Mode (reported by Petri Helin,
  thanks to Reinhard Nissl for pointing out that cDevice::Transferring() doesn't
  return the right value in the early stage of channel switching).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- Updated the Dutch OSD texts (thanks to Carel Willemse).
- Fixed various spelling errors and improved PLUGINS.html (thanks to Ville Skyttä).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed the format in cRemote::Put() to use "%016llX" instead of "%016LX" (thanks
  to Ludwig Nussel for pointing this out).
- Revised the fix of calculating the scrollbar height in the skins. The scrollbar
  handle now always has a height that is at least the width of the scrollbar.
- When switching the device that's used for live viewing away from the current
  transponder in favor of an upcoming recording, an attempt is now made to stay
  on the current channel by possibly going into 'Transfer Mode'.
- The CAM menu now stays open as long as it is automatically updated, even without
  pressing a remote control key. This is important when updating the CAM firmware
  from the transponder.
- No longer trying to switch to an available channel if the primary device has
  no valid programme and a menu is open (avoids interference with the CAM in
  case a CAM menu is open).
- Increased the valid range of the "Subtitle offset" setup option to -100...100
  (thanks to Rolf Ahrenberg).
- Added the backslash ('\') to the list of characters that need to be escaped
  when executing external commands (thanks to Peter Bieringer for reporting this one).
2008-02-24 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
e388708339 Version 1.5.14
- Fixed the Play function in the pictures plugin.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Makefile of the skincurses plugin (thanks to Rolf Ahrenberg).
- The new option --localedir can be used to set the locale directory at runtime
  (based on a patch from Stefan Huelswitt).
- Fixed finding new transponders (thanks to Winfried Köhler).
- Implemented handling of DVB-S2 (thanks to Marco Schlüßler and Reinhard Nissl
  for a patch that was used to implement this). VDR now requires the "multiproto"
  DVB driver, e.g. from http://jusst.de/hg/multiproto.
- Removed switching to the next higher or lower channel if the current channel
  is not available, in order to allow staying on an encrypted channel that takes
  a while for the CAM to start decrypting.
2008-01-27 18:00:00 +01:00
Klaus Schmidinger
fc4c8740a7 Version 1.5.13
- Fixed the declaration of cSubtitleObject::Decode8BppCodeString() (thanks to
  Gregoire Favre).
- The new setup option "Miscellaneous/Emergency exit" can be used to turn off
  the automatic restart of VDR in case a recording fails for some reason.
- The kInfo key is now propagated to any open menu, so that it can react to it
  in a context sensitive manner (suggested by Andreas Brugger). If there is
  no menu open it will show the info of the current broadcast or replay.
- cTimeMs now uses the monotonic clock, if available (thanks to Petri Hintukainen).
- Fixed cVector::Clear() and cStringList::Clear().
- Added cString::Truncate().
- Fixed the "i18n:" target in the "newplugin" script, so that it can create the
  initial *.pot file.
- Fixed handling the '-l' option.
- Fixed error handling in cCuttingThread::Action() (thanks to Udo Richter).
- Fixed a loss of the date display in the "classic" skin's main menu (reported by
  Andreas Brugger).
- Added a missing setting of lastFreeMB in cMenuMain::Update() (reported by
  Andreas Brugger).
- Added '-Wno-parentheses' to the compiler options in order to avoid silly compiler
  warnings for expressions like 'a || b && c', where GCC 4.3 wants to force the
  programmer to write 'a || (b && c)', while everybody knows that '&&' links
  stronger than '||' (reported by Tobias Grimm).
- Updated the Hungarian language texts (thanks to István Füley).
- Fixed displaying weekday names in the Schedule menu if the system uses UTF-8
  (reported by Jiri Dobry).
- The new plugin "pictures" implements a simple picture viewer.
  See PLUGINS/src/pictures/README for details.
- The automatic shutdown is now suppressed if the remote control is currently
  disabled (suggested by Helmut Auer, implemented by Udo Richter).
- Added a section about "Logging" to PLUGINS.html (suggested by Torsten Kunkel).
- Enhanced the SVDRP command CLRE to allow clearing the EPG data of a particular
  channel (thanks to Benjamin Hess).
2008-01-13 18:00:00 +01:00
Klaus Schmidinger
29b2d48bb5 Version 1.5.12
- Fixed assembling PS1 packets in cTS2PES::instant_repack() (thanks to Reinhard
  Nissl).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- Fixed handling small PES packets that caused subtitles to be displayed late
  in live mode (based on a patch from Reinhard Nissl).
- Fixed stopping live subtitles when a player is attached to the device.
- Fixed suddenly stopping subtitles in live mode.
2007-11-18 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
dbf38b7c68 Version 1.5.10
- Implemented handling DVB subtitles (thanks to Marco Schlüßler, and also to
  Pekka Virtanen for writing the subtitle plugin, which helped in implementing
  subtitle handling in VDR).
- The new remote control key "Subtitles" can be used to bring up the list
  of available subtitles.
- The new setup option "DVB/Subtitle languages" can be used to define the
  preferred languages for subtitles.
- Fixed selecting the audio track when pressing Ok in the Audio menu (thanks
  to Marco Schlüßler).
- Implemented display of DVB subtitles in live viewing mode.
- Implemented subtitle track selection.
- Implemented bitmap color reduction and shrinking to display subtitles even
  on devices that can't display the necessary number of colors.
- Added compatibility mode for playback of recordings made with the subtitles
  plugin (with some help from Rolf Ahrenberg).
- The new setup option "DVB/Subtitle offset" can be used to shift the location
  of the subtitles in the vertical direction.
- The new setup options "DVB/Subtitle foreground/background transparency"
  define an additional level of transparency for the foreground and background
  color of subtitles.
- Existing recordings made with the subtitle plugin can be given an 'X' record
  in their info.vdr file, so that subtitles can be automatically selected upon
  replay, according to the preferred language setup, as in
  X 3 03 ger deutsch
  (see vdr.5). Note that these entries need to be added in the proper sequence,
  so that they correspond with the actual track languages in the recording.
- Now generating translation files without line numbers to avoid unnecessarily
  large diffs. Plugin authors may want to replace the -F option with
  --no-location in the xgettext and msgmerge calls in their Makefiles.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added a missing Channels.SetModified(true) call when deleting or moving a
  channel in the Channels menu (reported by Halim Sahin).
- Fixed a missing '-' at the next to last line of SVDRP help texts (reported by
  Denis Knauf).
- Added a missing SetVolumeDevice() call in cDevice::SetPrimaryDevice() (reported
  by Reinhard Nissl).
- Fixed a crash when pressing Left while at the first character of a cMenuEditStrItem
  (thanks to Christian Wieninger).
- Only creating a new cDvbOsdProvider in cDvbDevice::MakePrimaryDevice() if 'On'
  is true (i.e. this device is being made the primary device).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed handling reallocated memory in cCharSetConv::Convert() (reported by Udo
  Richter).
- Fixed a new[]/delete mismatch in cMenuEditStrItem::LeaveEditMode() (thanks to
  Udo Richter).
- Implemented sending all frames to devices that can handle them in fast forward
  trick speeds (thanks to Timo Eskola).
- Updated the Hungarian language texts (thanks to Thomas Günther).
- Fixed description of DeviceSetAvailableTrack() and cReceiver(), and added an
  example ~cMyReceiver() in PLUGINS.html (thanks to Marco Schlüßler).
- Improved the description of where logging goes in the INSTALL file (thanks to
  Elias Luttinen).
- Added a note about how to initiate internationalization support to the
  README.i18n file. The Makefile generated by the 'newplugin' script now has the
  'i18n' target automatically create an initial 'po/pluginname.pot' file.
  Plugin authors may want to add the '$(I18Npot)' dependency to the 'i18n'
  target in their Makefiles, as in
  i18n: $(I18Npot) $(I18Nmo)
  (based on a suggestion by Torsten Kunkel).
- Removed a duplicate ',' from the ca_ES.po file (thanks to Thomas Günther).
- Added the 'ß' character to the "allowed characters" in the de_DE.po file
  (suggested by Thomas Günther).
- Made the default copy ctor of cRecording private (thanks to Markus Hahn).
  Same for the assign operator.
- Added cRecording::Undelete() (based on a patch from Markus Hahn).
- Added cDevice::CloseFilter() to allow a device to have complete control over
  both opening and closing section filters (thanks to Rolf Ahrenberg).
- Some fixes to PLUGINS.html (thanks to Rolf Ahrenberg).
2007-10-14 18:00:00 +02:00
Klaus Schmidinger
46c882c04d Version 1.5.9
- Fixed handling locale directories with a large number of entries (thanks to
  Anssi Hannula).
- Updated Turkish language texts (thanks to Oktay Yolgeçen).
- Fixed stripping the context in I18nTranslate() (reported by Christian
  Wieninger).
- Fixed detecting whether a particular locale is actually supported.
- Added a note about LANG having to be set to a valid locale in INSTALL
  (suggested by Matthias Fechner).
- Fixed some compiler warnings with gcc-4.2.0 (thanks to Matthias Schwarzott).
- Fixed setting the locale file name in i18n-to-gettext.pl (thanks to Matthias
  Schwarzott).
- Changed the default for LOCDIR in Makefile and Make.config.template to
  "./locale", so that internationalization works by default when running VDR
  from within its source directory (suggested by Anssi Hannula).
- Added the new i18n macro trVDR(), which can be used by plugins to mark
  texts they want to reuse from VDR's core translations (suggested by Matthias
  Becker).
- VDR now uses the default configuration directory as defined in the CONFDIR
  varable in the Makefile (thanks to Thomas Schmidt).
- The SVDRP command LSTC can now list the channels with group separators if the
  option ':groups' is given (thanks to Andreas Mair).
- Added a missing error report to cCuttingThread::Action() (thanks to Udo
  Richter).
- There can now be more than one OSD at the same time. At any given time,
  however, only one of them can be active (and thus visible). This is to
  allow displaying things like subtitles in an easy way. A cOsd therefore
  now has a "Level", and only the OSD with the smallest level will be
  displayed. The level 0 OSD is special, and there can only be one with
  this level. If there is more than one OSD with a particular level, only
  the one that was created first will be displayed.
  Plugins that provide an OSD need to adjust their cOsdProvider::CreateOsd()
  function to hand through the Level.
- Fixed checking for ttDolbyLast in cDevice::SetCurrentAudioTrack() (thanks
  to Marco Schlüßler).
2007-08-26 18:00:00 +02:00
Klaus Schmidinger
e5a2aa41c9 Version 1.5.8
- Added missing install-i18n to the install target in the Makefile (reported
  by Joachim Wilke).
- Fixed a faulty comment in Make.config.template (reported by Marco Schlüßler).
- Improved i18n-to-gettext.pl (thanks to Matthias Schwarzott).
- Moved the "all" target in plugin Makefiles before the "Implicit rules",
  so that a plain "make" will compile everything (suggested by Matthias
  Schwarzott). The "newplugin" script has been changed accordingly.
  Plugin authors may want to change their Makefiles, too.
- Added DESTDIR and PREFIX handling to the Makefile (thanks to Matthias
  Schwarzott).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added internationalization to the "skincurses" plugin (thanks to Rolf
  Ahrenberg).
- Checking the string for NULL in I18nTranslate().
- Updated the French OSD texts (thanks to Bruno Roussel).
- Some optimizations in cDvbDevice::SetChannelDevice() (thanks to Tobias Bratfisch).
- Optimized cMenuEditChrItem::Set() (thanks to Tobias Bratfisch).
- Optimized cNitFilter::Process() (thanks to Tobias Bratfisch).
- Reduced the number of time(NULL) calls in vdr.c's main loop to a single call
  (thanks to Tobias Bratfisch).
- Changed cBitmap::DrawText() to always draw the background unless ColorBg
  is clrTransparent (thanks to Christoph Haubrich).
- The "Setup/OSD/Language" menu now only shows those languages that actually
  have a locale (suggested by Anssi Hannula).
- Now using setenv() instead of setlocale() to set the language for gettext()
  (suggested by Anssi Hannula; thanks also to Ludwig Nussel for a hint on using
  _nl_msg_cat_cntr).
- When scanning the locale directory, VDR now explicitly looks for a file named
  vdr.mo. Text files for plugins are now named "vdr-name.mo", when "name" is the
  name of the plugin. The "newplugin" script has been changed accordingly, and
  plugin authors should change their Makefiles, too.
2007-08-19 18:00:00 +02:00
Klaus Schmidinger
4c65b525dc Version 1.5.7
- All logging now goes to LOG_ERR, because some systems split error, info and
  debug messages into separate files, which repeatedly caused extra efforts to
  find out when incomplete log excerpts were attached to problem reports in
  the past.
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Fixed a problem with characters >0x7F in the modified version of skipspace()
  (thanks to Marco Schlüßler).
- Fixed a bug I introduced when simplifying the original patch for detecting
  Premiere NVOD channel links (crash reported by Malte Schröder).
- Internationalization is now done with 'gettext' (following a suggestion by
  Lucian Muresan). Plugin authors may want to use the Perl script
  'i18n-to-gettext.pl' to convert their internationalized texts to the gettext
  format (see the instructions inside that script file). The function
  cPlugin::RegisterI18n() is still present for compatibility, but doesn't
  have any more functionality. So plugins that don't convert their texts to
  the gettext format will only present English texts.
  See PLUGINS.html, section "Internationalization", for instructions on how
  to make strings in arrays translatable.
  See README.i18n for information on how to create new or maintain existing
  translations.
- The three letter language codes and their aliases are stored in i18n.c, and
  each translation file only contains one of them to link that language name
  to the code.
- The 'newplugin' script has been extended to generate the Makefile section
  for i18n support.
- The parameter OSDLanguage in 'setup.conf' is now a string and holds the locale
  code of the selected OSD language (e.g. en_US). If Setup.OSDLanguage is not
  set to a particular locale that is found in VDR's locale directory, the
  locale as defined in the system environment is used by default.
- The list of tracks given in cStatus::SetAudioTrack() is now NULL terminated,
  so that plugins can actually use all the strings in the list, not just the
  one pointed to by Index (thanks to Alexander Rieger).
- Fixed handling kLeft in the calls to cStatus::MsgOsdTextItem() (thanks to
  Alexander Rieger).
- Added the "...or (at your option) any later version" phrase to the license
  information of all plugins, and also the 'newplugin' script (suggested by
  Ville Skyttä). Plugin authors may want to consider doing the same.
- Fixed the link to the GPL2 at http://www.gnu.org in vdr.c (thanks to Ville
  Skyttä).
- cBitmap::SetXpm() now checks whether the given Xpm pointer is not NULL, to
  avoid a crash with files that only contain "/* XPM */" (suggested by Andreas
  Mair).
- Added a debug error message to cReceiver::~cReceiver() in case it is still
  attached to a device (thanks to Reinhard Nissl).
2007-08-12 18:00:00 +02:00
Klaus Schmidinger
8849308cf9 Version 1.5.6
- Fixed a buffer overflow in initializing the system character table (thanks
  to Marco Schlüßler).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- Fixed handling single byte characters >0x7F in Utf8ToArray() (thanks to Udo
  Richter).
- Improved numdigits(), isnumber() and strreplace() (thanks to Tobias Bratfisch).
- Fixed clearing color buttons in the 'curses' skin (thanks to Udo Richter).
- Fixed a typo in the function name of cOsd::SetOsdPosition() and added a range
  check to it (thanks to Christoph Haubrich).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Improved cControl::Launch() to keep 'control' from pointing to uninitialized
  memory (thanks to Rolf Ahrenberg).
- Made skipspace() an inline function (suggested by Tobias Bratfisch) and changed
  it to handle the most common case of 'no leading space' very fast, and avoid
  calling isspace(), which made the whole function a lot faster.
- Fixed detection of Premiere NVOD channel links (thanks to Markus Hahn).
- Added a table of the used trick speed values to the description of
  cDevice::TrickSpeed() (suggested by Martin Dauskardt).
- Added a missing 'P' to vdr.c's SHUTDOWNCANCELROMPT macro (reported by Marco
  Schlüßler).
2007-07-22 18:00:00 +02: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
9f42c33ef6 Version 1.5.1
- Added cDevice::HasCi() so that devices with Common Interface can be avoided
  when tuning to an FTA channel, thus preserving the CAM resources even on budget
  DVB cards (suggested by Petri Helin).
- Fixed i18n characters for the Hungarian texts (thanks to Thomas Günther).
- Now using cPipe instead of popen() in cCommand::Execute() to avoid problems
  with open file handles when starting background commands (thanks to Reinhard
  Nissl).
- Removed 'assert(0)' from cDvbSpuDecoder::setTime() (thanks to Marco Schlüßler).
- Fixed a possible crash when loading an invalid XPM file (thanks to Martin Wache).
- Updated satellite names in 'sources.conf' (thanks to Thilo Wunderlich).
- Adapted 'libsi' to DVB-S2 (thanks to Marco Schlüßler).
- Fixed handling error status in cDvbTuner::GetFrontendStatus() (thanks to
  Reinhard Nissl).
- Shutdown handling has been rewritten (thanks to Udo Richter).
- Plugins can now implement the new function WakeupTime() to request VDR to wake
  up at a particular time (thanks to Udo Richter).
- The HUP signal now forces a restart of VDR (thanks to Udo Richter).
- cThread::EmergencyExit() has been replaced by ShutdownHandler.RequestEmergencyExit().
- Several references to "button" in a remote control context have been changed
  to "key" (based on a report from Marko Mäkelä regarding the "Menu button closes"
  text). The "MenuButtonCloses" parameter in 'setup.conf' has therefore been
  renamed to "MenuKeyCloses", accordingly. This will result in an "unknown config
  parameter: MenuButtonCloses" error message in the log file, so you may want to
  remove that entry from your 'setup.conf' file.
- Simplified the error handling in cDvbTuner::GetFrontendStatus() (based on a
  discussion with Reinhard Nissl).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Increased the maximum number of DVB devices to 8 (thanks to Rolf Ahrenberg).
- The new Setup parameter "Channel entry timeout" can be used to customize the time
  since the last keypress until a numerically entered channel number is considered
  complete, and the channel is switched (suggested by Helmut Auer). Setting this
  parameter to 0 turns off the automatic channel switching, and the user will
  have to confirm the entry by pressing the "Ok" key.
2007-02-25 18:00:00 +01:00
Klaus Schmidinger
66ab78a40f Version 1.5.0
- The CAM handling has been refactored. Instead of a cCiHandler per device there
  is now an abstract cCiAdapter and a cCamSlot. This allows each slot to be
  accessed individually.
- The general 15 seconds workaround time before opening the CAM menu has been
  removed. If the CAM menu doesn't open within a timeout, the enter menu command
  is now sent again.
- If a CAM is reset or pulled and reinserted, it now automatically starts
  decrypting the current channel again.
- The Setup/CAM menu now dynamically refreshes its items and displays whether
  a CAM is present or ready. The 'Reset' function no longer leaves the menu.
- The CAM menu will now be openend when pressing the Ok key on a slot entry.
- The CAM menu now stays within the current menu context and doesn't close and
  reopen the menu every time an option is selected.
- When an encrypted channel is switched to for the first time, VDR now checks
  explicitly whether a CAM can actually decrypt that channel. If there is more
  than one CAM in the system that claims to be able to decrypt the channel,
  they are all tried in turn.
  To make this possible, an encrypted channel needs to be received in Transfer
  Mode when it is switched to for the first time, so that VDR can determine
  whether the TS packets are actually decrypted. Once a channel is known to
  be decrypted by a particular CAM, the next time it is switched to it will
  be shown in normal live viewing mode.
- A cDevice now automatically detaches all cReceiver objects that receive PIDs
  that can't be decrypted with the current CAM. A plugin that attaches a cReceiver
  to a device should therefore watch the receiver's IsAttached() function to
  see if it is still attached to the device.
- The cReceiver constructor no longer takes an 'int Ca' as its first parameter,
  but rather a 'tChannelID ChannelID'. This is necessary for the device to be
  able to determine which CAM a particular channel can be decrypted with. If the
  channel is known to be unencrypted, or a plugin doesn't want to provide the
  channel id for other reasons, an invalid tChannelID() can be given.
- The cThread::Start() function now waits until a previous incarnation of this
  thread has actually stopped. Before this it could happen that a thread's
  Cancel(-1) function was called and immediately after that it was started again,
  but the Start() function still found it to be 'active'.
- The parameter NeedsDetachReceivers in cDevice::GetDevice(const cChannel *Channel, ...)
  has been removed. A call to this function will automatically detach all receivers
  from the device if it returns a non-NULL pointer.
- The cTimeMs class now accepts an initial timeout value in its constructor.
- A CAM is now explicitly instructed to stop decrypting when switching away from
  an encrypted channel.
- If the CAM in use can decrypt several channels at the same time, VDR can
  now make use if this capability. Whether or not a CAM can decrypt more
  than one channel is determined by sending it an initial empty QUERY command
  and testing whether it replies to it.
- Ca values in the range 0...F in channels.conf can still be used to assign a channel
  to a particular device, but this will no longer work with encrypted channels because
  without valid CA ids VDR can't decide which CAM slot to use. However, since VDR now
  automatically determines which CAM can decrypt which channel, setting fixed
  channel/device relations should no longer be necessary.
  IF AN ENCRYPTED CHANNEL CAN'T BE DECRYPTED AND YOU HAVE A CA VALUE IN THE RANGE
  0...F FOR THAT CHANNEL, SET IT TO 0 (FTA) AND TUNE TO THE CHANNEL AGAIN.
2007-01-07 18:00:00 +01:00
Klaus Schmidinger
a2096f3beb Version 1.4.5
- Official release.
2007-01-07 18:00:00 +01:00
Klaus Schmidinger
6d4eb0df37 Version 1.4.4-3
- Fixed a possible segfault if VDR gets terminated while a message is displayed
  (thanks to Udo Richter).
- Fixed the INSTALL section on retrying shutdown later (reported by Udo Richter).
- When entering text via the numeric keys, the characters are now checked against
  the allowed characters (thanks to Frank Schmirler).
- Added a missing break statement in cCiHandler::OpenSession().
2007-01-05 18:00:00 +01:00
Klaus Schmidinger
20e2335d3e Version 1.4.4-2
- Added '#include <stdint.h>' to font.h (reported by Peter Pinnau).
- Added a compatibility define for 'uint64' to tools.h, so that existing
  plugins don't need to be modified immediately (reported by Suur Karu).
  This will be removed in version 1.5.
2006-12-03 18:00:00 +01:00
Klaus Schmidinger
287cd613a1 Version 1.4.4-1
- Some improvements to the man pages (thanks to Ville Skyttä).
- Fixed a possible segfault in cSkins::Message() (thanks to Udo Richter).
- Made the getskyepg.pl script of the 'sky' plugin send a user agent message to
  the server, according to the rules at http://bleb.org/tv/data/listings.
  If your version of 'wget' doesn't support the -U option to set the user agent,
  use the new option -U of getskyepg.pl to have the information added to the URL
  as a query string.
- The getskyepg.pl script now replaces "&amp;" with "&".
- Fixed a possible crash in remux.c on 64-bit machines (thanks to Reinhard Nissl).
- Fixed a typo in the change to the "Use small font" setup option in version 1.3.47
  in the HISTORY and CONTRIBUTORS file (reported by Andreas Brugger).
- Added a missing 'const' to cRecordingInfo::ChannelID() (reported by Andreas
  Brugger). This required the APIVERSION to be increased, so plugins will have to
  be recompiled.
- Now calling cPluginManager::Active() only if VDR is really trying to shut down,
  and waiting for 5 minutes before calling it again (thanks to Jörg Wendel for
  reporting that cPlugin::Active() was called too often, and to Udo Richter for
  some hints on how to improve this).
- Replaced 'unsigned long' with 'uint32_t' and 'uint64' with 'uint64_t' to
  avoid problems on 64-bit machines.
2006-12-03 18:00:00 +01:00
Klaus Schmidinger
bc67a03157 Version 1.4.4
- Fixed displaying the replay mode symbol in case of "Multi speed mode" (reported
  by Marco Schlüßler).
2006-11-04 18:00:00 +01:00