28 Commits

Author SHA1 Message Date
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
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
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
d495ed1a3e Version 1.4.2-3
- Added --remove-destination to the 'cp' command for binaries in the Makefiles of
  the plugins (thanks to Rolf Ahrenberg).
- The 'skincurses' plugin now adjusts the size of the OSD to the size of the console
  window.
- Fixed deleting expired VPS timers (under certain conditions a timer could have been
  deleted before it even started recording).
- Updated the Hungarian language texts (thanks to Istvan Koenigsberger and Guido Josten).
- Fixed handling video directory updates in case the timestamp of the .update file
  is in the future (thanks to Petri Hintukainen).
2006-09-17 18:00:00 +02:00
Klaus Schmidinger
80c0452968 Version 1.4.1-2
- Fixed the Makefile of the 'servicedemo' plugin, so that it defines the
  PLUGIN macro, which allows the Make.config file to react properly when
  compiling the plugin (reported by Bernd Melcher).
  Note to all plugin developers: a plugin's Makefile *must* define the PLUGIN
  macro, even if it doesn't use it itself!
- Added a comment regarding the PLUGIN macro to the 'newplugin' script.
- Added '--vfat' to the vdr.1 man page (reported by Udo Richter).
- Removed a double fdopen() in cPipe::Open() (reported by Stefan Huelswitt).
- Fixed handling the running status of EPG events before the currently running one,
  in case they are added after the current event.
- cEIT::cEIT() now calls pSchedule->SetPresentSeen() even if OnlyRunningStatus is
  true.
- Newlines in title and short text of an EPG event are now changed into blanks only
  after all other fixes, because a short text might become a description.
- Fixed handling network masks in the svdrphosts.conf file (thanks to Patrick
  Maier).
- Fixed handling relative volume settings in the call to cStatus::MsgSetVolume()
  (reported by Norbert Wentz).
- Added a missing initialization of 'mutex' in cCiMenu::cCiMenu() and removed
  some superfluous semicolons in ci.c (thanks to Marco Schlüßler).
- Fixed handling client side termination of SVDRP connections (thanks to Frank
  Schmirler).
- cDevice::GetDevice() now prefers any device that's already receiving and doesn't
  require detatching receivers (suggested by Anssi Hannula).
- Fixed handling numeric keys in the channel display after switching channel groups
  (thanks to Andreas Regel).
- Menu items derived from cMenuEditIntItem now loop though their values if they
  have a dedicated minimum or maximum limit (suggested by Andy Grobb). Looping is
  only done for normal keypresses, not for repeated ones. This allows the user to
  scroll the value all the way to the limit by keeping the key pressed.
2006-07-23 18:00:00 +02:00
Klaus Schmidinger
56e5836b54 Version 1.3.49
- Fixed initializing 'noapiv' in the Makefile (reported by Ronny Kornexl).
- Fixed extracting APIVERSION to work with older versions of 'sed' (reported by
  Oliver Endriss; thanks also to Udo Richter for a shorter version of the 'sed'
  expression).
- Fixed broken APIVERSION extraction line in 'newplugin' (thanks to Oliver Endriss).
- Fixed entering '0' in a cMenuEditIntItem (reported by Mirko Dölle).
- Updated the Italian OSD texts (thanks to Nino Gerbino).
- Added a note about adding 'INCLUDES += -I$(DVBDIR)/include' to an existing
  Make.config (problem reported by Markus Ehrnsperger).
- Fixed handling the cPluginManager::Active() result when pressing the "Power" key
  (reported by Werner Färber).
- Added a hint about commenting out the line '#define USE_FADVISE' in tools.c in
  case of problems with replaying in fast forward mode if the video directory is
  mounted via a Samba share (reported by Andy Grobb).
- Changed the "Really restart?" prompt in the call to cPluginManager::Active() in
  menu.c to "restart anyway?" (suggested by Rolf Ahrenberg).
- Removed the obsolete "'1' for encrypted radio channels" part from the description
  of the VPID in vdr.5 (reported by Alexander Hans).
- Fixed tuning to the channel of a VPS timer if the device is the actual device.
2006-04-28 18:00:00 +02:00
Klaus Schmidinger
880c3ddb94 Version 1.3.48
- Updated the GPL copies (thanks to Ville Skyttä).
- Fixed several spelling errors (thanks to Ville Skyttä).
- Updated the Polish OSD texts (thanks to Jaroslaw Swierczynski).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the French OSD texts (thanks to Pierre Briec).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
- Fixed wrong credits for the patch that was used to implement cPlugin::Active().
- Simplified the 'grep|awk|sed' command to retrieve the VDR/APIVERSION to a single
  'sed' call.
- Updated the Swedish OSD texts (thanks to Tomas Prybil).
- Modified the German OSD texts to be "less technical" (thanks to Andreas Brachold).
- Extended the version number reported with the '-V' option to also show the
  current APIVERSION (suggested by Thomas Günther).
- Fixed handling empty titles in cEvent::FixEpgBugs() (reported by Rolf Ahrenberg).
- Fixed some missing '-' in the German OSD texts (thanks to Walter Koch).
- Added an error message about plugins that don't honor APIVERSION in their Makefile
  (based on a suggestion by Udo Richter).
- Fixed a format string in recording.c to avoid a compiler warning on 64bit systems
  (thanks to Christian Wieninger for reporting, and Werner Schweer for pointing out
  that the 'z' modifier should be used here).
- Ignoring k_Repeat when deciding whether the same key has been pressed in string
  input fields (based on a patch from Marko Mäkelä).
2006-04-23 18:00:00 +02:00
Klaus Schmidinger
293ed4027e Version 1.3.47
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed a crash when setting the time transponder in the Setup menu, caused by the
  new 'noneString' in cMenuEditChanItem (reported by Thomas Günther).
- Added NULL checks to some strdup() calls in menuitems.c (suggested by Darren
  Salt).
- Removed the unnecessary 'value' member from cMenuEditItem.
- Fixed the initial setting of the time transponder setup parameter (reported
  by Thomas Günther).
- Fixed unnecessary Set() calls in cMenuEditIntItem::ProcessKey().
- Allowing a tolerance for symbol rate values that are off by one (thanks to
  Richard Lithvall).
- Added VBITeletextDescriptorTag, TeletextDescriptorTag, LocalTimeOffsetDescriptorTag
  and PremiereContentTransmissionDescriptor to 'libsi' (thanks to Marco Schlüßler).
