88 Commits

Author SHA1 Message Date
Klaus Schmidinger
d5c85f5ff8 Version 1.3.32
- Added some missing braces in remux.c (thanks to Wayne Keer for reporting this one).
- Removed unused MAINMENUENTRY from svdrpdemo.c (thanks to Udo Richter for reporting
  this one).
- Fixed appending sequence end code in cDvbPlayer::Goto() (thanks to Reinhard Nissl).
- Fixed syncing in cRepacker (thanks to Reinhard Nissl).
- Now always using stream id 0xE0 for the video stream, to avoid problems with
  post processing tools that choke on different ids (suggested by Reinhard Nissl).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Fixed cDvbPlayer::SkipFrames() to properly handle radio recordings (thanks to
  Reinhard Nissl).
- Updated the Swedish OSD texts (thanks to Tomas Prybil).
- Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- Made LIRC command parsing more robust (thanks to Ville Skyttä).
- Introduced a separate 'plugins-install' target in the Makefile (thanks to Daniel
  Thompson).
- Re-introduced the code that waits for a tuner lock in VDR/device.c, since
  apparently some users actually need it. It's not active by default, you'll have
  to define the WAIT_FOR_TUNER_LOCK macro in that file if you need it (suggested
  by Malcolm Caldwell).
- Adjusted the Makefile to the dvb-kernel driver on kernel 2.6 and up (thanks to
  Lauri Tischler).
- Repeat keys are now ignored when waiting for a keypress to cancel an operation
  (thanks to Marko Mäkelä).
- The main menu function of a plugin can now be activated through a key macro of
  the form "@plugin" even if that plugin doesn't have a main menu entry (using
  part of a patch by Hardy Flor, which originally implemented calling plugins from
  SVDRP).
- The menu timeout handling is now done centrally in the main program loop.
- Added missing help for the 'help' keyword in the SVDRP command PLUG.
- The main menu function of a plugin can now be called programmatically through
  the static function cRemote::CallPlugin().
- The SVDRP command PLUG now has a new option 'main' which can be used to initiate
  a call to the main menu function of a plugin (using part of a patch by Hardy Flor).
- The new command line option '--vfat' can be used to make VDR encode special
  characters in recording file names, even if it wasn't compiled with VFAT=1
  (suggested by Peter Bieringer). The compile time option VFAT still exists and
  creates a VDR that always behaves as if it were called with '--vfat'.
- Replaced the ':' delimiter between hour and minute in recording file names with
  a '.' under Linux, too. Existing recordings with ':' as delimiter will still work.
- Implemented the SVDRP command MOVC (thanks to Andreas Brachold).
- Added support for multiple audio language codes in ISO639LanguageDescriptors to
  'libsi' (thanks to Marcel Wiesweg).
- Changed the audio PID language codes to hold up to two 3 letter codes, separated
  by '+', to store separate languages broadcast in two channel audio mode.
- If the preferred audio language is broadcast on a PID that has two different
  languages in the two stereo channels, the audio channel is now properly set when
  switching to such a channel (thanks to Mogens Elneff for his help in testing this).
- Fixed some typos in MANUAL (thanks to Ville Skyttä).
- Fixed the default value for "Setup/EPG bugfix level" (thanks to Ville Skyttä for
  reporting this one).
- Fixed defining timers that only differ in the day of week (thanks to Patrick
  Rother for reporting this one).
- Fixed converting summary.vdr files that would result in a very long 'short text'
  (thanks to Carsten Koch).
- Implemented a hash for the channels to reduce the system load in the EIT scanning
  thread (based on a patch by Georg Acher).
2005-09-11 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
ddd1e13e53 Version 1.3.29
- Fixed a race condition in cTransfer (thanks to Klaus Heppenheimer for reporting this one).
  In doing so, the 'active' variables used by the actual derived cThread classes
  have been replaced by the cThread::Running() function.
  Plugin authors may want to check their derived cThread classes and replace any 'active'
  variables the same way as, for instance, done in transfer.c.
- Fixed handling EPG data for time shifted events (thanks to Marco Schlüßler).
- Increased the default value for 'Min. user inactivity' to 300 minutes (suggested
  by Helmut Auer).
- Now storing the channel id in the info.vdr file even if there is no EPG info
  available (thanks to Andreas Brachold for reporting that there are empty info.vdr
  files created in that case).
- Added some 'mkdir -p' to the Makefile's 'install' target (thanks to Wayne Keer).
- Changed the title of the recording info menu (thanks to Rolf Ahrenberg).
- Fixed handling the frame number display if '7' is pressed before the first editing
  mark, or '9' after the last one (thanks to Thomas Günther).
- Now discarding any previous numerical input to switch channels if Up, Down, Channel+,
  Channel-, Left or Right is pressed (thanks to Wolfgang Rohdewald for reporting a
  problem with this).
- Pressing Ok while entering a channel number now immediately switches to that
  channel, without waiting for further input.
- Avoiding unnecessary OSD draw operations caused by the audio track description
  display in the ST:TNG skin's channel display (thanks to Oliver Endriss for reporting
  this).
- Removed the VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES stuff from
  cDvbDevice::StillPicture(), since apparently the VIDEO_STILLPICTURE call works.
2005-08-15 18:00:00 +02:00
Klaus Schmidinger
4c5de28883 Version 1.3.28
- Added a sleep in cDvbPlayer::Action() in case there is no data to send to the
  device, which avoids a busy loop on very fast machines (thanks to Martin Wache).
- Modified the description of cDevice::Poll() to avoid misunderstandings.
- Updated Croatian language texts (thanks to Drazen Dupor).
- cDvbPlayer::Goto() now appends a Sequence End Code to get the image shown
  immediately with softdevices (thanks to Reinhard Nissl).
- Reactivated cVideoRepacker in remux.c after some fixes (thanks to Reinhard Nissl).
- Removed the fix for handling VPS timers, so that they only record if the event
  they are assigned to actually has the given VPS time. This has caused repeating
  VPS timers to stop recording prematurely.
- Avoiding duplicate components in EPG events when reading epg.data or in the
  PUTE SVDRP command (thanks to Olaf Titz for reporting this one).
- Added the command line options '--lirc', '--rcu' and '--no-kbd' to allow setting
  the remote control at runtime (based on a patch by Darren Salt).
- Now checking whether timers or channels are currently being edited via the menu
  before making changes through SVDRP (thanks to Andreas Brugger for reporting a
  problem with this).
- Files and directories are now created with rights according to the shell's
  umask settings (thanks to Andreas Brachold).
- Fixed the cChannel copy constructor (thanks to Marcel Wiesweg for pointing out
  a problem with it).
- Fixed an out-of-bounds memory access with audio language ids (thanks to
  Matthias Lenk for reporting, and Udo Richter for suggesting a fix).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added missing storing of the MenuScrollPage parameter (thanks to Frank Krömmelbein).
- Added cRemux::SetTimeouts() for better use of cRemux in a single thread (thanks
  to Udo Richter for reporting a problem with this).
- Modified cEITScanner::Process() so that it uses the primary device if it is
  replaying and is the only device that provides the given transponder, and that
  a forced EPG scan works even if EPG scan timeout is set to 0 (thanks to
  Bernhard Stegmaier for reporting a problem with this).
- Fixed cDvbSpuBitmap::putPixel() (thanks to Reinhard Nissl).
- Fixed setting system time to avoid time jumps in case of faulty data (thanks
  to Andreas Böttger).