- Using geteuid() to check whether VDR is running as user 'root' (suggested by
  Tobias Grimm).
- Added a missing "Key$" in skincurses.c (reported by Darren Salt).
- Reintroduced the log message "deleting plugin: ..." when shutting down VDR (upon
  request by Ville Skyttä, as in the initial patch from Christoph Haubrich).
- Fixed the vdr.1 man page (a single DVB card can record and do live tv).
- The preferred audio language is now automatically selected when starting replay.
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- The new function cPlugin::Active() can be used by a plugin to indicate that it
  is still busy and the system should not shut down or restart (based on a patch
  from Sascha Volkenandt). See PLUGINS.html for details.
- Fixed setting the 'Delta' parameter when calling the shutdown script with
  no active timer (reported by Helge Lenz).
- In order to make sure that plugins are compiled with the same DVB driver header
  files as VDR itself, the definition of DVBDIR has been removed from the VDR
  Makefile. If you are using a driver version that has its header files at a location
  other than /usr/include/linux/dvb, you can define DVBDIR in the Make.config
  file (see also INSTALL). Note that if you already have a Make.config file of your
  own, you should add the lines

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

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

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

   ### The directory environment:

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

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

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

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

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

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

   -include $(VDRDIR)/Make.config

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

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

   ### The name of the distribution archive:

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

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

   dist: clean
          @-rm -rf $(TMPDIR)/$(ARCHIVE)
  ------------------------------------------------------------