- Fixed a memory leak in the SVDRP command LSTE (thanks to Stefan Huelswitt).
2005-08-07 18:00:00 +02:00
Klaus Schmidinger
a616d4b859 Version 1.3.26
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed handling 'summary.vdr' files with more than two empty lines (thanks to
  Christian Jacobsen for reporting this one).
- Improved resetting CAM connections (thanks to Marco Schlüßler).
- Implemented cVideoRepacker in remux.c to make sure every PES packet contains
  only data from one frame (thanks to Reinhard Nissl).
  NOTE: currently this doesn't work with MPEG1, so if you use MPEG1 you may want
  to change line 1158 in remux.c to

  ts2pes[numTracks++] = new cTS2PES(VPid, resultBuffer, IPACKS);

  as it was before.
- EPG events without a title now display "No title" instead of "(null)" (thanks
  to Rolf Ahrenberg).
- A device can now detach all receivers for a given PID, as is necessary, e.g.,
  for the bitstreamout plugin (thanks to Werner Fink).
- Added the year (two digits) to recording dates in LSTR, and thus also in menus
  (suggested by Jan Ekholm).
- Fixed the call to Channels.Unlock() in cEITScanner::Process() (thanks to
  Reinhard Nissl).
- Fixed handling timers with a day given as MTWTF--@6, i.e. a repeating timer with
  first day not as full date, but just day of month (thanks to Henrik Niehaus for
  reporting this one).
- Removed an unnecessary #include from osd.c (thanks to Wolfgang Rohdewald).
- Fixed dropping EPG events that have a zero start time or duration, in case it's
  an NVOD event (thanks to Chris Warren).
- Fixed handling page up/down in menu lists in case there are several non selectable
  items in a row (thanks to Udo Richter for reporting this one).
- Added cOsdMenu::SetCols() to allow adjusting the menu columns.
- Modified cEITScanner::Process() so that it works on systems with only budget cards
  or a mix of DVB-S, DVB-C or DVB-T cards.
2005-06-12 18:00:00 +02:00
Klaus Schmidinger
05402c7407 Version 1.3.22
- Removed some unneeded code and fixed access to unallocated memory in
  cEvent::FixEpgBugs() (thanks to Wolfgang Rohdewald).
- Avoiding unnecessary calls to SetPid() in cDvbDevice::SetAudioTrackDevice()
  (thanks to Marco Schlüßler).
- No longer calling EnsureAudioTrack() in cDevice::SetChannel() if a Transfer Mode is
  started, to avoid setting the audio PID on the primary device (thanks to Marco
  Schlüßler for pointing this out).
- Replaced the call to system("sync") in SpinUpDisk() with fdatasync(f) to avoid
  problems on NPTL systems (thanks to Chris Warren for pointing this out).
- Increased POLLTIMEOUTS_BEFORE_DEVICECLEAR in transfer.c to 6 to avoid problems
  with the larger buffer reserve (thanks to Marco Schlüßler).
- Fixed the call to SetVideoFormat() in cDvbDevice::cDvbDevice() (parameter is _bool_).
- Added support for setting the video display mode (thanks to Marco Schlüßler).
- The new setup option "DVB/Video display format" can be used to define which display
  format to use for playing wide screen video on a 4:3 tv set.
- Changed MAXDPIDS to 16 (8xAC3 + 8xDTS) (thanks to Werner Fink for pointing this out).
- Completed Dutch language texts (thanks to Hans Dingemans).
- Added 'smi' to the Finnish language codes (thanks to Rolf Ahrenberg).
- Fixed ensuring there is a current audio track in case there is only one track
  (thanks to Werner Fink for reporting this one).
- Improved automatic audio track selection.
- Keeping the track language codes and descriptions in Transfer Mode (thanks to
  Luca Olivetti).
- Fixed handling repeated kAudio keys.
- Improved displaying the the current audio track in the ST:TNG channel display.
2005-02-27 18:00:00 +01: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
e36fe18c48 Version 1.3.19
- Making sure at least the default skin is available at program start in case a
  plugin needs to issue an error message (thanks to Achim Tuffentshammer for
  reporting a crash in such a case). Also checking if there is a current skin
  in cSkins::Message().
- Completed the Finnish OSD texts and fixed internationalization of the text
  for "Setup/DVB/Audio language(s)" (thanks to Rolf Ahrenberg).
- Completed the Estonian OSD texts and switched to iso8859-13 character set
  (thanks to Arthur Konovalov).
- Made cCondWait::SleepMs() sleep at least 3ms to avoid a possible busy wait.
- Fixed canceling the LIRC thread (thanks to Marco Schlüßler for pointing out
  this one).
- The "Green" button in the "Main" menu is now always "Audio", since the audio
  channel might be changed even if there is only one actual audio PID.
- Fixed handling the '-E' option which was broken in version 1.3.18 (thanks to
  Christian Jacobsen for reporting this one).
- Added 'channels.conf.terr' entries for Mainz (thanks to Michael Heyse).
- Implemented cDolbyRepacker for better handling of Dolby Digital PES packets
  (thanks to Reinhard Nissl).
- Fixed playing files with PES packets longer than 2048 byte through the full
  featured DVB card (thanks to Marco Kremer for reporting this one and providing
  a test sample).
- Recording and Transfer Mode now handle more than 2 audio PIDs. For this the
  interfaces of the following functions have been changed:
  cTransferControl::cTransferControl()
  cTransfer::cTransfer()
  cRecorder::cRecorder()
  cReceiver::cReceiver()
  cRemux::cRemux()
- Fixed a possible race condition in cDevice::Action() and cTSBuffer::Action()
  (thanks to Stefan Huelswitt).
- Extended some buffer sizes to allow handling HDTV streams (thanks to Reinhard
  Nissl).
- Added 'channels.conf.terr' entries for Düsseldorf and Köln (thanks to Walter Koch).
- Falling back to 'stereo' when switching channels in case the user had switched
  to 'left' or 'right' (suggested by Rolf Groppe).
- Completed the Danish OSD texts (thanks to Mogens Elneff).
- Recording and Transfer Mode can now handle up to 8 Dolby Digital tracks (thanks
  to Marco Schlüßler for a patch that implements substream handling into
  cDevice::PlayPesPacket(), and Reinhard Nissl for adding substream handling to
  cDolbyRepacker).
- Added PlayPes(NULL, 0) to cTransfer::Action() when clearing the transfer buffer
  to avoid overflows (thanks to Marco Schlüßler for pointing this out).
2005-01-23 18:00:00 +01:00
Klaus Schmidinger
fb5cccb2df Version 1.3.18
- Removed an unused variable from cTimer::GetWDayFromMDay() (thanks to Wayne Keer
  for reporting this one).
- Some more changes to the 'childTid' handling in cThread (based on suggestions by
  Stefan Huelswitt).
- Fixed the spelling of 'canceling' (thanks to Wayne Keer for reporting this one).
- Re-introduced a sleep to cDvbPlayer::Action() to avoid high CPU load in still
  picture mode (thanks to Reinhard Nissl for reporting this one).
- Fixed a possible race condition in generating the DVB device names (thanks to
  Rainer Zocholl for reporting this one).
- Changed the way PES packets are played to allow replay of AC3 sound over the
  full featured DVB cards (partially based on a patch from Werner Fink).
  + The new function cDevice::PlayPes() is now called with the complete PES data
    stream and calls PlayVideo() and PlayAudio() as necessary.
  + cDevice::PlayVideo() is now only called with actual video PES packets.
  + cDevice::PlayAudio() is now called with the actual audio PES packets, which
    can be either "normal" audio or AC3 data. You need at least firmware version
    0x261d to replay AC3 sound over a full featured DVB card. This function now
    has an 'int' return value.
  + PlayAudio() of derived cDevice classes shall no longer call the base class
    function. It shall just play the given data as audio.
  + cPlayer::PlayVideo() and cPlayer::PlayAudio() are now obsolete and have been
    replaced with cPlayer::PlayPes().
  + All StripAudioPackets() functions are now obsolete. The functionality has been
    moved into cDevice::PlayPes(), where only the video and audio packets that are
    actually required will be processed.
  + All audio track handling is now done by cDevice; cTransfer and cDvbPlayer no
    longer care about audio tracks. cPlayer, however, still has the virtual hooks
    for audio track handling in order to allow plugins to implement players that
    have their own idea about this.
  + cChannel::[AD]pid[12]() have been replaced with cChannel::[AD]pid(int i) to
    allow access to all available PIDs.
- Escaped the '-' and 'ö' characters in the man pages (thanks to Darren Salt for
  pointing this out).
- Completed the Italian OSD texts (thanks to Sean Carlos).
- Fixed setting 'synced' in cRemux when recording radio channels (thanks to
  Laurence Abbott).
- Removed the LOCK_THREAD from the LIRC thread (thanks to Ludwig Nussel).
- Fixed genfontfile.c (sometimes the character width was wrong, and the codes were
  shifted one too far to the left).
- Fixed the character width and shifted the codes one to the right in all font
  files.
- Renamed font???.c to font???-iso8859-1.c for symmetry.
- Switched the character set to iso8859-15 for English, German and Finnish (thanks
  to Andreas Brugger for reporting the missing Euro sign in iso8859-1).
- Added 'channels.conf.terr' entries for Lübeck (thanks to Stefan Hußfeldt).
- Fixed a race condition in starting a thread (thanks to Reinhard Nissl for
  reporting this one).
- Replaced non-threadsafe library functions with their threadsafe versions (thanks
  to Rainer Zocholl for pointing this out).
- Other non-threadsafe functions have been replaced by threadsafe classes that hide
  the actual buffering. In particular these are:
  readdir() -> cReadDir
  readline() -> cReadLine
- Several formerly non-threadsafe functions now have a return type of cString:
  cChannel::ToText()
  tChannelID::ToString()
  cEvent::GetDateString()
  cEvent::GetTimeString()
  cEvent::GetEndTimeString()
  cEvent::GetVpsString()
  cMark::ToText()
  cTimer::ToText()
  cSource::ToString()
  cTimer::PrintDay()
  cTimer::PrintFirstDay()
  PrefixVideoFileName()
  IndexToHMSF()
  ChannelString()
  strescape()
  AddDirectory()
  itoa()
  WeekDayName()
  DayDateTime()
  When using these functions in a 'const char *' context there is nothing special
  to consider, except that you can no longer have a pointer to the return value,
  as in
  const char *date = DayDateTime();
  Although this will compile without error message, the resulting 'date' will not
  be valid after this line. Use this instead:
  cString date = DayDateTime();
  In a 'const void *' context (as in printf() etc.) the result needs to be
  dereferenced with a '*', as in
  printf("%s", *DayDateTime());
  to make it a 'const char *'.
- Removed delay_ms(), using cCondWait::SleepMs() instead.
- Replaced time_ms() with a threadsafe and non-overflowing cTimeMs (thanks to Rainer
  Zocholl for pointing out this problem).
- Added cDevice::mutexReceiver to avoid a race condition when attaching/detaching
  receivers from different threads.
- The new remote control button "Audio" can be used to switch between different
  audio tracks. The "Green" button in the "Main" menu has been changed from "Language"
  to "Audio", since it now also controls switching between normal and Dolby Digital
  audio tracks (see MANUAL for details).
- The description of the audio tracks is now taken from the "component descriptors"
  that are broadcast in the EPG data. However (as no big surprise), not all channels
  actually provide useful data here, so there are now some additional EPG bugfixes,
  which can be activated by setting the "EPG bugfix level" to 3.
- The format of the 'epg.data' files has been extended by the new tag 'X', which
  contains the stream components of an event (see man vdr(5) for details).
- The cStatus class now has the new member function SetAudioTrack(), which can be
  used to get notified when the audio track has been switched, and the new member
  function SetAudioChannel() which is called when the audio channel is changed.
- Skins need to implement the new cSkinDisplayTrack class to display the audio
  track menu.
- The ST:TNG skin now displays the current audio track description (if any) at the
  botton left side.
- The new setup option "DVB/Audio languages" can be used to control which audio
  language shall be selected in case a channel broadcasts in different languages
  (see MANUAL for details).
- The "Left" and "Right" keys in the "Audio" menu can be used to switch between
  the left and right stereo channels in case there are different audio tracks
  in these channels (see MANUAL for details).
- Fixed a possible race condition in cDevice::Action() (thanks to Mattias Grönlund).
- Fixed the default quality value when grabbing a JPEG image (thanks to Patrick
  Gleichmann).
- Fixed deleting a menu item in case the next item is not selectable (thanks to
  Dino Ravnic).
- Implemented displaying mandatory subtitles in the SPU decoder (thanks to Marco
  Schlüßler).
- The setup option "Recording/Record Dolby Digital" has been renamed and moved to
  "DVB/Use Dolby Digital". It now controls whether Dolby Digital is recorded and
  whether an available DD audio track will appear in the "Audio" menu.
- Added support for circular polarization (thanks to Jonan Santiago).
- Thanks to Werner Fink, Reinhard Nissl, Sascha Volkenandt and Bjørnar Nilsen for
  their support in testing and fine tuning this version.
2005-01-09 18:00:00 +01:00
Klaus Schmidinger
3038be2a6a Version 1.3.15
- Fixed some typos in the Makefile's 'font' target (thanks to Uwe Hanke).
- Added more checks and polling when getting frontend events (based on a patch
  from Werner Fink).