- If a timer is newly created from within the "Schedule" menu, and its event is
  already running or has its start time within the next two minutes, it now goes
  directly into the "Edit timer" menu in order to allow the user to make further
  changes to timer parameters before the actual recording starts (inspired by
  Christian Wieninger's "epgsearch" plugin).
- Added format check to syslog_with_tid().
- Updated the INSTALL file's section about non-VDR files in the video directory
  (since version 1.3.38 disk access is done in a separate thread, so the watchdog
  timer won't hit).
- Changed the behaviour of the "Use small font" setup option to *always* use the small
  font if set to '2' - even if it would have been a fixed font (suggested by Ronny
  Kornexl).
- No longer using characters 0x01 and 0x02 for mapping single quote and slash in
  recording names (thanks to Patrick Fischer for reporting that this was a problem
  with XML). The single quote is not mapped at all, and the slash is interchanged
  with the tilde. Existing recordings will be handled like before, so there is
  no need to actually rename them.
- The cRemote::CallPlugin() function now has a boolean return value that tells
  the caller whether initiating the plugin call was successful (suggested by
  Reinhard Nissl). If it returns false, another plugin call is currently pending
  and the caller should try again later. This also means that the SVDRP command
  PLUG can now return an error code is the call fails.
- The new function cPlugin::MainThreadHook() can be used by plugins to perform
  actions in the context of the main program thread. Use this function with great
  care and only of you absolutely have to! See also PLUGINS.html.
2006-04-17 18:00:00 +02:00
Klaus Schmidinger
8c63e0fd96 Version 1.3.37
- Added compiler options "-fPIC -g" to all plugins (thanks to Rolf Ahrenberg).
- Fixed initializing the day index when editing the weekday parameter of a
  repeating timer (thanks to Marco Schlüßler).
- No longer removing superfluous hyphens in EPG data - would become too
  language dependent to handle all kinds of exceptions.
- Modified switching to Dolby Digital audio in live mode, if the driver
  and firmware can handle live DD without the need of a Transfer Mode (thanks
  to Werner Fink). Live DD mode requires a full featured DVB card and a
  LinuxDVB driver with firmware version 0x2622 or higher. Older versions will
  use Transfer Mode just like before.
- Implemented handling of the "CA PMT Reply" for CAMs (thanks to Marco
  Schlüßler for figuring out some obscure length bytes in the CA PMT Reply
  data of AlphaCrypt CAMs).
- Some preparations for being able to record several encrypted channels from
  the same transponder at the same time (or record and view different encrypted
  channels), provided the CAM in use can handle this. This is work in progress
  and isn't actively used, yet.
- Fixed SetProgress() in the 'skincurses' plugin in case Total is 0 (reported
  by Stefan Huelswitt).
- Added a copy constructor to cString and fixed its assignment operator
  (thanks to Holger Brunn).
- The new function Skins.QueueMessage() can be called from a background thread
  to queue a message for display. See VDR/skins.h for details.
- The SVDRP command MESG uses the new message queueing facility, so MESG
  commands may now be executed at any time, and the message will be displayed
  (no more "pending message").
2005-11-27 18:00:00 +01:00
Klaus Schmidinger
c16bbf7422 Version 1.3.33
- Fixed two errors in 'newplugin' (thanks to Alexander Rieger).
- Fixed converting arbitrarily formatted summary.vdr files (thanks to Thomas Günther).
- Fixed handling color buttons in cMenuEditStrItem (thanks to Alexander Rieger).
- Added cChannel::LinkChannels() and cChannel::RefChannel() (suggested by Helmut Auer).
  Note that VDR itself doesn't actually use the linked channels, yet, so there is
  no guarantee that this really works under all circumstances.
- Added a missing include statement to the 'sky' plugin (thanks to Alfred Zastrow
  for reporting this one).
- Fixed handling key macros with keys after @plugin (thanks to Rolf Ahrenberg for
  reporting this one).
- Fixed error handling in cCiTransportConnection::RecvTPDU() (thanks to Georg Acher
  for reporting this one).
- Removed obsolete 'shift' code in device.[hc].
- The SVDRP command DELR no longer triggers a complete reload of the global Recordings
  list, but rather deletes that particular entry.
- The list of recordings is now read in a separate thread, resulting in a faster
  startup if there are a great many of recordings, or the disk(s) have to spin up.
  If the Recordings menu is opened while the list of recordings is still being read,
  the menu will be updated accordingly.
  Plugins that access the global Recordings variable should lock the thread
  by putting something like

    cThreadLock RecordingsLock(&Recordings);

  into the respective code block. Thanks to Carsten Koch for his help in testing
  and debugging this.
- The 'new' indicator in the Recordings menu is now kept up-to-date (thanks to
  Thomas Günther).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- The '.update' file in the video directory is now touched when a recording is
  added or deleted, so that other VDR instances can update their lists (thanks to
  Alexander Rieger).
- Made the function ExchangeChars() public (suggested by Lucian Muresan).
2005-09-25 18:00:00 +02:00
Klaus Schmidinger
ad40eaa28e Version 1.3.31
- Added missing German OSD texts for 'Audio language'.
- The Setup/CICAM menu now only contains the devices that actually have a CI and
  dynamically detects the number of slots a CI provides.
- Implemented cAudioRepacker for better handling of audio PES packets (thanks to
  Reinhard Nissl).
- Modified handling of audio packets for radio channels in remux.c (thanks to
  Reinhard Nissl).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- Fixed the EPG scan, so that it doesn't use the primary device if that is
  currently in Transfer-Mode from itself (thanks to Marcus Hilbrich for a bug
  report that lead to this).
- Removed the TUNER_LOCK_TIMEOUT in cDevice::AttachReceiver() since it caused more
  trouble than it fixed.
- Fixed detecting short channel names for "Kabel Deutschland", who uses a comma
  as delimiter (thanks to Marco Schlüßler).
- Moved cMenuEditTimer and cMenuEvent to menu.h so that plugins can use it (suggested
  by Thomas Günther).
- The new static function cString::sprintf() can be used to easily create a formatted
  string.
- Plugins can now implement their own SVDRP commands (based on a patch from Hardy
  Flor). See PLUGINS.html, section "SVDRP commands" for details. The SVDRP commands
  of a plugin are accessed through the new SVDRP command PLUG.
  See PLUGINS/src/svdrpdemo for an example of how to use this feature.
- The new SVDRP command PLAY can be used to start replaying a recording (thanks to
  Hardy Flor).
- The new SVDRP command EDIT can be used to start the editing process of a recording
  (based on the CUTR patch by Harald Milz).
2005-08-28 18:00:00 +02:00
Klaus Schmidinger
dab203efe9 Version 1.3.30
- Improved responsiveness inside CAM menus.
- Added handling of the 'Close MMI' tag to avoid error log messages with CAMs
  that actually use it.
- Now waiting at startup until all DVB devices are ready. This includes having
  all CAMs initialized and ready to decrypt, so that no more "channel not
  available" happens if VDR is started with the current channel being an encrypted
  one, or a timer on such a channel hits right after starting VDR.
- Fixed cVideoRepacker to better handle errors in data (thanks to Reinhard Nissl).
- Fixed cDvbTuner to avoid lockups on NPTL systems (thanks to Marcel Wiesweg).
- Added 'Service' functions to the plugin interface (thanks to Udo Richter).
  See PLUGINS.html, section "Custom services" for details.
- Replaced the get/put_unaligned() macros from <asm/unaligned.h> with own inline
  functions to avoid problems on platforms that don't provide these (thanks to
  David Woodhouse for his help).
2005-08-21 18:00:00 +02:00
Klaus Schmidinger
4d477cd144 Version 1.3.20
- Fixed displaying the "Audio" menu with the "Green" button from the "Main" menu
  in case there is only one audio track (thanks to Sascha Volkenandt for reporting
  this one).
- Now setting primaryDevice = NULL before deleting the devices in cDevice::Shutdown()
  to avoid problems in case other threads access it (thanks to Wolfgang Rohdewald for
  pointing this out).
- Fixed a buffer overflow in case a station defines all 32 audio PIDs (thanks to
  Christian Jacobsen for reporting this one).
- Fixed masking SubStreamType in cDevice::PlayPesPacket() (thanks to Werner Fink
  for pointing out this one).
- The new function cPlugin::Stop() shall be used to stop any background activities
  of a plugin. Previously this was done in the plugin's destructor, but it is
  better to do this in a dedicated function that can be called early when shutting
  down.
- Moved the call to SetAudioChannel(0) into cDevice::ClrAvailableTracks() to have it
  executed also when starting a replay.
- Completed the Danish OSD texts (thanks to Mogens Elneff).
- Completed the French OSD texts (thanks to Olivier Jacques).
- The new setup option "OSD/Channel info time" can be used to define the time after
  which the channel display is removed if no key has been pressed (thanks to
  Olivier Jacques).
- Modified cDolbyRepacker to make sure PES packets don't exceed the requested length
  (thanks to Reinhard Nissl).
- Fixed several memory leaks that were introduced through the use of cString (thanks
  to Stefan Huelswitt for reporting these).
- Added CMD_SPU_CHG_COLCON to cDvbSpuDecoder::setTime() (thanks to Marco Schlüßler).
- Making sure the current audio track is actually one of the ones available in a
  recording (thanks to Sascha Volkenandt for reporting a problem when starting
  replay of a recording that has no Dolby Digital audio after switching to a channel
  that has DD and selecting the DD audio track).
- Removed 'flags' from tTrackId (thought we would need this, but apparently we don't).
- Making sure the "Mute" and "Volume+/-" keys don't interfere with digital audio.
- Fixed the "pre 1.3.19" compatibility mode for old Dolby Digital recordings (thanks
  to Werner Fink for pointing out that this can be triggered in the default branch).
- Calling pesAssembler->Reset() in cDevice::AttachPlayer() to avoid problems with
  residual data in replay and Transfer Mode (thanks to Werner Fink for pointing this
  out).
- Added MPEG1 replay capability to cPesAssembler (thanks to Stefan Huelswitt).
2005-02-06 18:00:00 +01:00
Klaus Schmidinger
af483c11ae Version 1.3.13
- Fixed checking for the presence of NPTL (thanks to Jouni Karvo).
- Making sure section filters are only set if the device actually has a lock
  (thanks to Andreas Share for pointing this out).
- Fixed a possible NULL pointer assignment in cMenuText::SetText() (thanks to
  Marco Schlüssler).
- Fixed a crash in case the last line in channels.conf is a group separator and
  that group is selected in the channel display (thanks to Dick Streefland).
- Added cRingBufferLinear::Read() to read directly from a file handle into the
  ring buffer.
- Using timeouts in ring buffers to avoid 'usleep()'.
- Clearing the 'Transfer Mode' ring buffer after clearing the device to avoid
  an "almost full" ring buffer.
- Removed locking from cRingBufferLinear for better performance under high load.
- Using a cRingBufferLinear in cRemux to avoid unnecessary copying of data.
- Using a cRingBufferLinear in cTSBuffer and filling it in a separate thread
  to avoid buffer overflows. Plugins using cTSBuffer will need to remove the
  call to the now obsolete Read() function (see cDvbDevice::GetTSPacket() for
  the new usage of cTSBuffer).
- cRemux::Process() has been split into Put(), Get() and Del() to allow for a
  better decoupling of the remuxing and disk writing process. Plugins using
  cRemux will need to be modified accordingly.
- The actual disk writing in recordings is now done in a separate thread to
  improve the overall throughput.
- Changed cRemux so that it returns the maximum available amount of data with
  each call, not just 2048 byte.
- Added a visual display of all cRingBufferLinear buffers for debugging. To
  activate it, define DEBUGRINGBUFFERS in ringbuffer.h.
- Instead of cCondVar now using the new cCondWait (which also avoids a possible
  "near miss" condition; thanks to Sascha Volkenandt for pointing out this one).
  cCondVar is still present for plugins that use it (and VDR itself also still
  uses it in cRemote).
- The cRingBuffer now does EnableGet()/EnablePut() only if the buffer is more than
  one third full or empty, respectively. This dramatically improves recording
  performance and reduces system load (thanks to Marco Schlüßler for doing some
  testing regarding buffer performance and giving me some hints that finally led
  to finding out that this was the basic problem causing buffer overflows).
- Improved Transfer Mode (thanks to Marco Schlüßler for suggestions and testing).
- Fixed a possible crash with inconsistent SI data (thanks to Marcel Wiesweg).
- Fixed showing the replay mode if the OSD is currently in use (thanks to Kimmo
  Tykkala for pointing out this problem).
- cOsdProvider::NewOsd() now always returns a valid pointer, even if the OSD is
  currently in use (it will then return a dummy cOsd object and write a message to
  the log file).
- Added Estonian language texts (thanks to Arthur Konovalov).
- Fixed 'newplugin' and libsi/Makefile to use the compiler defined in $(CXX) for
  generating file dependencies (thanks to Andreas Brachold).
- Moved the initialization of aPid1 and aPid2 to the beginning of cDvbDevice::cDvbDevice()
  to have them set in case a patch references them (thanks to Wayne Keer for pointing
  this out).
- Completed the Russian OSD texts (thanks to Vyacheslav Dikonov).
- Avoiding unnecessary section filter start/stops (thanks to Marco Schlüßler).
- Made the "Channel not available!" message and mtInfo instead of mtError (suggested
  by Wayne Keer).
- Made volume control more linear (thanks to Emil Naepflein and Udo Richter).
- Now skipping code table info in SI data (suggested by Milos Kapoun).
- Added missing Czech characters to fontosd-iso8859-2.c (thanks to Milos Kapoun).
- Fixed a crash in the time search mechanism (reported by Reinhard Nissl).
- If one PID can't be added, the whole cDevice::AttachReceiver() will now fail
  and all PIDs added so far will be deleted (thanks to Marco Schlüßler for
  pointing out this one).
- Now only saving channels.conf after a modification made by the user (avoids
  lots of disk access due to automatic channel updates). Automatic channel
  modifications will be saved every 10 minutes if no recording is currently
  active.
- Removed the 'Log' parameter from the cChannel::Set... functions. Instead
  checking if the channel has a non-zero number.
- Updated 'channels.conf.terr' for Hannover (thanks to Sven Kreiensen).
2004-10-17 18:00:00 +02:00
Klaus Schmidinger
93a94b18b5 Version 1.3.0
- Changed thread handling to make it work with NPTL ("Native Posix Thread Library").
  Thanks to Jon Burgess, Andreas Schultz, Werner Fink and Stefan Huelswitt.
- The cThread class now accepts a 'Description' parameter, which is used to log
  the beginning and end of the thread, together with its process and thread id.
  For descriptions that need additional parameters you can use the function
  cThread::SetDescription(), which accepts 'printf()' like arguments.
  Existing plugins that use threads should be changed to use this functionality
  instead of explicit 'dsyslog()' calls inside their Action() function in order
  to support logging the thread ids.
- Added "Slovak Link" and "Czech Link" to 'ca.conf' (thanks to Emil Petersky).
  However, 'ca.conf' is now pretty much obsolete due to the automatic CA handling.
- Mutexes are now created with PTHREAD_MUTEX_ERRORCHECK_NP, which makes the
  'lockingTid' stuff obsolete (thanks to Stefan Huelswitt).
- Changed font handling to allow language specific character sets.
- Adopted the small font character set from the "Elchi" patch (originally
  provided by Alessio Sangalli).
- Greek language texts now use iso8859-7 character set (thanks to Dimitrios
  Dimitrakos).
- Rearranged section data handling, so that the actual data handling can be done
  separately, even from within plugins.
- The EPG data structures have been moved from eit.[hc] to epg.[hc] and have been
  adapted to the general VDR coding style. Plugins that use these data structures
  may need to change some function names (which should be obvious).
  The name 'subtitle' has been changed to 'shortText' to avoid clashes with actual
  subtitles that are part of a movie. The name 'extendedDescription' has been
  shortened to 'description'.
- Replaced 'libdtv' with 'libsi' (thanks to Marcel Wiesweg), which is thread
  safe and can be used by multiple section filters simultaneously.
- Added 'cRwLock' to 'thread.[hc]'. Note that all plugin Makefiles need to
  define _GNU_SOURCE for this to work (see the example plugin Makefiles and
  'newplugin').
- Fixed a problem with crc32 in SI handling on 64bit systems (thanks to Pedro
  Miguel Sequeira de Justo Teixeira for reporting this one).
- Fixed an alignment problem in CAM access on 64bit systems  (thanks to Pedro
  Miguel Sequeira de Justo Teixeira for reporting this one).
- Added 'StreamType' setting to CAM communication, which is important for
  Aston/SECA CAMs (thanks to Antonino Sergi).
- Now the CA descriptors are sent to the CAM in the 'program' or 'ES level'
  sections, depending on where they are found in the PMT (thanks to Hans-Peter
  Raschke for reporting this one). This should make SkyCrypt CAMs work.
- Now using the 'version number' of EPG events to avoid unnecessary work.
- Channel data is now automatically derived from the DVB data stream (inspired
  by the 'autopid' patch from Andreas Schultz).
- The current channel is now automatically re-tuned if the PIDs or other settings
  change. If a recording is going on on a channel that has a change in its
  settings, the recording will be stopped and immediately restarted to use the
  new channel settings.
- EPG events now use the complete channel ID with NID, TID and SID.
- Channel names in 'channels.conf' can now have a short form, as provided
  by some tv stations (see man vdr(5)). Currently channels that provide short
  names in addition to long ones are listed in the OSD as "short,long name",
  as in "RTL,RTL Television". The short names will be used explicitly later.
- The Ca parameter in 'channels.conf' has been extended and now contains all the
  CA system ids for the given channel. When switching to a channel VDR now tests
  for a device that provides one of these CA system ids. The devices automatically
  get their supported ids from the CI handler.
- The values in 'ca.conf' are currently without any real meaning. Whether or not
  a channel with conditional access can be received is now determined automatically
  by evaluating its CA descriptors and comparing them to the CA system ids
  provided by the installed CAM. Only the special values 1-16 are used to assign
  a channel to a particular device.
- Increased the maximum number of possible OSD colors to 256.
- Limited the line length in the EPG bugfix report, which appears to fix a buffer
  overflow that caused a crash when cleaning up the EPG data (at 05:00 in the
  morning).
2004-01-04 18:00:00 +01:00
Klaus Schmidinger
0b283547ac Version 1.2.6pre6
- Fixed handling Priority -1 in cDvbDevice::ProvidesChannel() (thanks to
  Torsten Herz).
- Fixed processing EPG data in case there is no title (thanks to Torsten Herz).
2003-11-09 18:00:00 +01:00
Klaus Schmidinger
17c5b4169e Version 1.2.6pre5
- Added cDevice::GetSTC() (suggested by Sven Goethel).
- Added Asia-Pacific satellites to 'sources.conf' (thanks to Richard Scobie).
- Added North American satellites to 'sources.conf' (thanks to Luke Jenkins).
- Fixed getting the list of recordings in case VDR is started from a directory
  where it doesn't have access to (thanks to Dirk Mueller).
2003-11-08 18:00:00 +01:00
Klaus Schmidinger
c84022554a Version 1.1.31
- Introduced the new function cPlugin::Initialize(), in order to be able to separate
  the startup of a plugin into an "early" (Initialize()) and "late" (Start()) phase
  (suggested by Andreas Schultz). Plugin authors should please read the section
  about "Getting started" in PLUGINS.html and adapt their code if applicable.
- Implemented the CableDeliverySystemDescriptor and TerrestrialDeliverySystemDescriptor
  in libdtv (thanks to Sven Grothklags and Andreas Schultz).
- Fixed keeping live video active in case the primary device doesn't have an MPEG
  decoder (thanks to Wolfgang Goeller for reporting this one).
- Implemented cDevice::ActualDevice(), which returns the actual receiving device in
  case of 'Transfer Mode', or the primary device otherwise. This may be useful for
  plugins that want to attach a cReceiver to the device where the current live video
  is actually coming from.
- Added VDRVERSNUM to config.h, which can be used by the preprocessor to check the
  actual VDR version (suggested by Stefan Huelswitt).
- Removed the WaitForPut/WaitForGet stuff from cRingBuffer, since it appears to
  no longer be necessary due to the implementation of cNonBlockingFileReader in
  dvbplayer.c. Also, the long timeout in WaitForPut caused problems with cReceivers
  that use a ring buffer and didn't immediately return from their Receive() function
  if the buffer runs full (thanks to Sascha Volkenandt for reporting this one).
- Fixed handling EPG data where the "extended event descriptor" comes before the
  "short event" or a "time shifted event" (thanks to Jonan Santiago).
- Disabled the "Received stuffing section in EIT" log message.
- Updated 'channels.conf.terr' for Berlin (thanks to Juri Haberland).
- Avoiding short display of the "Main" menu when pressing the "Recordings" button
  or the "Back" button during replay.
- Further increased the timeout until an index file is considerd no longer to be
  written.
- Implemented separate PausePriority and PauseLifetime parameters for the recordings
  created when pausing live video (suggested by Alfred Zastrow).
- Changed C++ style comments in libdtv into C style to avoid warnings in gcc 3.x
  (thanks to Andreas Schultz).
2003-05-11 18:00:00 +02:00
Klaus Schmidinger
48fd2b04e9 Version 1.1.20
- Now checking if there is a connection to the keyboard (thanks to Jaakko Hyvätti)
  and only creating the KBD remote control if VDR is running in the foreground.
- Fixed taking an active SVDRP connection into account when doing shutdown (thanks
  to Gregoire Favre for reporting this one).
- Changed setting of CXX and CXXFLAGS variables in Makefile, so that an externally
  defined value will be taken if present (suggested by Robert Schiele).
  Plugin authors should please change the lines

  CXX      = g++
  CXXFLAGS = -O2 -Wall -Woverloaded-virtual

  in their Makefile to

  CXX      ?= g++
  CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual

- Fixed recording overlapping timers on the same channel in case
  DO_REC_AND_PLAY_ON_PRIMARY_DEVICE and/or DO_MULTIPLE_RECORDINGS is not defined
  (thanks to Jaakko Hyvätti).
- No longer stopping/restarting the DMX when switching audio channels (thanks to
  Sven Goethel).
- Fixed high CPU load in 'Transfer Mode' (thanks to Oliver Endriss).
- If a PC keyboard is used as remote control, the string entry fields in the
  menus now accept character input directly (however, this works only for keys that
  are not otherwise defined as remote control keys). Also, plugins can switch the
  cKbdRemote class into "raw mode", where all keyboard input will be made available
  through the new 'kKbd' key code and none of it will be processed as normal remote
  control functions (thanks to Jan Rieger for suggestions and testing).
- Fixed deleting characters in string entry fields in 'insert' mode.
- Now using "Doxygen" to generate source documentation (thanks to Walter Stroebel
  for providing an initial 'Doxyfile' configuration and adjusting some comments).
  See INSTALL for information how to do this. Some function descriptions have
  already been adapted to Doxygen, more will follow.
2002-12-15 18:00:00 +01:00
Klaus Schmidinger
96ebdbf4b1 Version 1.1.18
- Fixed missing initialization of 'number' in cChannel (thanks to Martin Hammerschmid
  for reporting this one).
- Fixed a misplaced ')' in the fix about the stale lock files (thanks again to
  Oliver Endriss for pointing this out - it was my fault).
- Group delimiters in the 'channels.conf' file that have no text (like a simple ":"
  or ":@201") no longer show up in the Channels menu (suggested by Guy Roussin).
- Added "Tele 5" to 'channels.conf' (thanks to Georg Hitsch).
- Changed the source directory name for plugins from 'SRC' to 'src' (suggested by
  Clemens Kirchgatterer).
- Removed transponders 10788, 11739 and 12266 from 'channels.conf' (apparently they
  are no longer active).
- Deactivated some templates in tools.h in case some plugin needs to use the STL
  (suggested by Gerald Berwolf).
- Timers now accept channel IDs even if the 'source' is 0 (thanks to Stefan Huelswitt
  for reporting this one).
- Now taking an active SVDRP connection into account when doing shutdown or
  housekeeping (suggested by Emil Naepflein).
- Macros in 'keymacros.conf' can now use "@plugin" to directly access the main menu
  function of a given plugin (see man vdr(5) for details).
- The new plugin 'sky' can be used to integrate a Sky Digibox into the VDR system,
  using a Kfir MPEG2 encoder card (see PLUGINS/src/sky/README for details).
2002-12-01 18:00:00 +01:00
Klaus Schmidinger
fe9499ba90 Version 1.1.17
- Added new entries to 'ca.conf'.
- Fixed closing unused PID handles (thanks to Stefan Schluenss for reporting this
  one).
- Added more examples to 'diseqc.conf' (thanks to Oliver Endriss).
- Fixed disabling multiple recordings on a single DVB card (comment out the definition
  of the macros DO_REC_AND_PLAY_ON_PRIMARY_DEVICE and DO_MULTIPLE_RECORDINGS in
  dvbdevice.c).
- Plugins can now have their very own OSD setup in the object they return from
  a call to cPlugin::MainMenuAction(). In order to implement this, the return type
  of cPlugin::MainMenuAction() had to be changed from (cOsdMenu *) to (cOsdObject *).
  So in case you are compiling an existing plugin with this version of VDR and you
  get an error message, simply change cOsdMenu to cOsdObject in the plugin's source
  for the MainMenuAction() function.
  Plugin authors who have so far (ab)used the cControl mechanism to implement their
  own raw OSD should take a look at the new demo plugin 'osddemo'. It implements
  a very primitive game that shows how a plugin can have its own raw OSD. Especially
  look into cLineGame and see how it implements the Show() function. See also
  the chapter on "User interaction" in PLUGINS.html.
- Added three new fields to the lines in 'channels.conf': NID, TID and RID. NID and
  TID are the Network and Transport Stream IDs, respectively. RID is an additional ID
  that can be used to tell apart channels that would otherwise be indistinguishable.
  This is typically the case with radio channels, which may have the same NID, TID
  and SID, but different "radio IDs". This new field is therefore called RID ("radio
  ID"). Currently NID and TID are not yet used by VDR and should always be 0. The
  RID is actually used when building the "unique channel ID", so if you have channels
  in your 'channels.conf' file that cause error messages when loading, you can set
  the RIDs of these channels to different values.
  When reading an old 'channels.conf' these new fields will be automatically
  initialized to 0 and once the file is written back to disk they will be appended
  to the channel definitions.
  Thanks to Régis Bossut for pointing out that with some providers the channels can
  only be distinguished through the RID.
- The "unique channel ID" now contains an optional 5th part (the RID). See man vdr(5).
- Updated 'channels.conf.cable' and made some channels unique using the new RID
  (thanks to Andreas Kool for pointing out the problems).
- Made some channels unique in 'channels.conf.terr' using the new RID.
- Extended the '-l' option to allow logging to LOG_LOCALn (n=0..7) by writing, for
  instance, '-l 3.7' (suggested by Jürgen Schmidt).
- Now deleting stale lock files if they have a time stamp that is outside the window
  'now +/- LOCKFILESTALETIME'. This improves things in cases where the system time
  makes far jumps, so that a lock file might end up with a time stamp that lies
  in the distant future (thanks to Oliver Endriss).
2002-11-24 18:00:00 +01:00
Klaus Schmidinger
1a8a081629 Version 1.1.15
- Completely switched to the new CVS HEAD version of the linux-dvb driver.
  The NEWSTRUCT compile time switch is now obsolete. The required driver is now
  the CVS HEAD version dated 2002-11-01 or later.
- Adjusted the INSTALL file to the 1.1.x version.
- Only accepting key presses from the current remote control when learning (thanks to
  Oliver Endriss).
- Fixed the EPG scanner, which broke 'Transfer Mode' as soon as it kicked in
  (thanks to Oliver Endriss for reporting this one).
- Fixed handling audio tracks in cDvbDevice.
- Updated channels.conf.terr (thanks to Uwe Scheffler).
- Fixed displaying the group separators in the channel display (thanks to Martin
  Hammerschmid for pointing out this one).
- The Makefile now includes the file Make.config (if present in the VDR source
  directory), which allows the user to overwrite several settings with individual
  values (suggested by Andreas Schultz). The VDR distribution archive does not
  contain this file in order to not overwrite a user defined file. There is a
  Make.config.template which contains the default values of the macros the user
  can overwrite.
- Since there have been changes to the 'newplugin' script authors of plugins
  may want to newly create their plugins' Makefiles with the new version of this
  script, and adapt them to their individual needs (make sure you don't overwrite
  your existing plugin directory - make a backup copy first!).
- Fixed reading EPG data via the SVDRP command PUTE (it changed the current
  service ID).
- Fixed closing all dup'ed file descriptors in cPipe.
- Implemented a plugin interface for additional audio processing (see PLUGINS.html
  under "Dolby Digital").
  The functionality of the '-a' command line option has been reactivated.
  Since the author doesn't have any Dolby Digital equipment this may or may not
  work as expected. There may still be some places where a call to cAudios::Clear()
  or cAudios::Mute() is necessary. Those with Dolby Digital equipment should please
  take a look at this and maybe send patches.
  Replaying Dolby Digital in ways other than through VDR's '-a' option will have to
  be implemented as plugins. Those who have written patches for VDR version 1.0.x
  should convert their work into the proper plugins for version 1.1.x.
  Note to authors of cPlayer derived plugins: please read the modified comments
  in device.h regarding the member functions cDevice::Clear(), cDevice::Mute() and
  cDevice::PlayAudio(). Derived classes must call these base class member functions
  to make sure all registered cAudio objects are properly handled. Also note that
  the return type of cDevice::PlayAudio() has been changed to 'void', since this
  function always has to accept the entire data block immediately and there is
  nothing that could be reasonably done in case an error occurs in one of the
  cAudio objects.
- Now checking the driver's DVB_API_VERSION in dvbdevice.h. Since VDR now requires
  a driver dated 2002-11-01 or later the MIN_DVB_DRIVER_VERSION_FOR_TIMESHIFT and
  DVB_DRIVER_VERSION stuff has been replaced with DO_REC_AND_PLAY_ON_PRIMARY_DEVICE,
  which can be used to disable simultaneous recording and replaying on the primary
  DVB device in case there are problems with this.
2002-11-03 18:00:00 +01:00
Klaus Schmidinger
57bd7eeed1 Version 1.1.14
- Fixed some faulty default parameter initializations (thanks to Robert Schiele).
- Added further satellites to 'sources.conf' (thanks to Reinhard Walter Buchner
  and Oliver Endriss).
- Updated Finnish OSD texts (thanks to Jaakko Hyvätti).
- Fixed a small glitch when switching channels (thanks to Dennis Noordsij for
  reporting this one).
- Fixed handling multiple 'CaCaps' entries in 'setup.conf'.
- Group separators in 'channels.conf' may now be given like ':@201 My Channels',
  where '@201' indicates the number to be given to the next channel. This can be
  used to create 'gaps' in the channel numbering (see 'man 5 vdr'). BE CAREFUL
  TO UPDATE YOUR 'timers.conf' ACCORDINGLY IF INSERTING THIS NEW FEATURE INTO YOUR
  'channels.conf' FILE!
- Timers now internally have a pointer to their channel (this is necessary to
  handle gaps in channel numbers, and in preparation for unique channel ids).
- Fixed slow reaction on SVDRP input (thanks to Guido Fiala for reporting this one).
- Added KI.KA to channels.conf.cable (thanks to Robert Schiele).
- Frequency values for cable and terrestrial channels in 'channels.conf' can
  now be given either in MHz, kHz or Hz. The actual value given will be multiplied
  by 1000 until it is larger than 1000000.
- Fixed skipping unavailable channels when zapping downwards.
- Fixed checking the Ca() status of a cDevice (thanks to Stefan Huelswitt).
- Fixed switching audio tracks in 'Transfer Mode' on the primary DVB device
  (thanks to Steffen Barszus and Stefan Huelswitt for reporting this one and
  helping to fix it).
- Fixed channel switching in case of an active 'Transfer Mode' on the primary
  device ('Transfer Mode' is now launched with priority '-1').
- Fixed a ternary expression in dvbspu.c.
- Fixed handling 'Transfer Mode' on single device systems when recording an
  encrypted channel (thanks to Stefan Huelswitt).
- Fixed blocking replaying in case an encrypted channel is being recorded on
  the primary device.
- Now the name of the remote control is displayed when learning the keys.
- Fixed learning remote control keys in case there is more than one remote
  control (thanks to Oliver Endriss for reporting this one).
- Implemented additional dedicated keys for "Play", "Pause", "Stop", "Record",
  "FastFwd", "FastRew", "Channel+" and "Channel-". If your remote control supports
  any of these keys you can delete your 'remote.conf' file and restart VDR to
  go through the key learning procedure again in order to assign these new keys.
  See MANUAL for more information.
  Authors of player plugins should update their ProcessKey() functions so that
  the new player keys have the same functionality as the "Up", "Down", "Left",
  "Right" and "Blue" keys, respectively. Note that the existing functionality
  of these keys should by all means be retained, since VDR (and any plugins)
  shall be fully usable with just the basic set of keys. These new keys are only
  for additional comfort in case the remote control in use supports them.
- Implemented new keys to directly access the VDR main menu functions "Schedule",
  "Channels", "Timers", "Recordings", "Setup" and "Commands". If your remote
  control provides keys you want to assign these functions to, you can delete
  your 'remote.cof' file and restart VDR to  go through the key learning procedure
  again in order to assign these new keys. See MANUAL for more information.
- The new configuration file 'keymacros.conf' can be used to assign macros to
  the color buttons in normal viewing mode, as well as to up to 9 user defined
  keys. See MANUAL and man vdr(5) for more information. The default 'keymacros.conf'
  implements the functionality of the "color button patch".
- Fixed a crash when learning the keys of several remote controls and pressing
  buttons of those that have already been learned (thanks to Oliver Endriss for
  reporting this one).
2002-10-27 17:00:00 +01:00
Klaus Schmidinger
d08073815d Version 1.1.11
- Fixed an incomplete initialization of the filter parameters in eit.c (thanks
  to Jeremy Hall).
- Fixed the 'newplugin' script for use with the NEWSTRUCT driver (thanks to
  Andreas Schultz for reporting this one). If you have already created a plugin
  directory and Makefile with 'newplugin', please apply the following patch to it:

  -------------------------------------------------------
  --- Makefile    2002/06/10 16:24:06     1.4
  +++ Makefile    2002/09/17 15:36:36     1.5
  @@ -15,7 +15,12 @@

   ### The directory environment:

  +ifdef NEWSTRUCT
  +DVBDIR = ../../../../DVB/include
  +DEFINES += -DNEWSTRUCT
  +else
   DVBDIR = ../../../../DVB/ost/include
  +endif
   VDRDIR = ../../..
   VDRINC = $(VDRDIR)/include
   LIBDIR = ../../lib
  @@ -34,7 +39,7 @@

   INCLUDES = -I$(VDRINC) -I$(DVBDIR)

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

   ### The object files (add further files here):
  -------------------------------------------------------

  This is the diff for the 'setup' example that comes with VDR, so your line
  numbers may be different.
- Added a missing 'public' keyword in device.h (thanks to Martin Hammerschmid).
- Fixed a race condition when starting 'Transfer Mode'.
- Rearranged the remote control key handling to allow plugins to implement
  additional types of remote controls (see PLUGINS.html, section "Remote Control").
  The previously used files 'keys.conf' and 'keys-pc.conf' have been replaced
  by the file 'remote.conf', which holds the key definitions of all remote controls.
- The LIRC remote control keys are now handled just like the keyboard and RCU keys.
  This means that you can use the lircd.conf file as is for your remote control,
  without the need of editing it to make the key names the same as used in VDR.
  When first starting VDR it will go into the "Learning keys" mode and ask you
  to press the various keys. The resulting key assignment will be stored in
  the file 'remote.conf'.
  Since I have no way of testing the LIRC support, I hope I didn't break it in
  the process...
- While learning the remote control keys it is now possible to press the 'Menu'
  key to skip the definition of keys that are not available on your particular
  RC unit.
- Fixed handling DVD subtitles in the SPU decoder (thanks to Andreas Schultz).
- Avoiding restarts due to 'panic level' when switching channels on the primary
  device during EPG scan.
2002-09-29 18:00:00 +02:00
Klaus Schmidinger
523c4a07aa Version 1.1.9
- Fixed the 'newplugin' script to make it name the target for creating the
  distribution package 'dist', as stated in the PLUGINS.html documentation.
  If you have already created a plugin source directory and Makefile you may
  want to check it and replace the 'package' target with 'dist' if necessary.
- Changed device handling for being able to do simultaneous recording and
  replay on the same device (Time Shifting). In order for this to work you need
  to use a driver with a firmware version that has this feature implemented.
- cDevice::ProvidesCa() is no longer virtual. The new function
  cDevice::ProvidesChannel() is now used to determine whether a device can
  receive a given channel, and by default this function returns false. So a
  device that is a pure replaying device doesn't need to do anything here.
- Increased the recorder buffer size to 5MB in order to be able to better handle
  multiple recordings.
- Implemented cTSBuffer for better handling TS packet buffering in derived
  cDevice classes.
- Changed the interface if cDevice::GetTSPacket() to avoid unnecessary copying
  of data.
- Removed cDevice::Channel(), since this makes no more sense with devices
  receiving multiple channels.
- Switching through channels with the 'Up' and 'Down' keys now skips channels
  that are currently not available (for instance because all devices are
  recording and these channels are on different transponders).
- Implemented an SPU decoder (thanks to Andreas Schultz).
- Fixed a crash when entering an integer value outside the limits (thanks to
  Stefan Huelswitt for reporting this one).
- Added play mode pmAudioOnlyBlack (thanks to Stefan Huelswitt).
2002-09-08 18:00:00 +02:00
Klaus Schmidinger
f06d2c27fc Version 1.1.3
- Improved the VDR Makefile to avoid a warning if the '.dependencies' file does
  not exist, and also using $(MAKE) to call recursive makes.
- Changed the name of the 'package' target in the plugin Makefiles to 'dist'
  (following the suggestions in the "GNU Make" manual). If you already have started
  a plugin project, you may want to change this in your Makefile accordingly.
- Improved the plugin Makefile to avoid a warning if the '.dependencies' file does
  not exist, and also using $(shell...) to get the version numbers. If you already have
  started a plugin project, you may want to change this in your Makefile accordingly.
- Fixed some function headers to make them compile with gcc 3.x (thanks to
  Gregoire Favre).
- Fixed the cutting mechanism to make it re-sync in case a frame is larger than the
  buffer (thanks to Sven Grothklags).
- Added an error message if the directory specified in the '-L' option can't be
  accessed (suggested by Stefan Huelswitt).
- Rearranged OSD class names to make 'cOsd' available for the main OSD interface.
- Completely moved OSD handling out of the cDvbApi class, into the new cOsd.
- Implemented cStatus to allow plugins to set up a status monitor.
  See PLUGINS.html for details.
- Moved the cEITScanner out of dvbapi.h/.c, into the new eitscan.h/.c.
- Added Swedish language texts (thanks to Tomas Prybil).
- Fixed parsing 'E' records in epg2html.pl (thanks to Matthias Fechner for pointing
  out this one).
- Removed compiler option '-m486' to make it work on non-Intel platforms. If you
  have already started a plugin project, you may want to make sure you remove this
  option from your existing Makefile.
- Completely rearranged the recording and replay functions to make them available
  to plugins.
- Replay is now done in a single thread (no more syncing between input and output
  thread necessary).
- It is now possible to record several channels on the same transponder with "budget
  cards". VDR automatically attaches a recording timer to a card that already
  records on the appropriate transponder. How many parallel recordings can actually
  be done depends on the computer's performance. Currently any number of recordings
  gets attached to a card, so you should carefully plan your timers to not exceed
  the limit. On a K6-II/450 it was possible to record three channels from transponder
  12480 with a single WinTV NOVA-S.
- Timers that record two successive shows on the same channel may now overlap and
  will use the same DVB card. During the time where both timers record the data
  is simply saved to both files.
- The following limitations apply to this version:
  + Transfer mode doesn't work yet.
  + The '-a' option (for Dolby Digital audio) doesn't work yet.
  + Switching between different language tracks doesn't work yet.
  + Cutting doesn't work yet.
2002-06-16 18:00:00 +02:00
Klaus Schmidinger
d07e3829f7 Version 1.1.2
- Changed the cPlugin::Start() function to return a boolean value that indicates
  if the plugin will not be able to perform its task (suggested by Stefan Huelswitt).
- Added the cPlugin::Housekeeping() function (suggested by Stefan Huelswitt).
- Updated channels.conf.cable (thanks to Uwe Scheffler).
- Added 'insert' capabilities to cList (suggested by Stefan Huelswitt).
- Changed the 'package' target in the plugin's Makefile to produce a package that
  expands to a directory with just the plugin name and version number (suggested
  by Stefan Huelswitt).
- Made the config directory available to plugins (suggested by Stefan Huelswitt).
  See PLUGINS.html, section "Configuration files" for details.
- Improved the [eid]syslog() macros, so that the LOG_... macros don't need to be
  given any more.
2002-05-13 18:00:00 +02:00
Klaus Schmidinger
ae8a947367 Version 1.1.0
- Begin of the 1.1 development branch. THIS IS NOT A STABLE VERSION!
  The current stable version for every day use is still the 1.0 branch.
- First step towards a universal plugin interface. See the file PLUGINS.html
  for a detailed description. The man page vdr(1) describes the new options '-L'
  and '-P' used to load plugins. This first step implements the complete "outer"
  shell for plugins. The "inner" access to VDR data structures will follow.
- The VDR version number is now displayed in the title line of the "Setup" menu.
2002-05-09 18:00:00 +02:00