- No longer explicitly waiting for a tuner lock when switching channels
  (apparently setting "live" PIDs before the tuner is locked doesn't hurt).
  Moved the wait into cDevice::AttachReceiver() instead.
- Immediately displaying the new channel info when switching channel groups.
- Moved the main program loop variables further up to allow compilation with
  older compiler versions (thanks to Marco Schlüßler for reporting this one).
- Now calling pthread_cond_broadcast() in the destructor of cCondWait and
  cCondVar to make sure any sleepers will wake up (suggested by Werner Fink).
  Also using pthread_cond_broadcast() instead of pthread_cond_signal() in
  cCondWait, in case there is more than one sleeper.
- Making sure that timers and channels are only saved together, in a consistent
  manner (thanks to Mirko Dölle for reporting a problem with inconsistent
  channel and timer lists).
- Now handling the channel name, short name and provider separately. cChannel
  therefore has two new functions, ShortName() and Provider(). ShortName()
  can be used to display a short version of the name (in case such a version
  is available). The optional boolean parameter of ShortName() can be set to
  true to make it return the name, if no short name is available.
  The sequence of 'name' and 'short name' in the channels.conf file has been
  swapped (see man vdr(5)).
- Added the 'portal name' to cChannels (thanks to Marco Schlüßler).
- Fixed handling key codes that start with 0x1B in the KBD remote control code.
- Now using qsort() to sort cListBase lists. For this, the virtual function
  cListObject::operator<() has been replaced with cListObject::Compare().
  Plugins that implement derived cListObject classes may need to adjust their
  code.
- The "Channels" menu can now be sorted "by number" (default), "by name" and
  "by provider". While in the "Channels" menu, pressing the '0' key switches
  through these modes.
- Fixed the buffer size in cRecording::SortName().
- Now displaying the name of the remote control for which the keys are being
  learned inside the menu to avoid overwriting the date/time in the 'classic'
  skin (thanks to Oliver Endriss for reporting this one).
2004-11-01 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
eb52e3004a Version 1.3.11
- In order to avoid problems on NPTL systems, VDR now checks for the presence
  of NPTL at program start, and if it is, exits and tells the user to do
  'export LD_ASSUME_KERNEL=2.4.1' before starting VDR.
- Revisited the "Fixed missing audio after replaying a DVD" change because it
  introduced a sound disturbance when switching between channels on the same
  transponder (thanks to Marco Schlüßler).
- In order to avoid problems on UTF-8 systems, VDR now checks for the presence
  of UTF-8 at program start, and if it is, exits and tells the user to turn off
  UTF-8 before starting VDR (thanks to Ludwig Nussel for pointing out a problem
  with systems that are set to use UTF-8). There are also problems in case the
  video partition is mounted with "iocharset=utf8" (thanks to Jörg Knitter for
  reporting this one).
  Please also read the "IMPORTANT NOTES" section in the INSTALL file!
- Some changes to the SPU decoder interface (thanks to Sven Goethel).
- Some improvements in cOsd creation (thanks to some suggestions by Jouni Karvo).
- Fixed calculating the OSD width and height (thanks to Olaf Henkel for reporting
  a problem with long event texts in the "Classic VDR" skin).
- Fixed switching channels while an encrypted channel is being recorded, because the
  channel was switched if the new channel was on the same transponder and was
  a radio channel or an unencrypted channel (thanks to Martin Dauskardt for reporting
  this one).
- No longer using the external 'find' command to scan the video directory for
  recordings (based on a suggestion by Mirko Dölle).
- The list of recordings is now kept statically in memory to avoid long delays
  when opening the "Recordings" menu. As a side effect, external modifications to
  the video directory are no longer immediately reflected in the "Recordings" menu.
  If a plugin manipulates the video directory in any way, it can call the function
  Recordings.TriggerUpdate() to trigger an update of the list of recordings.
  If some external tool manipulates the video directory, it can touch the file
  '.update' in the video directory to trigger an update of the list of recordings.
- Fixed a memory leak in theme description handling (thanks to Sascha Volkenandt).
- Added cDevice::Flush() to make sure that all data in the video card's buffers
  has been processed (thanks to Reinhard Nissl). Currently this is not yet actually
  implemented for FF DVB cards.
- Fixed handling the color button texts in cMenuEditStrItem (thanks to Maynard
  Cedric for reporting this one).
- Fixed the description of cRingBufferLinear (thanks to Ludwig Nussel for pointing
  out this one).
- Fixed cRingBufferLinear::Get() in case the buffer wraps around (thanks to Ludwig
  Nussel for reporting this one).
2004-06-19 18:00:00 +02:00
Klaus Schmidinger
3c349510b5 Version 1.3.8
- Fixed a crash when switching the skin and having selected a non-default theme
  that is not available for the newly selected skin (thanks to Sascha Volkenandt
  for reporting this one).
- Fixed some issues with gcc 3.4 (thanks to Prakash K. Cheemplavam and Marcel
  Wiesweg).
- Added a hint to PLUGINS.html about how to name a plugin that implements a skin.
- Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Single shot timers and events now show the day of week (adopted with some changes
  from the "elchi" patch, orginally introduced by Oskar Signell). Plugins that use
  cEvent::GetDateString() should note that this function now returns a longer
  string, including the day of week. The new function const char *WeekDayName(time_t t)
  can be called with a time_t value to get the day of week for that time.
- When processing XPM data, the color name "None" is now mapped to #00000000, which
  is "fully transparent" (suggested by Sascha Volkenandt).
- Fixed the OSD alignment in the SPU decoder (thanks to Miko Wohlgemuth for reporting
  this one and helping to test the fix).
- Fixed freezing picture when a recording starts on a system that always uses
  'Transfer Mode' (thanks to Michal Dobrzynski for reporting this one).
- Fixed a memory leak in NIT processing (thanks to Marcel Wiesweg).
- Added a few missing initializations (thanks to Marcel Wiesweg).
- Moved the declaration of cMenuText to VDR/menu.h to make it available to plugins.
  It now also has a SetText() function that can be used to dynamically set the text
  in an already existing cMenuText (both suggested by Stefan Huelswitt).
- Added play mode pmVideoOnly (thanks to Marcel Wiesweg).
- Added a missing cStatus::MsgOsdClear() to cDisplayChannel::~cDisplayChannel()
  (thanks to Oliver Endriss).
- No longer displaying unused color buttons in the "Classic VDR" skin (thanks to
  Oliver Endriss for reporting this one).
- Added some missing cStatus::MsgOsdTextItem() calls (thanks to Oliver Endriss for
  reporting this one).
2004-05-23 18:00:00 +02:00
Klaus Schmidinger
c80a53ff6e Version 1.3.7
- Fixed a memory leak in thread handling when using NPTL (thanks to Jon Burgess).
- Fixed handling Setup.RecordDolbyDigital, which was broken since version 1.1.6.
- Fixed handling text lengths for itemized EPG texts (thanks to Marcel Wiesweg).
- Fixed the help for LSTE and LSTR (was broken in 1.3.6).
- Improved iso8859-7 fonts (thanks to Dimitrios Dimitrakos).
- Added some 3-letter language codes (thanks to Marcus Mönnig).
- Added language code handling to the subtitling descriptor in 'libsi' (thanks to
  Pekka Virtanen).
- Moved several menu item classes from menu.c to menuitems.[hc] to make them
  available for plugins.
- The epg2html.pl script now handles '|' in description texts.
- The new setup option "OSD/Use small font" can be used to control the use of
  the small font (see MANUAL for details).
- Swapped osd.[hc] and osdbase.[hc] to have the virtual OSD base class named cOsd.
  Plugins may need to adjust their #include statements.
- Colors are now given as AARRGGBB instead of AABBGGRR. The values are mapped to
  the driver's (wrong) sequence in dvbosd.c (this should really be fixed in the
  driver, together with the endian problem).
- The new OSD setup parameters "Left" and "Top" can be used to define the top left
  corner of the OSD.
- The OSD size parameters are now in pixel (as opposed to formerly characters).
  When reading a 'setup.conf' file from an older version of VDR, the OSDwidth
  and OSDheight values will be converted to pixel automatically.
- The OSD is now fully device independent. See the comments in VDR/osd.h and the
  description in PLUGINS.html for information on how a plugin can implement an OSD
  display on arbitrary hardware.
- The OSD (actually its cBitmap class) can now handle XPM files. There are several
  XPM files in the VDR/symbols directory which can be used by skins (some of these
  have been taken from the "elchi" patch). See VDR/skinsttng.c for examples on how
  to use these.
- Due to the changes in the OSD handling the DEBUG_OSD option for a textual OSD
  has been dropped. There will be a plugin that implements a skin with this
  functionality later.
- The entire OSD display can now be implemented via "skins". See VDR/skins.[hc],
  VDR/skinclassic.[hc], VDR/skinsttng.[hc] and PLUGINS.html for information on how
  a plugin can implement its own skin. By default VDR comes with a "Classic" skin
  that implements the OSD display known from previous versions, and the new skin
  named "ST:TNG Panels", which is also the default skin now. The actual skin can
  be selected through "Setup/OSD/Skin".
- The colors used in a skin can now be configured using "themes". See PLUGINS.html
  for information on how a skin can make use of themes, and man vdr(5) for the
  structure of a theme file. The actual theme to use can be selected through
  "Setup/OSD/Theme".
- Added Croatian language texts (thanks to Drazen Dupor).
  NOTE: there is apparently a problem with the newly introduced iso8859-2 font,
  because as soon as Setup/OSD/Language is set to Croatian (currently the last one
  in the list) everything freezes and the vdr processes have to be killed with -9
  and the driver needs to be reloaded. Maybe somebody else can find out what's
  going wrong here...
- Added missing NULL checks when accessing sectionHandler in device.c (thanks to
  Pekka Virtanen).
- Fixed setting the time from the DVB data stream (thanks to Helmut Auer for
  pointing out a frequency/transponder handling mixup). This now also takes the
  actual source (sat, cable etc.) into account. Please go into "Setup/EPG" and
  set the "Set system time" and "Use time from transponder" parameters accordingly
  (this is necessary even if you have already set them before!).
2004-05-16 18:00:00 +02:00
Klaus Schmidinger
9384e56566 Version 1.3.6
- Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed some descriptor handling in 'libsi' (thanks to Stéphane Esté-Gracias).
- Fixed handling the current menu item (thanks to Marc Hoppe).
- Fixed assigning events to timers (they no longer get "stuck").
- Added log entries whenever the running status of an event changes (currently
  only logging the first 30 channels).
- Fixed handling timers in VPS margin if the EPG scan is turned on (the EPG scan
  switched the device away from the channel, so it wouldn't see the change of
  the running status).
- Fixed handling "itemized" texts in EPG data (thanks to Stéphane Esté-Gracias
  for pointing out this problem, and Marcel Wiesweg for improving 'libsi').
- Fixed handling VPS times at year boundaries.
- Avoiding too many consecutive "ring buffer overflow" messages (which only
  slowed down performance even more).
- Taking the Sid into account when detecting version changes in processing the
  PMT (thanks to Stéphane Esté-Gracias for pointing out this problem).
- Completed the Russian OSD texts (thanks to Vyacheslav Dikonov).
- Any newline characters in the 'description' of EPG events are now preserved
  to allow texts to be displayed the way the tv stations have formatted them.
  This was also necessary to better display itemized texts.
- Fixed detecting the running status in case an empty EPG event is broadcast (thanks
  to Michael Pennewiß for pointing this out).
- Improved performance when paging through very long menu lists.
- Removed cSchedule::GetEventNumber() and cSchedule::NumEvents(). There is now
  cSchedule::Events() that returns the list of events directly.
- Avoiding occasional bad responsiveness to user interaction caused by assigning
  events to timers.
- Now explicitly turning on the LNB power at startup, because newer drivers don't
  do this any more (thanks to Oliver Endriss for pointing this out).
2004-03-14 18:00:00 +01:00
Klaus Schmidinger
5a4eb3f104 Version 1.3.5
- Fixed reading the EPG preferred language parameter from 'setup.conf'.
- Fixed switching to a visible programme in case the current channel has neither
  a video nor an audio PID.
- Fixed editing channels (SID now range checked) and creating new channels (NID,
  TID and RID are now set to 0).
- Fixed transponder handling to make it work with satellites that provide two
  transponders on the same frequency, with different polarization, like Hispasat
  at S30.0W (thanks to Thomas Bergwinkl for pointing this out). See man vdr(5)
  for details about the enhanced channel ID format.
- Since there appears to be no general solution for the UPT error yet, a recording
  now initiates an "emergency exit" if the number of UPT errors during one
  recording exceeds 10 (suggested by Gregoire Favre). Since the UPT error doesn't
  happen on my system, this has not been explicitly tested.
  The "preliminary fix" for the UPT error in VDR/dvbdevice.c has been disabled
  by default, since it makes channel switching unpleasently slow. If you want
  to have that workaround back, you can uncomment the line
  //#define WAIT_FOR_LOCK_AFTER_TUNING 1
  in VDR/dvbdevice.c.
- Adapted the 'sky' plugin to use the actual channel IDs, and to fetch EPG data
  from www.bleb.org.
- Limited automatic retuning to devices that actually provide the transponder
  (necessary for the 'sky' plugin).
- Fixed handling receivers in the 'sky' plugin, so that a recording on the same
  channel won't interrupt an ongoing Transfer Mode.
- Added subtable ID and TSDT handling to 'libsi' (thanks to Marcel Wiesweg).
- Fixed some Russian OSD texts (thanks to Vyacheslav Dikonov).
- Added the 'running status' to the EPG events. This is necessary for implementing
  the VPS function for recording.
- Removed the obsolete 'present' and 'following' handling from the EPG data.
- The EPG data is now always kept sorted chronologically in the internal data
  structures. This also means that any EPG data retrieved through the SVRDP
  command LSTE is guaranteed to be sorted by start time.
- Now using the 'running status' in the channel display, so that a programme
  that has an end time that is before the current time, but is still running,
  will still be shown in the display (provided the broadcasters handle the
  'running status' flag correctly). This also applies to programmes that have
  a start time that is in the future, but are already running.
- Implemented an "EPG linger time", which can be set to have older EPG information
  still displayed in the "Schedule" menu (thanks to Jaakko Hyvätti).
- Added PDCDescriptor handling to 'libsi'.
- Implemented handling the VPS timestamps (aka "Programme Identification Label")
  for full VPS support for timers (provided the tv stations actually broadcast
  this information). The VPS time is displayed in the event info page if it exists
  and is different than the event's start time.
- Extended the SVDRP command LSTE to allow limiting the listed data to a given
  channel, the present or following events, or events at a given time (thanks to
  Thomas Heiligenmann).
- Fixed a typo in libsi/si.h (thanks to Stéphane Esté-Gracias).
- Timers can now be set to use the VPS information to control recording a programme.
  The new setup options "Recording/Use VPS" and "Recording/VPS margin", as well as
  the "VPS" option in the individual timers, can be used to control this feature
  (see MANUAL for details).
  Note that this feature will certainly need a lot of testing before it can be
  called "safe"!
- The "Schedule" and "What's on now/next?" menus now have an additional column
  which displays information on whether there is a timer defined for an event,
  whether an event has a VPS time that's different than its start time, and
  whether an event is currently running (see MANUAL under "The "Schedule" Menu"
  for details).
2004-02-29 18:00:00 +01:00
Klaus Schmidinger
3fc2965975 Version 1.3.4
- Fixed handling language codes in case there is no audio or Dolby PID.
- Fixed handling CA ids (was broken in 1.3.3).
- Fixed the SVDRP command 'STAT DISK' to avoid a 'division by 0' in case the
  disk is full (thanks to Jens Rosenboom).
- Fixed handling bitmap indexes for 256 color mode (thanks to Andreas Regel).
- Now handling "linked services" (based on the 'autopid' patch from Andreas
  Schultz). Linked channels are detected and added to 'channels.conf', but
  currently they are not yet presented to the user other than being in the
  normal channel list (this will come later).
- Preliminary fix for the "Unknown picture type error" (thanks to Sascha
  Volkenandt for his support in debugging this one). This may slow down switching
  between channels on different transponders for now, but a better solution will
  come later.
- Fixed the validity check for channel IDs, because some providers use TIDs with
  value 0 (thanks to Thomas Bergwinkl).
- Enabled switching to a channel even if it has no Vpid or Apid set, because these
  might be automatically set when tuned to that transponder.
- No longer closing the Channels menu after trying to switch to a channel that
  is currently not available.
- Removed the now obsolete CaCaps stuff. The Setup/CICAM menu now displays the
  actual CAM type as reported by the CAM. The 'ca.conf' file has been stripped
  down to the values 0..4.
2004-02-08 18:00:00 +01:00
Klaus Schmidinger
a76a03c0d8 Version 1.3.1
- Fixed a lockup in the EPG scanner when no non-primary device was available
  (thanks to Martin Holst for reporting this one).
- Fixed a compiler warning about virtual cConfig::Load() functions (thanks to
  Lauri Tischler for reporting this one).
- Fixed a warning about character comparison in libsi/si.c (thanks to Lauri
  Tischler for reporting this one).
- The new parameter "Update channels" in the "Setup/DVB" menu can be used to
  control if and how channels will be automatically updated (see MANUAL).
  This has already been part of the 'autopid' patch by Andreas Schultz and has
  now been adopted.
- Fixed a crash in case there is no DVB hardware present (thanks to Sascha
  Volkenandt for reporting this one).
- Changed calculation of channel ids to make it work for tv stations that use
  the undefined NID value 0 (thanks to Teemu Rantanen for reporting this one).
- Enhanced the SDT filter to handle multi part sections.
- Added support for selecting preferred EPG languages (based upon a patch by
  Teemu Rantanen).
- Fixed a 'const' in libsi/si.h (thanks to Marcel Wiesweg).
- Fixed the 'su' call in 'runvdr' to make it work on systems that require the
  user name to appear before the command option (thanks to Robert Huitl).
- Fixed testing for matching section filters in case they are turned off (thanks
  to Marcel Wiesweg).
- In case of incomplete sections an error message is now logged only every 10
  seconds.
- Fixed a possible NULL pointer access in cEITScanner::Process() (thanks to
  Andreas Kool).
- The actual transponder data is now taken from the NIT and existing channels
  are adjusted if necessary. If the NIT contains new transponders, they are
  scanned for channels during the next EPG scan. Note that only the satellite
  branches are tested, cable and terrestrial need to be tested by somebody who
  actually has such equipment.
2004-01-11 18:00:00 +01:00
Klaus Schmidinger
93a94b18b5 Version 1.3.0
- Changed thread handling to make it work with NPTL ("Native Posix Thread Library").
  Thanks to Jon Burgess, Andreas Schultz, Werner Fink and Stefan Huelswitt.
- The cThread class now accepts a 'Description' parameter, which is used to log
  the beginning and end of the thread, together with its process and thread id.
  For descriptions that need additional parameters you can use the function
  cThread::SetDescription(), which accepts 'printf()' like arguments.
  Existing plugins that use threads should be changed to use this functionality
  instead of explicit 'dsyslog()' calls inside their Action() function in order
  to support logging the thread ids.
- Added "Slovak Link" and "Czech Link" to 'ca.conf' (thanks to Emil Petersky).
  However, 'ca.conf' is now pretty much obsolete due to the automatic CA handling.
- Mutexes are now created with PTHREAD_MUTEX_ERRORCHECK_NP, which makes the
  'lockingTid' stuff obsolete (thanks to Stefan Huelswitt).
- Changed font handling to allow language specific character sets.
- Adopted the small font character set from the "Elchi" patch (originally
  provided by Alessio Sangalli).
- Greek language texts now use iso8859-7 character set (thanks to Dimitrios
  Dimitrakos).
- Rearranged section data handling, so that the actual data handling can be done
  separately, even from within plugins.
- The EPG data structures have been moved from eit.[hc] to epg.[hc] and have been
  adapted to the general VDR coding style. Plugins that use these data structures
  may need to change some function names (which should be obvious).
  The name 'subtitle' has been changed to 'shortText' to avoid clashes with actual
  subtitles that are part of a movie. The name 'extendedDescription' has been
  shortened to 'description'.
- Replaced 'libdtv' with 'libsi' (thanks to Marcel Wiesweg), which is thread
  safe and can be used by multiple section filters simultaneously.
- Added 'cRwLock' to 'thread.[hc]'. Note that all plugin Makefiles need to
  define _GNU_SOURCE for this to work (see the example plugin Makefiles and
  'newplugin').
- Fixed a problem with crc32 in SI handling on 64bit systems (thanks to Pedro
  Miguel Sequeira de Justo Teixeira for reporting this one).
- Fixed an alignment problem in CAM access on 64bit systems  (thanks to Pedro
  Miguel Sequeira de Justo Teixeira for reporting this one).
- Added 'StreamType' setting to CAM communication, which is important for
  Aston/SECA CAMs (thanks to Antonino Sergi).
- Now the CA descriptors are sent to the CAM in the 'program' or 'ES level'
  sections, depending on where they are found in the PMT (thanks to Hans-Peter
  Raschke for reporting this one). This should make SkyCrypt CAMs work.
- Now using the 'version number' of EPG events to avoid unnecessary work.
- Channel data is now automatically derived from the DVB data stream (inspired
  by the 'autopid' patch from Andreas Schultz).
- The current channel is now automatically re-tuned if the PIDs or other settings
  change. If a recording is going on on a channel that has a change in its
  settings, the recording will be stopped and immediately restarted to use the
  new channel settings.
- EPG events now use the complete channel ID with NID, TID and SID.
- Channel names in 'channels.conf' can now have a short form, as provided
  by some tv stations (see man vdr(5)). Currently channels that provide short
  names in addition to long ones are listed in the OSD as "short,long name",
  as in "RTL,RTL Television". The short names will be used explicitly later.
- The Ca parameter in 'channels.conf' has been extended and now contains all the
  CA system ids for the given channel. When switching to a channel VDR now tests
  for a device that provides one of these CA system ids. The devices automatically
  get their supported ids from the CI handler.
- The values in 'ca.conf' are currently without any real meaning. Whether or not
  a channel with conditional access can be received is now determined automatically
  by evaluating its CA descriptors and comparing them to the CA system ids
  provided by the installed CAM. Only the special values 1-16 are used to assign
  a channel to a particular device.
- Increased the maximum number of possible OSD colors to 256.
- Limited the line length in the EPG bugfix report, which appears to fix a buffer
  overflow that caused a crash when cleaning up the EPG data (at 05:00 in the
  morning).
2004-01-04 18:00:00 +01:00
Klaus Schmidinger
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
5f5dfd7f69 Version 1.2.3 (not officially released)
- Fixed the TS to PES repacker so that it works with MPEG1 streams (thanks to
  Andreas Kool).
- Fixed keeping track of the current channel number when moving channels in
  the "Channels" menu (thanks to Mirko Günther for reporting this one).
- Made the plugin library directory configurable via Make.config (thanks to
  Ludwig Nussel).
- Fixed scaling SPU bitmaps in Letterbox mode when playing NTSC material.
  In order to do this, the cDevice was given a new member function GetVideoSystem().
- Fixed two warnings when compiling with gcc 3.3.1 (thanks to Alfred Zastrow for
  reporting this).
- Made crc32() a static function in libdtv/libsi/si_parser.c to avoid a name clash
  when using other libraries that also implement a function by that name (thanks
  to Reinhard Nissl for reporting this one).
- Fixed staying off the end of an ongoing recording while replaying in time shift
  mode (thanks to Rainer Zocholl for reporting this one).
- VDR now stops with exit status 2 if one of the configuration files can't be
  read correctly at program startup (suggested by Rainer Zocholl).
- Fixed a crash when starting "Pause live video" twice within the same minute on
  the same channel.
- Fixed freezing replay if a timer starts while in Transfer Mode from the device
  used by the timer, and the timer needs a different transponder (thanks to
  Richard Robson for reporting this one).
- Fixed toggling channels with the '0' key (thanks to Mirko Günther for reporting
  this one).
- Made the "Zap timeout" (the time until a channel counts as "previous" for
  switching with '0') a setup variable, available in "Setup/Miscellaneous"
  (suggested by Helmut Auer).
- Removing deleted recordings faster than normal when cutting, to avoid running
  out of disk space (thanks to Manfred Schmidt-Voigt for reporting this one).
2003-08-17 18:00:00 +02: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
af2a135212 Version 1.1.30
- Fixed minimum lifespan of deleted recordings (thanks to Jaakko Hyvätti).
- Updated French OSD texts (thanks to Olivier Jacques).
- Fixed paging through lists with repeated Left/Right keys.
- Fixed setting the PCR-PID in case it is equal to one of the other PIDs (thanks
  to Oliver Endriss for reporting this one).
- Fixed double call to MainMenuAction() of a plugin if invoked via a hotkey (thanks
  to Kai Moeller for reporting this one).
- Fixed handling dedicated keys.
- Now turning off live PIDs when replaying. This avoids short spikes from other
  channels when switching between Transfer Mode channels, and also lets an ongoing
  replay continue even if a recording is started on the primary device.
- The RCU channel display no longer changes when a recording on a different
  channel starts on the primary device.
- Restoring the current channel in case a recording has switched the transponder.
  If all devices are busy and none of them can provide the current channel, the
  message "Channel not available!" will be displayed.
- Removed the (no longer necessary) 'panic' stuff from cThread.
- Added cStatus::OsdItem() to provide the entire list of menu items to a plugin
  (thanks to Carsten Siebholz).
- The red ("Record") and yellow ("Pause") button in the "Main" menu are no longer
  available when replaying.
2003-05-04 18:00:00 +02:00
Klaus Schmidinger
0686038af3 Version 1.1.29
- Fixed detecting broken connection to the LIRC daemon (thanks to Ludwig Nussel).
- Now sending CA descriptors to the CAM in the same sequence as they were originally
  received (thanks to Stefan Huelswitt).
- The PCR PID can now be set separately from the video PID. The syntax in the
  'channels.conf' file is, for example, ...:164+17:..., where 164 is the video PID
  and 17 is the PCR PID. The separator is a '+' sign, not a comma or semicolon as
  with the audio PIDs, because this is not an alternate PID, but rather an
  additional, necessary PID. In order to use this feature you need a driver version
  dated 2003-04-27 or higher (setting the PCR PID didn't work in earlier versions).
- Fixed deleting the last recording in the "Recordings" menu, which started pausing
  live video (thanks to Christoph Friederich for reporting this one).
- Now setting the "broken link" flag for GOPs at the beginning of a new video
  sequence, which avoids artefacts when cutting (thanks to Stefan Huelswitt).
- Removed the Mute() call from cDvbDevice::StillPicture() (suggested by Andreas
  Schultz).
- Updated 'channels.conf.terr' for Berlin (thanks to Andreas Brachold).
- Extended logging info when starting/stopping timers to show the channel number,
  start/stop time and the file name (suggested by Manuel Hartl).
- Added a note regarding non-VDR files in the /videoX directories to INSTALL
  (suggested by Benjamin Harling).
- Skipping keys that come in too fast from LIRC (thanks to Christian Jacobsen).
- Avoiding short display of the main menu if a plugin displays its own OSD and
  is started through a user defined key macro (thanks to Andreas Mair for reporting
  this one).
- Reduced the time to wait for EPG data when starting a recording to 3 seconds.
- The new SVDRP command STAT can be used to request information about the disk
  usage (thanks to Thomas Koch).
- Fixed faulty calculation of section length in eit.c (thanks to Teemu Rantanen).
2003-04-27 18:00:00 +02:00
Klaus Schmidinger
3e1d34f392 Version 1.1.21
- Fixed the 'channels.conf' entries for "Studio Universal" and "Disney Channel".
- Fixed handling channels in the "Channels" menu in case there are ':@nnn' group
  separators without names (thanks to Guy Roussin for reporting this one).
- The SVDRP command CHAN now also accepts channel IDs.
- Increased the timeout until an index file is considerd no longer to be written
  (sometimes in time shift with heavy system load the index file was closed too
  early by the replay thread).
- Implemented "Link Layer" based CAM support, which hopefully will solve the
  problems with CAMs we had in the past. To use this you need the driver version
  2002-01-08 or higher (with the new firmware supporting the "Link Layer" protocol).
- Added an EPG bugfix that moves the Subtitle data to the Extended Description in
  case the latter is empty and the Subtitle exceeds some useful length.
- Since several channels put very long strings into the Subtitle part of their
  EPG data, that string is now limited in length when used in a recording's
  file name.
2003-01-10 18:00:00 +01: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
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
cd7ccd64fd Version 1.1.13
- Added cDevice::DeviceNumber() to get the number of a device, not counting any
  gaps that might be in the index count.
- Fixed fetching the current/next information to handle cases where the duration
  of an event is set wrongly and would last beyond the start time of the next
  event.
- Adapted type names to the new HEAD version of the driver (which the previous
  NEWSTRUCT branch has been merged into). Note that to use this driver version
  you still need to add NEWSTRUCT=1 to the make call when building VDR. You
  need a HEAD version of the LinuxDVB driver dated 2002-10-11 or later to compile
  VDR with NEWSTRUCT=1.
- Fixed radio channels in channels.conf.cable (thanks to Robert Schiele and Uwe
  Scheffler).
- Fixed switching the video format in the Setup/DVB menu (thanks to Uwe Scheffler
  for reporting this one).
- Reactivated full handling of second audio PID (even in 'Transfer Mode').
- Fixed a crash when closing down with remote control plugins (thanks to Oliver
  Endriss helping to debug this one).
- Commands in the file 'commands.conf' can now have a '?' at the end of their
  title, which will result in a confirmation prompt before executing the
  command.
- Changed a few leftover 'new char[...]' to MALLOC(char, ...).
- If a command executed from the "Commands" menu doesn't return any output, the
  OSD will now be closed automatically.
- The SVDRP command PUTE now triggers an immediate write of the 'epg.data' file
  (suggested by Gerhard Steiner).
- The new configuration file 'reccmds.conf' can be used to define commands that
  shall be executed from the "Recordings" menu; see MANUAL and 'man vdr(5)' for
  details (suggested by Gerhard Steiner).
2002-10-13 18:00:00 +02:00
Klaus Schmidinger
313e33539c Version 1.1.12
- Fixed a missing Flush() call in the remote control learning procedure (thanks
  to Oliver Endriss).
- Modified channel handling to cover all parameters necessary for DVB-C and DVB-T
  (see man vdr(5) for the meaning of the additional parameters stored in the field
  previously named 'polarisation'). Thanks to Uwe Scheffler and Andy Carter for testing.
  If you have a system with different kinds of DVB cards, like DVB-T and DVB-C,
  for instance, there is no more need to distinguish the channels through the
  'Ca' parameter in order to assign them to the various DVB cards. This is now
  taken care of by the "source" parameter. So a channel marked as "terrestrial",
  for example, will only be received on DVB-T cards.
  Note that the cChannel class has been moved into a separate file (channels.[ch]),
  and that all data members have been made private and are now only accessible
  through member functions. You may have to change any plugin code that accesses
  cChannel data accordingly.
- The new configuration file 'sources.conf' contains the various signal sources
  (satellites, cable and terrestrial) which are used in 'channels.conf' and
  'diseqc.conf' (thanks to Reinhard Walter Buchner for adding some satellites to
  'sources.conf' and Oliver Endriss and Lauri Tischler for testing and debugging).
- The 'diseqc' parameter in the channel definitions has been redefined to hold the
  "source" of the given channel (which can be either a satellite, cable or terrestrial).
  For compatibility with channels.conf files from older versions, numeric values in
  this parameter will be tolerated, but they have no meaning. If you want to use
  DiSEqC you will need to replace these old values with the proper source identifiers
  defined in the new configuration file 'sources.conf'. See how this is done in the
  'channels.conf' file that comes with the VDR package.
- The new configuration file 'diseqc.conf' can be used to set up the individual
  diseqc configuration (see man vdr(5) for a description of the file format).
- The "Edit channel" menu has a new entry "Source:" in which the source of this
  channel can be selected (either a satellite, cable or terrestrial). The set of
  parameters at the end of this menu will change according to the type of source.
- The "Use DiSEqC" parameter in the "Setup/LNB" menu has been moved to the beginning
  of the list and disables the rest of the parameters when set to "yes", since these
  are now only meaningful if DiSEqC is _not_ used.
- Removed some unnecessary #includes from eit.c and changed cMenuRecordings::Del()
  to cMenuRecordings::Delete() to avoid warnings in gcc-3.2 (thanks to Andreas
  Schultz for pointing this out).
- Improved skipping channels that are (currently) not available (thanks to Stefan
  Huelswitt).
- Updated channels.conf.terr and channels.conf.cable (thanks to Uwe Scheffler).
- Fixed a bug when pressing the "Blue" button in the main menu without having
  displayed it (thanks to Oliver Endriss for reporting this one).
2002-10-06 18:00:00 +02: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
346f4cd142 Version 1.1.10
- Removed a superfluous error message from cLockFile::Unlock() (reported by
  Helmut Auer).
- Fixed starting a recording of the current channel with only one DVB card
  (thanks to Stefan Huelswitt for his help).
- A previous 'Transfer Mode' is now automatically re-started after a replay
  stops.
- Only calling cStatus::MsgChannelSwitch() if a channel is actually going to
  be switched or has actually been switched successfully (thanks to Stefan
  Huelswitt).
- The EPG now drops events from "other" streams that have a duration of 86400
  seconds or more (this avoids bogus entries like "PROGRAMMES ALLEMANDS").
- Fixed opening /dev/video in cDvbDevice::GrabImage() in case of NEWSTRUCT
  driver (thanks to Andreas Schultz).
- Added a missing StripAudioPackets() to cDvbPlayer::Action() (thanks to
  Stefan Huelswitt).
- Added an EPG bugfix for the latest VOX EPG data format.
2002-09-15 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
a2a215d5e1 Version 1.1.8
- Fixed replaying the last few seconds of a recording.
- Added some missing #includes to files in libdtv for gcc 3.2 (thanks to Jürgen
  Zimmermann).
- Added cDevice::NewOsd() to allow a derived cDevice class to implement its own
  OSD capabilities (thanks to Andreas Schultz).
- Added cPalette::AllColors() for plugins that need to get the color entries of
  a cPalette (see osdbase.h).
- The new SVDRP command CLRE can be used to clear the entire EPG data (suggested
  by Matthias Schniedermeyer).
- Fixed handling one-shot timers that were already recording and had their start
  time changed into the future (thanks to Matthias Schniedermeyer for reporting
  this one).
2002-08-25 18:00:00 +02:00
Klaus Schmidinger
ed643353b1 Version 1.1.7
- Adapted VDR to the NEWSTRUCT driver. To use the new driver, compile VDR with
  'make NEWSTRUCT=1' (thanks to Holger Wächtler for some valuable advice).
  By default it currently still uses the old driver.
- Added some missing #includes (thanks to Martin Hammerschmid).
- Changed the log error message "can't record MPEG1!" to "error in data stream!",
  since the mentioning of MPEG1 has irritated many people.
- Consistently using malloc/free and new/delete (thanks to Andreas Schultz).
- Temporarily made cDevice::ProvidesCa() virtual (Andreas Schultz needs this
  in his DXR3 plugin).
- cDevice no longer exposes a file handle to cPlayer. A derived cPlayer class
  can now call DevicePoll() to see whether the replay device is ready for
  further data. A derived cDevice class must implement Poll() and shall
  check if any of its file handles is ready for data.
- Implemented several replay modes to allow players that play only audio (thanks
  to Stefan Huelswitt).
- Improved cCondVar::Wait() and implemented cCondVar::TimedWait() (thanks to
  Stefan Huelswitt).
- VDR no longer gives up if there is no DVB device. It continues to work if
  there is at least one device, either a DVB device found by the core VDR code
  itself, or a device implemented by a plugin.
2002-08-16 18:00:00 +02:00
Klaus Schmidinger
527748826c Version 1.1.6
- Re-visited the race condition fix in the cDvbPlayer (thanks again to Andreas
  Schultz).
- Changed the VFAT handling to allow users who normally use it but have forgotten
  to set it when compiling a new version of VDR to at least see their recordings
  made with VFAT enabled (thanks to Christian Rienecker).
- Added some missing teletext PIDs (thanks to Joerg Riechardt).
- Fixed PID handling for cReceiver.
- Added a missing #include to ringbuffer.c (thanks to Martin Hammerschmid).
- Now using CC, CFLAGS, CXX and CXXFLAGS in Makefile.
- Changed the cDevice class to allow plugins to implement their own devices (see
  PLUGINS.html for details).
2002-08-04 18:00:00 +02:00
Klaus Schmidinger
54d069c95c Version 1.1.4
- Added Hungarian language texts (thanks to Istvan Koenigsberger and Guido Josten).
- Activated cutting.
- Activated 'Transfer Mode'.
- Moved handling of the Menu key entirely into vdr.c.
- Switched VDR's own player to the new cPlayer/cControl structures.
- Switched handling 'Transfer Mode' to the new cPlayer/cControl structures.
- The following limitations apply to this version:
  + The '-a' option (for Dolby Digital audio) doesn't work yet.
  + Switching between different language tracks doesn't work yet.
2002-06-23 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