vdr/HISTORY

9854 lines
574 KiB
Plaintext
Raw Permalink Blame History

Video Disk Recorder Revision History
------------------------------------
2000-02-19: Version 0.01
- Initial revision.
2000-03-11: Version 0.02
- Fixed compilation with only DEBUG_REMOTE=1.
- Menus now use colors.
- Support for "Red", "Green", "Yellow", "Blue" buttons.
- Channels and Timers can now be added, deleted and moved.
- Basic record/play file handling support (no actual record/playback yet).
2000-04-15: Version 0.03
- Actual record/replay now works.
- Dropped the idea of different "recording qualities" (a 36GB harddisk is
able to store some 18 hours in full quality, so we don't really need that).
- Termination signals are now caught and the program cleans up before exiting.
- Support for CICAM.
2000-04-24: Version 0.04
- Changed name from 'osm' to 'vdr' to avoid mixups with the 'oms' program that
appears to be in use with DVD replay.
- Implemented a channel display in the top menu line.
- Implemented replay progress display (press "Ok" when replaying to bring it up).
- Implemented direct channel selecting by pressing the numeric keys.
- Added several 'const' keywords to please stricter compilers.
- The repeat function for the remote control no longer adapts dynamically
to the timing of the RCU (this sometimes caused the repeat function to
kick in too early).
- Channel selection is now blocked when recording or replaying.
- Improved process handling.
2000-05-27: Version 0.05
- Support for more than one DVB card.
- Simultaneous record and replay (with two DVB cards).
- Instant recordings no longer get the name "instant". They now get the name
of the channel, with a prepended '@' character.
- Timers that are not given an explicit Name now use the channel name with
a prepended '@' character.
- If an instant recording is currently active, the "Main" menu now contains
an option to stop that recording.
- Timers are now only processed when the menu is not active. So after editing
a timer the effect will take place only after the menu has been closed.
In order to avoid missing a timer event by inadvertently leaving the menu
open, the menu will be closed automatically after about two minutes of
inactivity.
- If a recording is currently being replayed, the "Main" menu now contains an
option to stop replaying.
- Displaying the recording DVB interface status in the decimal points of the
RCU display.
- Reduced the number of remote control keys. Modified the key assignments for
the PC keyboard to better resemble the "up-down-left-right-ok" layout on
menu controlling remote control units.
2000-07-25: Version 0.6
- Added support for LIRC remote control (thanks to Carsten Koch!).
There are now three different remote control modes: KBD (PC-Keyboard), RCU
and LIRC. See the INSTALL file for information on how to enable either of
these modes. The default mode is now KBD, not RCU as before (to make it
work immediately even if there is no actual remote control).
- Fixed small bug in dvbapi.c that was causing some channels (many on hotbird)
not to be correctly tuned (thanks to Plamen Ganev!).
- Now clearing the replay buffer in search forward/back, which results in
faster reaction.
- The 'Recordings' menu is now listed alphabetically (thanks to Carsten Koch!).
- The new 'epg2timers' tool (thanks to Carsten Koch!) can be used to convert
an EPG "merkliste" page (http://www.tvtv.de) to vdr timer entries.
- The new 'xtvrc2vdr' tool (thanks to Plamen Ganev!) can be used to convert
'xtvrc' channel files into 'vdr' format.
- When more than one timer matches at the same time, the first one in the list
with the highest 'Priority' is selected.
- The MANUAL section on "Programming the Timer" has been filled in.
- The year in the "Recordings" menu as well as in the progress display during
replay has been reduced to 2 digits to allow more space for the recording's
title. In the internal file structure the year is still stored with 4 digits,
so there will be no problem at the next turn of the century ;-)
- Channel names and timer filenames can now contain blanks. To avoid problems
with file names that contain blanks, all blanks in recording file names are
converted to underscores.
- The polarization can now be given in uppercase or lowercase characters in
'channels.conf'.
- Fixed buffer initialization to work with DVB driver version 0.6.
- Implemented the "Simple Video Disk Recorder Protocol" (SVDRP) to control
the VDR over a network connection.
- Implemented command line option handling.
- The program can now run in full background mode by using the --daemon option.
- Added a "summary" field to the timers (thanks to Carsten Koch!).
This field can contain a descriptive text of the programme and will be
displayed when the "Blue" button is pressed on a recording that was created by
this timer. If the text contains the special character '|', a newline will
be inserted at that place. When pressing "Ok" on a timer that contains a
summary field, the summary will be displayed. To edit such a timer the "Red"
key must be pressed. Timers without a summary still go into Edit mode when
pressing "Ok". The summary field can only be filled in directly by editing
the 'timers.conf' file with a text editor, or by defining/modifying the timer
via the SVDRP interface.
2000-08-06: Version 0.61
- When scrolling through a list it now moves a full page up or down when the
cursor reaches the top or bottom of the menu (thanks to Heino Goldenstein!).
- Added missing '#include <sys/stat.h>' to recording.c.
- The video directory can now be defined with the command line option -v.
- There can now be more than one video directory (in case you have several
disks).
- Fixed learning key codes for PC keyboard.
- New command line option '-l' to set the log level.
- Times in timers.conf are now always printed with 4 digits (leading '0').
- Slow forward/back mode (thanks to Guido Fiala!).
- The "Up" key in replay mode no longer restarts replay at the very beginning,
but rather resumes normal replay mode after a "pause", "forward" or "backward"
operation. Use the "Skip -60s" function repeatedly to go back to the beginning
of the recording.
- Improved reaction on user input in fast/slow forward/back modes.
- No more upper limit for the value of 'Pnr'.
- Checking if the video card is really a DVB card.
- New SVDRP command UPDT to update an existing timer (or add a new one if it
doesn't yet exist).
- New version of the 'epg2timers' tool (with a modified channel list).
- Bugfix in closing window in DEBUG_OSD mode.
2000-09-03: Version 0.62
- The Makefile now defines DVBDIR to easily point to where the DVB driver
source is located.
- When switching channels the current/next information is now displayed if
available (thanks to Robert Schneider). Since there is now more information
to read when switching channels, the timeout for displaying it has been
increased from 2 to 5 seconds (remember that this info can always be recalled
by pressing the "Ok" button).
For this feature to work it is necessary that the 'Pnr' parameter in the
channel setup ('channels.conf') is set to the proper value. This has been
done for some of the channels in the default 'channels.conf'. Some other
parameters in the default 'channels.conf' have also been updated, so please
make sure your timers still use the correct channels!
2000-09-10: Version 0.63
- The new "Setup" menu allows the user to configure several parameters to his/her
personal taste (see MANUAL for details).
- Workaround for a driver timing problem in cDvbApi::Cmd(), which sometimes caused
the OSD to no longer be displayed (thanks to Niels de Carpentier).
- Added the '-m486' option to the compiler call.
- If a channel name contains a colon (':') it is now replaced with a '|' in
'channels.conf'.
- Not everybody appears to like the "page scrolling" mechanism introduced by
Heino Goldenstein in version 0.61, so this is now configurable via the "Setup"
menu.
- The new 'dvbrc2vdr' tool (thanks to Plamen Ganev!) can be used to convert
'dvbrc' channel files into 'vdr' format.
- Channels can now be "grouped" (thanks to Plamen Ganev!). See MANUAL for details.
There is currently no mechanism to define and maintain "Channel groups" via
the menu, so you'll have to insert "Channel group" control lines into your
'channels.conf' file manually (for example with a text editor).
- Started a new file named FORMATS with a description of the various file
formats used by VDR.
- The "Primary DVB interface" can now be chosen via the "Setup" menu.
- Display of the "current/next" information when switching channels can now
be disabled via the "Setup" menu.
- The "current/next" display now only shows those lines that actually contain
information.
- When directly selecting a channel by entering the channel number, the digits
entered so far together with the name of that channel are displayed on the
OSD (suggested by Martin Hammerschmid).
2000-09-20: Version 0.64
- NOTE: If you are using DVB driver version 0.7 you need to load the dvb.o
module with option outstream=0, so your insmod statement should read
'insmod dvb.o outstream=0'. This is currently necessary because 'vdr'
still works with AV_PES data.
- Video files now have the 'group read' bit set.
- Fixed handling errors in 'readstring()'.
- Handling SIGPIPE and re-establishing handler after intercepting a signal.
- The configuration files are now by default read from the video directory.
This can be changed by using the new '-c' option. Make sure you copy your
current '*.conf' files to your video directory ('/video' by default), or
use "-c ." to get the old behaviour of loading the configuration files
from the current directory.
- Waiting for input is now handled by a common function, which improves
response time on user actions. As a consequence the EIT data may sometimes
not be displayed, but this will change later when cEIT runs as a separate
thread.
- The new SVDRP command 'HITK' (thanks to Guido Fiala!) can be used to 'hit'
a remote control key. Establish an SVDRP connection and enter HITK without
a parameter for a list of all valid key names.
- The new SVDRP command 'GRAB' (thanks to Guido Fiala!) can be used to grab
the current frame and save it to a file.
- The new SVDRP commands 'OVL*' can be used to control video overlays (thanks
to Guido Fiala!). This is mainly for use in the 'kvdr' tool (see the 'kvdr'
page at http://www.s.netic.de/gfiala).
- If the name of the video directory used with the '-v' option had trailing
slashes, the recording file names have been damaged. Trailing slashes are
now silently removed.
- Fixed a buffer overflow in EIT parsing.
- Added a security warning regarding SVDRP to the INSTALL file.
- Fixed 'confirm' dialog.
- The daemon mode (option '-d') now no longer works with REMOTE=KBD (there
is no stdin in daemon mode, so KBD makes no sense - plus it sometimes
crashed).
2000-10-03: Version 0.65
- Modified LIRC interface to better handle repeat function.
- Faster OSD by first writing into a bitmap and then sending the entire bitmap
to the DVB driver at once (requires the patch 'dvb.c.071.diff' to be applied
against the version 0.71 DVB driver file 'dvb.c').
- When switching channels the channel is now immediately displayed, and the
current/next information is shown as soon as it becomes available.
- No longer displaying the year in the 'Recordings' menu to save space for the
title.
- The 'Recordings' menu now displays a '*' to indicate new recordings.
- Added the description of the timers.conf file to the FORMATS file (thanks to
Bastian Guse).
- Displaying as much as possible of the current/next info (dropping characters
that would display only partially).
- In normal viewing mode the '0' key now toggles between the current and the
previous channel.
2000-10-08: Version 0.66
- Remote control data is now received in a separate thread, which makes things
a lot smoother.
- Repeat and release of remote control keys is now explicitly distinguished.
- In replay mode the search forward/back and skip functions now have two modes:
Pressing the key shortly and releasing it starts the function, and pressing it
again stops it. Pressing and holding down the key starts the function and
releasing the key stops it.
- The '@' character that marks an "instant recording" can now be turned off
in the "Setup" menu (thanks to Matthias Schniedermeyer).
- Pressing the "Back" button while replaying now stops replaying and brings up
the "Recordings" menu (suggested by Carsten Koch). This can be used to easily
delete a recording after watching it, or to switch to a different recording.
- The "Recordings" menu now places the cursor on the last replayed recording, if
that file still exists.
- The "Blue" button in the "Main" menu can now be used to "Resume" a previously
stopped replay session (suggested by Martin Hammerschmid).
- The low and high LNB frequencies can now be changed in the "Setup" menu.
2000-11-01: Version 0.67
- The EIT information is now gathered in a separate thread.
- The system time can now be synchronized to the time broadcast in the DVB data
stream. This can be enabled in the "Setup" menu by setting "SetSystemTime" to
1. Note that this works only if VDR is running under a user ID that has
permission to set the system time.
- The new item "Schedule" in the "Main" menu opens VDR's EPG (thanks to Robert
Schneider). See the MANUAL file for a detailed description.
- The new setup parameters MarginStart and MarginStop define how long (in
minutes) before the official start time of a broadcast VDR shall begin
recording, and how long after the official end time it shall stop recording.
These are used when a recording is programmed from the "Schedules" menu.
- The delay value in the dvb.c.071.diff patch to the driver has been increased
to '3', because on some systems the OSD was not displayed correctly. If you
are running an already patched version 0.71 driver and encounter problems
with the OSD, please make sure the parameter in the ddelay call is '3', not
'2'.
- Fixed initializing the RCU remote control code (didn't work after switching
on the system).
- Problematic characters in recording names (which can come from timers that
are programmed via the "Schedules" menu) are now replaced by suitable
substitutes.
2000-11-19: Version 0.68
- Date and time in the title of an event info page are now always right adjusted.
- The 'current channel' is now handled device specific (in case there is more
than one DVB card).
- The 'SetSystemTime' option in the "Setup" menu is now shown as "yes/no".
- Implemented "internationalization" (see 'i18n.c' for information on how to
add new languages). Thanks to Miha Setina for translating the OSD texts to
the Slovenian language.
- Fixed learning keys on the PC keyboard (display oscillated).
- Fixed a timing problem with OSD refresh and SVDRP.
- Avoiding multiple definitions of the same timer in the "Schedule" menu (this
could happen when pressing the "Red" button while editing the timer).
- There can now be a configuration file named 'commands.conf' that defines
commands that can be executed through the "Main" menu's "Commands" option
(see FORMATS for details on how to define these commands).
- Added a 'fixed' font for use with the output of system commands.
- The 'Priority' parameter of the timers is now also used to interrupt a low
priority timer recording if a higher priority timer wants to record.
- A timer recording on a DVB card with a CAM module will now be interrupted
by a timer that needs to use this specific DVB card to record an encrypted
channel, if the timer currently occupying this DVB card doesn't need the
CAM module (and thus can continue recording on a different DVB card).
- The "Yellow" button in the "What's on now/next?" menus now displays the
schedule of the current channel from that menu.
- All DVB cards in a multi-card system now write their EIT information into the
same data structure.
- If there is more than one DVB card in the system, the non-primary cards are
now used to periodically scan through the channels in order to keep the
EPG info up-to-date. Scanning kicks in after 60 seconds of user inactivity
(timeout in order to keep user interactions instantaneously) and each channel
that has the 'pnr' parameter defined in 'channels.conf' is switched to for
20 seconds. If there is only one DVB card in the system, that card will start
scanning after 5 hours (configurable through the "Setup" menu) of user inactivity
and will switch back to the channel it originally displayed at the first sign of
user activity. Any scanning will only occur if that particular card is not
currently recording or replaying.
- Now shifting the 'Subtitle' info into the 'ExtendedDescription' on stations
that don't send the EIT information correctly (like, e.g., 'VOX').
- Implemented a 10 seconds latency when removing files.
- Fixed unwanted reaction on the "Green" and "Yellow" button in the "Event" display.
- Implemented 'Transfer Mode' to display video data from the DVB card that actually
can receive a certain channel on the primary interface. This is currently in
an early state and may still cause some problems, but it appears to work nice
already.
2001-01-18: Version 0.70
- VDR now requires driver version 0.8.1 or higher.
- Recordings are now saved in PES mode. Note that you now need to install the
driver *WITHOUT* 'outstream=0'! This is the default when you 'make insmod' in
the DVB/driver directory.
Old recordings (in AV_PES mode) can still be replayed (as long as the driver
still supports replaying AV_PES files). The only limitation with this is that
in fast forward/back mode the picture may be slightly distorted and there may
be sound fragments.
- The EPG data is now dumped into the file /video/epg.data every ten minutes.
Use the Perl script 'epg2html.pl' to convert the raw EPG data into a simple
HTML programme listing.
- Fixed handling of channel switching with the "Blue" button in the "What's on
now/next?" menus.
- Fixed saving the MarginStop setup parameter.
- Fixed missing initialization in cConfig.
- Implemented "On Disk Editing".
- There is no more default 'timers.conf' file.
- Added Italian language texts (thanks to Alberto Carraro).
- Fixed starting a replay session when the program is currently in 'Transfer
Mode'.
- Fixed setting/modifying timers via SVDRP with empty summary fields.
- Fixed a problem with recordings that have a single quote character in their
name (this is now mapped to 0x01).
- Changed the value for Diseqc to '0' in the default 'channels.conf'.
- Fixed displaying channels and recording status in the RCU's LED display when
a recording is interrupted due to higher priority.
- Implemented safe writing of config files (first writes into a temporary file
and then renames it).
- In case the video data stream is broken the log message will come only every
5 seconds.
- The current channel is now saved in the 'setup.conf' file when VDR is canceled,
and will be restored next time it is started (thanks to Deti Fliegl).
- The EIT scanning thread is now locked when switching channels to avoid problems.
- Encrypted channels can now be selected even without knowing the PNR (however, it
is still necessary for the EPG info).
2001-02-24: Version 0.71
- Fixed 'Transfer Mode' in cases where a non-primary interface was switched to
a channel that only the primary interface can receive (which could happen in
the EPG scanner).
- The EPG scanner now starts with the first channel (it used to start with the
second channel).
- Reactivated setting the PNR.
- Adapted the frame scanning to the new muxing of the driver.
- The new compile time option REMOTE=NONE can be used to compile VDR without
any remote control support (for applications where it shall be controlled
exclusively via SVDRP).
- The new command line option -D can be used to define which DVB interfaces
a certain instance of VDR shall use.
- The "Left" and "Right" keys are now used to page up and down in lists (thanks
to Martin Hammerschmid). Since the "Timers" menu already uses these keys to
(de)activate timers, this functionality is not available there.
- The "Main" and "Commands" menu now support "hotkeys", which means that if the
first non-blank character of a menu item is a digit in the range 1..9, that
item can be selected by pressing the respective numeric key on the remote
control.
- The channel data in 'channels.conf' now contains the teletext PID (thanks to
Dave Chapman). Existing files will be read normally (and the teletext PID set
to 0), but once they are written back (due to some channel editing) the file
will have the new format.
- The EPG scanner now scans each transponder only once per cycle.
- Deleted recordings are now automatically removed from disk after a while (not
only when disk space is being needed for a new recording).
- Fixed repeat function in LIRC remote control.
- Changed the MAXDVBAPI macro in dvbapi.c to 4 in order to directly support the
maximum possible number of DVB cards.
- The 'Ca' parameter in the default 'channels.conf' has been changed from '2'
to '3' because the VDR prototype now has 3 DVB cards (and currently the CAM
module only works if it is inserted into the last DVB card).
- The "Now", "Next" and "Schedule" menus now remember the current channel and
restore the list when switching between them.
- The "Green" button in the "Recordings" menu can now be used to rewind a
recording and play it from the very beginning.
- Fixed handling ':' in timer filenames and '\n' in timer summaries (see FORMATS).
- When removing recordings empty directories are now removed from the video
directory.
- Added the "schnitt" tools from Matthias Schniedermeyer.
- New SVDRP command MESG to display a short message on the OSD.
- The Perl script 'svdrpsend.pl' can be used to send SVDRP commands to VDR.
- SVDRP can now immediately reuse the same port if VDR is restarted.
- SVDRP now has a timeout after which the connection is automatically closed
(default is 300 seconds, can be changed in "Setup").
- The compile time switch VFAT can be used to make VDR avoid the ':' character
in file names (VFAT can't handle them). Do 'make VFAT=1' to enable this.
- Support for DVB-C (thanks to Hans-Peter Raschke and Peter Hofmann).
See the INSTALL file for more information about the use of VDR with cable.
- Fixed an occasional segfault in the EIT processor.
- A value of '0' for the EPGScanTimeout setup parameter now completely turns off
scanning for EPG data on both single and multiple card systems.
- New setup parameter "PrimaryLimit" that allows to prevent timers from using the
primary DVB interface in multi card systems. Default value is 0, which means
that every timer may use the primary interface.
- The 'active' field of a timer will now be explicitly set to '1' if the user
modifies an active timer (see FORMATS for details).
- The new command line option -w can be used to activate a watchdog that makes
VDR exit in case the main program loop does not respond for more than the
given number of seconds. This is mainly useful in combination with the new
'runvdr' script that restarts VDR in case is has exited.
2001-04-01: Version 0.72
- Fixed SVDRP commands LSTC and LSTT to make them return an error message if
no channels or timers are defined.
- Enhanced 'channels.conf.cable' (thanks to Hans-Peter Raschke).
- Fixed switching to another channel via the EPG while a recording is being
replayed.
- Fixed a memory leak in the EIT processor that happened when the system time
was set.
- Removed some redundant code from the cListBase destructor.
- Fixed internationalization of some "Main" menu texts.
- Updated 'channels.conf' after the recent changes of Premiere World (thanks
to Axel Gruber).
- Redesigned the ring buffer to make it work with two separate threads for
input and output (also prepared for using a remultiplexer).
- Fixed setting system time from transponders.
- Fixed a segfault in the Schedule menu in case there is no EPG information.
- The 'runvdr' script now kills any leftover vdr threads before restarting it.
- Fixed a problem with Daylight Saving Time when displaying the times of
recordings.
- Added Dutch language texts (thanks to Arnold Niessen).
- The new command line option -t can be used to set the controlling terminal
(thanks to J<>rgen Sauer). This is especially useful when starting VDR through
an entry in /etc/inittab (see INSTALL).
- Since the CAM module only works if it is installed in the "highest" DVB card,
recordings now search for a free DVB card from lowest to highest index (as
opposed to the previous "highest to lowest" search) in order to not use the
CAM card for FTA recordings unless necessary. This is only important for
systems with three or more DVB cards.
- Added the "statdvb2vdr" tool from Hans-Peter Raschke.
- Fixed a segfault that sometimes happened when killing VDR.
- VDR now returns an exit status of '2' in case of an error at startup, instead
of terminating with 'abort()' (which caused a core dump).
- SVDRP now also works with clients that don't do line buffering (like the
Windows 'telnet').
- Empty lines in config files no longer cause error messages.
- New SVDRP command LSTE to list the EPG data.
- The SVDRP HELP command now prints the topics in several columns.
2001-06-02: Version 0.80
- VDR now requires driver version 0.9.0 or higher.
- Switched to the "new API" (thanks to Dave Chapman for his great support in
this task).
- New setup parameter "LnbSLOF" that defines the switching frequency of the LNB.
- Fixed a bug in the EPG scanner with more than one DVB card.
- Fixed checking for free disk space, so that it works with NFS mounted drives.
- Files are now created with mode 644.
- Fixed checking the exit status in the 'runvdr' script.
- Activated loading the driver in 'runvdr'. Please read the comments in 'runvdr'
for details.
- The new "emergency exit" feature automatically triggers a restart of VDR (if
used with 'runvdr', otherwise it simply exists) if
* tuning the channel for a recording fails
* no useful data is received within the first 1MB of a recording
* no data is received within a recording for more than 5 seconds
This should make sure that a recording is successfully restarted after any
problems.
- Processing the EIT data is now disabled during replay and 'Transfer Mode' in
order to avoid video and audio glitches (there appears to be a bandwidth
problem somewhere in the driver/firmware/hardware).
- Due to the reduced amount of OSD memory provided by the driver the number of
lines in the OSD had to be reduced by 2. By rearranging some of the display
items the amount of visible information remained the same as before, though.
If your DVB card has even less memory (which would result in only the
channel switching display and the replay progress display being visible, but
no "Main" menu), try reducing the constant 'MenuLines' in dvbapi.h (currently
'13') even further.
- There are two new setup parameters to define the "Default Priority" and
"Default Lifetime" when creating a new timer event.
- The meaning of the "Lifetime" parameter has been modified: a value of '99'
now means that the recording will live "forever", and a value of '0' means
that the recording has no guaranteed lifetime and will be deleted whenever
a new recording with higher priority needs disk space.
- Updated version of Matthias Schniedermeyer's 'schnitt' tools.
- New 'master-timer' tool (thanks to Matthias Schniedermeyer).
2001-06-12: Version 0.81
- Fixed handling the case where the driver reports EAGAIN during recording,
but no data comes within 5 seconds.
- Fixed EPG scanning on single DVB card systems.
- There can now be two audio PIDs per channel, which can be toggled via the
"Green" button in the "Main" menu. The "Edit Channel" menu therefore now
has two audio PID fields (Apid1 and Apid2). By default, Apid2 is 0, which
means there is no alternate audio track.
- Fixed replaying in case the driver reports EAGAIN.
- Now 'runvdr' checks if the driver is already loaded (thanks to Henning
Holtschneider).
- Fixed removing recordings with Lifetime = 99.
- Improved channel switching.
2001-06-16: Version 0.82
- Increased timeout until reporting "broken video data stream" when recording.
- Increased amount of non-useful data received by cRemux before assuming the
recording will fail.
- If there are two audio PIDs defined for a channel, both audio tracks will
now be recorded and can be selectively replayed later. See the FORMATS file
for details on how these different audio tracks are stored in the recorded
files. In order for this to work properly you need to use a driver version
dated 2001-06-16 or later, where the default PES filter buffer size has been
reduced. This will create packets for the second audio track that are small
enough to multiplex smoothly with the video data.
- Fixed a bug in the editing mechanism (didn't work with recordings that
consist of more than one data file).
- The compile time switch VFAT has been fixed to recognize the ':' character
in recording names, too.
- Setting all PIDs to 0x1FFF before switching channel.
- New setup parameter "VideoFormat" to define the aspect ratio of the tv set
in use (4:3 or 16:9).
2001-06-26: Version 0.83
- Avoiding "Device or resource busy" error message when setting PIDs.
- Added Portuguese language texts (thanks to Paulo Lopes).
- Recording and replaying Dolby Digital (AC3) sound.
- No longer getting stuck when a channel doesn't sync while switching
with the 'Up' and 'Down' keys.
2001-07-22: Version 0.84
- Fixed video packet scanning to make it recognize the whole range of
allowed video packet ids.
- Added an additional "emergency exit" in case channel switching doesn't
work several times in a row (when will the driver finally become stable
enough to allow rock solid channel switching??).
- No longer sending a Diseqc command if the Diseqc value for a given channel
is '0'. Previously this caused problems with some multi-switches (thanks to
Markus Lang and Ulrich R<>der).
- When switching channels by entering the channel number via the numeric keys
on the remote control, the channel number displayed is now followed by the
'-' character to indicate that additional digits can be entered.
- Increased the timeout for numeric channel switching from 500ms to 1s.
- Fixed handling the "Green" button in the "Schedules" menu for channels that
have a second audio PID.
- Fixed high system load when displaying a still picture in replay.
- Fixed a hanging SVDRP connection if the client dies without issuing QUIT.
- Increased the frame buffer size to 192KB.
- Removed a superfluous VIDEO_FREEZE call in the replay buffer.
- Added French language texts (thanks to Jean-Claude Repetto).
- Modified OSD to use 2bpp windows (4 colors) in order to work with less
memory, allow a larger OSD window and be faster. The group separators in the
"Channels" menu had to be given a different color.
- Moved the channel display to the bottom of the screen.
- Displaying the frame counter in the replay progress display only when editing
a mark.
- Fixed handling characters above 0xEF in SVDRP.
- Fixed a possible crash in parsing incorrect lines in 'channels.conf'.
- New channel settings for Premiere World (Dolby Digital PIDs not yet
available).
- Increased the buffer for key names received from LIRC (thanks to Andre
Valentin).
- Fixed handling a channel group separator at the very beginning of the
'channels.conf' file.
2001-07-29: Version 0.85
- Added Norwegian language texts (thanks to J<>rgen Tvedt).
- Increased the usleep value in cDvbOsd::Cmd() to 5000 in order to work on
systems with the KURT/utime-patch (thanks to Guido Fiala).
- Changed the check whether the driver is loaded in runvdr to check for the
'dvb' module (the last one loaded).
- Fixed repeat function with LIRC (thanks to Stefan Huelswitt).
- Increased the upper limit for the symbol rate to 30000 (thanks to Ulrich
R<>der).
- Made the position of the channel display configurable (thanks to Stefan
Huelswitt).
- Made the width and height of the OSD configurable (thanks to Stefan Huelswitt).
- DiSEqC support can now be generally enabled/disabled in the Setup menu. This
may be necessary if your multiswitch gets irritated by the default DiSEqC
codes '0' (thanks to Markus Lang).
- Fixed replaying in case there is no index file.
- Fixed jumping to an editing mark when replay has been paused.
- Avoiding unnecessary code execution in the replay progress display (thanks
to Guido Fiala).
- When entering time values the digits that still have to be entered are now
shown as '-' (as in "1-:--").
- When setting an editing mark while the progress display is not active, the
display will now be turned on for a short while to indicate the successful
setting of the mark.
- Updated 'channels.conf' for Premiere World (thanks to Mel Sch<63>chner).
Check your timers if you use this channels.conf file, since the sequence of
several PW channels has been changed.
- Changed the color of "Info" messages to "black on green" and that of the
confirmation messages (like "Delete...") to "black on yellow".
- Fixed display with DEBUG_OSD (it still crashes sometimes, esp. when replaying,
but I can't seem to find what causes this... any ideas anybody?).
- Avoiding audio/video distortions in 'Transfer Mode' by no longer actually
tuning the primary interface (which can't receive this channel, anyway).
Apparently the driver gets irritated when the channel is switched and a
replay session is started immediately after that.
- Increased timeout until reporting "video data stream broken" when recording.
- Explicitly switching back to the previously active channel after ending a
replay session (to have it shown correctly in case it was in 'Transfer Mode').
2001-08-06: Version 0.90
- Modified the display of the channel group separators (thanks to Markus Lang
for this suggestion).
- Added support for replaying DVDs (thanks to Andreas Schultz). See INSTALL for
instructions on how to compile VDR with DVD support.
- Fixed replay progress display in case replay is paused while watching an
ongoing recording.
- Ringbuffer uses semaphores to signal empty/full conditions.
- Fixed calculating the timeout value in cFile::FileReady() (thanks to
Wolfgang Henselmann-Weiss).
2001-08-12: Version 0.91
- Fixed displaying colored button texts that are too long.
- Suppressing replay progress display when replaying a DVD.
- Updated channels.conf.cable (thanks to Uwe Scheffler).
- Updated French OSD texts (thanks to Jean-Claude Repetto).
- Improved AC3 decoding when replaying DVDs (thanks to Matjaz Thaler).
- Fixed handling DVB card indexes when using only one card in a multi-card
system.
- Changed the 'Eject DVD' button text to a simple 'Eject' (the German text
was too long...).
- Made the font file generation more stable (thanks to Artur Skawina).
- Changed the default value for the "DiSEqC" setup parameter to "off".
- The new command line option '-E' can be used to define where the EPG data
shall be written to. This is especially useful if VDR runs in a system
that turns off the video disk when it is not used, and therefore needs
to write the EPG file to a ramdisk (or turn off writing it altogether).
See 'vdr --help' for details.
- Making sure the disk is up and running before starting recording (this
is important for systems that turn off the video disk when it is not used).
- Added the "Jump" function in replay mode (thanks to Stefan Huelswitt).
See the description of the "Red" key in MANUAL under "Replay Control" for
details.
- Fixed displaying editing marks when toggling a mark in "pause" mode.
- If there is no free DVB device to record, the log message will now be given
only once.
- Made I/O more robust by handling EINTR (thanks to Werner Fink).
2001-08-18: Version 0.92
- The "channel not sync'ed" log message now also lists the card number.
- Now using the EIT services from 'libdtv' (thanks to Rolf Hakenes), which
provides EPG information for NVOD ("Near Video On Demand") channels.
- Doing some bug fixing on the EPG data (some tv stations apparently have
their own idea on how to fill in the data...). The level up to which EPG
bugs are fixed can be controlled with the EPGBugfixLevel parameter in the
"Setup" menu (see MANUAL for details, and cEventInfo::FixEpgBugs() in eit.c
for the actual implementation).
- Fixed broken recordings after a driver buffer overflow.
- Fixed the chirping sound after Pause/Play of a DVD (thanks to Andreas
Schultz).
2001-08-26: Version 0.93
- The menus and the channel display now show the current date and time.
- The new Setup parameter MaxVideoFileSize can be used to customize the
maximum size of the recorded video files.
- Fixed a bug in handling repeating timers that record over midnight (the
calculation of matching timers has been completely rewritten).
- Timers that are currently recording are now marked with '#' in the "Timers"
menu.
- Timers are now sorted in the "Timers" menu, showing the sequence in which
they will be recording. This can be disabled in the "Setup" menu. Note
that the "Mark" button doesn't work if timers are displayed sorted.
2001-09-02: Version 0.94
- Implemented automatic shutdown (see INSTALL and MANUAL for details).
- New SVDRP command NEXT to show the next timer event.
- The new remote control key "Power" can be used to turn the VDR machine
off (this requires the presence of the '-s' option).
- Fixed code for the default "Ok" button on the PC keyboard (was 0x162 on
the "good old" keyboards (with the F-keys at the left side), while it changed
to 0x15E on the newer keyboards).
- When a recording is edited, the summary information (if present) is now
also copied.
- When a recording is running on the primary interface, any attempt to change
the current channel will now lead to a "Channel locked" message.
- The main program loop now first checks whether any timer recordings are
finished, before starting a new timer recording. This is important in case
one timer ends at the same time another timer starts.
- New setup parameter OSDMessageTime to define how long an OSD message shall
be displayed.
- The "File" parameter of a timer can now contain the '~' character to store
the recording in a hierarchical directory structure. The '~' character has
been chosen since the file system's directory delimiter '/' may be part of
a regular programme name (showing the directory hierarchy in the "Recordings"
menu will follow later).
- Repeating timers now create recordings that contain the 'Subtitle' information
from the EPG data in their file name. Typically (on tv stations that care
about their viewers) this contains the episode title of a series. The
subtitle is appended to the timer's file name, separated by a '~' character,
so that it results in all recordings of this timer being collected in a
common subdirectory. You can disable this with the 'UseSubtitle' parameter
in the "Setup" menu.
- The summary information is now taken from the EPG data at the actual time of
recording (no longer at the time the timer is created in the "Schedule" menu).
If a timer already has summary data, that data will be used. If you have
repeating timers in your 'timers.conf', you may want to make sure they do
NOT contain any summary information (that's the last field in the timer
definitions). Use your favourite text editor to delete that information.
That way every recording will store the actual summary data at the time of
the recording.
2001-09-16: Version 0.95
- Fixed behaviour in case the shutdown didn't take place (there were many
"next timer event at..." messages in that case).
- Reduced the default value for MinEventTimeout to 30 minutes.
- Fixed detecting manual start in shutdown feature.
- An error message is now displayed in case the 'Transfer Mode' can't be
started because the necessary DVB card is currently recording (or there
is no DVB card that can access this channel).
- Fixed toggling channels with the '0' key in case the "Ok" button has been
pressed to display the current/next information.
- Pressing the "Power" key now always initiates the shutdown sequence (after
user confirmation in case of a recording timer), event if there is currently
a menu or a replay session active. Note the additional remarks in INSTALL
regarding the values of the two parameters given to the shutdown program
in case of a currently recording timer.
- Switching through channel groups with the "Left" and "Right" keys now
always starts at the group that contains the current channel.
- Implemented "Multi Speed Mode" (thanks to Stefan Huelswitt).
- Implemented backtracing to hit the right spot after fast forward/rewind
(thanks to Stefan Huelswitt).
- Implemented replay mode display (thanks to Stefan Huelswitt, with a few
rewrites by kls).
- Changed the size of all input buffers used to parse config files or receive
SVDRP commands to the same value of 10KB. This allows long strings to be
used in the 'summary' field of a timer, for instance.
- The pipe to the Dolby Digital replay command (option '-a') now closes all
unused file descriptors in the child process to avoid crashing when the
OSD is used (thanks to Andreas Vitting).
- Switched to the driver's new tuning API (VDR now requires a driver version
dated 2001-09-14 or higher).
- Changed obsolete macro VIDEO_WINDOW_CHROMAKEY to VID_TYPE_CHROMAKEY (thanks
to Guido Fiala).
- New version of the "Master-Timer" tool (thanks to Matthias Schniedermeyer).
- Better error handling when writing configuration files.
- Fixed putting the final editing mark into the edited version's marks file.
- Fixed manipulating an editing mark at the very end of a recording.
- Fixed starting a new replay immediately after stopping a previous one (had
caused a mix between live video and replay).
- Three new keys ("Volume+", Volume-" and "Mute") to control the DVB card's
audio output volume.
- New version of the 'epg2timers' tool (thanks to Carsten Koch).
2001-09-23: Version 0.96
- Made VDR compile with libdvdread-0.9.1 (thanks to Andreas Schultz).
Note that you now _need_ version 0.9.1 of libdvdread to compile VDR with
DVD support!
- Several fixes to the replay mode display (thanks to Stefan Huelswitt):
no more replay mode display when pressing the "Green" or "Yellow" button
(Skip +/-60s); fixed timeout when pressing '0' to set an editing mark while
the progress display is not shown; mode display is shown after progress
display is closed; pressing "Ok" while the mode display is on brings up
the progress display; no more unnecessary display of "normal play mode".
- Supplying the new frontend parameter 'Inversion' (currently it is always
set to INVERSION_AUTO, which should work with all channels on Astra).
- Removing unnecessary double quotes from EPG Subtitle in EPGBugfixLevel >=1.
- EPG info is now updated if the contents changes but the ID remains the same.
- Fixed handling SVDRP commands with more than one blank between the command
word and the options.
- The current volume setting is now saved to setup.conf and restored at the
next program start.
- New command line option '-r' to define a command that gets called before and
after each recording (see INSTALL for details).
- Implemented a check to see whether the system time is running linearly.
- Writing the current time (as seen by VDR) into the log file when starting
a timer recording (this may help debugging cases where timers don't start
at the expected time).
- Made the volume, mute and power keys work when a menu is active, too (thanks
to Matthias Weingart).
2001-10-21: Version 0.97
- Implemented a lock file to prevent more than one instance of VDR from removing
files from the video directory at the same time.
- The new setup parameter SplitEditedFiles can be used to control whether or
not the result of an editing process shall be written into separate files.
- Fixed handling repeat function when using LIRC (thanks to Matthias Weingart).
- The shutdown program (defined with the '-s' option) now also gets the channel
number and recording title of the timer (see INSTALL).
- New channel data for 'Premiere One', 'Premiere X-Action', 'Fox Kids T<>rkce'
and 'N24' (thanks to Andreas Share, Ulrich R<>der, Uwe Scheffler and Simon
Bauschulte). Note that if you are using the default 'channels.conf' or
'channels.conf.cable' files you may need to check any exiting timers to see
whether they still use the correct channel number.
- Fixed the "EPG bugfix" (sometimes had duplicate information in Subtitle and
Extended Description).
- Fixed checking for valid video device when setting the video mode.
- The external command 'sort' is no longer required. VDR now sorts the list of
recordings itself, making sure that recordings that stem from repeating timers
are sorted chronologically. Sorting is done according to the setting of the
current locale, so you may want to make sure LC_COLLATE is set to the desired
value (see INSTALL).
- Fixed handling 'newline' characters in EPG texts (thanks to Rolf Hakenes for
an improved version of his 'libdtv').
Newline characters are always mapped to a single "blank" in VDR, because they
would otherwise disturb the Title and Subtitle layout in the channel display
(where these are assumed to be single line texts) and would have to be
specially handled in the 'epg.data' file and the LSTE command in SVDRP.
- Mapping ` ("backtick") characters in EPG texts to ' (single quote).
- Fixed timers starting and ending at unexpected times. 'localtime()' was not
thread safe, now using localtime_r().
- Removed the "system time seen..." message.
- Fixed a bug in the replay mode display when pressing the Green or Yellow
button while in trick mode (thanks to Stefan Huelswitt)
- Closing all open file descriptors when calling external programs.
- The menu timeout now also works when pressing the "Back" button during replay
to enter the "Recordings" menu.
- Updated 'channels.conf' for the "Bundesliga" channels of Premiere World
(thanks to Mel Sch<63>chner).
- Fixed reading timers.conf and channels.conf that contain blanks after numeric
values.
- Fixed handling trick modes near the beginning and end of a recording.
- Pressing the "Back" button while replaying a DVD now leads to the DVD menu.
2001-11-04: Version 0.98
- Completed storing the current audio volume in the setup.conf file (thanks
to Andy Grobb).
- Fixed closing the progress display with the "Back" key when in trick mode
and Setup.ShowReplayMode is enabled (thanks to Stefan Huelswitt).
- New SVDRP commands LSTR and DELR to list and delete recordings (thanks to
Thomas Heiligenmann).
- Fixed a crash when pressing the '2' button while replaying a DVD.
- Updated 'channels.conf' for the "Bundesliga" channels of Premiere World
(thanks to Mel Sch<63>chner).
- Changed the tuning code to use FrontendInfo to detect the type of DVB card.
- Removed the recursion stuff from cThread (cMutex already does this).
- Fixed handling the repeat function in the channel display.
- Avoiding multiple EPG entries for the same event (thanks to Rolf Hakenes
for some valuable information on how to do this).
- A recording on the primary interface can now be stopped to make it continue
on an other free DVB card (if one is free at the moment). See MANUAL for
details.
- Added some missing teletext PIDs (thanks to Norbert Schmidt).
- Added PTS to the converted PCM audio when replaying a DVD (thanks to Andreas
Schultz). Now the audio and video of a DVD replayed over the DVB card's A/V
out should always be in sync.
- Fixed handling the "Power" key in case Setup.MinUserInactivity is set to 0 to
disable automatic shutdown.
- Added a fifth parameter to the 'shutdown' call that indicates the reason for
this shutdown request (see INSTALL).
- Fixed releasing 'index' memory after recording or playback.
- Fixed ejecting a DVD while it is being replayed.
- Removed all video overlay stuff from cDvbApi and SVDRP. Guido Fiala's new
'kvdr' version 0.4 now does these things itself. As a consequence of this you
will now need to use kvdr 0.4 or later.
- The device /dev/video is now opened only if necessary (to GRAB an image),
allowing other programs (like 'kvdr', for instance) to use that device.
2001-11-25: Version 0.99pre1
- Fixed several channel definitions in 'channels.conf' (thanks to Thilo
Wunderlich).
- Added MPEG audio support for DVD (thanks to Andreas Schultz).
- Implemented DVB-T support (thanks to Dave Chapman).
This currently works only for UK channels.
- Removed the range limits for the Frequency and Srate parameters of channel
definitions.
- Changed the maximum value for PIDs in channels.conf from 0xFFFE to 0x1FFF.
- Fixed DVD audio sync problems (thanks to Andreas Schultz).
- Fixed external AC3 replay for DVDs (thanks to Andreas Schultz).
2002-01-27: Version 0.99pre2
- Fixed setting the OSD size in the 'Confirm' interface call (thanks to
Deti Fliegl).
- Removed the 'read incomplete section...' error message in the EIT processor.
- Fixed channel data for "DW TV" (thanks to Axel Gruber).
- Added DPID to "PREMIERE MOVIE 1" in channels.conf.cable (thanks to Stephan
Schreiber).
- Prepared the OSD functions for multiple overlapping windows.
- Removed the check to see whether the system time is running linearly.
- Improved performance of SVDRP command entry.
- Removed EPGBugfixLevel '3' - after more than a year Pro-7 finally managed to
broadcast the correct timestamps for EPG events between 0:00 and 6:00!
- Fixed failing watchdog timer if program hangs in OSD activities (thanks to
Carsten Koch).
- No longer requiring 'libncurses' if compiling without DEBUG_OSD=1 and
REMOTE=KBD (thanks to Lauri Pesonen).
- The "Recordings" menu now displays a hierarchical structure if there are
subdirectories for the recordings. This can be controlled through the
"RecordingDirs" parameter in the "Setup" menu.
See "MANUAL/Replaying a Recording" for details.
- Improved speed of setting the Help button texts.
- Fixed handling file names that contain single quotes (') or dollar signs ($)
in the call to the shutdown command (option '-s') and the recording command
(option '-r').
- Improved error handling in the editing process; the resulting file will be
deleted if an error occurred.
- A message is now prompted at the end of the editing process, indicating
whether the process succeeded or failed.
- Fixed setting the LastActivity timestamp after a shutdown prompt (thanks to
Sergei Haller).
- A message is now prompted if free disk space becomes low during recording.
- The editing process now calls AssertFreeDiskSpace() to remove deleted
recordings if the disk becomes full.
- The "Main" menu now displays in its title the used disk space (in percent)
and the estimated free disk space (in hh:mm), assuming a data rate of 30 MB
per minute.
- Activating the "Recordings" menu now displays "scanning recordings..." to
give the user some feedback in case this takes longer.
- Status messages are now displayed centered.
- Removed the 'Tools' subdirectory from the VDR archive. All contributed tools
can now be found at ftp://ftp.tvdr.de/vdr/Tools.
2002-01-29: Version 0.99pre3
- Fixed handling improper buffer lengths in the EIT parser (thanks to Deti
Fliegl).
2002-01-30: Version 0.99pre4
- Fixed handling improperly formatted EIT data (thanks to Rolf Hakenes).
2002-02-03: Version 0.99pre5
- Updated channel settings for 'N24' (thanks to Andreas Gebel).
- Fixed handling hierarchical recordings menu in case of directories starting
with the same sequence of characters.
- Fixed handling timers on the 29th, 30th or 31st of a month in case the next
month has less than 31 days.
- Added a description of the sort order of individual episodes in the
recordings menu to the MANUAL.
- Removed the EPG bugfix for "Title / Subtitle" cleanup. Apparently Pro-7 has
finally stopped this nasty habit.
- Added some EPG bugfix statistics (printed to the log file every time the EPG
data is cleaned up and when VDR is terminated). Maybe somebody in charge of
the EPG data at the listed channels will read this and take the necessary
actions to fix these things...
- Changed the [dei]syslog macros in tools.h to use a variable number of args,
thus making it safe to use them in nested 'if/else' statements.
- Fixed error handling in establishing an SVDRP connection (thanks to Davide
Achilli for pointing out this one).
- The new configuration file 'svdrphosts.conf' is now used to define which
hosts may access the SVDRP port (by default only 'localhost' has access).
See FORMATS for details.
- The special keywords TITLE and EPISODE can now be used in timer file names
(see MANUAL and FORMATS for details).
- The new setup parameter NameInstantRecord can be used to define how an
instant recording will be named (see MANUAL for details).
- When looking for the EPG record of the timer that starts a recording, now
that record is taken which covers the time calculated as
'start + (Setup.MarginStart * 2) + 1)' in order to have a better chance of
hitting the right record in case of an instant recording. Timers that start
further in the future should always be programmed via the "Schedules" menu.
- The special VPIDs '0' and '1' are now used to enable recording radio channels.
Actually '0' should be enough, but '1' must be used with encrypted channels
(driver bug?). Note, though, that since VDR is mainly a *video recorder*, some
features like, e. g., the progress display, may not work as expected with
radio recordings. Thanks to Michael Paar.
- Fixed a problem with the ERR macro defined by ncurses.h (thanks to Artur
Skawina).
2002-02-10: Version 0.99
- Fixed a bug in moving timers or channels to the last position in the list
(thanks to Matthias Schniedermeyer for helping to debug this one).
- Changed the estimated data rate for calculating the remaining disk capacity
to 25.75 MB/min.
- Only reporting the 'EPG bugfix statistics' if there really were any fixes.
- Added Finnish language texts (thanks to Hannu Savolainen).
- Reverted to the previous way of searching for the EPG record of the current
recording in case of a repeating timer (i.e. taking the one that is in the
middle between start and end time).
- Added a typedef for 'in_addr_t' to make it work with glibc < 2.2 (thanks to
J<>rgen Schmidt).
- When the last entry in a "Recordings" menu page is deleted, that page is now
automatically closed (suggested by Uwe Freese).
- Changed the default name for instant recordings to "TITLE EPISODE" (avoiding
the '-').
- If Setup.ShowInfoOnChSwitch is set to "no", the box for the EPG display is no
longer shown (thanks to Andy Grobb).
- If compiled with VFAT=1, characters that can't be handled by a VFAT system are
now encoded to '#XX'.
- When the user presses the "Power" button and there is a timer about to start
recording within Setup.MinEventTimeout minutes, there is now a confirmation
prompt telling the user that there is an upcoming timer event.
- If a recording has no episode title, the trailing '~' is no longer shown in
the progress display.
2002-02-24: Version 1.0.0pre1
- Added scanning for EPG data for another 4 days on channels that support this
(thanks to Oleg Assovski).
- Removed '#define VFAT 1' from recording.c (was a leftover from testing).
- Fixed the "Low disk space!" message (thanks to Sergei Haller).
- Added the TPID to Hessen-3 in 'channels.conf' (thanks to Sergei Haller).
- Fixed a crash when replaying with DEBUG_OSD=1 (thanks to Stefan Huelswitt).
- Implemented the "First day" parameter for repeating timers. See FORMATS for
information about the enhanced 'timers.conf' file format, and MANUAL for
a description of the new item in the "Edit Timer" menu and the enhanced
functionality of the "Blue" button in the "Timers" menu.
- When deleting a recording that is currently still being recorded, the related
timer will now automatically be terminated. If this is a repeating timer, it
will receive a "First day" setting that skips the timer for this day.
- Fixed closing all unused file descriptors when opening a pipe (thanks to
Werner Fink).
- Instant recordings now take the EPG data from the point in time at 5 minutes
from the start time of the recording. In order for this to work the 'active'
parameter of a timer now uses the second bit to indicate that this is an
"instant" recording (see FORMATS for details).
- Fixed the SVDRP GRAB command in case the video device can't be opened (thanks
to Adrian Stabiszewski).
- At startup the data written into 'epg.data' is now read into the EPG data
structures. In order for this to work, the 'E' record has been extended to
(optionally) contain the 'table ID' (see FORMATS for details).
- The new SVDRP command PUTE can be used to put EPG data into the EPG list.
See FORMATS for details about the required data format.
- Taking the German umlauts 'as is' when compiled with VFAT.
- The new Setup parameter RecordDolbyDigital can be used to generally turn off
recording the Dolby Digital audio channels in case you want to save disk space
or don't have the equipment to replay Dolby Digital audio.
- Reading the 'setup.conf' file no longer terminates in case of an error, but
rather attempts to read the rest of the file.
- Removed DVD support from the core VDR source, since the current version from
Andreas Schultz is already much further developed (DVD menu navigation) and
the concept of "additional players" in VDR is going to change in version 1.1.0,
where a new "plugin" interface shall allow the easy implementation of new
players without having to patch the core VDR source. Until then, Andreas has
agreed to provide his DVD support as a completely external patch.
- The contents of the distribution archive now contains the directory name with
the current version number, as in 'vdr-1.0.0pre1/...' in order to avoid
inadvertently overwriting an existing VDR directory with a new version.
- Added a missing error message in SVDRP command LSTC in case the given channel
can't be found.
2002-02-25: Version 1.0.0pre2
- Fixed a crash in case there is no 'epg.data' at program start (thanks to
Andreas Schultz).
2002-03-03: Version 1.0.0pre3
- Fixed parsing 'E' records in epg2html.pl.
- Fixed a deadlock when switching channels via Schedule/Now|Next/Switch (reported
by Martin Hammerschmid).
- Changed the meaning of the 'Ca' parameter in 'channels.conf'. Each channel can
now define which decryption method it needs in order to be accessed. The new
configuration file 'ca.conf' contains the defined values, and the default
'channels.conf' has been modified to contain the new values for 'Premiere World'
and 'ORF'. If you use the default 'channels.conf' and have the conditional
access hardware to receive encrypted channels, please make sure you copy the
file 'ca.conf' into your /video directory (or wherever your configuration files
are located) and go into the "Setup" menu and set the CICAM values according
to your hardware setup. Currently there are two possible CICAM entries per
DVB card, so any card can implement up to two different conditional access
modes (besides the default "Free To Air" mode, which is always assumed to be
available on any DVB card).
- Updated French language texts (thanks to Jean-Claude Repetto).
2002-03-17: Version 1.0.0pre4
- Added 'Ca' code 201 for 'Cryptoworks, GOD-DIGITAL' to 'ca.conf' (thanks to
Bernd Schweikert).
- Fixed avoiding the primary DVB interface in case Setup.PrimaryLimit is 0.
- Fixed handling CICAM settings if the first one of a DVB card was FTA.
- Fixed reacting on changes in CICAM settings (needed to restart VDR before).
- The "Blue" button in the "Main" menu now works as "Stop" button if a recording
is currently being replayed.
- New command line option '-m' to mute audio of the primary DVB device at
startup (suggested by Mirko G<>nther).
- The new SVDRP command VOLU can be used to control the audio volume (suggested
by Mirko G<>nther).
- Fixed resetting 'mute' state when setting the volume to a non-zero value.
- Added log messages when deleting recordings in case the disk runs full while
recording.
- Fixed closing a pipe (used for replaying Dolby Digital audio), which
sometimes left 'zombie' processes behind (thanks to Werner Fink for helping
to debug this one).
- Now starting the Dolby Digital output thread only if the recording actually
contains Dolby Digital audio data (thanks to Werner Fink).
- Implemented OSD for Volume and Mute (works only if there is no other OSD
activity, but this should be no problem for normal use).
- Changed the MANUAL description of the "Conditional Access" setup parameters
to reflect the actual "CICAM DVBn m" notation in the "Setup" menu.
- The new Setup parameter "Use time from transponder" can be used to define which
transponder shall be used to set the system time (see MANUAL for details).
If you have been using the SetSystemTime option previously, you now MUST
select a channel that you trust to have a reliable time base.
- Grouped the Setup parameters into several sub-menus, so that each group of
parameters fits on a single screen - unless the height of the OSD has been
set to a small value (based on code from Markus Lang).
- Changed the title of the "Main" menu to "VDR".
- Fixed displaying a system message while the replay mode is being shown.
- Physically removing a deleted recording if one with the same name shall be
deleted again.
- The "Left" and "Right" keys are now used to page up and down in text displays
(like the EPG descriptions or the results of commands executed from the
"Commands" menu).
- Fixed high CPU usage in 'Transfer Mode'.
- Replaced 'killproc' with 'killall' in 'runvdr', since apparently 'killproc'
is not available by default on some Linux distributions, whereas 'killall' is.
Please check if your system provides 'killall' - if it doesn't, please change
this back in 'runvdr' and report this (thanks to Achim Lange).
- The "Commands" menu now automatically assigns number keys as hotkeys to the
commands. If you have preceded your commands with digits you may want to
remove these from your 'commands.conf' file.
- The new Setup item "Restart" can be used to force a complete restart of VDR,
including reloading the driver. Note that this can only work if VDR and the
driver are wrapped into a mechanism that actually performs this action if VDR
exits. The 'runvdr' script can be used for this purpose.
- Refined texts of the "Setup" menu.
2002-04-01: Version 1.0.0pre5
- Fixed restoring CICAM setup values for a fourth DVB card (thanks to Klaus Wolf).
- Completed internationalization of OSD texts (thanks to Hannu Savolainen,
Arnold Niessen, Paulo Lopes, Jean-Claude Repetto, Alberto Carraro, Matjaz
Thaler and Truls Slevigen).
- Improved file I/O in case of EINTR, which may occur e.g. with heavy system
load (thanks to Werner Fink).
- Now writing the title of a recording into the 'summary.vdr' file.
- Workaround for displaying still frames with the unpatched LinuxDVB driver
(if anybody ever finds out why the unpatched driver doesn't display VDR's
still frames, please let me know).
- When executing a command from the "Commands" menu, the title of that command
is now immediately shown in the status line (followed by "...") to give the
user some feedback that the command is being executed, which is especially
important if this takes some time.
- Fixed scrolling the "Channels" menu in case the cursor ends up on a group
delimiter (thanks to Bernd Zierath for helping to debug this one).
- Added manual pages vdr(1) and vdr(5) (which made the FORMATS file obsolete).
- New command command line option '-V' to display the VDR version.
- Adjusting column width for channel numbers in case there are more than 999
channels.
- Checking the return value of '...FileReady...' calls in dvbapi.c for better
performance under heavy system load.
- New 'make' target 'install', which copies the manual pages and executables
to their appropriate system locations and creates the /video directory if
it doesn't exist yet.
- Automatic hotkey assignment is now suppressed if the first entry in
'commands.conf' starts with a digit in the range '1'...'9', followed by a blank.
- Fixed a bug in switching back the replay mode display in time shift mode
(thanks to Achim Lange for reporting this one).
- Fixed a bug in the "First day" timer parameter for timers that record over
midnight.
- Added units to Setup parameters.
- Changed time entry in the 'Jump' command during replay, so that it is filled
up from right to left.
- Now using statfs() to determine the amount of free disk space, which avoids
the use of an external 'df' command (thanks to Ruben Nunez Francisco).
- Fixed skipping the next hit of a repeating timer (thanks to Rainer Zocholl
for reporting this one).
- Fixed a bug when a timer records over midnight of a day that had a change in
Daylight Saving Time (thanks to Mirko D<>lle for reporting this one).
- Added Polish language texts (thanks to Michael Rakowski).
- Fixed a bug in parsing group separators in channels.conf (thanks to Henning
Holtschneider for reporting this one).
- Changed the default 'Ok' key when using the PC keyboard from '5' (in the
numeric block) to 'Enter', because the '5' key didn't work on keyboards with
the F-keys on top.
- Fixed a bug in the EPG bugfix mechanism if the extended description is shorter
than 3 characters (thanks to Andreas Schultz).
2002-04-07: Version 1.0.0
- Fixed a problem with wrong EPG data in the Schedules menu (thanks to Tobias
Kerner, problem was initially reported by Michel Moster, but somehow I had
misplaced his message...).
- Added Spanish language texts (thanks to Ruben Nunez Francisco).
- Fixed resetting the "First day" timer parameter once the timer actually starts
recording.
- Fixed the still picture workaround in case the progress display is active
(thanks to Gerald Raaf).
- Fixed a problem with accessing the epg.data file before it is fully written
(thanks to Thilo Wunderlich for reporting this one).
- Now the EPG scan skips channels that have their 'Ca' parameter explicitly set
to an other DVB card (suggested by Sergei Haller).
- Fixed a possible hangup when reading a broken epg.data file (thanks to Henning
Holtschneider for pointing out this one).
- Fixed a bug in the editing process in case a previously edited file with the
same name was manually deleted on a system with more than one video directory
(thanks to Dirk Wiebel for reporting this one).
2002-04-21: Version 1.0.1
- Added some DVB-T channels for Berlin (Germany) to channels.conf.terr (thanks to
Andreas Roedl).
- Implemented enhanced string editing with upper-/lowercase, insert/overwrite
and delete (thanks to Sergei Haller).
- Fixed color palette handling on "big endian" systems (thanks to Jean Martin
for pointing out this one).
- Updated the "Blue Movie" channels to the new "Premiere Erotik" (thanks to
Thilo Wunderlich). NOTE: this adds a new channel to 'channels.conf', so that
any timers referencing a channel with a number higher than 102 should be
checked and adapted if necessary (this only applies if you are using the default
'channels.conf').
- Improved thread locking in the ring buffer to avoid possible race conditions
under heavy load (thanks to Werner Fink).
- Fixed a crash when selecting the "Jump" function directly after setting an
editing mark (thanks to Steffen Koch for reporting and Stefan Huelswitt for
fixing this one).
- Fixed some missing ',' in i18n.c (thanks to Matthias Hilbig).
- Fixed a possible endless loop in shifting recordings between DVB cards (thanks
to Stefan Huelswitt for reporting this one).
- Updated the Premiere World Formula 1 channels in 'channels.conf' (thanks to Mel
Sch<63>chner).
- No longer setting PIDs 0x1FFF, which apparently fixes problems with CAMs and
AC3 sound only working the first time (thanks to Stefan Huelswitt).
- Now encoding '.' at the end of a directory name in case of VFAT=1, since Windows
can't handle these (thanks to Simon Dean for reporting this one).
2002-05-05: Version 1.0.2
- Now taking an active video cutting process into account when doing shutdown or
housekeeping (thanks to Stefan Huelswitt).
- The default duration of an instant recording has been increased to 3 hours and
is now configurable in the "Setup/Recording" menu.
- Added Greek language texts (thanks to Dimitrios Dimitrakos).
- Fixed the unit of the "SVDRP timeout" setup parameter (thanks to Marcus Kuba
for reporting this one).
- Fixed a crash on systems with disks that have a block size larger than 1MB
(thanks to Ulrich Petri for helping to debug this one).
- Updated 'channels.conf' for the new PW settings (thanks to Andreas Share,
Carsten Koch, Gerald Raaf and Mel Sch<63>chner). Note that all channels with numbers
over 50 may have moved, so you should carefully check any timers you have set!
- Updated 'channels.conf.cable' for the new PW settings (thanks to Oliver Lorei
Stephan Schreiber and Uwe Scheffler). Note that all channels may have moved, so
you should carefully check any timers you have set!
For future updates of this file somebody with digital cable should take the role
of the "maintainer" and send me updated versions based on the file that comes
with the most recent version of VDR. I will then simply replace the entire file
'channels.conf.cable' whenever a new version is sent to me.
- Fixed skipping forward in time shift mode near the end of the recording (thanks
to Andreas B<>ttger for reporting this one).
2002-05-09: 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-11: Version 1.1.1
- Separated the actual DVB hardware OSD implementation from the abstract OSD
interface. 'osdbase.c/.h' now implements the abstract OSD, while 'dvbosd.c/.h'
is the actual implementation for the DVB hardware. This is in preparation for
allowing additional kinds of OSD hardware implementations.
- Fixed leftover references to the file FORMATS in MANUAL and svdrp.c (thanks to
Onno Kreuzinger for reporting this one).
- Avoiding ambiguities in the cList template class in case one defines a "list of
lists" (thanks to Stefan Huelswitt).
- Simplified the basic cMenuSetupPage class for easier use in plugins.
- Added setup parameters and a Setup menu to the 'hello' plugin example.
- Fixed logging error message for unknown config parameters in plugins.
- Rearranged cleanup sequence at the end of the main program.
- Adapted PLUGINS.html to use the actual code examples from the 'hello' plugin.
2002-05-13: 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-26: Version 1.0.3
- Updated 'Premiere Sport 2' in channels.conf (thanks to Rudi Hofer).
- 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 Swedish language texts (thanks to Tomas Prybil).
2002-06-10: Version 1.0.4
- Added Romanian language texts (thanks to Paul Lacatus).
- Removed compiler option '-m486' to make it work on non-Intel platforms (thanks
to Alastair McKinstry for pointing this out).
2002-06-16: 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-23: 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-07-21: Version 1.1.5
- Added direct access to the index data of cPalette (needed for displaying SPUs,
thanks to Andreas Schultz).
- The status monitor function cStatus::Replaying() now gets a 'cControl *' argument instead
of a 'cDvbPlayerControl *' in order to allow additional players to call this function.
cPlayer and cControl have been given the functions GetIndex() and GetReplayMode() to
allow access to the player's status.
- Added cOsd::OpenRaw() to create a raw OSD (needed for displaying SPUs).
- Changed the semantics of the Name parameter in cStatus::Recording() and
cStatus::Replaying(). It is no longer the full directory name of the recording,
but rather just the basic name. This has been changed to allow players that can't
provide a name to simply use a string that describes the player type (like, e.g.,
"DVD").
- Fixed a hangup when switching to the next file during replay.
- Fixed a possible race condition in the cDvbPlayer (thanks to Andreas Schultz
for pointing out this one).
- Disabled channels on Transponder 12070 in 'channels.conf', which apparently no longer transmits.
2002-08-04: 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-16: 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-25: 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-09-08: 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-15: 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-29: 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-10-06: 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-13: 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-27: 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<79>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.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.
- 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-11-03: 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-10: Version 1.1.16
- Fixed saving the polarization parameter of channels that have a number in the
'source' parameter (thanks to Peter Seyringer for reporting this one).
- Updated 'channels.conf.terr' (thanks to Andy Carter).
- Updated 'channels.conf.cable' (thanks to Achim Lange).
- First step towards a "unique channel ID". The channel ID is a human readable
string, made up from several parameters of the channel's definition in the file
'channels.conf' (see man vdr(5) for details).
In order for the "unique channel ID" to work, all channel definitions now must
be unique with respect to the combination of their Source, Frequency and SID
parameters. You may have to fix your 'channels.conf' manually if there are error
messages in the log file when loading it. BE SURE TO MAKE A BACKUP COPY OF YOUR
'channels.conf' AND 'timers.conf' FILE BEFORE SWITCHING TO THIS VERSION, AND CHECK
VERY CAREFULLY WHETHER YOUR TIMERS ARE STILL SET TO THE RIGHT CHANNELS!
When reading an existing 'timers.conf', the channels will be identified as before
by their numbers. As soon as this file is written back, the channel numbers will
be replaced by the channel IDs. After that it is possible to manually edit the
'channels.conf' file and rearrange the channels without breaking the timers.
Note that you can still define new timers manually by using the channel number.
VDR will correctly identify the 'channel' parameter in a timer definition and
use it as a channel number or a channel ID, respectively. Also, the SVDRP commands
that return timer definitions will list them with channel numbers in order to
stay compatible with existing applications.
The channel ID is also used in the 'epg.data' file to allow EPG information from
different sources to be stored, which would previously have been mixed up in case
they were using the same 'service ID'. Note that the contents of an existing
'epg.data' file from a previous version will be silently ignored, since it doesn't
contain the new channel IDs. When inserting EPG data into VDR via SVDRP you now also
need to use the channel IDs.
Currently the EPG data received from the DVB data stream only uses the 'Source'
and 'Service ID' part of the channel ID. This makes it work for channels with
the same service IDs on different sources (like satellites, cable or terrestrial).
However, it doesn't work yet if the service IDs are not unique within a specific
source. This will be fixed later.
- Added missing SID parameters to 'channels.conf'. Some channels have been removed
since they are apparently no longer broadcasted.
- Removed dropping EPG events from "other" streams that have a duration of 86400
seconds or more (was introduced in version 1.1.10). This has become obsolete by
the modification in version 1.1.13, which 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. Besides, the change in 1.1.10 broke handling EPG
data for NVOD channels.
- Fixed a compiler warning regarding cMenuChannels::Del() and MenuTimers::Del() hiding
the base class virtual functions.
2002-11-24: 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-12-01: 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-08: Version 1.1.19
- The character '|' in description texts of EPG records is now interpreted as a
newline character (suggested by Gerhard Steiner).
- Updated 'channels.conf.cable' (thanks to Andreas Kool).
- Improved handling of repeated remote keys.
- The RCU now only sets the channel number display when there are no incoming remote
control keys, which improves reaction on repeated keys.
- The actual tuning is now done in a separate thread, which makes zapping through the
channels a lot faster and no longer gets stuck on channels that don't broadcast.
This also makes "Motor-DiSEqC" work (thanks to Reinhard Walter Buchner for his help
in testing this). Since switching channels now no longer explicitly waits for a
channel lock in the foreground thread, the "panic level" mechanism is no longer
used (maybe we don't need it any more, anyway).
- The keyboard is now by default always active to control VDR. The 'make' option
REMOTE=KBD is therefore obsolete. When compiling VDR with REMOTE=RCU or REMOTE=LIRC,
the keyboard can thus now be active together with the remote control. If you want
to build VDR _without_ keyboard support you can set NO_KBD=1 in the 'make' call.
Since the keyboard codes are now different from the ones used previously (which
were mapped by the 'ncurses' library) you will need to go through the "Learning
keys" procedure again. To do so, either delete the file /video/remote.conf or
remove the KBD.* entries from it before starting this version of VDR.
(Thanks to Thomas Sailer for pointing out how to set the terminal parameters to
read from the keyboard).
- The 'ncurses' library is now only necessary when compiling VDR with DEBUG_OSD=1.
2002-12-15: Version 1.1.20
- Now checking if there is a connection to the keyboard (thanks to Jaakko Hyv<79>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<79>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.
2003-01-10: 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 considered 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-26: Version 1.1.22
- Added 'Hrvatska radiotelevizija' and 'RTV Slovenija' to ca.conf (thanks to
Paul Gohn).
- Implemented actual user input for CAM enquiry menus.
- Since disk file systems apparently don't honor the O_NONBLOCK flag to read from
a file in non-blocking mode the cDvbPlayer now uses a non blocking file reader
class to make sure replay remains smooth even under heavy system load.
- Increased the maximum possible packet size in remux.c to avoid corrupted streams
with broadcasters that send extremely large PES packets (thanks to Teemu Rantanen).
- Added TS error checking to remux.c (thanks to Teemu Rantanen).
- Modified cRingBufferLinear to avoid excessive memmove() calls in 'Transfer Mode'
and during recordings, which dramatically reduces CPU load. Thanks to Teemu
Rantanen for pinpointing the problem with the excessive memmove() calls.
- Updated 'channels.conf' (thanks to Achim Lange).
- Added/improved Swedish language texts (thanks to Jan Ekholm).
- Fixed the description of the "Scroll pages" OSD setup parameter ('yes' and 'no'
were mixed up).
- Fixed handling the LOG_LOCALn parameters in the -l option (thanks to Dimitrios
Dimitrakos).
- Changed EIT processing to always read a full section.
- Fixed handling user defined CFLAGS in libdtv/libvdr/Makefile (thanks to Clemens
Kirchgatterer and Robert Schiele).
- Fixed skipping unavailable channels in the EPG scanner.
2003-02-02: Version 1.1.23
- Fixed a new/delete malloc/free mismatch in ringbuffer.c (thanks to Stefan
Huelswitt for reporting this one).
- Improved CAM handling.
2003-02-09: Version 1.1.24
- Improved CAM handling (thanks to Reinhard Walter Buchner for a great deal of help
in debugging this). It is now possible to insert the CAM in any of the two slots,
to insert and remove it while VDR is running and even to have two CAMs inserted.
- Turning SI filtering off and on when switching channels.
- Timers are now processed even if an OSD menu is open (except for menus that
explicitly handle timers).
2003-02-16: Version 1.1.25
- Fixed high CPU load during replay (thanks to Marcel Wiesweg for pointing out this
one).
- Fixed margin handling in cRingBufferLinear.
- Now polling the output device in 'Transfer Mode' and retrying to put packets
into the ring buffer.
- Resetting the CAM slot in case communication breaks down.
- Improved keyboard detection (thanks to Werner Fink).
- Updated 'channels.conf.terr' (thanks to Andy Carter).
- Fixed broken support for raw OSDs of plugins (thanks to Marcel Wiesweg for
reporting this one).
- Broken CAM connections are now restored automatically.
2003-03-19: Version 1.1.26
- Removed signal handling and usleep(5000) from cDvbOsd::Cmd() (apparently this
is no longer necessary with DVB driver 1.0.0pre2 or later).
- If the primary device (as defined in setup.conf) doesn't have an MPEG decoder
(and thus can't be used as a primary device) VDR now scans all devices at
startup and uses the first one (if any) that actually has an MPEG decoder.
That way this will also work automatically if the primary device is implemented
by a plugin.
- Fixed a possible deadlock when using the "Blue" button in the "Schedules" menu
to switch to an other channel (thanks to Torsten Herz).
- Fixed the EPG bugfix code number for the MAX_USEFUL_SUBTITLE_LENGTH fix (thanks to
Torsten Herz for reporting this one).
- Modified the EPG scanner to avoid CPU load peaks (thanks to Steffen Becker for
reporting this one).
- Fixed support for Viaccess CAMs (thanks to Axel Gruber for helping to debug this).
2003-04-13: Version 1.1.27
- The CAM is now accessed only if the current channel actually has a non-zero Ca
value, and CAM access is completely suppressed during replay, which avoids
problems in case the CAM is attached to the primary DVB device.
- The "Left" and "Right" buttons now set the cursor to the first or last list item
even if the list consist only of a single page, like, for instance, the Main menu
(thanks to Oliver Endriss).
- Made the log message "OSD window width must be a multiple of 4..." a debug message
instead of an error message, so it can be avoided by using a log level less than 3.
- Updated Greek language texts (thanks to Dimitrios Dimitrakos).
- Fixed faulty behaviour of the "Mute" key in case the channel display is visible
(thanks to Florian Bartels for reporting this one and Sascha Volkenandt for
helping to fix it).
- Modified LOF handling to allow for C-band reception (thanks to Malcolm Caldwell).
- Added some missing cAudio handling calls (thanks to Werner Fink).
- Replaced the 'for' loops in StripAudioPackets() with memset() calls (thanks to
Werner Fink).
- Further increased the timeout until an index file is considered no longer to be
written.
- Fixed a crash in case the index file can't be accessed any more during replay
(thanks to Stefan Huelswitt for reporting this one).
- Fixed displaying messages in the status line in case they exceed the OSD width
(thanks to Gerhard Steiner for reporting this one).
- Avoiding high CPU load in case the connection to LIRC gets lost (thanks to
Ludwig Nussel).
- Fixed handling repeat function with LIRC (thanks to Ludwig Nussel).
- Fixed handling min/max borders when entering integer values (thanks to Andy
Grobb for reporting this one).
- Implemented a "resume ID" which allows several users to each have their own
resume.vdr files (thanks to Martin Hammerschmid). This parameter can be set in
the "Setup/Replay" menu (see MANUAL for details).
- Now using 'libdtv' version 0.0.5 (thanks to Rolf Hakenes for the new version
and Stefan Huelswitt for adapting VDR to it).
- If no device with an MPEG decoder can be found at startup, the first device
is now used as primary device (just to have some device).
- Adjusted some Premiere channels in 'channels.conf' (thanks to Thomas Koch).
- Updated 'channels.conf.cable' (thanks to Stefan Hu<48>feldt).
- The 'epg.data' file is now read after all plugins have been started (thanks
to Sascha Volkenandt).
- The LIRC remote control no longer tries to learn keys if it can't connect to
the LIRC daemon (thanks to Ludwig Nussel for reporting this one). The same
applies to the RCU remote control in case of errors during startup.
- Fixed handling of Ca parameters with values <= MAXDEVICES, which don't indicate
an actual encrypted channel (thanks to Stefan Huelswitt for reporting this one).
2003-04-21: Version 1.1.28
- Using masks in EIT filtering to reduce the number of filters (thanks to Andreas
Schultz).
- Fixed handling Ca descriptors (thanks to Stefan Huelswitt).
- Now only those Ca descriptors are sent to a CAM that are actually understood
by that CAM.
- Re-enabled CAM communication during replay and on non-Ca channels. This requires
a DVB driver with firmware version 2613 or later.
- It is now possible to do simultaneous recording and replay with a single DVB
card, even with encrypted channels. This requires the use of the Link Layer
firmware, version 2613 or higher; the -icam firmware is still limited to live
encrypted channels only. Finally we have time shift for encrypted channels on
single card systems!
- Enhanced detection of pending user I/O from CAMs to avoid sluggish reaction
to remote control keypresses.
- Implemented "pause live video". You can now press "Menu/Yellow" or "Pause" on
your remote control while watching live video to start an instant recording
of the current programme and immediately start replaying that recording.
2003-04-27: 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 artifacts 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-05-04: Version 1.1.30
- Fixed minimum lifespan of deleted recordings (thanks to Jaakko Hyv<79>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-11: 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 considered 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-18: Version 1.1.32
- Removed a faulty parameter initialization in menu.c (thanks to Lauri Tischler for
reporting this one).
- Re-implemented the WaitForPut/WaitForGet stuff in cRingBuffer, since some plugins
actually need this. By default the buffer does not wait; if a plugin needs the
waiting functionality it can call the new SetTimeouts() function.
- Moved the call to cPlugin::Start() further up in vdr.c, to make sure it gets
called before trying to learn the keys (problem reported by Oliver Endriss).
- No longer starting the editing process if no marks have been set (thanks to
Matthias Raus for reporting this one).
- Added Catalan language texts (thanks to Marc Rovira Vall and Ramon Roca).
Plugin authors may want to add the new entries to their I18N texts and contact
the translators to have their texts translated. Note that there are now 16
different OSD languages, so please make sure you have 16 versions for each of
your texts.
- Moved the detection of a broken video data stream from the cDevice into the
cRecorder to avoid problems with cReceivers that want to receive from PIDs
that are currently not transmitting (thanks to Marcel Wiesweg for reporting
this one).
- Fixed setting the locking pid after a timed wait (thanks to Andreas Schultz).
- Avoiding spurious section filter settings after a channel switch.
- Updated 'channels.conf.cable' (thanks to Stefan Hu<48>feldt).
- Fixed reading 'epg.data' for channels with non-zero RID (thanks to Oliver
Endriss for reporting this one).
- Fixed EPG bugfix statistics to avoid log entries for undefined channels (thanks
to Lars Bl<42>ser for reporting this one).
- No longer waiting inside cIndexFile::CatchUp() to avoid shortly blocking replay
at the end of a recording.
2003-05-25: Version 1.1.33
- Modified handling of audio packets in cDvbPlayer for better sync with external
AC3 replay (thanks to Werner Fink).
- Fixed a memory leak in cNonBlockingFileReader (thanks to Stefan Huelswitt).
- Completed the French OSD texts (thanks to Gregoire Favre).
- Completed the Finnish OSD texts (thanks to Niko Tarnanen and Rolf Ahrenberg).
- Fixed I/O handling in case an explicit controlling terminal is given (thanks
to Oliver Endriss).
- Fixed resume file handling in case the resume.vdr file can't be written
(thanks to Gerhard Steiner).
- Fixed cutting a recording if there is only a single editing mark (thanks to
Ralf Klueber for reporting this one).
- Fixed volume display in case a plugin has its own OSD open (thanks to Marcel
Wiesweg).
- Fixed channel switching in the EPG scanner on single device systems.
- Completed the Swedish OSD texts (thanks to Tomas Prybil).
- Now switching to the channel used by the most recently started timer in case
the original current channel becomes unavailable due to a recording on a
different transponder. If this fails, a channel up/down switch is attempted as
a fallback solution (thanks to Lauri Tischler for reporting this one, and to
Hermann Gausterer for suggesting to switch to the recording channel).
- Fixed cReplayControl::Show() to avoid a compiler warning in g++ 3.2.3 (thanks
to Jan Ekholm for reporting this one).
- Completed the Slovenian OSD texts (thanks to Matjaz Thaler).
- Changed the DEFAULTPRIORITY in device.c to -1, so that the primary device
will be used for FTA recordings in case the CAM is connected to a non-primary
device (thanks to Reinhard Walter Buchner for reporting this one).
- The cCiHandler now closes its file handle when it gets destroyed.
- Checking for duplicate recordings with the same file name and disabling the
second timer (thanks to Peter Bieringer for reporting this one).
- Fixed handling newly created timers in case they are not confirmed with "Ok"
(thanks to Gerhard Steiner for reporting this one).
- It is now possible to directly delete a timer that is currently recording
(thanks to Alexander Damhuis for reporting this one).
2003-05-30: Version 1.2.0pre1
- Some corrections to the French OSD texts (thanks to Olivier Jacques).
- Fixed some missing commas in i18n.c (thanks to Dimitrios Dimitrakos for
reporting this problem).
- Some corrections to the Finnish OSD texts (thanks to Niko Tarnanen and Rolf
Ahrenberg).
- Completed the Italian OSD texts (thanks to Antonio Ospite).
- Fixed breaking off replay in case the user hits "Play" or "Pause" too soon after
going into "Pause live video" mode (thanks to Karim Afifi for reporting this one).
- Some corrections to the Catalan OSD texts (thanks to Jordi Vil<69>).
- Single event timers are now deleted if the recording they are doing is
deleted before the timer ends.
- Fixed an uninitialized variable in cDisplayChannel (thanks to Stefan Huelswitt).
- Fixed a possible access of invalid file handles in cSIProcessor::Action()
(thanks to Stefan Huelswitt).
2003-06-01: Version 1.2.0
- Completed Greek language texts (thanks to Dimitrios Dimitrakos).
- Completed Polish language texts (thanks to Michael Rakowski).
- Added a note about NPTL ("Native Posix Thread Library") to the INSTALL file
(thanks to Jon Burgess for pointing this out).
- Some corrections to the Finnish OSD texts (thanks to Jaakko Hyv<79>tti).
- Officially released as version 1.2.0.
2003-06-09: Version 1.2.1
- Fixed OSD access in case none of the devices provides one (thanks to Axel
Gruber for reporting this one).
- Fixed editing channels ('timers.conf' was not written after a channel has
been modified, which could result in errors upon the next start of VDR).
- Fixed a crash when canceling a newly created timer (thanks to Thomas Schmidt
for reporting this one).
- Completed Hungarian language texts (thanks to Istvan Koenigsberger and Guido
Josten).
- Fixed device handling in the CICAM menu in case a VDR instance was started
with a specific device using the -D option (thanks to Gerald Raaf for reporting
this one).
- Initializing the current channel to '1' to avoid a crash in creating a new
timer in case there is no device in the system that can actually receive any
channel (thanks to Malcolm Caldwell for reporting this one).
- Some corrections to the Finnish OSD texts (thanks to Niko Tarnanen and Rolf
Ahrenberg).
2003-08-03: Version 1.2.2
- Fixed a bug in channel switching after Left/Right has been pressed (thanks to
Michael Walle for reporting this one).
- Improved channel switching in case of numerical input by switching as soon as
the channel is unique (suggested by Jaakko Hyv<79>tti).
- Fixed creating a new channel in the "Channels" menu in case the 'channels.conf'
contains ':@nnn' lines with no text (thanks to Guy Roussin for reporting this
one).
- Changed the behaviour of the '0' key in normal viewing mode so that a channel
only qualifies as "previous" if it has been selected for at least 3 seconds
(suggested by Thomas Keil).
- Now clearing the channel info display when entering numeric keys to switch
channels (suggested by Guy Roussin).
- Added missing I18N entry for "Ppid" (thanks to Rolf Ahrenberg).
- Fixed handling the color buttons in the "Edit channel" menu (thanks to Thomas
Keil for reporting this one).
- Fixed an occasional "Broken pipe" error in SVDRP connections (thanks to Gerhard
Steiner for reporting this one).
- Fixed checking CA capabilities with the dvb-kernel driver (thanks to Kenneth
Aafl<66>y).
- Fixed selecting the device, because sometimes an FTA recording terminated a
CA recording (thanks to Emil Naepflein).
- Fixed a possible crash in case a VFAT file system is used without compiling VDR
with VFAT=1 (thanks to Ernst F<>rst for reporting this one).
- Now the program uses the values of VIDEODIR and PLUGINDIR defined in Makefile
or Make.config as defaults (thanks to Steffen Barszus).
- Added the usual menu timeout to the CAM menus.
2003-08-17: 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-26: Version 1.2.4 (not officially released)
- Fixed 'runvdr' to stay in the loop only if VDR returns an exit status of '1'.
- Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Empty values in setup.conf are no longer treated as an error (thanks to Andreas
Kool for reporting this one).
- Added a note about the config files of plugins to INSTALL (thanks to Thomas
Keil).
- VDR now continues to start up, even if there is an error in setup.conf.
- Fixed a bug in resetting OSD color palettes (thanks to Torsten Herz).
- Fixed starting a recording on the primary device if there is a replay session
active (thanks to Javier Marcet for reporting this one).
- Avoiding an unnecessary stop of an ongoing Transfer Mode when starting a
recording on the primary device.
2003-08-31: Version 1.2.5pre1
- Now explicitly handling exit value 0 and 2 in 'runvdr'.
- Added a missing 'w' to the allowed characters for Finnish and Swedish (thanks
to Lauri Tischler and Ragnar Sundblad).
- Added channels for DVB-T Hannover (Germany) to channels.conf.terr (thanks to
Peter Waechtler).
- Fixed a hangup in SVDRP when the client disappears without sending QUIT (thanks
to Robert Bartl for reporting this one). The problem was introduced in version
1.2.2 through the fix for an occasional "Broken pipe" error in SVDRP connections.
- Updated 'channels.conf.terr' for Berlin.
- Fixed displaying still pictures, now using the driver's VIDEO_STILLPICTURE call
directly (thanks to Oliver Endriss). This also improves navigating through DVD
menus with the DVD plugin. If this causes problems with your particular system
(maybe because you are using the 'analogtv' plugin) you can reactivate the
previous behaviour by commenting out the line
#define VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES
in VDR/dvbdevice.c.
Note that you need driver version 2003-08-23 or later for this to work!
- Fixed handling extra blanks in plugin command lines.
- Actually implemented the SVDRP command DELC.
- Now clearing the player device if there are too many poll timeouts in 'Transfer
Mode', which avoids buffer overflows and black screens in such cases.
2003-09-07: Version 1.2.5pre2
- Updated VIVA, VIVA Plus, MTV Central and MTV 2 in channels.conf (thanks to
Sebastian Frei).
- Changed "Studio Universal" to "Sci-Fi" in channels.conf.
- Fixed a crash when using the --terminal option without having access to the
given terminal (thanks to Steffen Barszus for helping to debug this one).
- Added a note about the driver version needed for the still picture fix from
version 1.2.5pre1 to work properly (thanks to Oliver Endriss for pointing
this out).
- Fixed setting the primary device in case none of the devices provides an MPEG
decoder (thanks to Rene Bartsch for reporting this one).
- Fixed handling the "Red" button in the "Schedules" menu in case there are no
events listed for a particular channel (thanks to Christoph Hermanns for
reporting this one).
- When setting an editing mark while in "Pause" mode, replay now immediately
jumps to the marked frame (thanks to Oskar Signell for pointing out this
problem).
- The DVB devices no longer send CA descriptors to the CAM while the EPG scanner
is active (sometimes the CAMs got irritated when the device tuned to channels
they couldn't handle).
2003-09-14: Version 1.2.5pre3
- Fixed dropping out of replay mode while viewing a recording that is still
going on (thanks to Oliver Endriss for reporting and helping to debug this
one).
- Fixed handling ':' characters in channel names when reading channels.conf
(thanks to Reinhard Nissl for reporting this one).
- Fixed the URL to the 'Doxygen' tool in INSTALL (thanks to Dirk Essl).
- Removed the obsolete chapter "Stopping a recording on the primary DVB interface"
from MANUAL.
- Completed Dutch language texts (thanks to Hans Dingemans).
- Made 'diseqc.conf' a required file only if Setup.DiSEqC is activated (thanks to
Thomas Schmidt).
- VDR now starts up even if 'keymacros.conf' references a plugin that is currently
not loaded (suggested by Alexander Wetzel).
- Fixed checking for VIDEO_STREAM_S in cRemux::SetBrokenLink() (thanks to Oliver
Endriss).
- Added 'repeat' function to keys '7' and '9' ("jump to mark") in replay mode
(suggested by Oliver Endriss).
- Made cOsdMenu::Display() virtual, which allows plugins to do some additional
processing after calling the base class function (suggested by Jan Rieger).
- Updated 'ca.conf' (thanks to Marco Franceschetti).
2003-09-17: Version 1.2.5
- Updated 'channels.conf.cable' (thanks to Stefan Hu<48>feldt).
2003-10-17: Version 1.2.6pre1
- Updated the required driver version in INSTALL (thanks to Jens Groth for
reporting this one).
- Fixed missing channel info after an incomplete channel group switch (thanks
to Andreas Trauer).
- Fixed handling a channels.conf that contains a ":@nnn" line as its last entry
(thanks to Ralf Klueber).
- Fixed detecting the /dev/videoN devices for GRAB in case there are others
before the DVB devices (thanks to Andreas Kool).
- Updated 'channels.conf.terr' for Berlin (thanks to Markus Hardt).
- Fixed handling rc key learning in case cRemote::Initialize() returns 'false'
(thanks to Oliver Endriss).
- Fixed initializing the highlight area in cDvbSpuDecoder (thanks to Sven Goethel).
- Now trying to get a timer's channel without RID when loading 'timers.conf'
(thanks to Thomas Rausch).
- Removed the unused 0x73 (TOT) filter in eit.c (thanks to Andreas Trauer).
- Fixed extracting the ES data in cDvbDevice::StillPicture() (thanks to Stefan
Huelswitt).
- Added MPEG1 handling to cDvbDevice::StillPicture() (thanks to Thomas
Heiligenmann).
- Changed the default "Lifetime" to 99, which means that recordings will
never be deleted automatically in case the disk runs full (suggested by
Oliver Endriss). Note that in an existing VDR installation the current
value as set in 'setup.conf' will still be used - this change only affects
new VDR installations.
- Edited recordings will now never be deleted automatically if the disk runs
full (suggested by Emil Naepflein).
- Channel IDs are now checked when reading 'channels.conf' to avoid later
problems with timers.
2003-10-19: Version 1.2.6pre2
- Improved cDvbDevice::StillPicture() (thanks to Thomas Heiligenmann).
2003-10-24: Version 1.2.6pre3
- Improved cDvbDevice::StillPicture() (thanks to Oliver Endriss).
- Continuing learning remote control keys in case one rc fails (thanks to
Oliver Endriss).
- Fixed handling comments in editing marks.
2003-10-26: Version 1.2.6pre4
- Fixed handling CAM menus in case the CAM connection fails while the menu
is being presented (thanks to Thomas v. Keller for reporting this one).
- Added missing 'const' to some cChannel member functions (thanks to Torsten
Herz).
2003-11-08: 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-09: 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-14: Version 1.2.6
- Final release of version 1.2.6.
2004-01-04: 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-11: 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-18: Version 1.3.2
- Fixed resetting the EPG data versions after changing the preferred languages
(thanks to Teemu Rantanen for reporting this one and helping to debug it).
- Added LinkageDescriptor handling to 'libsi' (thanks to Marcel Wiesweg).
- Added Russian language texts (thanks to Vyacheslav Dikonov).
Plugin authors may want to add the new entries to their I18N texts and contact
the translators to have their texts translated. Note that there are now 17
different OSD languages, so please make sure you have 17 versions for each of
your texts.
- Some corrections and additions to the Finnish OSD texts (thanks to Rolf
Ahrenberg and Niko Tarnanen).
- Fixed a wrong 'delta' value in the call to the shutdown script (thanks to
Stephan Epstein for reporting this one).
- Activated detection of radio channels (to avoid reports about "channels not
being detected that used to be detected with the 'scan' utility or the
original 'autopid' patch ;-).
- Channels with a zero VPID no longer write a PPID into channels.conf.
- Short channel names are now only stored if they actually differ from the
full name.
- The EPG scan now scans newly found transponders together with already existing
ones.
- The "Red" button in the "Setup/EPG" menu can now be used to force an EPG
scan on a single DVB card system (see MANUAL for details).
- The new SVDRP command 'SCAN' can be used to force an EPG scan on a single
DVB card system (see MANUAL under Setup/EPG for details).
- Fixed handling PID changes in 'Transfer Mode'.
- Excess blanks in channel names read from the SDT are now removed.
- Fixed wrong parameter settings when scanning NITs for terrestrial transponders
(thanks to Christian Tramnitz for pointing out this one).
- Fixed some out of bounds parameter settings when scanning NITs for cable
and satellite transponders.
- Added 'libsi' include files to the 'include' directory, so that plugins can
use them (thanks to Marcel Wiesweg).
- Now only processing NITs that contain the transponder they are actually
broadcast on.
- Fixed setting the source type for newly detected terrestrial transponders
(thanks to Christian Tramnitz for his support in debugging this).
2004-01-25: Version 1.3.3
- Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added ISO639LanguageDescriptor to 'libsi'.
- Changed the 'languageCode' members in the descriptor classes of 'libsi' to
'char[4]' and setting the 4th byte to 0 for easier handling.
- Fixed frequency handling when setting the CA descriptors in cDvbTuner::Action()
(thanks to Jan Ekholm for reporting and helping to debug this one).
- Now setting CA descriptors even if "Setup/DVB/Update channels" is less than 2.
- There can now be up to 32 audio and Dolby PIDs (however, currently still only
the first two are used throughout the rest of the program).
- The audio and Dolby PIDs in 'channels.conf' now can have an optional language
code (see man vdr(5)). Currently this is only stored and not yet used otherwise.
- Added a call to cStatus::MsgOsdCurrentItem() to cMenuEditItem::SetValue()
(thanks to Martin Hammerschmid).
2004-02-08: 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-29: 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 unpleasantly 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<79>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<53>phane Est<73>-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-03-14: Version 1.3.6
- Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed some descriptor handling in 'libsi' (thanks to St<53>phane Est<73>-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<53>phane Est<73>-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<53>phane Est<73>-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<77> 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-05-16: 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-23: 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, originally 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-31: Version 1.3.9
- Completed Croatian language texts (thanks to Drazen Dupor).
- New iso8859-2 font to fix the problem with program freezes (thanks to Drazen Dupor).
- Implemented a default cRemote::Initialize() that waits 10 seconds for a keypress
in order to prevent a "hangup" in case, e.g., the LIRC driver is not loaded (thanks
to Helmut Auer).
- Updated 'channels.conf.terr' for Hannover (thanks to Peter Waechtler).
- cBitmap::DrawBitmap() now also resets the palette if the entire bitmap area is
covered (suggested by Sascha Volkenandt).
- Fixed setting the title in the replay display of the "Classic VDR" skin in case
a shorter title is set after a longer one (thanks to Stefan Huelswitt for
reporting this one).
- Now using more separate areas in the "ST:TNG Panels" skin to allow a theme to
use more independent clrMenu* colors.
- Fixed removing the "scanning recordings..." message in case the video directory
is empty (thanks to Andreas Regel for reporting this one).
- Added SetMessage() functions to the Replay and Channel skin functions. Plugins
that implement skins will need to implement these functions. This fixes a missing
"Editing process finished" message (thanks to Oliver Endriss for reporting this
one).
- Fixed the height of the channel display in the "Classic VDR" skin.
- Fixed handling descriptor loops in 'libsi', which had sometimes caused invalid
CA ids to be added to the channel definitions (thanks to Wayne Keer for reporting
this one, and Marcel Wiesweg for fixing it).
- Fixed handling colors in cDvbSpuPalette::yuv2rgb() (thanks to Marco Schl<68><6C>ler).
- Made some functions of cFont virtual to allow implementing dummy fonts for the
'curses' skin.
- The new plugin 'skincurses' re-implements the functionality that was previously
available by compiling VDR with DEBUG_OSD. Some things may not yet work as they
should, but it's a starting point.
2004-06-06: Version 1.3.10
- Fixed some default parameters in 'skincurses'.
- Fixed cBitmap::DrawPixel(), which messed with other bitmaps' palettes in case
the pixel coordinates were outside this bitmap (thanks to Sascha Volkenandt for
reporting this one).
- The cBitmap::DrawText() function now doesn't set any background pixels if the
given background color is clrTransparent. This allows drawing "transparent"
texts (suggested by Sascha Volkenandt).
- The cBitmap::SetXpm() function now ignores unused "none" color entries, which
some broken graphics tools write into XPM files (suggested by Sascha Volkenandt).
- No longer setting lnb voltage if the frontend is not DVB-S (thanks to Marco
Schl<68><6C>ler).
- Fixed displaying the current channel when switching via the SVDRP command CHAN
(thanks to J<>rgen Schmitz for reporting this one).
- Fixed missing audio after replaying a DVD (thanks to Marco Schl<68><6C>ler).
- Added a note about the default assignment of the color keys to MANUAL.
- Added a note about NPTL ("Native Posix Thread Library") to the INSTALL file
(apparently the "fix" in version 1.3.0 didn't really fix this).
- Modified 'libsi' to require callers to state the buffer sizes when getting
strings in order to avoid buffer overflows (thanks to Philip Lawatsch for
debugging a buffer overflow in eit.c).
2004-06-19: 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<68><6C>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-07-18: Version 1.3.12
- Removed all error messages from cRecordings::ScanVideoDir() and just skipping
entries that cause errors in order to avoid failure in case of things like
broken links etc.
- The function cTimers::SetEvents() now immediately returns if there is some user
input.
- Fixed handling menu status messages when the list contents is scrolled (thanks to
Alfred Zastrow for reporting this one).
- Fixed checking the last area for misalignment in cOsd::CanHandleAreas() (thanks
to Reinhard Nissl for reporting this one).
- No longer adding section filters to the list of filters if they can't be opened
(thanks to Marco Schl<68><6C>ler for pointing this out).
- Fixed handling error case '-1' when polling section filters (thanks to Marco
Schl<68><6C>ler).
- Fixed handling error case '-1' when polling CAM connections.
- Making sure the OSD reports oeWrongAlignment errors before any oeAreasOverlap
error (suggested by Reinhard Nissl).
- Avoiding flashing effects in the OSD of full featured DVB cards by explicitly
clearing the OSD windows before opening them (suggested by Marco Schl<68><6C>ler).
- Experimental support for NVOD channels. Currently these channels are detected
and linked to their "base" channels using the same mechanisms as for the
"linked services" (let's see if this is useful). Thanks to Mike parker for
helping to test this. Also used some input from the 'autopid' patch by Andreas
Schultz).
- Now storing the name of the service provider (aka "bouquet") in the channel
name, separated by a semicolon (see man vdr(5) for details). Explicit usage
of the various parts of the channel name is yet to come.
- The 'radio' channel icon is now only displayed in the ST:TNG skin if the channel
actually has an APID.
2004-10-17: 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<68>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<68><6C>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<68><6C>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<68><6C>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<68><6C>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-24: Version 1.3.14
- Fixed detecting transponder lock in cDvbTuner (based on a patch from Stefan
Meyknecht).
- What was previously marked with WAIT_FOR_LOCK_AFTER_TUNING is now permanently
active and uses a cCondVar to signal when a transponder is locked.
- Added some missing 'const' to cChannel.
- Added a sample setup for 'DisiCon-4 Single Cable Network' to 'diseqc.conf'
(thanks to Oliver Endriss).
- Fixed attaching a cPlayer to a cDevice, so that 'Operation not permitted'
errors don't occur any more (thanks to Marco Schl<68><6C>ler).
- Fixed a case where the resultBuffer in cRemux ran full before getting a sync.
- Removed the usleep() call from cDvbPlayer::Action() to make VDR run on NPTL
systems (thanks to Alfred Zastrow). The NPTL check at startup has also been
removed.
- Taking the complete size of available data into account when deciding whether
to clear the transfer buffer to avoid overflows (thanks to Reinhard Nissl).
- Updated Romanian language texts and the iso8859-2 fonts (thanks to Lucian Muresan).
- Now actually using the iso8859-15 fonts (thanks to Lucian Muresan).
- Some minor code cleanups (thanks to Prakash K. Cheemplavam).
- Fixed missing cleanup at program exit in case there is a problem with a plugin
(thanks to Mattias Gr<47>nlund for pointing this out).
- Increased the required free buffer space in the resultBuffer of cRemux to
2 * IPACKS to avoid a buffer overflow in case a cTS2PES writes one complete
packet and then (within processing the same TS packet) wants to write another
small packet.
- Removed the signal handler and WakeUp() call from cThread (it is no longer
needed).
- Added some checks when canceling a thread and removed the usleep() in
cThread::Start() (suggested by Ludwig Nussel). Also removed 'running' from
cThread and using only childTid to indicate whether a thread is actually
running.
- Added cCondWait::Sleep() and using it to replace all usleep() calls (based
on a suggestion by Werner Fink).
- Only assigning events to timers if the related schedule has actually been
modified.
- When searching for the present event, the running status is now only taken
into account if the event has been "seen" within the past 30 seconds.
This avoids shortly seeing the wrong events in the channel display when
switching to a channel that hasn't been tuned to in a while.
2004-11-01: 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<68><6C>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<68><6C>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-14: Version 1.3.16
- Fixed cChannel::SetName() in case only the ShortName or Provider has changed
(thanks to Sascha Volkenandt for reporting this one).
- Added Danish language texts (thanks to Mogens Elneff).
- Reactivated the NPTL check at startup because there appear to be still
unsolved problems when running on NPTL systems.
- Added missing calls to cStatus::MsgOsdClear() in cSkins::Message() (thanks
to Joachim Wilke for reporting this one, and Andreas Regel for additional
input).
- Fixed the cDvbSpuDecoder (thanks to Marco Schl<68><6C>ler).
- Fixed handling of pmAudioOnlyBlack (thanks to Stefan Huelswitt).
- Fixed a short glitch when starting a recording on the primary device while
in replay or transfer mode (thanks to Marco Schl<68><6C>ler).
- Added missing initialization of cEvent::seen.
- Checking PID language codes for ISO 639 compliance to avoid problems with
funny characters. Invalid language codes will be stored as "???".
- The '0' key now toggles the "Day" item in the "Timers" menu between "single
shot" and "repeating". The keys '1'...'7' can be used to toggle the individual
days ('1' is Monday). Thanks to Sascha Klek for reporting a problem with the
'0' key in the "Day" item of the "Timers" menu.
2004-11-21: Version 1.3.17
- Fixed cRemux::ScanVideoPacket() to make sure it doesn't access memory beyond
the end of the given buffer, which has caused some unjustified "unknown
picture type errors" (thanks to Marco Schl<68><6C>ler).
- Fixed a possible crash when pausing live video and the recording was unable
to start, maybe because there was no lock on the device (thanks to Andreas
Brugger for reporting this one).
- Fixed some characters in the iso8859-2 font file (thanks to Dino Ravnic).
- Fixed some errors in the Croatian language texts (thanks to Dino Ravnic).
- Fixed a possible recursion in cControl::Shutdown() (thanks to Sascha Volkenandt).
- Now setting the VPID before the APID in live mode to avoid unnecessary
overhead in the firmware (thanks to Werner Fink).
- Now checking available OSD memory at runtime (thanks to Oliver Endriss).
- Fixed some typos in the Makefile's 'font' target (thanks to Olaf Titz).
- Fixed handling childTid in cThread to avoid possible race conditions (thanks
to Stefan Huelswitt for pointing this out).
- Fixed toggling the "Day" item in the "Timers" menu, so that it selects the
right day of week for timers in the future.
- Some improvements to cPoller (thanks to Marco Schl<68><6C>ler).
2005-01-09: 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 '<27>' 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<48>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
bottom 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<47>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<68><6C>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<42>rnar Nilsen for
their support in testing and fine tuning this version.
2005-01-23: 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<68><6C>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<68><6C>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<68><6C>ler for pointing this out).
2005-02-06: 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<68><6C>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-13: Version 1.3.21
- Fixed cDvbDevice::SetAudioTrackDevice() to avoid a blank screen after switching
back to live mode if a recording is currently active on the primary device.
- Fixed a possible freeze in pause mode in case a device's PlayPesPacket() function
permanently returns 0 (thanks to Reinhard Nissl and Olaf Titz).
- Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Restricted the "setting audio track" log message to automatic changes during replay.
- Fixed handling Transfer Mode for radio channels (thanks to Andreas Regel for
reporting this one).
- Fixed handling symbolic links in cRecordings::ScanVideoDir() (thanks to Stefan
Huelswitt).
- Completed the Danish OSD texts (thanks to Mogens Elneff).
- Forcing a new resync after a call to cRemux::Clear() (suggested by Marco Schl<68><6C>ler).
- The cAudio::Play() function now has an additional parameter 'uchar Id' which tells
the function the substream id of the given audio packet, so that a plugin can
take the right action for the various kinds if audio data - which now also includes
"normal" audio with ids 0xC0...0xDF (based on suggestions by Werner Fink and Macro
Schl<68><6C>ler).
- Removed the "Cleared/PlayPes(NULL, 0)" handling from cTransfer::Action(), since this
is now done when attaching the player to the device (thanks to Marco Schl<68><6C>ler).
- Making sure the buffer reserve in cTransfer::Action() is re-established after
clearing the buffer.
- Added DeviceClrAvailableTracks() and DeviceSetCurrentAudioTrack() to cPlayer
(thanks to Marco Schl<68><6C>ler).
- Fixed a typo in detecting UTF-8 (thanks to Reinhard Nissl).
- Now using twice the buffer reserve in cTransfer if the primary DVB card is an
unmodified version with only 2MB of SDRAM, to avoid audio stuttering when
playing Dolby Digital over the DVB card (thanks to Christian Jacobsen and Chad
Flynt for suggestions and experiments in that area).
- Making sure the first audio packet is not dropped when switching to "pre 1.3.19
Dolby Digital compatibility mode".
- The 'plugins-clean' target of the Makefile now only deletes the actual plugin
library files from this version of VDR (suggested by Andreas Brachold).
- Added a missing 'resultSkipped = 0' to cRemux::Clear() (thanks to Marco Schl<68><6C>ler
for reporting this one).
- The new function cDvbDevice::SetTransferModeForDolbyDigital() can be used by
plugins that implement Dolby Digital output and thus want to prevent the cDvbDevice
from starting Transfer Mode in order to replay DD over the DVB device.
- Added missing reset of the 'repacker' to cTS2PES::Clear() (thanks to Marco
Schl<68><6C>ler for reporting this one).
2005-02-27: 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<68><6C>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<68><6C>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<68><6C>ler).
- Fixed the call to SetVideoFormat() in cDvbDevice::cDvbDevice() (parameter is _bool_).
- Added support for setting the video display mode (thanks to Marco Schl<68><6C>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-03-20: Version 1.3.23
- The setup option "DVB/Video display format" is now only available if "Video format"
is set to "4:3" (suggested by Mikko Salo).
- Updated the Russian OSD texts (thanks to Vyacheslav Dikonov).
- Dropped CA support for the old '-icam' firmware.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Swedish OSD texts (thanks to Tomas Prybil).
- Fixed a few French OSD texts that were in the wrong place.
- Improved matching timers to EPG events, especially in case there are several events
with the same VPS time.
- Fixed cDolbyRepacker to allow recording ProSieben HD broadcasts (thanks to Reinhard
Nissl).
- Fixed cDvbDevice::SetVideoDisplayFormat() in case of 16:9 (thanks to Marco Schl<68><6C>ler).
- The running status of a VPS event is now only taken seriously if that event has been
seen within the last 30 seconds - otherwise recording is done as if no VPS was
available.
- The day of a timer is now stored as a full date in ISO notation ("YYYY-MM-DD") in
'timers.conf' and for the result of the SVDRP command LSTT (based in parts on a
patch by Roman Krenick<63>).
- Some fixes to avoid compiler warnings in gcc 4.0 (thanks to Ville Skytt<74> for reporting
these).
- Single shot timers are now reliably deleted when they have expired.
- Fixed setting the colored button help after deleting a recording in case the next
menu entry is a directory (thanks to Steffen Beyer).
- Improved falling back to normal recording if the VPS data hasn't been seen for more
than 30 seconds.
- Added a missing cMutexLock to cRemote::HasKeys() (thanks to Wolfgang Rohdewald).
- All log entries regarding timers now contain a short description of the timer.
2005-05-08: Version 1.3.24
- Now including the optional user defined Make.config from the 'libsi' Makefile
(thanks to Ville Skytt<74>).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- Fixed a memory leak in tComponent (thanks to Stefan Huelswitt and Daniel Thompson).
- Fixed a memory leak in cDvbPlayer (thanks to Stefan Huelswitt).
- Added missing text internationalization for "Starting EPG scan" (thanks to
Matthias L<>tzke).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed handling transparent areas in cDvbSpuBitmap (thanks to Marco Schl<68><6C>ler).
- Now also considering the "EPG linger time" when saving the EPG data to file or
listing it via LSTE (thanks to Roman Krenick<63>).
- Fixed handling fragments of less than 4 byte in cPesAssembler (thanks to
Reinhard Nissl).
- Fixed a bug in libsi's SubtitlingDescriptor::getLength() (thanks to Marco
Schl<68><6C>ler).
- When reading the channels.conf file, duplicate channels (i.e. ones that have
the same channel ID) are now automatically deleted and only the first one is
actually stored.
- Fixed handling lifetime when deciding whether to delete a recording (thanks to
Udo Richter).
- Fixed timeout handling in cRwLock::Lock() (thanks to Sascha Volkenandt for reporting
this one).
- Since there are several places in thread.c where a timeout value is calculated,
this has been put into a separate function.
- The timer status now has a new bit that is set when that timer is currently
recording (suggested by Matthias Schniedermeyer). See man vdr(5) for details.
- Removed scaling coordinates in letterbox mode from cDvbSpu - the DVD plugin, which
was the only one needing this, doesn't need it any more (thanks to Marco Schl<68><6C>ler).
- No longer retuning or restarting a recording if only the language code of an
audio or Dolby PID changes.
- Now preferring budget cards when selecting a DVB device for recording.
- Recordings now avoid zero sized video data files (thanks to Wolfgang Fitz).
- Some rearrangements in cDvbPlayer::Action() to avoid lockups on NPTL systems
(thanks to Reinhard Nissl).
- Fixed a wrong inheritance in libsi's SubtitlingDescriptor::Subtitling (thanks to
Marco Schl<68><6C>ler).
2005-05-29: Version 1.3.25
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Some cable providers don't mark short channel names according to the standard,
but rather go their own way and use "name>short name". VDR now splits at this
character for cable channels (thanks to Gerhard Steiner for reporting this one).
- Added a check for Setup.DiSEqC in cDvbDevice::ProvidesTransponder(), otherwise
the EPG scan didn't work on systems that don't use DiSEqC (thanks to Michael
Reinelt for reporting this one).
- Made the Makefile patch friendlier (thanks to Ludwig Nussel).
- Made cOsd::isOpen an integer counter to avoid problems with messages when a
cOsdObject uses the raw OSD (thanks to Andreas Regel for reporting this one).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- The file 'summary.vdr' has been replaced with 'info.vdr' and now contains the
information about a recording, in the same format as the events are stored in
'epg.data' (see man vdr(5) for details). Existing summary files can be converted
to the new format by running the Perl script 'summary2info.pl', as in
summary2info.pl /video
(the parameter given has to be the video directory). If there is no 'info.vdr'
file for a recording, an attempt is made to read a 'summary.vdr'.
- The "Summary" button in the "Recordings" menu has been renamed to "Info", and
the page it brings up now shows the recording's information, much like the EPG
event page. Therefore it now no longer uses the skin's SetText() function, but
rather the SetRecording() function. Skin plugins may need to adjust that function
accordingly (see skinsttng.c, for instance).
- The SVDRP command LSTR now lists the recording information in the same tagged
format as the LSTE command lists the EPG data.
- The audio track menu now contains track descriptions when replaying (provided
such descriptions were available in the EPG data when the recording was made,
and are stored in the info.vdr file).
- Avoiding extra blanks at the end of names of instant recordings.
- Removed converting byte order on big endian systems from cDvbOsd::Flush(),
which, according to Johannes Stezenbach and Paavo Hartikainen, is wrong.
- Added cPlayer::DeviceSetVideoDisplayFormat() (thanks to Marco Schl<68><6C>ler).
- No longer saving the setup in case of a fatal error, to keep the volume level
from being set to a wrong value (thanks to Marco Schl<68><6C>ler).
- Fixed a possible hangup when ending a replay session while cIndexFile::CatchUp()
is waiting (thanks to Marco Schl<68><6C>ler).
- The SVDRP command DELR no longer deletes recordings that are currently being
written to by a timer (thanks to Sascha Volkenandt for pointing out this one).
- Pressing the "Play" key in live viewing mode now resumes a previous replay
session (thanks to Mirko D<>lle).
- Now dropping EPG events that have a zero start time or duration (thanks to
Oliver Endriss).
- No longer stopping Transfer Mode or replay immediately when the Power button
is pressed (thanks to Rolf Ahrenberg).
- Moved the NPTL and UTF-8 checks after the version and help output (thanks to
Andreas Kool for pointing out that 'vdr --version' failed on an UTF-8 system).
- Made tChannelID::operator==() inline for better performance (thanks to Georg
Acher).
- Introduced cListBase::count for better performance (thanks to Georg Acher).
- cEvent no longer stores the channelID directly, but rather has a pointer to
the schedule it is in.
- Now using hash tables to speed up cSchedule::GetEvent() (partially based on
a patch from Georg Acher).
- Avoiding unnecessary calls to getLength() in libsi/si.c, and avoiding the
'& 0xff' in CRC32::crc32() of libsi/util.c (thanks to Georg Acher).
- Speeded up deleting duplicate channels.
- Fixed listing recordings with empty episode names in the LSTR command (thanks
to Stefan Huelswitt for pointing this out).
- Added cThread::SetPriority() and using it in cSectionHandler::Action() to
reduce the priority of the section handler threads (as suggested by Georg Acher).
2005-06-12: 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<68><6C>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-19: Version 1.3.27
- Fixed handling 'page down', which was broken in version 1.3.26 (thanks to Udo
Richter).
- Modified page scrolling behaviour (based on a suggestion by Patrick Gleichmann).
- The new setup option "OSD/Scroll wraps" can be used to activate wrapping around
in menu lists (based on a suggestion by Patrick Gleichmann).
- Removed the NPTL check at startup, since several users have reported that VDR
now runs fine with NPTL.
- Fixed handling VPS timers, so that they only record if the event they are assigned
to actually has the given VPS time.
- Disabled cVideoRepacker in remux.c, because it has caused several problems
during recording. If you want to test (and maybe debug) it, activate the line
//#define TEST_cVideoRepacker
in remux.c.
- When drawing a bitmap to the OSD, the existing palette of the target can now be
replaced with the new one instead of adding the new entries (thanks to Andreas
Regel).
2005-08-07: 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<4B>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-15: 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<68><6C>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-21: 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-28: 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<68><6C>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-09-11: 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<74>).
- 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<65>).
- 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<74>).
- Fixed the default value for "Setup/EPG bugfix level" (thanks to Ville Skytt<74> 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-25: 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-10-03: Version 1.3.34
- Fixed a leftover 'summary.vdr' in vdr.5 (thanks to Peter Bieringer for reporting
this one).
- Fixed opening recording folders in case the last replayed recording no longer
exists (reported by Udo Richter).
- Fixed an unjustified "Error while accessing recording!" after deleting a recording
from a subfolder.
- Fixed handling the '.update' file in case the video directory is not at the default
location (reported by Jon Burgess).
- Fixed a crash in cConfig::Load() when compiling on the PPC (thanks to Sascha
Volkenandt).
- Fixed the FATALERRNO macro to check for a non-zero errno value (reported by Marco
Schl<68><6C>ler).
- Added a check against MAXOSDAREAS in cOsd::CanHandleAreas() (reported by Udo
Richter).
- Fixed setting current menu item if the first one is non-selectable.
- cOsdItem::cOsdItem() now has a 'Selectable' parameter.
- Improved displaying 'sub-title' and 'bottom text' in the CAM menu.
- Added status message "Resetting CAM..." for an immediate feedback when the CAM
reset has been triggered.
- The CAM menu now automatically updates itself in case of a progress display (as
used, for instance, when updating the firmware via satellite).
- Now skipping some funny characters sent by some CAMs at the beginning of strings.
- The CAM menu is now completely closed when pressing the Menu key while inside
a sub menu.
- Reduced MAX_CONNECT_RETRIES in ci.c to 2 (waiting too long made the whole thing
appear hanging).
- Added status message "Opening CAM menu..." for an immediate feedback when the CAM
menu has been requested.
- Speeded up initial opening of the CAM menu.
- Fixed handling of menus with no selectable items.
- The character 0x8A in CAM menu strings is now mapped to a real newline.
- The 'sub-title' and 'bottom text' in the CAM menu can now consist of several lines.
- Improved the CAM enquiry menu.
2005-10-31: Version 1.3.35
- Updated 'sources.conf' (thanks to Philip Prindeville).
- Now using daemon() instead of fork() to run VDR in daemon mode (thanks to
Enrico Scholz).
- Fixed a possible endless loop in a menu with no selectable items if
Setup.MenuScrollWrap is true (thanks to Enrico Scholz).
- Making sure no item is displayed as "current" if Up, Down, Left or Right is
pressed in a menu with no selectable items.
- Added '__attribute__' to functions that use printf() like parameters (thanks
to Darren Salt).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed a leftover 'summary.vdr' in vdr.1 (reported by Christoph Hermanns).
- Added more error messages and line numbers when reading EPG data and info.vdr
(thanks to Peter Bieringer).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Added missing mutex locks to cCiMenu::Abort() and cCiEnquiry::Abort() (reported
by Marco Schl<68><6C>ler).
- Fixed lock handling in CAM communication to avoid problems with multiple CAMs
per device or CAMs with more than one smart card.
- Updated the Greek OSD texts (thanks to Dimitrios Dimitrakos).
- Updated the French OSD texts (thanks to Nicolas Huillard).
- Fixed the cFilter example in PLUGINS.html (reported by Patrick Fischer).
- The new class cUnbufferedFile is used for the recording files to avoid
thrashing the file system cache (based on a patch by Ralf M<>ller).
2005-11-06: Version 1.3.36
- Fixed a NULL pointer access with the cUnbufferedFile when a replay session runs
all the way until the end of the recording (thanks to Joachim Wilke).
- A menu is no longer automatically closed when a replay ends (reported by
Marko M<>kel<65>).
- Removed '\n' from several syslog() calls (reported by Sascha Volkenandt).
- Fixed missing '&' in the SetAreas() example in PLUGINS.html (reported by
Sascha Volkenandt).
- Fixed a memory leak in cString::operator=() (reported by Sascha Volkenandt).
- Updated the Dutch OSD texts (thanks to Maarten Wisse).
- cReadLine now dynamically allocates its buffer, so that it can handle lines
of any length.
- Changed cConfig::Load() to use cReadLine instead of a fixed buffer (thanks
to Andreas Mair for reporting a problem with extremely long summary fields
in timers).
- cSVDRP now dynamically allocates its command buffer in order to handle
commands of any length. The MAXPARSEBUFFER macro is now obsolete and has
been removed. If a plugin has used that macro, it should either define
a buffer size of its own, or use cReadLine when reading files.
- Fixed a race condition in the SPU decoder (thanks to Marco Schl<68><6C>ler).
- The EPG scan no longer disturbs players that have also set live PIDs
(reported by Stefan Huelswitt).
- Fixed setting the help key display in the Recordings menu in case of several
layers of subdirectories.
- Removed EPG bugfix #0, because it removed actually important data.
2005-11-27: 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<68><6C>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<68><6C>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 queuing facility, so MESG
commands may now be executed at any time, and the message will be displayed
(no more "pending message").
2006-01-08: Version 1.3.38
- Fixed handling second audio and Dolby Digital PIDs for encrypted channels
(was broken in version 1.3.37).
- Improved TS/PES conversion to better handle lost TS packets (thanks to
Reinhard Nissl).
- Limited the frequency of log messages from the cRepackers.
- Now using the gettid() syscall to get a thread's pid, so that we get a
useful value on NPTL systems (suggested by Johannes Stezenbach).
- Fixed the RCU remote control handling to avoid problems with NPTL (thanks
to Andreas Share for reporting a lockup with the RCU on NPTL systems).
- When displaying the amount of free disk space, the space consumed by
recordings that have been "deleted" but not yet actually "removed" is now
taken into account (suggested by Christian Vogt).
- Now avoiding unnecessary disk access when checking if there are deleted
recordings that need to be removed (reported by Carsten Koch).
- Fixed handling the DELETEDLIFETIME when removing deleted recordings. Now
a deleted recording is retained at least DELETEDLIFETIME seconds before
actually removing it.
The value of DELETEDLIFETIME has been changed to 300. So after (possibly
inadvertently) deleting a recording, there will be at least 5 minutes
in which it can be recovered (unless a new recording immediately requires
the disk space). The count starts again at 0 every time VDR is started.
- Fixed a possible crash when displaying the "Low disk space!" message from
a background thread (thanks to Christof Steininger).
- Fixed handling OSD areas that have invalid sizes (thanks to Marco Schl<68><6C>ler).
- Added a mutex to AssertFreeDiskSpace() to make sure calls from foreground
and background threads won't interfere.
- The main menu now dynamically updates its contents in case an instant
recording or replay stops, etc.
- The version number of EPG events is now also stored in the epg.data file
(thanks to Kendy Kutzner).
- EPG events that are no longer in the currently broadcasted data stream are
now automatically deleted.
- Removed an invalid access to Event->schedule in cSchedule::DelEvent().
- Modified cSchedule::Cleanup() (events are always sorted by time).
- Schedules are now cleaned up once every hour (not only at 05:00).
- The "Schedule" and "What's on now/next?" menus are now updated if a timer
is set or modified.
- cTimer no longer has its own 'schedule' member, it rather uses that of the
event it has been set to.
- The "Red" button in the "Schedule", "What's on now/next?" and "Event" menus
now immediately creates a timer for the selected event and marks it with 'T'.
If the event is already marked with 'T', the "Red" button opens the "Edit
timer" menu for that timer.
- Removing deleted recordings is now done in a separate thread.
- Dropped the unused "stop recording on primary interface" stuff.
- Converting a grabbed image to JPEG is now done with the new function
RgbToJpeg() (see tools.h).
- The SVDRP command GRAB now determines the image type (JPEG or PNM) from the
extension (".jpg", ".jpeg" or ".pnm") of the given file name. The explicit
'jpeg' or 'pnm' parameter is still accepted for backward compatibility, but
has no meaning any more.
- The function cDevice::GrabImage() no longer writes the grabbed image to a
file, but rather returns a pointer to the image in memory. The wrapper
function cDevice::GrabImageFile() can be used to write the grabbed image
directly to a file. Plugins that used the old version of cDevice::GrabImage()
need to be adapted to the new interface.
- The new class cBase64Encoder (see tools.h) can be used to encode data in
base64 (thanks to Bob Withers for publishing his Base64 class).
- The SVDRP command GRAB now writes the image data to the SVDRP connection
(encoded in base64) if the given file name consists of only the file
extension (".jpg", ".jpeg" or ".pnm"), or if only "-" is given as file
name (based on a suggestion from Darren Salt).
A simple way of viewing a grabbed image on a remote host is:
svdrpsend.pl -d <hostname> 'grab -' | sed -n -e 's/^216-//p' -e '1ibegin-base64 644 -' -e '$a====' | uudecode | display -
- The new command line option '-g' must be given if the SVDRP command GRAB
shall be allowed to write image files to disk. The parameter to this option
must be the full path name of an existing directory, without any "..", double
'/' or symlinks. By default, or if "-g- is given, grabbing to files is
not allowed any more because of potential security risks.
- Modified the way the SVDRP command GRAB writes the grabbed image to a file
to avoid a security hole (CAN-2005-0071, reported by Javier Fern<72>ndez-Sanguino
Pe<50>a):
+ The file handle is now opened in a way that it won't follow symbolic links
(suggested by Darren Salt).
+ The given file name is now canonicalized, so that it won't contain any
".." or symlinks (suggested by Darren Salt).
+ Grabbing to files is limited to the directory given in the the command
line option '-g'. By default grabbing to files is not allowed any more.
- Updated the Greek OSD texts (thanks to Dimitrios Dimitrakos).
- Changed all "illegal" to "invalid" in error messages (there's nothing "illegal"
in VDR ;-).
- When started as user 'root' VDR now switches to a lesser privileged user id,
keeping the capability to set the system time (based on a patch from Ludwig
Nussel). By default the user id 'vdr' is used, which can be changed through
the new command line option '-u'. Note that for security reasons VDR will no
longer run as user 'root' (unless you explicitly start it with '-u root',
but this is not recommended!). The 'runvdr' script has been changed to
use the '-u' option.
- Changed the API of the functions cStatus::Recording() and cStatus::Replaying(),
so that they can provide the full file name of the recording. Plugins that use
these (or the related cStatus::Msg...() functions) need to be adapted
(suggested by Andreas Brugger).
- The DVB devices now retune (and, if applicable, resend the DiSEqC data) if
the lock is lost (based on a patch from Reinhard Nissl).
- Fixed handling multi byte key sequences in cKbdRemote (based on a patch from
J<>rgen Schneider).
- Removed unused variables in skinclassic.c and skinsttng.c (thanks to Marco
Schl<68><6C>ler).
- Made the static cControl functions thread safe (thanks to Patrick Fischer).
- Fixed initializing pthread_mutexattr_t and pthread_rwlockattr_t to avoid
warnings with g++ 4.1.0 (thanks to Ville Skytt<74>).
- Fixed incrementing the 'state' variables in the repacker classes in remux.c
to avoid warnings with g++ 4.1.0 (reported by Ville Skytt<74>).
- The Makefile now reports a summary of failed plugins (thanks to Udo Richter).
- The cTimer constructor can now take an optional cChannel (suggested by
Patrick Fischer).
- Fixed setting the main thread id if VDR is running as a daemon.
- Fixed handling TS packets in cTS2PES (thanks to Reinhard Nissl).
- Added cTimer::SetPriority() to set a timer's priority (suggested by Kendy Kutzner).
- Added cMenuEditStrItem::InEditMode() (suggested by Christian Wieninger).
- Now using FE_READ_STATUS to read the current frontend status (suggested by
Holger W<>chtler).
- The "Menu" key now behaves consistently. If there is anything on the OSD, it
is closed when the "Menu" key is pressed, and if there is nothing on the OSD,
the "Menu" key opens the main menu (suggested by Luca Olivetti).
- The new option "Setup/OSD/Timeout requested channel info" can be used to turn
off the automatic timeout of the channel display in case it was invoked by
a press of the "Ok" key (suggested by Thiemo Gehrke).
- A message is now given when an instant recording is started (suggested by
Helmut Auer). Actually the code was already there, just commented out - don't
remember why it wasn't active...
- Removed an obsolete "Summary" text from i18n.c and preceded all key definition
texts with "Key$" to avoid duplicates (reported by Lucian Muresan).
- Preceded all button texts with "Button$".
- Removed obsolete "Eject", "Language" and "scanning recordings..." texts.
- Added missing #include "thread.h" to dvbspu.c (reported by Gavin Hamill).
- Disabled the use of "fadvise" in cUnbufferedFile because there have been
several reports that it causes more problems than it solves (suggested by
Petri Hintukainen). If you want to use "fadvise", you can activate the line
//#define USE_FADVISE
in tools.c.
- Removed unused 'offset' member from cOsdItem.
- In the "Channels" menu the numeric keys now position the cursor to the channel
with the given number (see MANUAL, section "Remote Control Keys", note (3) for
details).
- The "Mark/Move" function in the "Channels" menu now also works in the non-numeric
sort modes.
- The default cOsdObject::Show() now automatically calls cOsdMenu::Display() if
this is a menu.
- The new "Info" key brings up information on the currently viewed programme
or recording. For a live programme this is the same as "Schedule/Ok", i.e. the
description of the current EPG event. For a recording this is the same as shown
by the "Info" button in the "Recordings" menu. Plugins that implement players
can overwrite their cControl::GetInfo() function to show their own info (see
PLUGINS.html for details). Pressing the "Info" key again while the info is
displayed will close the OSD. In order to assign this new key to an existing
remote control setup, the remote.conf file needs to be deleted and VDR has
to be restarted to go through the process of learning the remote control keys.
- Any cReceivers still attached to a cDevice when that device switches to a
different transponder are now automatically detached (suggested by Patrick
Fischer).
- The "flags" of a timer are now handled as an unsigned integer value. In order
to do this, the interface of cMenuEditBitItem also had to be changed.
- In string entry fields (like, e.g., the file name of a recording) the characters
can now be entered by pressing the numeric keys, the same way as on a
telephone keypad (based on the "Easy Input" patch from Marcel Schaeben).
- Fixed the "Day" field of the "Edit timer" menu when pressing '0' to switch
from "single shot" to "weekly", followed by the "Right" key (reported by
Andreas B<>ttger).
- The file 'ca.conf' is obsolete and has been removed.
- Revised all descriptions regarding CICAM.
- Adapted c(Dvb)Device::ProvidesCa() to the dynamic CA handling.
- Added a mutex to synchronize cDevice::PlayPesPacket() and SetCurrentAudioTrack()
(thanks to Reinhard Nissl).
- Added a SleepMs() in cRecorder::Action() to avoid a busy loop (thanks to Ingo
Schneider).
- Cleaned up some trailing white space.
2006-01-15: Version 1.3.39
- The SVDRP command LSTT now accepts the new option 'id' to have the channels
of the timers listed with their unique channel ids instead of their numbers
(suggested by Matthias Schniedermeyer).
- Added a missing #include <linux/unistd.h> to thread.c (thanks to Ville Skytt<74>).
- Fixed the "plugins-clean" and "plugins-install" targets in the Makefile (thanks
to Andreas Brachold).
- Fixed handling "more than 3 byte" key sequences in cKbdRemote::ReadKeySequence()
(thanks to Peter Bieringer). If you are using the PC keyboard as remote control
input you may need to make VDR newly learn the keys by removing the remote.conf
file.
- To avoid problems with access rights when VDR shall run as 'root' it now skips
all SetCaps() and SetUser() calls when it is started as 'root' and "-u root"
is given.
- Added missing i18n entry for the "Timer" button (thanks to Ville Skytt<74>)
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Making the "Menu" key behave consistently has not been well received by several
users, so the new option "Setup/OSD/Menu button closes" can be used to get the
old behavior back (which also is the default value of this option).
- Dropped the default vdr user. The program now always runs under the user id
it was started from, unless the '-u' option is given and it was started from
the 'root' user. If you want to have a default vdr user, you can activate and
adjust the "VDR_USER = vdr" line in your Make.config file (from the original
patch by Ludwig Nussel).
- Key macros can now be defined for all non-modeless keys (suggested by Mirko D<>lle).
- Adjusted the "KEY MACROS" section of vdr.5 to the new plugin calling mechanism
introduced in version 1.3.32.
- Removed the now obsolete "ca.conf" section from vdr.1 (thanks to Ville Skytt<74>).
- Added missing description of L and R circular polarization to 'diseqc.conf'.
- Added a note about "modprobe capability" to INSTALL (suggested by Patrick Cernko).
- Fixed canonicalizing the file name in the SVDRP command GRAB to allow full path
names (thanks to Stefan Huelswitt).
- Added a missing '-' to the example for viewing a grabbed image on a remote host
(reported by Philippe Gramoull<6C>).
- Made the "What's on now/next?" menus a lot faster by storing a pointer to each
channel's schedule in the cChannel data.
- Made the log messages regarding lost lock of devices "info" instead of "error"
(suggested by Andreas Brachold).
- The SVDRP command GRAB allows file names without extension again (suggested by
Stefan Huelswitt).
- Pressing '0' in the "Schedule" menu now rotates through displaying "This event on
this channel", "This event on all channels" and "All events on all channels".
This can be used to find reruns of a given show, or the episodes of a series.
Note that if there are many channels in your channels.conf, displaying the
"All events on all channels" page may take a while.
- The status markers in the "Schedule" menu are now only updated if a submenu is
closed in which a timer has been modified, which speeds up closing submenus.
- Now only writing Dolby Digital tracks into the 'info.vdr' file of a recording
if Setup.UseDolbyDigital is true (suggested by Andr<64> Weidemann).
- Added a leading '0' to the day in the DayDateTime() function (thanks to Rolf
Ahrenberg).
- No longer displaying color buttons in the recording info menu if it has been
invoked from a player (reported by J<>rgen Schilling).
2006-01-22: Version 1.3.40
- Fixed a second place where a message should be given when an instant recording
is started (reported by Jesus Bravo Alvarez).
- Modified logging so that even on NPTL systems each line in the log file shows
the individual thread's pid (based on a suggestion from Francois-Xavier Kowalski).
- Fixed a problem with @plugin in keymacros.conf in case the named plugin is not
loaded (reported by Franz Gangkofer).
- Fixed a crash after executing the SVDRP command CLRE, caused by dangling 'schedule'
pointers from cChannel objects (reported by Malte Schr<68>der).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Improved NULL checking in strreplace().
- Fixed a crash in the Schedule menu with events that have no title (reported by
Rolf Ahrenberg). cEvent::FixEpgBugs() now assigns a "No title" string to events
that have no title.
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Recordings are now only started if there is at least 300MB free disk space
(suggested by Markus Hahn).
- When entering text via the numeric keys, the cursor now automatically advances
(based on a patch from Rolf Ahrenberg).
- Updated the Polish OSD texts and the fontosd-iso8859-2.c file (thanks to Jaroslaw
Swierczynski).
- Disabled the "buffer reserve" in Transfer Mode. Last chance to complain if you
really need it - it will be completely removed in the next version. If you are
experiencing problems with a/v running out of sync, try the latest driver and
firmware (if you are using a full featured DVB card).
- Switching channels with the Up/Down or Channel+/Channel- keys now works a lot
faster when the repeat function kicks in, by not actually switching the
channel every time, but rather only displaying the channel info and doing
the final switch when the key is released.
- The channel display is now updated _before_ the channel is switched.
- Added a missing initialization of 'timeout' in the cDisplayChannel constructor.
- Fixed detecting if there can be any useful further input when entering channel
numbers (thanks to Thomas Bergwinkl).
- Updated the Spanish OSD texts (thanks to Jesus Bravo Alvarez).
- Fixed handling the '0' key for switching between the last two channels (thanks
to Thomas Bergwinkl).
2006-01-29: Version 1.3.41
- EPG events from epg.data or SVDRP's PUTE command now have their Title set to
"No Title" if none was set.
- Fixed checking toFile in cCuttingThread::Action() (found in a larger patch from
Artur Skawina).
- Fixed a crash when pressing '0' in the "Schedule" menu on a channel that doesn't
have any EPG data (reported ny Alexander Hans).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- Fixed a missing ',' in the Greek OSD texts (thanks to Arthur Konovalov).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Fixed handling the tfRecording flag when reading timers (bug reported by Andreas
Mair).
- Now checking whether the channel exists before setting the PMT filter in
cPatFilter::Process() (thanks to Thomas Bergwinkl).
- Now trying to reestablish the connection to the LIRC daemon in case it breaks
(thanks to Ville Skytt<74>).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed channel switching with the Down (Up) key in case the current channel is
already the first (last) in the list (reported by Frank Kr<4B>mmelbein).
- Removed the "buffer reserve" in Transfer Mode - it's no longer necessary with
recent driver/firmware versions.
- The epg.data file is now written when VDR exits (suggested by Daniel Karsubka).
- Fixed cTimers::GetNextActiveTimer() so that it won't return an expired timer
(reported by Rolf Ahrenberg).
- Changed DVBS_TUNE_TIMEOUT and DVBC_TUNE_TIMEOUT to 9000ms to avoid problems with
channels that have low symbol rates (reported by Suur Karu).
- Fixed displaying the current audio track in the channel display.
- When reading epg.data (or data from PUTE), the version number of events with
table IDs smaller than 0x50 is now ignored because otherwise the current
running status would not be set after a restart of VDR.
- Implemented a timeout for remote controls that don't deliver "repeat" keypresses
very fast (based on a suggestion by Luca Olivetti; problem with the new handling
of k_Repeat keypresses in channel switching reported by Udo Richter).
- When looking for the present or following EPG event, the running status is now
always taken into account.
- Now initializing the channels' schedule pointers when reading the epg.data file,
so that the first WhatsOn menu will come up faster.
- If a shutdown is requested, but the shutdown script doesn't actually halt the
system, it is now tried again after 5 minutes (suggested by Helmut Auer).
- Separated the 'install' target into several individual targets; renamed the
'plugins-install' target to 'install-plugins' (thanks to Helmut Auer).
2006-02-05: Version 1.3.42
- Removed leftover 'needsBufferReserve' variable from cTransfer (thanks to Marco
Schl<68><6C>ler).
- Fixed setting "No title" for broken event data (reported by Ronny Kornexl).
- Fixed channel up/down switching on single card systems (reported by Stefan
Huelswitt).
- Fixed handling "pending" timers that blocked others that actually could record
(reported by Thomas Koch).
- Speeded up cVideoRepacker (thanks to Reinhard Nissl).
- Added an 'Id' parameter to cDevice::PlayAudio() to allow plugins to easier
process the audio data (thanks to Marco Schl<68><6C>ler).
- Added Czech language texts (thanks to Vladim<69>r B<>rta).
Plugin authors may want to add the new entries to their I18N texts and contact
the translators to have their texts translated. Note that there are now 21
different OSD languages, so please make sure you have 21 versions for each of
your texts.
- Updated the Polish OSD texts (thanks to Jaroslaw Swierczynski).
- Fixed auto advance in string entry fields when pressing Up/Down in insert mode
(reported by Udo Richter).
- Fixed handling the "Setup/OSD/Menu button closes" option when set to 'yes' in
case a replay is active (thanks to Udo Richter).
- Improved cUnbufferedFile; USE_FADVISE is now defined in tools.c by default, so
if you don't want to use "fadvise" you need to comment out that line (thanks to
Artur Skawina).
- Fixed a missing ',' in the Swedish OSD texts (thanks to Arthur Konovalov).
- cDevice::Transferring() can now be used to determine whether the (primary)
device is currently playing in Transfer Mode (based on a suggestion by
Reinhard Nissl).
- The 'runvdr' script no longer uses the $VDRUSR environment variable to set
the user id under which 'vdr' shall run. Just add the '-u username' option
when you call 'runvdr'.
- Fixed multiple entries of the same subdirectory in the "Recordings" menu
(reported by Christian Jacobsen).
- Enabled generating a core dump if VDR is run with a different user id (thanks
to Ville Skytt<74>).
- Fixed handling the "Blue" key in the "Schedule" menu for the current channel
(thanks to Rolf Ahrenberg).
- Renamed the Makefile target 'plugins-clean' to 'clean-plugins' (suggested by
Sebastian Frei).
- Made all font and image data 'const' (thanks to Darren Salt).
- Fixed scrolling with Up/Down in case there are non-selectable items at the
beginning or end of the menu (reported by Helmut Auer).
- Added cSkin::GetTextAreaWidth() and cSkin::GetTextAreaFont(), so that a plugin
that wants to do special text formatting can do so (thanks to Alexander Rieger).
2006-02-19: Version 1.3.43
- Removed an unnecessary toFile->SetReadAhead() from cutter.c (thanks to Artur
Skawina).
- The "Back" key now restores the original string when pressed while editing a
string item (suggested by Markus Hahn).
- Now stopping scanning the video directory if there are too many levels of
symbolic links, which might indicate a recursive link loop (based on a patch
from Helmut Auer).
- Improved OSD area handling in cDvbSpuDecoder (thanks to Marco Schl<68><6C>ler).
- Now logging the description (if present) in case a thread is canceled (suggested
by Marco Schl<68><6C>ler).
- cMenuText now uses the given font (thanks to Rolf Ahrenberg).
- The ST:TNG skin now uses the fixed font if requested when displaying texts.
- Fixed some typos in the CONTRIBUTORS file (thanks to Frank Kr<4B>mmelbein).
- Changed offset and size handling in 'libsi' from 'unsigned' to 'signed', so that
overflows can be better detected (thanks to Marcel Wiesweg).
- Checking data size in CaDescriptor::Parse() and LinkageDescriptor::Parse() of
'libsi' to avoid crashes with invalid data (thanks to Marcel Wiesweg).
- Made CharArray::DataOwnData::assign() in 'libsi' more robust against invalid
data (suggested by Oliver Endriss). Also changed CharArray::DataOwnData::Delete()
so that it sets 'size' and 'data' to 0.
- Now resetting the channel number if the number entered through the numeric keys
exceeds the maximum channel number (thanks to Rolf Ahrenberg).
- The language code in the 'X' component records of EPG data can now consist of
two codes, separated by '+'.
- If a recording starts and there is no EPG data available for the recorded channel,
the 'X' audio component records for the 'info.vdr' file are now generated from the
channel's PID data.
- Externally provided EPG data (with table ID 0x00) now gets its component
descriptors set from the broadcast data, so that language codes and descriptions
are available (suggested by Andreas Brugger).
- When setting the audio track descriptions, the language codes are now also set
in case this is a replay session (based on a patch from Rolf Ahrenberg).
- If a recording starts and the channel's audio PID data has more language code
information than the EPG's component data, the code from the channel is taken.
- Fixed handling DPID when deciding whether to switch to 'Transfer Mode' (thanks
to Marco Schl<68><6C>ler).
- Fixed replaying recordings of radio channels with many audio tracks (thanks to
Reinhard Nissl).
- Added a comment to tChannelID::nid, explaining that is is actually the "original"
network id.
2006-02-26: Version 1.3.44
- Fixed setting the audio language codes in 'Transfer-Mode' (reported by Rolf
Ahrenberg). The actual problem was the call to the Transferring() function in
cDevice::AttachPlayer() before assigning the player.
- Fixed removing the '-' when entering a channel number where there is no other
one that fits the input (thanks to Joachim Wilke).
- Fixed the 'libsi' function CharArray::checkSize(), which made a previous workaround
in libsi/descriptor.c obsolete (thanks to Marcel Wiesweg).
- The "Ok" key in the "Jump" mode of the replay progress display now confirms the
jump instead of closing the display (thanks to Christoph Haubrich).
- The 'summary' field of a timer definition has been renamed to 'aux', and is now
only used for external applications to store auxiliary information with a timer,
which has no meaning whatsoever to VDR itself.
The contents of the 'aux' field of a timer is copied into the recording's
'info.vdr' file, using the tag character '@'.
- The description of a recording is now taken exclusively from its related EPG
data. If an application wants to use a different description it needs to set
it with SVDRP/PUTE and use table ID 0x00, so that it won't be overwritten (as
a side effect, however, this also disables VPS for such an event).
- There is no more "Summary" menu when pressing "Ok" in the "Timers" menu.
The "Ok" key now always opens the "Edit timer" menu.
- The upper 16 bit of a timer's "flags" are no longer treated specially when a timer
is modified in the "Edit timer" menu. If an external application needs to know if
a timer was modified, it has to keep a copy of the timer's data and compare that
to the actual data.
- The new function cRecordingInfo::ChannelID() can be used to retrieve the ID of
the channel a recording was made from.
- The 'info.vdr' file of a recording now also contains the 'E' and 'V' records of
the EPG event used when creating it.
- The option "Setup/OSD/Sort timers" has been removed. Timers are always sorted
by their start time and priority.
- The "Blue" key in the "Timers" menu now displays the EPG info of the event the
selected timer will record (if available). The "On/Off" function has been shifted
to the "Red" button. Editing a timer is done by pressing "Ok".
- When determining which event a timer is going to record, all available events
in the future are now taken into account (no more limit to 4 hours in the
future). This has been done so that the event info is available in the "Timers"
menu when pressing the "Blue" button. In order to avoid unnecessary work, each
timer now has its own timestamp to control whether its schedule has changed
since the last time its event has been set.
- Fixed setting events to timers in case a non-VPS event has expired.
- There is now a log message "timer ... set to event ..." when defining a timer
from the EPG menu.
- Lines tagged with '#' in the 'info.vdr' file of a recording are now silently
ignored when reading that file (suggested by Peter Bieringer). Such lines can
be used by external tools to store arbitrary information.
- The 'event id' in EPG data has been extended to 32 bit, so that external tools
can generate ids that don't collide with those from the DVB data stream
(suggested by Matthias Schniedermeyer).
- The DrawBitmap() function now has a new parameter 'Overlay' that allows a bitmap
to be drawn with a transparent background (thanks to Alexander Hans).
- Fixed cSchedule::GetFollowingEvent() in case there is currently no present event
running (thanks to Pekka Mauno).
2006-03-26: Version 1.3.45
- Fixed updating the "Info" button in the "Timers" menu.
- Reduced the number of events to actually check when setting events to timers.
- cMenuEditIntItem now checks the given value and forces it to be between the
given min and max limits.
- The status changes of EPG events are now logged for all channels that have timers.
- Removed the log message "deleting plugin: ..." when shutting down VDR (thanks to
Christoph Haubrich for reporting that this is irritating when calling "vdr --help").
- Fixed cReadLine::Read() for lines that end with the infamous "\r\n" (thanks to
Rolf Ahrenberg).
- Fixed cDvbDevice::SetAudioBypass() in case setTransferModeForDolbyDigital is false
(thanks to Werner Fink).
- Updated 'sources.conf' (thanks to Oleg Roitburd).
- Fixed the shutdown timeout (thanks to Alexander Wenzel).
- Only calling RemoveEmptyVideoDirectories() once in case a recording has been
deleted (reported by Hardy Flor).
- Fixed deleting recordings that have been removed externally when running out of
disk space (reported by Jan Lenz).
- Fixed handling repeating VPS timers (they stopped recording too early).
- Timer log messages now show "VPS" if this is a VPS timer.
- Fixed getting the present EPG event in case none is currently 'running' (it
then returns the one that just ended).
- Fixed calling a plugin's main menu function while a message is being displayed
(reported by Helmut Auer).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- Made cMenuRecordings::GetRecording() 'protected' (suggested by Marius Heidenstecker).
- Speeded up cRemux::ScanVideoPacket() (thanks to Reinhard Nissl).
- Enhanced logging EPG event data.
- Fixed format string handling (thanks to Darren Salt).
- The new function cDevice::ForceTransferMode() can be used to force the primary
device into transfer mode (thanks to Reinhard Nissl).
- The 'version' of EPG events is now ignored when reading EPG data from 'epg.data'
or via SVDRP/PUTE to avoid problems with double EPG events.
- The 'running status' of EPG events is now only set to SI::RunningStatusNotRunning
for events before the present event.
- Fixed some #include sequences.
- Single shot VPS timers are now only considered 'expired' if their associated
EPG event has been explicitly set to SI::RunningStatusNotRunning.
- The check for timers to be deleted is now done only every 30 seconds.
2006-04-09: Version 1.3.46
- Fixed handling broken PMT records (thanks to Marcel Wiesweg for pointing out how
to detect these).
- Added a missing "Button$" for the Timer button and "Key$" in skinclassic.c
(thanks to Rolf Ahrenberg).
- Fixed broken entry 'A111.1W' in sources.conf (reported by Luca Olivetti).
- Replaced the obsolete entry 'S21.5E' in the default 'diseqc.conf' with 'S13.0E'
(reported by Ville Skytt<74>).
- Fixed learning keys when VDR is already running (thanks to Jurij Retzlaff).
- Fixed handling the system time transponder setting in the Setup/EPG menu, which
was broken by the min/max fix in cMenuEditIntItem.
- VPS timers now record only events that have exactly the given start time.
This fix also implements recording several subsequent events that have the
same VPS time (like a sports event with intermittent news breaks).
- When checking for timers that have entered the "VPS margin", any free devices are
now used to switch to the needed transponder. This improves cases where more than
one VPS timer is about to start.
- Fixed handling the VPS margin in case the event's duration is shorter than the
margin.
- Fixed handling VPS timers in case the primary device needs to switch to the
timer's transponder.
- Now avoiding the 'actual' device when starting a recording, so that a Transfer
Mode for live tv isn't interrupted.
- Fixed a typo in skins.h (thanks to Alexander Rieger).
- cSkins::QueueMessage() called from a background thread with an empty message
now clears all messages that have been previously queued by that thread and have
not yet been displayed (thanks to Alexander Rieger).
- Fixed handling the color button texts when switching from the 'Schedule' menu of
a channel without EPG info to the 'What's on now' menu (reported by Rolf
Ahrenberg).
- cMenuEditIntItem and cMenuEditChanItem can now be given strings to label the
minimum and maximum values, and the case that no channel has been selected,
respectively.
- The initial channel and volume can now be defined in the "Setup/Miscellaneous"
menu (based on a patch from Thomas Keil).
- When hitting the end of a recording in fast forward mode, VDR no longer switches
back to normal speed if the recording is already finished (thanks to Reinhard
Nissl).
- No longer calling cPlugin::ProcessArgs() if VDR is run with the --help or
--version option, to avoid error messages from plugins (reported by Udo Richter).
- Now checking whether there is any text before calling cStatus::MsgOsdTextItem()
(reported by Joachim Wilke).
2006-04-17: 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<68><6C>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<74>, 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<68><6C>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-23: Version 1.3.48
- Updated the GPL copies (thanks to Ville Skytt<74>).
- Fixed several spelling errors (thanks to Ville Skytt<74>).
- 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<65>).
2006-04-28: 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-30: Version 1.4.0
- Fixed handling the "Power" key in case a recording is going on and no plugin
is active (thanks to Udo Richter; bug reported by Dominique Simon).
- Updated the Polish OSD texts (thanks to Jaroslaw Swierczynski).
- Fixed a memory leak in handling external EPG data (thanks to Tobias Grimm).
- Fixed a memory leak in closing the video file during replay (thanks to Tobias Grimm).
- Updated the Italian OSD texts (thanks to Nino Gerbino and Antonio Ospite).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
2006-05-14: Version 1.4.0-1
- Updated 'S110W' in 'sources.conf'.
- Adjusted the 'runvdr' script so that the user can fill in the functions to
detect, load and unload the necessary driver modules (thanks to M. Kiesel for
reporting that it still used DVBDIR).
- Added 'eval' to the $VDRCMD call in 'runvdr' to avoid problems with quoting
(suggested by Udo Richter).
- Fixed missing ',' in the Italian and Polish OSD texts (thanks to Marko M<>kel<65>).
- Updated the Czech OSD texts (thanks to Vladim<69>r B<>rta).
- Fixed handling the "Power" key in case a timer is about to start recording
(thanks to Udo Richter).
- Fixed the character 'r' in fontosd and fontsml for iso8859-2 (thanks to Vladim<69>r
B<>rta).
- When checking whether a VPS timer has entered the "VPS margin", the event's start
time is now used instead of the timer's start time, because otherwise events that
start way off of their VPS time wouldn't be recorded correctly.
- If VPS timers are active, their events are now being kept up to date if there
are any free devices available.
- Fixed the character #207 in fontosd for iso8859-2 (thanks to Vladim<69>r B<>rta).
- Fixed handling unknown codes when learning LIRC remote control codes (reported
by Helmut Auer).
- Since some channels (especially the Austrian ORF) randomly change the ids of their
EPG events, VDR now gives the start time precedence when searching for existing
events.
- Fixed automatically updating the CAM menu in case the whole operation (for
instance a firmware update) takes longer than the menu timeout.
2006-05-28: Version 1.4.0-2
- Removed leftover LSMOD=... line from 'runvdr'.
- Modified the Makefile to copy additional libraries a plugin might provide (suggested
by Wayne Keer). See PLUGINS.html for details.
- Fixed handling Transfer Mode when replaying Dolby Digital audio and the option
'-a' was given (based on a patch from Werner Fink). To avoid having to increment
the API version, several #if checks have been introduced around this. These will
be removed once the API version actually needs to be incremented.
- Fixed deleting the 'skinDescriptions' in cMenuSetupOSD::~cMenuSetupOSD() (thanks
to Tobias Grimm).
- Fixed calculating the start time of repeated timers with "first day" (thanks to
Udo Richter).
- Now setting a timer's cached start time to 0 after a call to Skip() (thanks to
Udo Richter).
- Fixed handling the running status of EPG events in case the "Schedule" menu is
currently open (i.e. a write lock on the schedules data can't be achieved).
- Fixed handling VPS timers in case the EPG event hasn't been 'seen' in a while.
- Fixed calculating the cache size in cUnbufferedFile::Read() (thanks to Artur Skawina).
- Removed -fPIC from VDR's and libsi's Makefile (suggested by Prakash Punnoor).
- Modified the device selection to better handle timer conflicts (reported by
Christian Wieninger).
- Avoiding a compiler warning in libsi's TypeLoop::operator[].
- Now processing the "frequency list descriptor" (based on a patch from Anssi Hannula).
- Improved the repeat function for LIRC remote controls (thanks to Joerg Riechardt).
- Fixed moving channels, which sometimes stopped the current replay session
(reported by Mirko D<>lle).
- Fixed deleting channels in case the current channel's number changes (reported
by Mirko D<>lle).
2006-06-04: Version 1.4.0-3
- Fixed the PremiereContentTransmissionDescriptor in 'libsi' (thanks to Stefan
Huelswitt).
- Removed all the compatibility '#if APIVERSNUM...' stuff and instead increased
the API version number - plugins will have to be recompiled.
- Removed the call to pthread_setschedparam(childTid, SCHED_RR, 0) in thread.c,
because it caused a compiler warning with post-2.4 glibc (reported by Ville Skytt<74>).
Since the third parameter has to be non-null to have any effect, the call was
presumably a NOP, anyway.
- Fixed the 'clean-plugins' target in the Makefile to also remove additional
plugin libraries (thanks to Wayne Keer).
- Applied the fixes to moving and deleting channels from version 1.4.0-2 to the
SVDRP commands MOVC and DELC as well.
- Fixed handling the display of the '*' indicator in the "What's on now/next?"
menu, so that events that haven't been "seen" in the data stream within 30
seconds won't be shown as "running".
- Fixed handling tabbed item display in 'skincurses'.
- Increased the column spacing in the "Recordings" menu (was too small for the
'skincurses' plugin).
- When the 'skincurses' plugin is loaded, it automatically sets the 'curses'
skin as the current one. This doesn't modify the Setup.OSDSkin parameter, so
that after using 'skincurses' (for instance for debugging) the previously
selected skin will be used again.
- Added some log messages when setting the current skin.
- Only making a second attempt to set the current skin at startup if the first
attempt has failed.
- Now switching to non-VPS timers' channels 60 seconds before the timer starts
(if a free device is available), to allow for the updating of EPG data and CA
descriptors before the actual recording starts.
2006-06-11: Version 1.4.1
- Changed the log messages when grabbing an image from 'isyslog()' to 'dsyslog()'
so that they can be suppressed in normal operation mode to avoid clogging the
log file in case this function is used frequently (suggested by Helmut Auer).
2006-06-18: Version 1.4.1-1
- Added "-fPIC" to the compiler options in Make.config.template when compiling
plugins (thanks to Udo Richter). If you use your own Make.config file, you may
want to add these lines there, too.
- Added some comment to cDevice::GetDevice() to explain how the individual
conditions are put together to make a decision on which device to use.
- Updated 'S13E' in 'sources.conf' (thanks to Antti Hartikainen).
- Now making sure VPS timers don't get stuck with outdated events, and that the
actual device isn't used for updating a VPS timer's event as long as other
free devices are available.
- Modified rcu.c to better handle RC5 codes.
- Added a missing variable initialization in cRingBufferLinear::cRingBufferLinear()
(thanks to Prakash Punnoor).
- Fixed handling relative link targets in the ReadLink() function (reported by
Patrick Cernko).
- Now making sure a VPS timer has a schedule in case the epg.data file didn't
contain one when VDR was started.
2006-07-23: 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<68><6C>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 detaching 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-08-06: Version 1.4.1-3
- Fixed assigning schedules to channels in case there is no initial EPG information
(thanks to Frank Schmirler).
- Increased the APIVERSION to allow plugins that relied on the cStatus::MsgSetVolume()
bug to react properly (suggested by Stefan Huelswitt).
- Fixed cDevice::ToggleMute() (thanks to Christoph Haubrich).
- Fixed deleting the last character of a string menu item in insert mode (thanks
to Udo Richter).
- The /video/.update file is now touched _after_ an editing process is finished
in order to avoid excessive disk access (thanks to Artur Skawina).
- Fixed handling the running status of EPG events before the currently running one,
in case they are added after the current event (cont'd from version 1.4.1-2).
- Modified the shutdown mechanism, so that the shutdown script is never given a
time in the past (reported by Helmut Auer). If a timer is currently recording,
or a recording would start within the next 30 minutes (default for the "Min.
event timeout" setup parameter), and the user insists in shutting down now, the
reboot time given to the shutdown script will correspond to a time that is
"Min. event timeout" minutes (default is 30) in the future.
- Avoiding shutdown message "Recording in ... minutes, shut down anyway?" with
a negative number of minutes (reported by Udo Richter).
- Fixed getting the next active timer when shutting down (thanks to Udo Richter).
- Modified the cSVDRP::Close() function to avoid code duplication.
2006-08-13: Version 1.4.1-4
- Fixed converting the port number in the "connect from..." log message of SVDRP
(thanks to Ville Skytt<74>).
- Made the cCiSession members sessionId and resourceId uint16_t and uint32_t,
respectively, to match their types in the CI session data (thanks to Ville Skytt<74>
for reporting that there are places where ntohs() is assigned to different types).
- Changed the way a device is selected for receiving in order to keep devices with
CAMs better available, even if this means recording on the primary device (reported
by J<>rn Reder; thanks to Anssi Hannula for improving handling Transfer Mode devices
in this).
- No longer stopping removing empty directories if an error occurs (thanks to
Oliver Endriss).
- Added a log error message to cPlugin::ConfigDirectory() in case a plugin calls it
from a separate thread (reported by Udo Richter).
2006-08-20: Version 1.4.1-5
- Replaced the "quick workaround for additional live audio PIDs" in
cDvbDevice::SetChannelDevice() with an actual solution in
cDvbDevice::SetAudioTrackDevice() in order to prevent sticky PIDs in CAMs,
which caused long switching times or completely blank screens when switching
between encrypted channels on the same transponder (reported by Tomas Berglund).
- Adapted cThread::ThreadId() to recent kernels (thanks to Ville Skytt<74>).
- Added --remove-destination to the 'cp' command for binaries in the Makefile to
avoid a crash in case a new version is installed on a running system (suggested
by Petri Hintukainen).
- Fixed handling "Ca Info" in case the CAM sends this again if the smart card is
replaced with a different one.
2006-08-27: Version 1.4.2
- Revoked the change to cDevice::GetDevice() that was introduced in version 1.4.1-2,
which made it prefer any device that's already receiving and doesn't require
detaching receivers. This change has caused some unwanted behavior, so further
testing is necessary.
2006-09-03: Version 1.4.2-1
- Added LC_ALL to the checks for UTF-8 at startup (suggested by Matthias Schwarzott).
- Fixed the cTimer::operator=() so that it won't mess up the cListObject's pointers
(reported by Alexander Rieger).
- Fixed a memory leak in the cTimer::operator=() when using the 'aux' string
(reported by Alexander Rieger).
- Fixed processing the PDCDescriptor in 'libsi' on big endian systems (thanks to
Martin Ostermann).
- Fixed handling relative volume settings that unmute the audio in the call to
cStatus::MsgSetVolume() (reported by Oliver Endriss).
2006-09-09: Version 1.4.2-2
- Fixed cTimer::operator=() in case a cTimer variable is assigned to itself (thanks
to Alexander Rieger).
- Implemented a copy constructor for cTimer (thanks to Udo Richter for reporting that
an assignment in svdrp.c didn't use the cTimer::operator=()).
2006-09-17: 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-23: Version 1.4.3
- Official release.
2006-10-08: Version 1.4.3-1
- The function cThread::Cancel() now only sets 'running' to false and does not
actually kill the thread if the special value -1 is given (suggested by Udo Richter).
- Changed the I18nNormalizeLanguageCode() check to also allow blanks (and all other
printable characters) in the language codes (thanks to Boguslaw Juza for reporting
that there are stations that use blanks in these codes). Blanks are replaced with
underlines, so that all parts of VDR that rely on language codes to be one word
(without blanks) work as expected.
- Now clearing an event's Title, ShortText and Description if there is no
ShortEventDescriptor or ExtendedEventDescriptor, respectively (thanks to Boguslaw
Juza for reporting that events without an ExtendedEventDescriptor may get
duplicate information in their ShortText through the EPG bugfixes in case they
are received again).
- Fixed handling video directory updates in case an other process has touched the
.update file after the last NeedsUpdate() check (thanks to Petri Hintukainen).
- Fixed handling language codes and descriptions of recorded audio tracks on channels
with multiple tracks where not all of them appear in the event data (reported by
Boguslaw Juza).
2006-10-15: Version 1.4.3-2
- Fixed clearing an event's Title, ShortText and Description in case the data comes
from an external source.
- Updated the Hungarian language texts (thanks to Guido Josten).
- Fixed a possible crash if cPluginManager::GetPlugin() is called with a NULL
pointer (thanks to Petri Hintukainen).
- Fixed displaying the error log message in case an unknown plugin was requested
in a key macro (thanks to Petri Hintukainen).
- Keys from expanded key macros are now put into the front of the key queue to
avoid problems if the queue is not empty at that time (based on a patch from
Petri Hintukainen).
- cKeyMacro now has an explicit counter for the number of keys it contains.
- cRemote::PutMacro() now sets a lock while it expands the macro (thanks to
Petri Hintukainen).
- Fixed handling plugins from cRemote::PutMacro() and cRemote::CallPlugin()
(based on a patch from Petri Hintukainen).
- Increased the size of the key queue to avoid problems with long key macros.
2006-10-22: Version 1.4.3-3
- Fixed setting audio track descriptions after a replay has been stopped (reported
by Ulf Kiener, thanks to Marco Schl<68><6C>ler for pointing out what caused the problem).
2006-10-29: Version 1.4.3-4
- Fixed deleting EPG events that have a running status of "pausing" or higher.
- Fixed handling NITs with more than one delivery system descriptor tag for the
same transponder.
2006-11-04: Version 1.4.4
- Fixed displaying the replay mode symbol in case of "Multi speed mode" (reported
by Marco Schl<68><6C>ler).
2006-12-03: Version 1.4.4-1
- Some improvements to the man pages (thanks to Ville Skytt<74>).
- Fixed a possible segfault in cSkins::Message() (thanks to Udo Richter).
- Made the getskyepg.pl script of the 'sky' plugin send a user agent message to
the server, according to the rules at http://bleb.org/tv/data/listings.
If your version of 'wget' doesn't support the -U option to set the user agent,
use the new option -U of getskyepg.pl to have the information added to the URL
as a query string.
- The getskyepg.pl script now replaces "&amp;" with "&".
- Fixed a possible crash in remux.c on 64-bit machines (thanks to Reinhard Nissl).
- Fixed a typo in the change to the "Use small font" setup option in version 1.3.47
in the HISTORY and CONTRIBUTORS file (reported by Andreas Brugger).
- Added a missing 'const' to cRecordingInfo::ChannelID() (reported by Andreas
Brugger). This required the APIVERSION to be increased, so plugins will have to
be recompiled.
- Now calling cPluginManager::Active() only if VDR is really trying to shut down,
and waiting for 5 minutes before calling it again (thanks to J<>rg Wendel for
reporting that cPlugin::Active() was called too often, and to Udo Richter for
some hints on how to improve this).
- Replaced 'unsigned long' with 'uint32_t' and 'uint64' with 'uint64_t' to
avoid problems on 64-bit machines.
2006-12-03: Version 1.4.4-2
- Added '#include <stdint.h>' to font.h (reported by Peter Pinnau).
- Added a compatibility define for 'uint64' to tools.h, so that existing
plugins don't need to be modified immediately (reported by Suur Karu).
This will be removed in version 1.5.
2007-01-05: Version 1.4.4-3
- Fixed a possible segfault if VDR gets terminated while a message is displayed
(thanks to Udo Richter).
- Fixed the INSTALL section on retrying shutdown later (reported by Udo Richter).
- When entering text via the numeric keys, the characters are now checked against
the allowed characters (thanks to Frank Schmirler).
- Added a missing break statement in cCiHandler::OpenSession().
2007-01-07: Version 1.4.5
- Official release.
2007-01-07: Version 1.5.0
- The CAM handling has been refactored. Instead of a cCiHandler per device there
is now an abstract cCiAdapter and a cCamSlot. This allows each slot to be
accessed individually.
- The general 15 seconds workaround time before opening the CAM menu has been
removed. If the CAM menu doesn't open within a timeout, the enter menu command
is now sent again.
- If a CAM is reset or pulled and reinserted, it now automatically starts
decrypting the current channel again.
- The Setup/CAM menu now dynamically refreshes its items and displays whether
a CAM is present or ready. The 'Reset' function no longer leaves the menu.
- The CAM menu will now be opened when pressing the Ok key on a slot entry.
- The CAM menu now stays within the current menu context and doesn't close and
reopen the menu every time an option is selected.
- When an encrypted channel is switched to for the first time, VDR now checks
explicitly whether a CAM can actually decrypt that channel. If there is more
than one CAM in the system that claims to be able to decrypt the channel,
they are all tried in turn.
To make this possible, an encrypted channel needs to be received in Transfer
Mode when it is switched to for the first time, so that VDR can determine
whether the TS packets are actually decrypted. Once a channel is known to
be decrypted by a particular CAM, the next time it is switched to it will
be shown in normal live viewing mode.
- A cDevice now automatically detaches all cReceiver objects that receive PIDs
that can't be decrypted with the current CAM. A plugin that attaches a cReceiver
to a device should therefore watch the receiver's IsAttached() function to
see if it is still attached to the device.
- The cReceiver constructor no longer takes an 'int Ca' as its first parameter,
but rather a 'tChannelID ChannelID'. This is necessary for the device to be
able to determine which CAM a particular channel can be decrypted with. If the
channel is known to be unencrypted, or a plugin doesn't want to provide the
channel id for other reasons, an invalid tChannelID() can be given.
- The cThread::Start() function now waits until a previous incarnation of this
thread has actually stopped. Before this it could happen that a thread's
Cancel(-1) function was called and immediately after that it was started again,
but the Start() function still found it to be 'active'.
- The parameter NeedsDetachReceivers in cDevice::GetDevice(const cChannel *Channel, ...)
has been removed. A call to this function will automatically detach all receivers
from the device if it returns a non-NULL pointer.
- The cTimeMs class now accepts an initial timeout value in its constructor.
- A CAM is now explicitly instructed to stop decrypting when switching away from
an encrypted channel.
- If the CAM in use can decrypt several channels at the same time, VDR can
now make use if this capability. Whether or not a CAM can decrypt more
than one channel is determined by sending it an initial empty QUERY command
and testing whether it replies to it.
- Ca values in the range 0...F in channels.conf can still be used to assign a channel
to a particular device, but this will no longer work with encrypted channels because
without valid CA ids VDR can't decide which CAM slot to use. However, since VDR now
automatically determines which CAM can decrypt which channel, setting fixed
channel/device relations should no longer be necessary.
IF AN ENCRYPTED CHANNEL CAN'T BE DECRYPTED AND YOU HAVE A CA VALUE IN THE RANGE
0...F FOR THAT CHANNEL, SET IT TO 0 (FTA) AND TUNE TO THE CHANNEL AGAIN.
2007-01-28: Version 1.4.5-1
- 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).
2007-02-24: Version 1.4.5-2
- Removed 'assert(0)' from cDvbSpuDecoder::setTime() (thanks to Marco Schl<68><6C>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).
- Fixed handling error status in cDvbTuner::GetFrontendStatus() (thanks to
Reinhard Nissl).
2007-03-03: Version 1.4.6
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
2007-02-25: 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<68><6C>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<68><6C>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<65> 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-04-22: Version 1.5.2
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed handling user activity for shutdown, which I had messed when adopting Udo's
original patch (thanks to Udo Richter).
- Added Turkish language texts (thanks to Oktay Yolge<67>en).
- Added missing rules for generating iso8859-13 font to Makefile.
- 'libsi' now converts the incoming strings into the system's character set
according to the DVB standard. The system's character set is determined from
the LANG environment variable. If no recognizable setting can be found, no
conversion will take place. Note that currently only the strings received from the
SI data stream are converted, there have not been any changes regarding displaying
UTF-8 characters on the OSD, yet - this will follow in one of the next steps.
With this conversion, it should now be safe to run VDR on a UTF-8 file system,
because all incoming characters are converted to UTF-8. This will most likely
result in wrong characters being displayed on the OSD (because there UTF-8 is
not known, yet), but the file names should be ok (haven't tested this myself,
though, because I don't do UTF-8 - so please be very careful when testing!).
There's one piece of bad news here: the German pay-tv broadcaster Premiere
apparently encodes all EPG strings as ISO8859-1, but fails to correctly mark
these strings as such. Therefore 'libsi' (following the DVB standard) considers
the strings to be encoded in the default ISO6937 and converts them to whatever
the system's character set is. This, of course, results in wrong umlauts.
On its old transponder, the ProSieben/SAT.1 channels also had their EPG data
wrongly encoded, but apparently on the new transponder they started broadcasting
on this month, they got it right.
2007-04-30: Version 1.4.6-1
- 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 handling ChannelUp/Down keys if there is currently a replay running
(thanks to Marco Schl<68><6C>ler).
- Increased the maximum number of CA system ids to cope with the AlphaCrypt
CAM's version 3.11 firmware.
2007-05-12: Version 1.4.7
- Official release.
2007-06-10: Version 1.5.3
- Fixed some spelling errors in 'newplugin' (thanks to Ville Skytt<74>).
- 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<68><6C>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-17: Version 1.5.4
- Increased APIVERSION (forgot to do that in 1.5.2 and 1.5.3).
- Fixed a crash in i18n character set conversion (thanks to Alexander Riedel,
Jose Alberto Reguero and Christian Wieninger for patches that cured part of
the problem).
- Adjusted the 'skincurses' plugin to UTF-8 handling.
- Using nl_langinfo(CODESET) to determine the local codeset to use (thanks to
Thomas G<>nther). The codeset names in 'libsi/si.c' have been changed to the
canonical spelling with '-' (thanks to Ludwig Nussel for pointing this out).
- Modified handling invalid characters in VFAT mode.
- Replaced strn0cpy() with Utf8Strn0Cpy() where necessary.
- Now using 'fontconfig' to determine which fonts to use (thanks to Anssi Hannula
for code and hints on how to do this).
- If no fonts are installed, VDR now uses a dummy font that doesn't actually draw
any text, and logs an error message.
- The new function cFont::CreateFont() can be used by plugins to create and use
fonts of their own, independent of VDR's standard fonts.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Changed the parameter "OSD font" to "Default font" in "Setup/OSD" (suggested
by Rolf Ahrenberg).
- Fixed handling detached processes in SystemExec() (thanks to Udo Richter).
- The info.vdr file now also stores the name of the channel, and the new function
cRecordingInfo::ChannelName() returns this information if available (based on
a patch from Alexander Hans).
- The new function cOsd::SetOsdPosition() can be used to dynamically change the
position and size of the OSD (based on a request from Christoph Haubrich).
Plugins that implement skins should no longer use Setup.OSDWidth etc. directly,
but should rather use cOsd::OsdWidth() etc. instead.
Currently a change to the OSD position will only apply to newly opened OSDs.
2007-06-23: Version 1.5.5
- Fixed a name clash between skincurses.c and the new cOsd position functions.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Changed the parameter "OSD font size" to "Default font size" in "Setup/OSD".
- Fixed handling address masks in SVDRP host settings (thanks to Frank Schmirler).
- Fonts can now be created with a width that overwrites the default width (thanks
to Andreas Mair).
- Added full weekday names to i18n.c for plugins to use (thanks to Patrice Staudt).
The new function WeekDayNameFull() can be used to get these names from integer
values (just like the abbreviated weekday names).
- Fixed stripping i18n stuff from font names (reported by Anssi Hannula).
- Improved performance of the SVDRP commands LSTC and CHAN when used with a
channel name.
2007-07-22: Version 1.5.6
- Fixed a buffer overflow in initializing the system character table (thanks
to Marco Schl<68><6C>ler).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- Fixed handling single byte characters >0x7F in Utf8ToArray() (thanks to Udo
Richter).
- Improved numdigits(), isnumber() and strreplace() (thanks to Tobias Bratfisch).
- Fixed clearing color buttons in the 'curses' skin (thanks to Udo Richter).
- Fixed a typo in the function name of cOsd::SetOsdPosition() and added a range
check to it (thanks to Christoph Haubrich).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Improved cControl::Launch() to keep 'control' from pointing to uninitialized
memory (thanks to Rolf Ahrenberg).
- Made skipspace() an inline function (suggested by Tobias Bratfisch) and changed
it to handle the most common case of 'no leading space' very fast, and avoid
calling isspace(), which made the whole function a lot faster.
- Fixed detection of Premiere NVOD channel links (thanks to Markus Hahn).
- Added a table of the used trick speed values to the description of
cDevice::TrickSpeed() (suggested by Martin Dauskardt).
- Added a missing 'P' to vdr.c's SHUTDOWNCANCELROMPT macro (reported by Marco
Schl<68><6C>ler).
2007-08-12: 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<68><6C>ler).
- Fixed a bug I introduced when simplifying the original patch for detecting
Premiere NVOD channel links (crash reported by Malte Schr<68>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<74>). 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<74>).
- 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-19: Version 1.5.8
- Added missing install-i18n to the install target in the Makefile (reported
by Joachim Wilke).
- Fixed a faulty comment in Make.config.template (reported by Marco Schl<68><6C>ler).
- Improved i18n-to-gettext.pl (thanks to Matthias Schwarzott).
- Moved the "all" target in plugin Makefiles before the "Implicit rules",
so that a plain "make" will compile everything (suggested by Matthias
Schwarzott). The "newplugin" script has been changed accordingly.
Plugin authors may want to change their Makefiles, too.
- Added DESTDIR and PREFIX handling to the Makefile (thanks to Matthias
Schwarzott).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added internationalization to the "skincurses" plugin (thanks to Rolf
Ahrenberg).
- Checking the string for NULL in I18nTranslate().
- Updated the French OSD texts (thanks to Bruno Roussel).
- Some optimizations in cDvbDevice::SetChannelDevice() (thanks to Tobias Bratfisch).
- Optimized cMenuEditChrItem::Set() (thanks to Tobias Bratfisch).
- Optimized cNitFilter::Process() (thanks to Tobias Bratfisch).
- Reduced the number of time(NULL) calls in vdr.c's main loop to a single call
(thanks to Tobias Bratfisch).
- Changed cBitmap::DrawText() to always draw the background unless ColorBg
is clrTransparent (thanks to Christoph Haubrich).
- The "Setup/OSD/Language" menu now only shows those languages that actually
have a locale (suggested by Anssi Hannula).
- Now using setenv() instead of setlocale() to set the language for gettext()
(suggested by Anssi Hannula; thanks also to Ludwig Nussel for a hint on using
_nl_msg_cat_cntr).
- When scanning the locale directory, VDR now explicitly looks for a file named
vdr.mo. Text files for plugins are now named "vdr-name.mo", when "name" is the
name of the plugin. The "newplugin" script has been changed accordingly, and
plugin authors should change their Makefiles, too.
2007-08-26: Version 1.5.9
- Fixed handling locale directories with a large number of entries (thanks to
Anssi Hannula).
- Updated Turkish language texts (thanks to Oktay Yolge<67>en).
- Fixed stripping the context in I18nTranslate() (reported by Christian
Wieninger).
- Fixed detecting whether a particular locale is actually supported.
- Added a note about LANG having to be set to a valid locale in INSTALL
(suggested by Matthias Fechner).
- Fixed some compiler warnings with gcc-4.2.0 (thanks to Matthias Schwarzott).
- Fixed setting the locale file name in i18n-to-gettext.pl (thanks to Matthias
Schwarzott).
- Changed the default for LOCDIR in Makefile and Make.config.template to
"./locale", so that internationalization works by default when running VDR
from within its source directory (suggested by Anssi Hannula).
- Added the new i18n macro trVDR(), which can be used by plugins to mark
texts they want to reuse from VDR's core translations (suggested by Matthias
Becker).
- VDR now uses the default configuration directory as defined in the CONFDIR
variable in the Makefile (thanks to Thomas Schmidt).
- The SVDRP command LSTC can now list the channels with group separators if the
option ':groups' is given (thanks to Andreas Mair).
- Added a missing error report to cCuttingThread::Action() (thanks to Udo
Richter).
- There can now be more than one OSD at the same time. At any given time,
however, only one of them can be active (and thus visible). This is to
allow displaying things like subtitles in an easy way. A cOsd therefore
now has a "Level", and only the OSD with the smallest level will be
displayed. The level 0 OSD is special, and there can only be one with
this level. If there is more than one OSD with a particular level, only
the one that was created first will be displayed.
Plugins that provide an OSD need to adjust their cOsdProvider::CreateOsd()
function to hand through the Level.
- Fixed checking for ttDolbyLast in cDevice::SetCurrentAudioTrack() (thanks
to Marco Schl<68><6C>ler).
2007-10-14: Version 1.5.10
- Implemented handling DVB subtitles (thanks to Marco Schl<68><6C>ler, and also to
Pekka Virtanen for writing the subtitle plugin, which helped in implementing
subtitle handling in VDR).
- The new remote control key "Subtitles" can be used to bring up the list
of available subtitles.
- The new setup option "DVB/Subtitle languages" can be used to define the
preferred languages for subtitles.
- Fixed selecting the audio track when pressing Ok in the Audio menu (thanks
to Marco Schl<68><6C>ler).
- Implemented display of DVB subtitles in live viewing mode.
- Implemented subtitle track selection.
- Implemented bitmap color reduction and shrinking to display subtitles even
on devices that can't display the necessary number of colors.
- Added compatibility mode for playback of recordings made with the subtitles
plugin (with some help from Rolf Ahrenberg).
- The new setup option "DVB/Subtitle offset" can be used to shift the location
of the subtitles in the vertical direction.
- The new setup options "DVB/Subtitle foreground/background transparency"
define an additional level of transparency for the foreground and background
color of subtitles.
- Existing recordings made with the subtitle plugin can be given an 'X' record
in their info.vdr file, so that subtitles can be automatically selected upon
replay, according to the preferred language setup, as in
X 3 03 ger deutsch
(see vdr.5). Note that these entries need to be added in the proper sequence,
so that they correspond with the actual track languages in the recording.
- Now generating translation files without line numbers to avoid unnecessarily
large diffs. Plugin authors may want to replace the -F option with
--no-location in the xgettext and msgmerge calls in their Makefiles.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added a missing Channels.SetModified(true) call when deleting or moving a
channel in the Channels menu (reported by Halim Sahin).
- Fixed a missing '-' at the next to last line of SVDRP help texts (reported by
Denis Knauf).
- Added a missing SetVolumeDevice() call in cDevice::SetPrimaryDevice() (reported
by Reinhard Nissl).
- Fixed a crash when pressing Left while at the first character of a cMenuEditStrItem
(thanks to Christian Wieninger).
- Only creating a new cDvbOsdProvider in cDvbDevice::MakePrimaryDevice() if 'On'
is true (i.e. this device is being made the primary device).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed handling reallocated memory in cCharSetConv::Convert() (reported by Udo
Richter).
- Fixed a new[]/delete mismatch in cMenuEditStrItem::LeaveEditMode() (thanks to
Udo Richter).
- Implemented sending all frames to devices that can handle them in fast forward
trick speeds (thanks to Timo Eskola).
- Updated the Hungarian language texts (thanks to Thomas G<>nther).
- Fixed description of DeviceSetAvailableTrack() and cReceiver(), and added an
example ~cMyReceiver() in PLUGINS.html (thanks to Marco Schl<68><6C>ler).
- Improved the description of where logging goes in the INSTALL file (thanks to
Elias Luttinen).
- Added a note about how to initiate internationalization support to the
README.i18n file. The Makefile generated by the 'newplugin' script now has the
'i18n' target automatically create an initial 'po/pluginname.pot' file.
Plugin authors may want to add the '$(I18Npot)' dependency to the 'i18n'
target in their Makefiles, as in
i18n: $(I18Npot) $(I18Nmo)
(based on a suggestion by Torsten Kunkel).
- Removed a duplicate ',' from the ca_ES.po file (thanks to Thomas G<>nther).
- Added the '<27>' character to the "allowed characters" in the de_DE.po file
(suggested by Thomas G<>nther).
- Made the default copy ctor of cRecording private (thanks to Markus Hahn).
Same for the assign operator.
- Added cRecording::Undelete() (based on a patch from Markus Hahn).
- Added cDevice::CloseFilter() to allow a device to have complete control over
both opening and closing section filters (thanks to Rolf Ahrenberg).
- Some fixes to PLUGINS.html (thanks to Rolf Ahrenberg).
2007-11-04: Version 1.5.11
- Fixed checking compatibility mode for old subtitles plugin (thanks to Marco
Schl<68><6C>ler).
- Updated the French OSD texts (thanks to Michael Nival).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- The "Play" key now starts replay of the selected recording in the Recordings
menu (thanks to Ville Skytt<74>);
- Improved shutdown handling (thanks to Udo Richter).
- Housekeeping now waits for a while after a replay has ended (thanks to Udo Richter).
- Added more special characters to the list of allowed characters when entering
strings (thanks to Thomas G<>nther).
- Added Ukrainian language texts (thanks to Yarema Aka Knedlyk).
- Added a workaround for recovering from wrongfully interpreted "pre 1.3.19 PS1 packets".
- Fixed a possible blocking in replay when subtitles are active.
- Fixed displaying subtitles in live mode.
- Fixed handling CONFDIR (thanks to Rolf Ahrenberg).
- Added some missing 'const' keywords (thanks to Sascha Volkenandt).
- The 'Allowed' parameter in cMenuEditStrItem() is now NULL by default, which results
in using tr(FileNameChars) (suggested by Thomas G<>nther).
- Added a missing '.' to the date returned by DayDateTime() (thanks to Lauri Nurmi).
- Improved the 'i18n' target in the Makefile to avoid unnecessary work (thanks to
Stefan Huelswitt). The 'newplugin' and 'i18n-to-gettext.pl' scripts have been
changed accordingly. Plugin authors may want to adjust the 'i18n' target
of their Makefiles.
- Fixed a crash if no fonts are found (thanks to Mario Ivankovits and Clemens
Kirchgatterer).
- Fixed decoding filename characters in case there are not two hex digits after
the '#' (reported by Helmut Auer).
2007-11-18: Version 1.5.12
- Fixed assembling PS1 packets in cTS2PES::instant_repack() (thanks to Reinhard
Nissl).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- Fixed handling small PES packets that caused subtitles to be displayed late
in live mode (based on a patch from Reinhard Nissl).
- Fixed stopping live subtitles when a player is attached to the device.
- Fixed suddenly stopping subtitles in live mode.
2008-01-13: Version 1.5.13
- Fixed the declaration of cSubtitleObject::Decode8BppCodeString() (thanks to
Gregoire Favre).
- The new setup option "Miscellaneous/Emergency exit" can be used to turn off
the automatic restart of VDR in case a recording fails for some reason.
- The kInfo key is now propagated to any open menu, so that it can react to it
in a context sensitive manner (suggested by Andreas Brugger). If there is
no menu open it will show the info of the current broadcast or replay.
- cTimeMs now uses the monotonic clock, if available (thanks to Petri Hintukainen).
- Fixed cVector::Clear() and cStringList::Clear().
- Added cString::Truncate().
- Fixed the "i18n:" target in the "newplugin" script, so that it can create the
initial *.pot file.
- Fixed handling the '-l' option.
- Fixed error handling in cCuttingThread::Action() (thanks to Udo Richter).
- Fixed a loss of the date display in the "classic" skin's main menu (reported by
Andreas Brugger).
- Added a missing setting of lastFreeMB in cMenuMain::Update() (reported by
Andreas Brugger).
- Added '-Wno-parentheses' to the compiler options in order to avoid silly compiler
warnings for expressions like 'a || b && c', where GCC 4.3 wants to force the
programmer to write 'a || (b && c)', while everybody knows that '&&' links
stronger than '||' (reported by Tobias Grimm).
- Updated the Hungarian language texts (thanks to Istv<74>n F<>ley).
- Fixed displaying weekday names in the Schedule menu if the system uses UTF-8
(reported by Jiri Dobry).
- The new plugin "pictures" implements a simple picture viewer.
See PLUGINS/src/pictures/README for details.
- The automatic shutdown is now suppressed if the remote control is currently
disabled (suggested by Helmut Auer, implemented by Udo Richter).
- Added a section about "Logging" to PLUGINS.html (suggested by Torsten Kunkel).
- Enhanced the SVDRP command CLRE to allow clearing the EPG data of a particular
channel (thanks to Benjamin Hess).
2008-01-27: Version 1.5.14
- Fixed the Play function in the pictures plugin.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Makefile of the skincurses plugin (thanks to Rolf Ahrenberg).
- The new option --localedir can be used to set the locale directory at runtime
(based on a patch from Stefan Huelswitt).
- Fixed finding new transponders (thanks to Winfried K<>hler).
- Implemented handling of DVB-S2 (thanks to Marco Schl<68><6C>ler and Reinhard Nissl
for a patch that was used to implement this). VDR now requires the "multiproto"
DVB driver, e.g. from http://jusst.de/hg/multiproto.
- Removed switching to the next higher or lower channel if the current channel
is not available, in order to allow staying on an encrypted channel that takes
a while for the CAM to start decrypting.
2008-02-17: Version 1.5.15
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Added option -i to the pictures plugin's pic2mpg to ignore unknown file types.
- Revoked the switch to the "multiproto" driver in order to make a new stable
version before making this big switch and forcing all users to install a
driver that is not yet in the kernel source. The removed code will reappear
in version 1.7.0.
Note that you may need to switch back to an older version of your channels.conf
file if you have already used version 1.5.14, because it introduced new parameters.
- Added the new command line option --userdump to enable core dumps in case VDR
is run as root with option -u (thanks to Hans-Werner Hilse).
- Speeded up anti-aliased font rendering by caching the blend indexes (based on
a suggestion by Martin Wache).
- Fixed setting the OSD area in the pictures plugin.
- Ignoring "repeat" and "release" keys in the time search entry mode during replay,
to avoid inadvertently leaving it in case a key is pressed too long (suggested
by Andreas Brugger).
- Improved sending all frames to devices that can handle them in fast forward
trick speeds, including subtitles (thanks to Timo Eskola).
- The section handler is now stopped before the device is destroyed, to avoid
accessing file handles after they have become invalid (thanks to Reinhard
Nissl for reporting an invalid access when ending VDR, and to Deti Fliegl for
a patch that was used to implement StopSectionHandler()).
- Fixed setting the date in the channel display of the classic and sttng skins,
to avoid unnecessary OSD access (thanks to Marco Schl<68><6C>ler).
- The free disk space is now also displayed in the title of the "Recordings"
menu (suggested by Walter Koch).
- Changed the message "Upcoming VPS recording!" to "Upcoming recording!" because
it applies to non-VPS recordings as well.
- Fixed a loss of a timer's 'recording' flag after modifying it via MODT.
- Fixed detecting directories in cFileNameList::Load().
- Running the thread that removes deleted recordings at a low priority to (maybe)
avoid stuttering replay in case the thread is run during replay.
- Limiting the length of the recording name in timers in case VDR is run with
--vfat, in order to avoid names that are too long for Windows (suggested by Rolf
Ahrenberg).
- Using cString::sprintf() instead of asprintf() (thanks to Wolfgang Rohdewald
for pointing out a possible problem if the return value is not checked).
Plugin authors may want to consider doing the same. For convenience there is now
an additional version of cString::sprintf() that accepts a va_list parameter.
- When deleting the recording that is currently replayed, the replay is now
stopped immediately (thanks to Mikko Matilainen for reporting a possible crash
if the Info key is pressed after deleting the currently replayed recording).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- When determining the amount of free disk space, any deleted (but not yet removed)
recordings on different file systems (that are mounted under the video directory)
are no longer taken into account.
- When running out of disk space during a recording, only such deleted or old
recordings are removed, that actually are on the video directory file system(s).
This prevents VDR from accidentally deleting recordings on other file systems,
which would not add any free space to the video directory.
- Implemented the cStatus, cDevice and cPlayer functions for setting subtitle tracks
in plugins (thanks to Petri Hintukainen).
- Added cStatus::TimerChange() to inform plugins about changes to the list of timers
(based on a patch from Benedikt Elser).
- Added new cStatus functions to the 'status' plugin.
- Added missing #include <limits.h> to epg.c and menuitems.h (thanks to Ville Skytt<74>).
- The new function cSkin::SetScrollbar() can be implemented by skins to display
a scrollbar in every list menu. The 'classic' and 'sttng' skins have been
changed accordingly, as well as the 'skincurses' plugin.
- Introduced 'operator const void * ()' in cString to catch cases where operator*()
should be used.
- Fixed calculating the scrollbar sizes in the skins.
2008-02-24: Version 1.5.16
- Fixed setting the current subtitle track in Transfer-Mode (reported by Petri Helin,
thanks to Reinhard Nissl for pointing out that cDevice::Transferring() doesn't
return the right value in the early stage of channel switching).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- Updated the Dutch OSD texts (thanks to Carel Willemse).
- Fixed various spelling errors and improved PLUGINS.html (thanks to Ville Skytt<74>).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed the format in cRemote::Put() to use "%016llX" instead of "%016LX" (thanks
to Ludwig Nussel for pointing this out).
- Revised the fix of calculating the scrollbar height in the skins. The scrollbar
handle now always has a height that is at least the width of the scrollbar.
- When switching the device that's used for live viewing away from the current
transponder in favor of an upcoming recording, an attempt is now made to stay
on the current channel by possibly going into 'Transfer Mode'.
- The CAM menu now stays open as long as it is automatically updated, even without
pressing a remote control key. This is important when updating the CAM firmware
from the transponder.
- No longer trying to switch to an available channel if the primary device has
no valid programme and a menu is open (avoids interference with the CAM in
case a CAM menu is open).
- Increased the valid range of the "Subtitle offset" setup option to -100...100
(thanks to Rolf Ahrenberg).
- Added the backslash ('\') to the list of characters that need to be escaped
when executing external commands (thanks to Peter Bieringer for reporting this one).
2008-03-02: Version 1.5.17
- Updated the Swedish OSD texts (thanks to Tomas Berglund).
- Made the 'pic2mpg' script of the 'pictures' plugin work with uppercase filename
extensions and relative paths (thanks to Stefan Wagner for reporting this one).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the Dutch OSD texts (thanks to Johan Schuring).
- Stripping control codes 0x86 and 0x87 from SI strings.
- Updated French language texts (thanks to Jean-Claude Repetto).
- Fixed handling 3 and 4 byte UTF-8 symbols in Utf8CharGet() (thanks to Andreas
Mair).
- Fixed a crash in cFreetypeFont::DrawText() if an unknown symbol is encountered
(thanks to Tobias Grimm). Unknown symbols are replaced with a '?'.
- Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
- Updated the Czech OSD texts (thanks to Vladim<69>r B<>rta and Jiri Dobry).
- Updated the Turkish OSD texts (thanks to Oktay Yolge<67>en).
- The 'plugins' target in the Makefile now returns an error exit code if one of the
plugins failed to compile (suggested by Tobias Grimm).
- Rendering the non-breaking space symbol as a blank (thanks to Tobias Grimm).
- Changed the default character set for SI data from ISO6937 (as required by the DVB
standard ETSI EN 300 468) to ISO-8859-9, in order to work around the stupidity of
some providers, who actually use ISO-8859-9, but fail to correctly announce that.
2008-03-16: Version 1.5.18
- Added a missing reset of maxNumber in cChannels::Renumber() (reported by Sundararaj
Reel).
- Revoked the fixed change of the default character set for SI data and introduced
an environment variable to control it (thanks to Ales Jurik for reporting broken
SI data on the Czech/Slovak channels, which actually do follow the standard).
Users who want to set the default character set to something different can do this
by setting the environment variable VDR_CHARSET_OVERRIDE to something like
ISO-8859-9.
- Fixed a signed character used as index in cBase64Encoder::NextLine() (thanks
to Tobias Grimm).
- Updated the Spanish and Catalan OSD texts (thanks to Luca Olivetti).
- Fixed automatically selecting the preferred subtitle language (based on a patch
from Rolf Ahrenberg).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Updated the Polish OSD texts (thanks to Michael Rakowski).
- Fixed formatting the name section in the VDR man pages (thanks to Tobias Grimm).
- Updated the Swedish OSD texts (thanks to Magnus Andersson).
- Added Russian translations to the 'skincurses' and 'pictures' plugins (thanks
to Alexander Gross).
- Fixed displaying the free disk space when entering the recordings menu where the
last replayed recording was in a subdirectory, and pressing Back (thanks to Rolf
Ahrenberg).
- Fixed tuning to a live channel after a recording has been stopped using the
'Back' key.
- Resetting a timer's 'pending' flag when it has ended.
2008-03-23: Version 1.6.0
- Updated the Croatian language texts (thanks to Adrian Caval).
- Added Chinese language texts (thanks to Nan Feng).
- Updated the Portuguese language texts.
- Added a note about VDR_CHARSET_OVERRIDE to the INSTALL file.
2008-04-13: Version 1.7.0
- Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was
revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now
requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto.
Note that the channels.conf file now supports additional parameters, so you may
want to make sure you have a backup of this file in case you need to go back to
the previous version of VDR!
- Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl).
- Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
Nissl).
- Improved logging system time changes to avoid problems on slow systems under
heavy load (suggested by Helmut Auer).
- Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf
Ahrenberg).
- Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
Andreas Mair).
- Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald).
- Increased the time between checking the CAM status to 500ms to avoid problems
with some CAMs (reported by Arthur Konovalov).
2008-04-13: Version 1.6.0-1
- Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
Nissl).
- Improved logging system time changes to avoid problems on slow systems under
heavy load (suggested by Helmut Auer).
- Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
Andreas Mair).
- Increased the time between checking the CAM status to 500ms to avoid problems
with some CAMs (reported by Arthur Konovalov).
2008-09-06: Version 1.7.1
- Adapted the tuning code to the new DVBFE_SET_DELSYS API (thanks to Reinhard Nissl).
VDR now uses the driver from http://jusst.de/hg/multiproto_plus.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Removed obsolete $(NCURSESLIB) from the Makefile.
- Implemented handling the standard component descriptor for AC3 (stream=4), as it
will soon be used by the German ARD channels (thanks to Michael Pennewi<77> for
advance information about this change). The previously used "Premiere pseudo
standard" (stream=2, type=5) still works, but has apparently been wrongfully used
by broadcasters from the beginning.
- Added missing description of the 'S' channel parameter to vdr.5 (reported by
Reinhard Nissl).
- The SVDRP signon message now indicates the character encoding in use, as in
"220 video SVDRP VideoDiskRecorder 1.7.1; Fri May 2 16:17:10 2008; ISO-8859-1".
This may be useful for instance for external tools that provide EPG data, so that
they can correctly encode the strings.
- No longer calling FcFini() to avoid problems with older (broken) versions of
fontconfig (suggested by Edgar Toernig).
- Removed the compile time option VFAT to allow users of precompiled binary
distributions to have full control over whether or not to use the --vfat option
at runtime (suggested by Michael Nork).
- First step towards switching to TS (Transport Stream) as recording format:
+ The new function cDevice::PlayTs() is used to play TS packets.
+ The new functions cDevice::PlayTsVideo() and cDevice::PlayTsAudio()
are used to play video and audio TS packets, respectively.
+ The new function cAudio::PlayTs() is used to play audio TS packets.
+ The new class cPatPmtGenerator is used to generate a PAT/PMT pair that precedes
the TS data in Transfer Mode.
+ The new class cPatPmtParser is used by cDevice to parse the PAT/PMT data in a
TS in order to find out which streams it contains.
+ The new class cTsToPes is used to convert TS packets to a PES packet.
+ cTransfer no longer uses cRemux, and doesn't run a separate thread any more.
It just generates a PAT/PMT and sends all received TS packets to the primary
device's PlayTs().
+ Live subtitle display no longer uses a ring buffer and separate thread.
+ cPesAssembler has been removed. Old VDR recordings only contain complete PES
packets.
+ Since a TS needs to have a PAT/PMT, which requires the video stream type to
be explicitly given, the format of the VPID field in the channels.conf file
and the SVDRP commands NEWC/MODC/LSTC has been extended. The video stream type
now follows the VPID and optional PPID, separated by an '=' sign.
- Updated the sources.conf file (thanks to Oleg Roitburd).
- Fixed a possible integer overflow in GetAbsTime() (thanks to Alexander Rieger).
- Fixed a problem with calling isyslog() from within the SignalHandler() (thanks
to Udo Richter).
- Replaced the Finnish language code "smi" with "suo" (thanks to Rolf Ahrenberg).
- Fixed wrong value for TableIdBAT in libsi/si.h (thanks to Winfried K<>hler).
- Errors in config files no longer keep VDR from starting.
- Removed unneeded include files <linux/dvb/dmx.h> and <time.h> from remux.h
(reported by Tobias Grimm).
2008-09-06: Version 1.6.0-2
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- The SVDRP signon message now indicates the character encoding in use, as in
"220 video SVDRP VideoDiskRecorder 1.7.1; Fri May 2 16:17:10 2008; ISO-8859-1".
This may be useful for instance for external tools that provide EPG data, so that
they can correctly encode the strings.
- No longer calling FcFini() to avoid problems with older (broken) versions of
fontconfig (suggested by Edgar Toernig).
- Updated the sources.conf file (thanks to Oleg Roitburd).
- Fixed a possible integer overflow in GetAbsTime() (thanks to Alexander Rieger).
- Fixed a problem with calling isyslog() from within the SignalHandler() (thanks
to Udo Richter).
- Replaced the Finnish language code "smi" with "suo" (thanks to Rolf Ahrenberg).
- Fixed wrong value for TableIdBAT in libsi/si.h (thanks to Winfried K<>hler).
- Removed unneeded include files <linux/dvb/dmx.h> and <time.h> from remux.h
(reported by Tobias Grimm).
2008-12-14: Version 1.7.2
- Added a note about 'Id' being obsolete to the description of cDevice::PlayAudio().
- Switched to the new S2API driver API, which was decided to become the official
DVB API in the kernel (based on patches from Igor M. Liplianin, Niels Wagenaar
and Edgar Hucek). VDR now uses the S2API driver from http://linuxtv.org/hg/v4l-dvb.
In order to correctly detect DVB-S2 capable devices, you need to apply the patch
from ftp://ftp.tvdr.de/vdr/Developer/v4l-dvb-s2api-add-s2-capability.diff to
the driver source, because the S2API doesn't provide a way of telling whether a
device can handle DVB-S2 transponders.
- The cDvbTuner::IsTunedTo() function now also checks the symbol rate in case of
DVB-S and DVB-C.
- Improved handling PES video packets with zero length when converting from TS to PES.
For good replay in Transfer Mode on full featured DVB cards you may want to apply
the patch from ftp://ftp.tvdr.de/vdr/Developer/av7110_v4ldvb_api5_audiobuf_test_1.diff
to the driver (thanks to Oliver Endriss).
2009-01-06: Version 1.7.3
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- Fixed handling the 'pointer field' in generating and parsing PAT/PMT (thanks to
Frank Schmirler).
- Fixed handling modulation types for DVB-S transponders when processing the NIT.
- Changed cDvbDevice::GrabImage() to use V4L2 (thanks to Marco Schl<68><6C>ler).
- Added a poll to cDvbDevice::PlayVideo() and cDvbDevice::PlayAudio() to avoid
excessive CPU load (this is just a makeshift solution until the FF DVB cards
can play TS directly).
- The recording format is now Transport Stream. Existing recordings in PES format
can still be replayed and edited, but new recordings are done in TS.
All code for recording in PES has been removed.
The following changes were made to switch to TS recording format:
+ The index file format has been changed to support file sizes of up to 1TB
(previously 2GB), and up to 65535 separate files per recording (previously
255).
+ The recording file names are now of the form 00001.ts (previously 001.vdr).
+ The frame rate is now detected by looking at two subsequent PTS values.
The "frames per second" is stored in the "info" file using the new tag F
(thanks to Artur Skawina for helping to get the IndexToHMSF() calculation
right).
+ Several functions now have an additional parameter FramesPerSecond.
+ Several functions now have an additional parameter IsPesRecording.
+ The functionality of cFileWriter was moved into cRecorder, and cRemux is
now obsolete. This also avoids one level of data copying while recording.
+ cRemux, cRingBufferLinearPes, cTS2PES and all c*Repacker classes have been
removed.
+ A PAT/PMT is inserted before every independent frame, so that no extra
measures need to be taken when editing a recording.
+ The directory name for a recording has been changed from
YYYY-MM-DD-hh[.:]mm.pr.lt.rec (pr=priority, lt=lifetime) to
YYYY-MM-DD-hh.mm.ch-ri.rec (ch=channel, ri=resumeId).
Priority and Lifetime are now stored in the "info" file with the new
tags P and L (if no such file exists, the maximum values are assumed by
default, which avoids inadvertently deleting a recording if disk space
is low). No longer storing Priority and Lifetime in the directory name
avoids starting a new recording if one of these is changed in the timer
and the recording is re-started for some reason.
Instead of Priority and Lifetime, the directory name now contains the
channel number from which the recording was made, and the "resume id" of
this instance of VDR. This avoids problems if several VDR instances record
the same show on different channels, or even on the same channel.
The '-' between channel number and resumeId prevents older versions of
VDR from "seeing" these recordings, which makes sure they won't even try
to replay them, or remove them in case the disk runs full.
+ The semantics of PlayTs*() have been changed. These functions are now
required to return the given Length (which is TS_SIZE) if they have
processed the TS packet.
+ The files "index", "info", "marks" and "resume" within a TS recording
directory are now created without the ".vdr" extension.
+ The "resume" file is no longer a binary file, but contains tagged lines
to be able to store additional information, like the selected audio or
subtitle track.
+ cDevice::StillPicture() will now be called with either TS or PES data.
+ cDvbPlayer::Goto() no longer appends a "sequence end code" to the data.
If the output device needs this, it has to take care of it by itself.
- Fixed cPatPmtParser::ParsePmt() to reset vpid and vtype when switching from
a video to an audio channel (thanks to Reinhard Nissl).
- cDvbDevice now uses the FE_CAN_2G_MODULATION flag to determine whether a device
can handle DVB-S2. The #define is still there to allow people with older drivers
who don't need DVB-S2 to use this version without patching.
2009-01-25: Version 1.7.4
- Removed the '#define FE_CAN_2ND_GEN_MODULATION', since it was wrong and the
flag is now in the driver, anyway.
- The full-featured DVB cards are now given the TS data directly for replay
(thanks to Oliver Endriss for enhancing the av7110 driver to make it replay
TS data). The patch from ftp://ftp.tvdr.de/vdr/Developer/av7110_ts_replay__1.diff
implements this change in the driver.
The patch av7110_v4ldvb_api5_audiobuf_test_1.diff mentioned in version 1.7.2
is still necessary to avoid audio and video glitches on some channels.
- Added a typecast in cUnbufferedFile::Write() to avoid an error message when
compiling on 64 bit systems.
- Added some missing 'const' statements to cBitmap (thanks to Andreas Regel).
- Fixed returning complete PES packets in cTsToPes::GetPes() (thanks to Reinhard
Nissl).
- Added a missing Detach() in cTransfer::Activate() (thanks to Marco Schl<68><6C>ler).
- Added clearing the TS buffers in cDevice::Detach() (thanks to Marco Schl<68><6C>ler).
- Fixed incrementing the continuity counter in cPatPmtGenerator::GetPmt() (thanks
to Johann Friedrichs).
- Fixed removing deleted recordings in case there is a problem. Once a recording
caused a problem with removing, no others were removed any more and an ongoing
recording could fill up the disk and cause other recordings to be deleted
automatically (reported by Reinhard Nissl).
- Added "DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
to Make.config.template (thanks to Johann Friedrichs for pointing this out).
Plugin authors should add this line to their Makefile or Make.config if they use
file access functions that need special versions for 64 bit offsets.
- The new command line option -i can be used to set an "instance id", which will
be used to distinguish recordings of the same broadcast made by different instances
of VDR (suggested by Frank Schmirler). This replaces the use of the "resume id"
that was introduced in version 1.7.3.
- Added checking mutexCurrentAudioTrack to cDevice::PlayTs() (thanks to Reinhard
Nissl for pointing this out).
- Fixed handling the pointer field in cPatPmtParser::ParsePmt() (thanks to Frank
Schmirler - sorry I swapped two lines when adopting the original patch).
- Checking the remaining packet length after processing the pointer field in
cPatPmtParser::ParsePat() and cPatPmtParser::ParsePmt() (suggested by Frank
Schmirler).
- Checking the pointer field in cPatPmtParser::ParsePmt() only in 'payload start'
packets (suggested by Frank Schmirler).
- Changed cPatPmtGenerator to make sure the PMT pid doesn't collide with any of
the actual pids of the channel.
- Fixed cDevice::PlayTsAudio() and made cDevice::PlayTsVideo() return 0 if
PlayVideo() didn't play anything.
- Added an 'int' typecast to calculations involving FramesPerSecond() to avoid
compiler warnings (reported by Winfried K<>hler).
- Fixed detecting frames for pure audio recordings.
- Fixed editing PES recordings. The frame type in the index.vdr file generated for
the edited PES recording is set to 1 for I-frames and 2 for all others (P- and
B-frames). The exact frame type doesn't matter for VDR, it only needs to know if
it's an I-frame or not.
- The PAT/PMT is now only processed if its version changes (reported by Reinhard
Nissl).
- Fixed handling the maximum video file size (reported by Udo Richter).
- Improved fast-forward/-rewind for audio recordings. The actual data is now sent
to the output device, so that it can be replayed and thus cause the proper delay.
For pure audio recordings the audio is no longer muted in fast-forward/-rewind
mode, so that some orientation regarding the position within the recording is
possible. There may still be some offset in the replay position displayed by the
progress indicator when switching from fast-forward/-rewind to play mode, as well
as in the current position during normal play mode. This is due to the various
buffers between the player and the output device and will be addressed later.
Note the new function cDevice::IsPlayingVideo(), which is used to inform the
player whether there is video data in the currently replayed stream. If a derived
cDevice class reimplements PlayTs() or PlayPes(), it also needs to make sure this
new function works as expected.
2009-04-12: Version 1.7.5
- Fixed a hangup when replaying a TS recording with subtitles activated (reported
by Timo Helkio).
- Fixed handling the 'new' indicator in the recordings menu for TS recordings
(thanks to Derek Kelly).
- Added cap_sys_nice to the capabilities that are not dropped (thanks to Rolf
Ahrenberg).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Added cRecordingInfo::GetEvent() (thanks to Marcel Unbehaun).
- Improved synchronizing the progress display, trick modes and subtitle display
to the actual audio/video. This now works independent of any buffer sizes the
output device might use.
+ The cBackTrace class has been replaced with cPtsIndex, which keeps track
of the PTS timestamps of recently played frames.
+ cDevice::GetSTC() is now required to deliver the STC even in trick modes.
It is sufficient if it returns the PTS of the most recently presented
audio/video frame.
+ The full-featured DVB cards need an improved firmware in order to return
proper STC values in trick modes (thanks to Oliver Endriss for enhancing the
av7110 firmware).
- Adapted cFrameDetector::Analyze() to HD NTSC broadcasts that split frames over
several payload units (thanks to Derek Kelly for reporting this and helping in
testing).
- Modified cFrameDetector::Analyze() to make it process whole frames at once, so
that file I/O overhead is minimized during recording (reported by G<>nter
Niedermeier).
- Added command line help for the '-i' option.
- Fixed cDvbPlayer::NextFile() to handle files larger than 2GB (thanks to Jose
Alberto Reguero).
- Improved replay at the begin and end of a recording. The very first and very last
frame is now sent to the output device repeatedly until GetSTC() reports that it
has been played. cDvbPlayer::Action() no longer calls DeviceFlush() (thanks to
Reinhard Nissl for making sure vdr-xine no longer needs this).
- Added missing '[]' to the delete operator in cMenuEditStrItem::~cMenuEditStrItem().
- Added missing virtual destructor to cPalette.
- Now freeing configDirectory before setting it to a new value in
cPlugin::SetConfigDirectory().
- Fixed a crash when jumping to an editing mark in an audio recording.
- Fixed the 'VideoOnly' condition in the PlayPes() and PlayTs() calls in
cDvbPlayer::Action() (thanks to Reinhard Nissl).
- cDevice::PlayTs() now plays as many TS packets as possible in one call.
- Making sure any floating point numbers written use a decimal point (thanks to
Oliver Endriss for pointing out a problem with the F record in the info file of
a recording).
- Fixed detecting the frame rate for radio recordings.
- Added missing AUDIO_PAUSE/AUDIO_CONTINUE calls to cDvbDevice (thanks to Oliver
Endriss).
- No longer writing the video type into channels.conf if VPID is 0 (thanks to
Oliver Endriss for reporting this).
- Improved efficiency of cEIT::cEIT() (thanks to Tobias Bratfisch).
2009-04-26: Version 1.7.6
- cDevice::PlayTs() now syncs on the TS packet sync bytes.
- Made MAXFRAMESIZE a multiple of TS_SIZE to avoid breaking up TS packets.
- No longer resetting the patPmtParser in cDevice::PlayTs(), because this
caused the selected audio and subtitle tracks to fall back to the default.
- The SVDRP command PUTE now supports reading the EPG data from a given file
(thanks to Helmut Auer).
- Added cThread::SetIOPriority() and using it in cRemoveDeletedRecordingsThread
(thanks to Rolf Ahrenberg).
- Fixed the MEGABYTE() macro to make it correctly handle parameters resulting in
values larger than 2GB.
- Added cDevice::NumProvidedSystems() to PLUGINS.html (was missing since it had
been implemented).
- Fixed distortions when switching to the next file during replay.
- Fixed detecting the frame rate for streams with PTS distances of 1800, which
apparently split one frame over two payload units.
- Added missing 'const' to cRecording::FramesPerSecond() (thanks to Joachim Wilke).
- Any TS packets in the first "frame" after a cut in an edited recording that don't
belong to a payload unit that started in that frame now get their TEI flag set,
so that a decoder will ignore them together with any PES data collected for that
PID so far (thanks to Oliver Endriss for reporting chirping sound disturbances at
editing points in TS recordings).
- cDvbPlayer::Empty() subtracts 1 from readIndex, because Action() will first
increment it.
- Only storing non-zero Pts values in ptsIndex.
- Added a note to the INSTALL file about using subdirectories to split a large
disk into separate areas for VDR's video data and other stuff (suggested by
Udo Richter).
2009-05-03: Version 1.7.7
- The new function cDevice::GetVideoSize() returns the size and aspect ratio
of the video material currently displayed. This function is used to determine
the proper size of the OSD. Plugin authors should implement this function in
classes derived from cDevice, if they are able to replay video.
- The OSD and font sizes are now defined in percent of the actual video display
size. The maximum OSD size has been raised to 1920x1080, to allow full
screen OSD on HD systems.
- The OSD size is now automatically adjusted to the actual video display
(provided the output device implements the GetVideoSize() function).
- cFrameDetector::Analyze() now syncs on the TS packet sync bytes (thanks to
Oliver Endriss for reporting broken index generation after a buffer overflow).
2009-06-13: Version 1.7.8
- The name of the function cDevice::GetVideoSize() wasn't very well chosen
for its purpose of defining the optimum size of the OSD for the current
output device. Therefore a new function named cDevice::GetOsdSize() has
been introduced (suggested by Rolf Ahrenberg). Plugin authors should
implement this function in classes derived from cDevice, if they are able
to replay video. cDevice::GetVideoSize() still exists and should return the
actual size of the video material that is currently replayed. Note that
because of the many possible aspect ratios for video material, the type
of the Aspect parameter of GetVideoSize() has been changed to 'double',
and the Aspect parameter in both functions is named differently, because
it returns different values (suggested by Reinhard Nissl).
Thanks to Oliver Endriss for his input on calculating the Aspect factor in
GetOsdSize().
- Fixed the way the OSD size is determined on full featured DVB cards (thanks
to Oliver Endriss).
- Increased MAXOSDHEIGHT to 1200 (suggested by Nicolas Huillard).
- Removed limitation to PAL resolution from SPU handling.
- Checking fd_video in cDvbDevice::GetVideoSize() to avoid error messages on
systems with no real primary replay device (reported by Martin Neuditschko).
- Added a note to cTsToPes::GetPes() about having to call it repeatedly, once
it has returned a non-NULL value.
- Added MPEG 1 handling to remux.c (thanks to Ales Jurik).
- Fixed use of time_t in cEIT::cEIT() (thanks to Tobias Bratfisch).
- Added missing update of lastOsdSizeUpdate.
- EIT events are now only processed if a plausible system time is available, to
avoid wrong handling of PDC descriptors (thanks to Tobias Bratfisch).
- Removed unused 'synced' member from cTsToPes (reported by Christoph Haubrich).
- Added a note to cTsToPes about all TS packets having to belong to the same PID,
and that for video data GetPes() may only be called if the next TS packet that
will be given to PutTs() has the "payload start" flag set (suggested by Christoph
Haubrich).
- Added a note about the meaning of PERCENTAGEDELTA in cRingBuffer::UpdatePercentage()
(thanks to Rolf Ahrenberg).
- The new setup option "Recording/Pause key handling" can be used to define
what happens if the Pause key on the remote control is pressed during
live tv (thanks to Timo Eskola).
- Added a note about cFont::GetFont() not being thread-safe.
- Fixed generating PAT/PMT version numbers in case the PIDs change during
recording (reported by Reinhard Nissl).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Fixed a memory leak when reaching the end of a recording during replay (reported
by Reinhard Nissl).
- Fixed calling close(-1) in cUnbufferedFile::Close() (reported by Reinhard Nissl).
- Added a workaround for the broken linux-dvb driver header files (based on a patch
from Tobias Grimm).
- Fixed handling the length of DiSEqC command sequences (reported by Reinhard Nissl).
- Fixed cOsdMenu::Display() in case the menu size has changed (thanks to
Reinhard Nissl).
- Added some missing 'const' keywords to avoid compilation errors with gcc 4.4
(thanks to Ville Skytt<74> and Ludwig Nussel).
- Modified cSVDRP::CmdGRAB() to avoid writing into const data (reported by
Ludwig Nussel).
- Fixed calculating menu colum widths in case the font has a size other than the
default size (reported by Reinhard Nissl).
- Added a plausibility check for the OSD percentage parameters
to avoid problems in case the values are stored in the setup.conf
file in a wrong way.
- Fixed variable types in cIndexFile (reported by Udo Richter).
2009-08-23: Version 1.7.9
- Fixed storing the current OSD size in case the device has
changed it in its setup menu (reported by Reinhard Nissl).
- Fixed cDevice::PlayTsVideo() and cDevice::PlayTsAudio() in case only part of the
buffer has been accepted by the device (reported by Udo Richter).
- Changed the EIT filter setup to save a few handles on devices that do hardware
filtering.
- Fixed deleting expired timers if they have the VPS flag set, but the event they
are assigned to doesn't have a VPS tag.
- Fixed handling file name length on VFAT systems in case they
contain UTF-8 characters (thanks to Rolf Ahrenberg).
- Fixed generating CaPmts in case audio and video are encrypted using different
ECM pids.
- Updated vdr.1 to use the new file names in recording directories.
- Fixed cRecordings::DelByName() to avoid compilation errors with gcc 4.4
(thanks to Matthias Schwarzott).
- Increased the value of MAXFRAMESIZE to better suit HD recordings (thanks to
Reinhard Nissl).
- Implemented full handling of subtitling descriptors (thanks to Mikko Tuumanen).
2009-11-22: Version 1.7.10
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed wrong bracketing in cChannel::SubtitlingType() etc.
(thanks to Rolf Ahrenberg).
- Fixed not logging changes for channels that have no number
(reported by Timothy D. Lenz).
- Changed the project's URLs and email to tvdr.de.
- Added Lithuanian language translations (thanks to Valdemaras Pipiras).
- Updated Chinese language texts (thanks to Nan Feng).
- Only checking DVB_API_VERSION to be >=5 in order to stay compileable in case
the DVB API version number is increased (the API claims to always be backward
compatible).
- Fixed saving terminal settings when running in background (thanks to Manuel
Reimer).
- Fixed cFrameDetector::Analyze() to handle video streams where the frame type
is not detectable from the first TS packet of a frame.
- Fixed writing the PCR pid into the PMT in cPatPmtGenerator::GeneratePmt()
(reported by Rene van den Braken).
- Added Slovak language texts (thanks to Milan Hrala).
- Fixed EntriesOnSameFileSystem() to avoid using f_fsid, which may be 0 (thanks
to Frank Schmirler).
- Fixed starting a recording at an I-frame.
- Fixed generating the index for recordings from channels that put a whole
GOP into one payload unit.
- The index file for TS recordings is now regenerated on-the-fly if a
recording is replayed that has no index. This can also be used to
re-create a broken index file by manually deleting the index file and then
replaying the recording (at least until the index file has been generated).
- The cRingBufferLinear::Read() function now returns -1 and sets errno to
EAGAIN if the buffer is already full.
- Fixed handling DVB subtitles for PES recordings (thanks to Rolf Ahrenberg).
- Added the audio id to the call of PlayAudio() in cDevice::PlayTsAudio()
(thanks to Andreas Schaefers).
- Fixed references to old *.vdr file names in MANUAL (reported by Arthur Konovalov).
- Reverted "Removed limitation to PAL resolution from SPU handling" because it
caused nothing but trouble. Besides, the core VDR doesn't use this, anyway.
- Fixed the default value for "Pause key handling" in the MANUAL (reported by
Diego Pierotto).
2010-01-06: Version 1.7.11
- Fixed resetting the file size when regenerating the index file.
- The new function cDevice::PatPmtParser() can be used in derived devices to access
the PAT/PMT of the currently replayed material.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- The PCR pid in generated PMTs is now set to 0x1FFF ("no PCR pid") in
cPatPmtGenerator::GeneratePmt(), because VDR doesn't record the PCR pid.
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- The 'sky' plugin is no longer part of the VDR source.
- Improved SPU handling on devices with limited OSD capabilities (thanks to
Matthieu Castet).
- Several code modifications to avoid compiler warnings (thanks to Winfried K<>hler).
- Added stream type 11172 AUDIO to cPatPmtParser::ParsePmt() (thanks to Johann
Friedrichs).
- Removed debug output of '-' from cTransfer::Receive().
- Added defines for large files to the 'newplugin' script (reported by Udo Richter).
- Removed the workaround for short channel names of "Kabel Deutschland", because
apparently they now have their data according to the DVB standard (thanks to
Johann Friedrichs).
- Some fixes to dvbspu.[hc] (thanks to Johann Friedrichs).
- Fixed a busy loop when moving editing marks (thanks to Johann Friedrichs).
- Updated sources.conf (thanks to Derek Kelly).
- Modified cCharSetConv so that it can be used to convert from "whatever VDR uses"
to a given code (thanks to Joachim Wilke).
- Channel names containing commas are now handled correctly in channels.conf.
If a channel's short name contains a comma, it is replaced with a '.'.
- cDevice now logs the device number when a new device is created.
- Fixed handling STREAMTYPE_11172_AUDIO in cPatPmtParser::ParsePmt().
- cParsePatPmt now has functions to retrieve the audio, dolby and subtitle pids.
- cPatFilter::Process() now only stores CA descriptors for video and audio pids
(thanks to Francesco Saverio Schiavarelli for reporting a problem with channels
that have some encrypted components that VDR doesn't use).
- cDevice::AddPid() now stores the stream type of the given pid (thanks to Andreas
Regel).
- Added cFont::FontName() and cFont::Size() (thanks to Andreas Regel).
- cPatPmtParser now also stores the audio stream types.
- The support for full featured DVB cards of the TT/FuSi design has been moved
into the new plugin 'dvbsddevice'. On systems that use such a card as their
primary device, this plugin now needs to be loaded when running VDR in order
to view live or recorded video. If the plugin is not loaded, the card will
be treated like a budget DVB card, and there will be no OSD or viewing
capability.
- Fixed handling the "CA PMT" generation (revised a change not mentioned in version
1.7.9's changes, which caused a malfunction with Conax and Viaccess CAMs).
- Fixed stopping subtitle display when switching the primary device (thanks to
Anssi Hannula).
IMPORTANT NOTE TO PLUGIN AUTHORS: a plugin that implements a derived cDevice
class that can replay video must now call the MakePrimaryDevice() function of
its base class.
- Fixed compiler warnings "format not a string literal and no format arguments"
in some syslog calls (thanks to Rolf Ahrenberg).
- The new command line options --edit and --genindex can be used to edit a
recording or generate its index without actually starting the entire VDR
(based on a patch from Helmut Auer).
- Improved the description of the transponder parameters in vdr.5 (thanks to
Winfried K<>hler).
- Avoiding setting the video stream type to 2 if the vpid is 0 (problem reported
by Arthur Konovalov).
- Implemented handling the "Content Descriptor" (based on a patch from Rolf
Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the textual
representation of the content descriptors as "genre". The epg.data file stores
the genre using the tag character 'G'.
- Implemented handling the "Parental Rating Descriptor" (based on a patch from Rolf
Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the parental
rating (if given) in their event displays. The epg.data file stores
the parental rating using the tag character 'R'.
IMPORTANT NOTE: if VDR doesn't display a parental rating, this does not
necessarily mean that the given programme is suitable for all audiences!
- Rearranged cEvent members to minimize memory waste.
- After a CLRE command, no further EPG processing is now done for 10 seconds,
so that data sent with subsequent PUTE commands doesn't interfere with data
from the broadcasters (suggested by Helmut Auer).
- Added support for DVB cards with multiple fontends. Note that this only
works for DVB cards where each frontend can be used independently of all
the others on the same adapter.
- Fixed plugin arguments corruption with glibc 2.11 on x86_64 (thanks to
Anssi Hannula).
2010-01-31: Version 1.7.12
- Changed the EVCONTENTMASK_* macros to enums and changed "mask" to "group".
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- The "Edit timer" menu can now set the folder for the recording from a list of
folders stored in "folders.conf".
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- If svdrphosts.conf contains only the address of the local host, the SVDRP port
is opened only for the local host (thanks to Manuel Reimer).
- Renamed 'runvdr' to 'runvdr.template' and no longer copying it to the BINDIR
in 'make install' (thanks to Martin Dauskardt).
- Added plain text error messages to log entries from cOsd::SetAreas() (suggested
by Rolf Ahrenberg).
- cPalette::ClosestColor() now treats fully transparent colors as "equal"; improved
cDvbSpuBitmap::getMinBpp() (thanks to Matthieu Castet and Johann Friedrichs).
- The new setup option "Miscellaneous/Channels wrap" controls whether the current
channel wraps around the beginning or end of the channel list when zapping (thanks
to Matti Lehtim<69>ki).
- Fixed determining the frame duration on channels where the PTS deltas jitter by
+/-1 around 1800.
- The PCR pid in generated PMTs is now set to the channel's PCR pid again.
- Fixed determining the frame duration on channels where the PTS deltas jitter by
+/-1 around 3600.
- The PCR pid is now recorded for channels where this is different from the video
PID. To facilitate this, the interfaces of cTransfer, cTransferControl, cRecorder
and cReceiver have been modified, so that the PIDs are no longer given in separate
parameters, but rather the whole channel is handed down for processing. The old
constructor of cReceiver is still available, but it is recommended to plugin authors
that they switch to the new interface as soon as possible.
When replaying such a recording, the PCR packets are sent to PlayTsVideo().
- The files "commands.conf" and "reccmd.conf" can now contain nested lists of
commands. See vdr.5 for information about the new file format.
This obsoletes the CMDSUBMENU patch.
2010-02-28: Version 1.7.13
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Changed the position of Sirius 4 to S4.8E in sources.conf (thanks to Alexander Gross).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Moved the declaration of cMenuCommands to menu.h, so that plugins can use it.
- Added a note to the MANUAL, saying that adding new transponders only works if the
"EPG scan" is active (suggested by Halim Sahin).
- Improved handling frames at the beginning and end of a recording in cDvbPlayer for
devices with large buffers (thanks to Reinhard Nissl).
- Implemented cDeviceHook to allow plugins more control over which device can
provide which transponder (thanks to Reinhard Nissl).
- Implemented cDevice::GetCurrentlyTunedTransponder() (thanks to Reinhard Nissl).
- Moved strictly necessary Makefile options into Make.global, which is included
by all plugins (thanks to Paul Menzel). The Makefiles of existing plugins should be
modified like this:
------------------------------------------------------------
--- PLUGINS/src/hello/Makefile 2009/10/18 14:00:07 2.1
+++ PLUGINS/src/hello/Makefile 2010/02/06 14:50:03 2.2
@@ -18,7 +18,7 @@
### The C++ compiler and options:
CXX ?= g++
-CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
+CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
@@ -26,6 +26,10 @@
LIBDIR = ../../lib
TMPDIR = /tmp
+### Make sure that necessary options are included:
+
+include $(VDRDIR)/Make.global
+
### Allow user defined options to overwrite defaults:
-include $(VDRDIR)/Make.config
------------------------------------------------------------
- Added device definitions to the diseqc.conf file format, so that certain satellite
positions can be limited to a given list of devices.
This obsoletes the SOURCECAPS patch.
- Keeping subtitles visible when pausing replay (thanks to Rolf Ahrenberg).
- Fixed adding new transponders in case there is only a single channel in the
channel list (reported by Halim Sahin).
- The file name in the "Timers" menu now shows only the base name of the recording
without the folder path (if any). Otherwise with long folder paths the actual
recording name was not visible at all.
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Exported some libsi functions (thanks to Lucian Muresan).
- Improved scalability of the default skins.
- Fixed the German translation of "Folder name must not contain '%c'!" (thanks to
Frank Schmirler).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Plugins can now define new sources. In order to implement this, the following
changes were made:
+ The transponder parameter string is no longer interpreted by cChannel, but rather
stored as is and used only by the respective device. That way plugins can use a
channel's parameter string to store arbitrary data (see vdr.5).
+ The new class cSourceParam can be used by plugins to define new sources, and to
implement OSD items that will be used in the channel editor for editing the source
specific parameters of a channel (see dvbdevice.c for an example of how this is
done for the default DVB devices).
+ Purely numerical values are no longer accepted in the 'source' parameter of a
channel.
This obsoletes the PLUGINPARAM patch.
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- cSafeFile::Close() now flushes the file (suggested by Stephan Austerm<72>hle).
- The option "Setup/DVB/Use Dolby Digital" now only controls whether Dolby Digital
tracks appear in the "Audio" menu. Dolby Digital is always recorded.
This obsoletes the DOLBYINREC patch.
2010-03-12: Version 1.7.14
- Fixed handling empty strings in cSource::FromString().
- Assigned the source character 'I' to "IPTV" (suggested by Rolf Ahrenberg).
- Assigned the source character 'V' to "Analog Video" (suggested by Lars Hanisch).
This obsoletes the ANALOGTV patch.
- Added support for ATSC devices (thanks to Alex Lasnier).
This obsoletes the ATSC patch.
- The "Source" item in the "Edit channel" menu now wraps around the list of sources
(suggested by Halim Sahin).
- Fixed editing channel parameters.
- The new setup option "Recording/Delete timeshift recording" controls whether a timeshift
recording is automatically deleted after viewing it.
This obsoletes the DELTIMESHIFTREC patch.
Note that the meaning of the values for this option is different from the DELTIMESHIFTREC
patch: 0 means timeshift recordings are not automatically deleted (the default behavior
as in previous versions), while 1 means to ask the user whether the recording shall be
deleted.
- Added cChannel::IsSourceType() to test if a channel's source is of a given type.
- Changed the polarization characters in cDvbSourceParam::GetOsdItem() to uppercase.
- The full timer file name is now displayed if it ends with "TITLE" or "EPISODE"
(pointed out by Udo Richter).
- Fixed "attempt to drop wrong frame from ring buffer" when skipping +/- one minute
during replay.
- The new setup option "Folders in timer menu" controls whether the file names in
the timer menu are shown with their full folder path.
2010-06-06: Version 1.7.15
- Added Macedonian language texts (thanks to Dimitar Petrovski).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added handling of EnhancedAC3DescriptorTag (thanks to Eric Valette).
- The default SVDRP port is now 6419 (registered with ICANN/IANA by Christian Tramnitz).
Use '-p 2001' to switch back to the old port if necessary.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- cDvbDevice::ProvidesTransponder() now checks the modulation capabilities of the
device (as far as the driver allows this).
- Fixed cFrameDetector::Analyze() in case part of the data has been processed and
there is less than MIN_TS_PACKETS_FOR_FRAME_DETECTOR left (reported by Derek Kelly).
- Added a note about not deleting cDeviceHook objects to device.h.
- Added user defined key kUser0 (suggested by Ulf Kiener).
- Include paths are no longer overwritten in the Makefile (thanks
to Paul Menzel).
- The various modulation types are now taken into account when selecting a device for
a recording or live viewing, so that devices that provide more capabilities are
spared.
- Fixed generating PMT language descriptors for multi language PIDs (thanks to Rolf
Ahrenberg).
- Transponders that use "8psk turbo fec" (a non-standard mode used by North American
providers) are now identified by assuming that all 8psk transponders on DVB-S use
"turbo fec". In order to determine whether a certain device can handle "turbo fec",
the new driver flag FE_CAN_TURBO_FEC is checked. If your device can handle "turbo
fec", and your driver doesn't have that flag, yet, you can apply the patch from
ftp://ftp.tvdr.de/vdr/Developer/v4l-dvb-add-FE_CAN_TURBO_FEC.diff. A temporary
macro in dvbdevice.c defines the flag for all those who don't need this in the
driver, so that they can continue using an unmodified driver.
Thanks to Derek Kelly for testing this.
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Fixed handling "none" color entries in XPM files (thanks to Thomas G<>nther).
- Fixed a crash when creating a new channel if the channel list is empty (reported
by Halim Sahin).
- Updated the Czech OSD texts (thanks to Radek Stastny).
- Fixed a possible out of buffer memory access in case of bad TS data (reported
by Rolf Ahrenberg).
- Implemented handling of HD resolution subtitles according to v1.3.1 of
ETSI EN 300 743, chapter 7.2.1 (thanks to Rolf Ahrenberg).
- The EPG data now handles stream components 5 (H.264-video) and 6 (HEAAC-audio).
- Fixed a problem with external Dolby Digital processing via the '-a' option in live
mode and with TS recordings (reported by Christopher Reimer).
- Added handling MPEG audio types "ISO/IEC 14496-3 Audio with LATM transport syntax"
and "ISO/IEC 13818-7 Audio with ADTS transport syntax" (suggested by Luis Fernandes).
See man vdr(5) on how the APID section of channels has been extended to store
this information.
- Added detecting channels that use service type 0x16.
- Added full handling of the stream types of Dolby Digital pids
(thanks to Jose Alberto Reguero).
- The new setup option "OSD/Number keys for characters" can be used to control whether
the number keys can be used to enter characters in a text input field (suggested
by Stefan Huskamp).
2010-09-19: Version 1.7.16
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Added missing Dtypes for ATSC (thanks to Alex Lasnier).
- Updated the Portuguese language texts (thanks to Cristiano A. Silva).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed the array size of Atypes in cPatFilter::Process() (thanks to
Rolf Ahrenberg).
- Added locking to the cCutter functions to avoid a crash in case CutRecording()
is called from a plugin (reported by Andreas Mair).
- Fixed DDS detection for HD resolution subtitles (thanks to Reinhard Nissl).
- Fixed following symbolic links in RemoveFileOrDir().
- Added support for languages that are written right-to-left (based on a patch
from Osama Alrawab). See INSTALL for information on how to turn this on.
- Added Arabic language texts (thanks to Osama Alrawab).
2011-03-12: Version 1.7.17
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Fixed following symbolic links in RemoveFileOrDir() (cont'd) (thanks to
Steffen Barszus).
- Changed the description of cDevice::GetSTC() to make it mandatory for devices
that can replay.
- Removed the check for positive STC values from cDvbSubtitleConverter::Action().
- Added cString::operator=(const char *String) (suggested by Antti Sepp<70>l<EFBFBD>).
- Some spelling fixes (thanks to Ville Skytt<74>).
- Passing package name and version to xgettext (thanks to Ville Skytt<74>).
- Made 'dist' target dependent on up to date *.po (thanks to Ville Skytt<74>).
- Added Language and fixed Language-Team header of *.po (thanks to Ville Skytt<74>).
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- Fixed detecting frames on channels that broadcast with 50 or 60 fps.
This avoids artifacts during fast forward/rewind when replaying recordings from such
channels. To fix the index of existing recordings from such channels, just delete the
'index' file of the recording and VDR will generate a new one the next time you play it.
You should also change the line "F 25" to "F 50" in the 'info' file of that recording.
- Added support for "registration descriptor" to 'libsi' and using it in pat.c (thanks
to Rolf Ahrenberg).
- Fixed unjustified log entries about changed channel pids (reported by Derek Kelly).
- Added an include of VDR's 'Make.global' to libsi's Makefile (thanks to Rolf
Ahrenberg).
- Removed displaying the "contents" information from the "Classic VDR" and
"ST:TNG Panels" skins, because it is often wrong and nothing but irritating.
- Added typecasts to avoid gcc 4.5 warnings in switch statements on eKeys
variables where additional 'k_...' flags are used.
- Fixed inclusion of <stdarg.h> (thanks to Henning Heinold).
- Changed "frame duration" to "frame rate" in vdr.5 (reported by Tobias Grimm).
- Removing a cRemote from the Remotes list in case its initialization failed (thanks
to Dominik Strasser).
- Added LDFLAGS to the linker calls in the Makefiles (thanks to Joerg Bornkessel and
Paul Menzel).
- Now updating the 'frames per second' data in the list of recordings when a new
recording is started that has a frame rate other than the default.
- The include path to the freetype2 header files is now retrieved via a call to
'pkg-config --cflags freetype2' (suggested by Andreas Oberritter).
- The OSD now has full TrueColor support. There can be several "pixmaps" that can
be overlayed with alpha blending. All existing skins should work out of the box
with the TrueColor OSD - the only exception being cOsd::GetBitmap(). Since the
TrueColor OSD doesn't use bitmaps, this function will return a dummy bitmap, which
may not be what the plugin expects. As long as this bitmap is only used for setting
the palette, there is no problem. However, any other operations on this bitmap will
have no effect. See the description of the cPixmap functions in osd.h for details
about the new functionalities.
The "ST:TNG Panels" skin has been enhanced to automatically use the TrueColor OSD
if available.
The "osddemo" plugin has been extended to show some of the possibilities of the
TrueColor OSD if it is run on a system that actually provides TrueColor support.
Thanks to Reinhard Nissl for some valuable input, help with debugging, and an
implementation of the AlphaBlend() function.
- Updated the Slovak language texts (thanks to Milan Hrala).
- Added Serbian language texts (thanks to Milan Cvijanovic).
- Fixed reallocating memory in the "pictures" plugin (reported by Paul Menzel, with
input from Oliver Endriss).
- Fixed reallocating memory in cTsToPes::PutTs() (suggested by Oliver Endriss).
- Now checking the result of all realloc() calls.
- Fixed setting up the 'Recordings' menu in case there are several recordings
with exactly the same name (reported by Marcus Hilbrich).
- Setting the audio type of language descriptors to 0x00 in the PAT/PMT generator
(thanks to Anssi Hannula).
- Changed the compiler optimization flag to -O3, which gives quite a performance
boost in the AlphaBlend() function.
- While replaying, the editing marks are now updated every 10 seconds (based on a
patch from Manuel Reimer).
- Now reducing the thread and I/O priority cCuttingThread::Action() to make the
foreground process more responsive (suggested by Frank Neumann).
- Removed checking for minimum line length of 21 characters in the LIRC receiver code
(reported by Gerald Dachs).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Now storing the original display size when handling DVB subtitles (thanks to
Reinhard Nissl).
- The original display size of subtitles is now used to scale them properly when
displaying them on an HD OSD.
2011-04-17: Version 1.7.18
- Changed -O2 to -O3 in Make.config.template (reported by Matti Lehtim<69>ki).
- Added a missing 'default' case in cPixmapMemory::DrawEllipse().
- Fixed some direct comparisons of double values.
- Fixed detecting frames on channels that broadcast with separate "fields" instead
of complete frames.
- Made updating the editing marks during replay react faster in case the marks
file has just been written (with a patch from Udo Richter).
- Fixed horizontal scaling of subtitles (reported by Reinhard Nissl).
- Stripped the note "The data returned by this function is only used for informational
purposes (if any)" from the description of cDevice::GetVideoSize(). The VideoAspect
is now used to properly scale subtitles.
- Fixed cUnbufferedFile::Seek() in case it is compiled without USE_FADVISE (thanks
to Juergen Lock).
- Fixed the Language header of the Serbian translation file (thanks to Ville Skytt<74>).
- Added anti-aliasing when upscaling bitmaps, which improves the display of SD subtitles
when replayed on an HD OSD (thanks to Reinhard Nissl for his help in debugging).
- Renamed cBitmap::Scale() to Scaled(), because it doesn't modify the bitmap itself,
but rather returns a scaled copy.
- Fixed the description of cReceiver in PLUGINS.html, regarding detaching a receiver
from its device before deleting it (reported by Winfried K<>hler). This change in
behavior was introduced in version 1.5.7.
- Fixed scaling subtitles in case the OSD size is exactly the same as the display
size of the subtitles.
- Added a missing initialization to sDvbSpuRect (reported by Sergiu Dotenco).
- Replaced "%lld" and "%llX" print format specifiers with "PRId64" and "PRIX64" to
avoid compiler warnings with gcc 4.5.2 (thanks to Sergiu Dotenco).
On a personal note: I find it a step in the totally wrong direction that there
have been macros introduced to work around this problem in the first place. There
should have been "real" format specifiers defined that address this. These macros
are nothing but an ugly workaround.
- Added Cancel(3) to ~cTrueColorDemo() in the "osddemo" plugin (thanks to Reinhard Nissl).
- Added a missing font deletion in cTrueColorDemo::Action() in the "osddemo" plugin
(thanks to Reinhard Nissl).
- Fixed a buffer overflow in cFont::Bidi() (thanks to Reinhard Nissl).
- Added HD stream content identifiers to vdr.5 (thanks to Christoph Haubrich).
- Made cRecordingInfo::Read(FILE *f) private to avoid calls to it from outside
cRecordingInfo or cRecording (reported by Mika Laitio).
- The dvbhddevice plugin is now part of the VDR distribution archive (thanks to
Andreas Regel).
- Removed an obsolete local variable in dvbsdffosd.c (thanks to Paul Menzel).
- Fixed a possible NULL pointer dereference in osddemo.c (reported by Paul Menzel).
- Now using pkg-config to get fribidi, freetype and fontconfig cflags and libs (thanks
to Ville Skytt<74>).
- The Makefile now also installs the include files (thanks to Ville Skytt<74>).
- Added handling of "ANSI/SCTE 57" descriptors (thanks to Rolf Ahrenberg).
- Avoiding an unnecessary call to Recordings.ResetResume() (thanks to Reinhard
Nissl).
2011-06-19: Version 1.7.19
- Fixed cString's operator=(const char *String) in case the given string is the
same as the existing one (thanks to Dirk Leber).
- Avoiding a gcc 4.6 compiler error in the skincurses plugin (thanks to Tobias Grimm).
- TsGetPayload() now checks if there actually is a payload in the given TS packet
(reported by Dirk Leber).
- Now sorting the source file names in the call to xgettext, to make sure the results
are not dependent on the sequence of the files.
Plugin authors may want to change the line containing the xgettext call in their
Makefile accordingly by changing "$^" to "`ls $^`".
- The primary device is now only avoided for recording if it is an old SD full
featured card. This is done through the new function cDevice::AvoidRecording().
- Subtitle PIDs are now also decrypted (thanks to Reinhard Nissl).
- Fixed a possible race condition in cDiseqc::Execute() (reported by Marco G<>benich).
The return value of cDiseqcs::Get() is now const, so plugin authors may need to
adjust their code if they use this function.
- The new functions cDevice::SignalStrength() and cDevice::SignalQuality() can be
used to determine the signal strength and quality of a given device (thanks to
Rolf Ahrenberg for some input on how to use BER and UNC values to generate a
"quality" value).
- The 'sttng' skin now displays two colored bars at the bottom of the channel display,
indicating the strength (upper bar) and quality (lower bar) of the received signal.
The number to the left of these bars indicates the actual device the current
channel is being received with.
- Fixed detecting frames in case the Picture Start Code or Access Unit Delimiter
extends over TS packet boundaries (reported by Johan Andersson).
In order to fix this, the semantics of cFrameDetector had to be changed a little.
See cRecorder::Action() and cIndexFileGenerator::Action() on how to use the new
cFrameDetector::NewPayload() function.
- The frame detector now only starts collecting PTS values after it has seen the
first I-frame, otherwise it might get MaxPtsValues values and stop analyzing
even though the incoming data is still garbage (reported by Derek Kelly).
- The info file of a recording is now only overwritten with a new fps value if
that new value is not the default value (thanks to Derek Kelly for reporting a
problem with the fps value being overwritten in case a recording was interrupted
and resumed, and the fps value could not be determined after resuming recording).
- The initial channel is now stored by the channel ID in the setup.conf file, in
order to avoid problems in case channels are reordered or deleted (reported by
Lars Bl<42>ser).
- Added support for "content identifier descriptor" and "default authority descriptor"
to 'libsi' (thanks to Dave Pickles).
2011-08-15: Version 1.7.20
- Added some missing 'const' to tChannelID (reported by Sundararaj Reel).
- The isnumber() function now checks the given pointer for NULL (thanks to Holger
Dengler).
- Now checking Setup.InitialChannel for NULL before using it (reported by
Christoph Haubrich).
- cSkins::Message() now blocks calls from background threads (thanks to Michael
Eiler for reporting a crash in such a scenario).
- Fixed the return value of the svdrpsend.pl script in case of an error (thanks to
Jonas Diemer).
- Increased MAXCAIDS to 12 (thanks to Jerome Lacarriere).
- Fixed handling DiSEqC codes (thanks to Mark Hawes for reporting the bug, and
Udo Richter for suggesting the fix).
- Added a mechanism to defer timer handling in case of problems (reported by
Frank Niederwipper).
- Fixed distortions that happened when splitting a recording into several files
(was a side effect of "Fixed detecting frames in case the Picture Start Code or
Access Unit Delimiter extends over TS packet boundaries" in version 1.7.19).
cRecorder::Action() now buffers TS packets in case the frame type is
not yet known when a new payload starts. This adds no overhead for channels
that broadcast the frame type within the first TS packet of a payload; it only
kicks in if that information is not in the first TS packet.
- Fixed handling the channelID in cMenuEditChanItem (thanks to Udo Richter).
- cStringList::Sort() can now be called with a boolean parameter that controls
case insensitive sorting (suggested by Sundararaj Reel).
- Now scanning new transponders before old ones, to make sure transponder changes
are recognized (thanks to Reinhard Nissl).
- Implemented static cIndexFile::IndexFileName().
- The length (as number of frames) of a recording's index file can now be determined
by a call to cIndexFile::GetLength() (suggested by Christoph Haubrich).
- Fixed some crashes in subtitle display (thanks to Rolf Ahrenberg).
- Made DELETENULL() thread safe (reported by Rolf Ahrenberg).
- The pic2mpg script of the 'pictures' plugin now generates HD images (thanks to
Andre Weidemann for his support in using convert/ffmpeg). The old SD version is
still available as pic2mpg-sd.
- Added a mutex to protect cOsd::Osds from simultaneous access from different threads
(reported by Rolf Ahrenberg).
- The cutter now sets the 'broken link' flag for MPEG2 TS recordings (thanks to
Oliver Endriss).
- Fixed language code entry for Portuguese.
- The new command line options --filesize (suggested by Marco G<>benich) and --split
can be used together with --edit to set the maximum video file size and turn on
splitting edited files at the editing marks. These options must be given before
--edit to have an effect.
- cTimeMs is no longer initialized to the current time if the value given to the
constructor is negative (avoids the "cTimeMs: using monotonic clock..." log message
before VDR's starting log message).
2011-09-04: Version 1.7.21
- Fixed detecting frames for channels that split frames into several payloads
(reported by Derek Kelly).
- Now initializing Setup.InitialChannel to an empty string to avoid problems in
case there is no setup.conf.
- The start time of an edited recording is now set to the time of the first
editing mark (thanks to Udo Richter).
This obsoletes the CUTTIME patch.
- Direct access to the members start, priority, lifetime, and deleted of cRecording
as well as to position and comment of cMark is now deprecated. Plugin authors
should switch to the new access functions for these members. For now the macro
__RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS is defined in recording.h, which
exposes these members, so that existing plugins will still compile. Comment out
this #define to check whether a particular plugin needs to be modified.
This #define may be removed in a future version.
- The new functions cRecording::NumFrames() and cRecording::LengthInSeconds() return
the number of frames and length (in seconds) of a recording (suggested by Steffen
Barszus).
- The subtitle PIDs are now stored in the channels.conf file as an extension to the
TPID field (thanks to Rolf Ahrenberg).
- The new function cDevice::ProvidesEIT() is used to determine whether a device can
provide EIT data and will thus be used in cEITScanner::Process() to receive EIT
data from the channels it can receive (suggested by Rolf Ahrenberg). Note that by
default it is assumed that a device can't provide EIT data, and only the builtin
cDvbDevice returns true from this function.
- The Audio and Subtitles options are now available through the Green and Yellow
keys in the Setup/DVB menu (thanks to Rolf Ahrenberg). This is mainly for remote
controls that don't have dedicated keys for these functions.
- The SVDRP command HITK now accepts multiple keys (up to 31).
- The Recordings menu now displays the length (in hours:minutes) of each recording
(thanks to Rolf Ahrenberg). Note that the "new" indicator has been moved from the
recording time to the length column. This new format is also used by the SVDRP
command LSTR, so in case you have an application that parses the LSTR output,
you will need to adjust it to the new format.
- The dvbsddevice plugin now supports the new option --outputonly, which disables
receiving on SD FF devices and uses the device only for output (thanks to Udo
Richter).
- Fixed detecting frames on radio channels (reported by Chris Mayo).
- Revoked the changes to cFrameDetector that have been introduced in version 1.7.19.
Detecting frames in case the Picture Start Code or Access Unit Delimiter
extends over TS packet boundaries is now done by locally skipping TS packets
in cFrameDetector.
2011-12-04: Version 1.7.22
- Fixed scaling subtitles in case the primary device's GetVideoSize() function doesn't
return actual values (thanks to Luca Olivetti).
- The DiSEqC codes are now copied in the call to cDiseqc::Execute().
- VDR now supports "Satellite Channel Routing" (SCR) according to EN50494 (based on
the "unicable" patch from Lars Hanisch).
Since "Unicable" is a registered trademark and stands for only one of many
implementations of SCR, the following changes have been made compared to the patch,
which need to be taken into account by people who have set up their system using
the patch:
- The 'U' parameter in the diseqc.conf file has been changed to 'S' ("Scr").
- The configuration file name has been changed from "unicable.conf" to "scr.conf".
- Updated sources.conf (thanks to Arthur Konovalov).
- The SVDRP command LSTC now also accepts channel IDs (thanks to Dominic Evans).
- Fixed handling DVB subtitles and implemented decoding textual DVB subtitles (thanks
to Rolf Ahrenberg).
- Added cap_net_raw to the capabilities that are not dropped (thanks to Dominic Evans).
- Fixed setting the start time of an edited recording (thanks to Christoph Haubrich).
- Temporarily switching free devices to transponders in order to have their running
status updated is now done by marking the devices as "occupied" for a certain
amount of time.
- The new setup options "LNB/Device n connected to sat cable" can be used to define
which DVB-S devices are connected to the same sat cable and are therefore "bonded".
This obsoletes the LNBSHARE patch. Users of the LNBSHARE patch will need to newly
set up their sat devices with the above options.
- Fixed a crash when deleting a recording while cutting it (thanks to Ville Skytt<74>).
- Fixed several spelling errors (thanks to Ville Skytt<74>).
- The new SVDRP command UPDR can be used to trigger an update of the list of
recordings (thanks to Lars Hanisch).
- Added generating a pkg-config file to the Makefile (thanks to Ville Skytt<74>).
- Removed the '.pl' suffix from all scripts (thanks to Ville Skytt<74>).
- Changed the default location for the LIRC socket to /var/run/lirc/lircd (thanks
to Ville Skytt<74>).
- Added file name and line number to LOG_ERROR_STR() (thanks to Rolf Ahrenberg).
- Replaced all calls to sleep() with cCondWait::SleepMs() (thanks to Rolf Ahrenberg).
- Fixed a crash with malformed SI data (patch from vdr-portal).
2012-01-15: Version 1.7.23
- Removed the '.pl' suffix from svdrpsend.pl (sorry, I missed that one).
- Fixed bonding more than two devices.
- Fixed handling symbolic links in cRecordings::ScanVideoDir() (reported by
Sundararaj Reel).
- Fixed a memory leak in cRecordings::ScanVideoDir() in case there are too many
link levels (reported by Sundararaj Reel).
- Removed redundant memset() in the ctor of cSatCableNumbers (triggered by
Ville Skytt<74> pointing out that the argument sequence in the call was wrong).
- Removed a redundant NULL check in cDvbSpuDecoder::setTime() (thanks to Ville Skytt<74>).
- Added HasSnr to the DEBUG_SIGNALQUALITY output in cDvbTuner::GetSignalQuality()
(triggered by Ville Skytt<74> pointing out that the variable HasSnr was unused).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added support for HbbTV to libsi (thanks to Christoph Haubrich).
- Added support for devices with more than one delivery system per frontend.
This requires a DVB driver with version 5.5 or higher that can handle the
DTV_ENUM_DELSYS call. With older drivers it will fall back to one delivery
system per frontend.
- Updated the Hungarian language texts (thanks to Istv<74>n F<>ley).
- cDvbTuner::ExecuteDiseqc() now makes sure only one tuner sends SCR commands
at any given time (reported by Frank Neumann).
- cEvent::FixEpgBugs() now replaces any newline characters in stream component
descriptions with blanks (thanks to Torsten Lang for reporting a problem with
EPG data from BSkyB's "MTV MUSIC", S28.2E-2-2010-7012).
- Fixed cDvbSubtitleConverter::SetOsdData() (thanks to Rolf Ahrenberg).
- Fixed cListBase::Move() in case From and To are equal (reported by Sundararaj
Reel).
- Added support for DVB-T2 to libsi (thanks to Rolf Ahrenberg).
- Added support for handling DVB-T2 transponders. This requires a DVB driver
with version 5.3 or higher that can handle the DTV_DVBT2_PLP_ID call (thanks
to Rolf Ahrenberg).
- Fixed cConfig::Load() for g++ version 4.7.0 (thanks to Ville Skytt<74>).
- Fixed a possible memory corruption in cTsToPes::GetPes() in case of broken
TS packets, e.g. when switching channels.
- Fixed the SVDRP command CLRE for a single channel in case there are events
that have a timer (thanks to Timo Eskola).
- BIDI support now checks at runtime whether the system runs with UTF-8 (suggested
by Torsten Lang).
- Added member functions Adapter() and Frontend() to cDvbDevice (suggested by
Rolf Ahrenberg).
- The parameters that are only used by "second generation" delivery systems (DVB-S2
and DVB-T2) are no longer written into channels.conf for "first generation"
delivery systems (DVB-S and DVB-T).
- Changed IndexToHMSF() so that it can handle negative Index values.
- Added option -N to the msgmerge call in the Makefile, because fuzzy translation
mostly resulted in useless strings.
- The new setup option "Replay/Show remaining time" can be used to switch between
showing the total length or the remaining time of the recording that is currently
replayed.
- Fixed wrongfully displaying the length of a recording in the title of the replay
progress display.
- Fixed frozen live view with device bonding in case the bonded master is used for
live viewing (reported by Uwe Scheffler).
2012-02-14: Version 1.6.0-3
- Changed cDvbDevice::GrabImage() to use V4L2
(backport from version 1.7.3, thanks to Ralf Schueler).
- Added some missing 'const' keywords to avoid compilation errors with gcc 4.4
(backport from version 1.7.8, thanks to Ralf Schueler).
- Modified cSVDRP::CmdGRAB() to avoid writing into const data
(backport from version 1.7.8, thanks to Ralf Schueler).
- Fixed cRecordings::DelByName() to avoid compilation errors with gcc 4.4
(backport from version 1.7.9, thanks to Ralf Schueler).
2012-02-19: Version 1.7.24
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed a high load in case a transponder can't be received.
- Improved the way DVB_API_VERSION is checked.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed asserting there is a live programme if the primary device is bonded with
a device that starts a recording on a different band.
- Fixed the return type of cMyDeviceHook::DeviceProvidesTransponder() in PLUGINS.html.
- Fixed a crash in a plugin using cDeviceHook when VDR ends (reported by Oliver Endriss).
- Some improvements to the Makefiles (thanks to Christian Ruppert).
- Fixed cRecording::LengthInSeconds(), which wrongfully rounded the result to full
minutes (thanks to Christoph Haubrich).
- Symbolic links are no longer resolved in cRecordings::ScanVideoDir() (thanks to
Sundararaj Reel).
- The epg.data file is now read in a separate thread to make the startup process
faster in case the file is very large (suggested by Helmut Auer).
- Fixed selecting the primary device for receiving the live viewing channel in
case it is bonded with an other device and has no receiver attached to it.
- Fixed a possible crash when canceling VDR while displaying subtitles, and the
primary device is no longer available.
- Improved handling subtitles of BBC channels.
- No longer using tabs as delimiter in the EPG bugfix log (they were garbled in the
log file).
- Added a missing '.' after the month in VPS strings.
- Added some missing 'const' to cDevice (thanks to Joachim Wilke).
- Fixed handling the PrimaryLimit when requesting a device for live viewing
(reported by Uwe Scheffler).
- Removed superfluous calls to SetVideoFormat() from device constructors. This
function is called in cDevice::SetPrimaryDevice(), anyway.
- An ongoing editing process is now canceled if either the original or the edited
version of the recording is deleted from the Recordings menu.
- The SVDRP command DELR now won't delete a recording that is currently being edited.
- Removed code stub for obsolete SVDRP command MOVT.
- The DVB device adapters/frontends are now probed by scanning the /dev/dvb directory
instead of looping through adapter/frontend numbers. This allows for "holes" in the
device numbering.
- cReadDir::Next() now skips directory entries "." and "..".
- Fixed a possible deadlock in time shift mode.
- Fixed switching into time shift mode when pausing live video (thanks to Reinhard
Nissl for helping to debug this one).
2012-03-03: Version 1.7.25
- The fps value for channels where it differs from the default is now set correctly
when pausing live video.
- Increased the average character estimate for calculating tab positions in skins,
to better suit wide fonts (reported by Rudi Hofer).
- Fixed getting the subsystem ids of DVB devices in case they have been rearranged
via udev rules.
- Added several cTimer::Set...() functions (suggested by Alexander Rieger).
- Changed the return value of cTimer::SetFile() to 'void'.
- Revoked "Fixed a possible deadlock in time shift mode" because it caused trouble with
output on vdr-xine and dxr3, and also short glitches when replaying on any output
device.
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed handling subtitle color palettes on channels where subtitles appear
"word by word" (thanks to Rolf Ahrenberg).
- Fixed upscaling cBitmaps with anti-aliasing (thanks to Rolf Ahrenberg for reporting
a problem with color palettes in subtitles).
- Fixed getting the video aspect ratio for scaling subtitles.
- Removed the "PrimaryLimit". Old "full featured" DVB cards can be run with the
--outputonly option to avoid problems with recording high bandwidth channels.
Besides, with HDTV becoming ever more popular those cards are pretty much obsolete
by now (the TT S2-6400 has no problems recording and replaying high bandwidth
channels simultaneously). And, last but not least, people using software players
won't notice this change, anyway.
- Since cReceivers can have priorities between -99 and 99, the priority
for an unused device has been changed from -1 to -100.
- If the first event in a schedule has a table id of 0x00, any incoming EIT data for
that schedule from the DVB stream will be completely ignored. This way an external
EPG source can fill the schedules with EPG data that will not be messed up with
that from the DVB data stream. Note, though, that this means VDR can not do VPS
controlled recordings with such events!
- Added some typecasts to silence gcc compiler warnings (thanks to Rolf Ahrenberg).
- Fixed handling overlapping timers in case a VPS timer with higher priority needs
to interrupt a timer with lower priority.
- The code for the RCU remote control unit has been moved into a separate plugin
named "rcu".
The REMOTE=RCU option in the 'make' call for VDR is now obsolete.
The command line option --rcu is now obsolete. Use -Prcu instead. If you have
used --rcu with a device path, use -P"rcu -d<device>".
- Added support for automatically selecting subtitles when playing old PES
recordings made with the subtitles plugin (thanks to Anssi Hannula).
- Revised priority handling to allow receivers with a priority that is lower than
that of live viewing (with suggestions from Frank Schmirler):
+ An idle device (one that is not used for live viewing and has no receiver
attached to it) now has priority IDLEPRIORITY (-100).
+ An unused CAM slot now has priority IDLEPRIORITY.
+ The default priority of a cReceiver is now MINPRIORITY (-99).
+ A device that is used only for live viewing (no matter whether it's in Transfer
Mode or real live mode) now has priority TRANSFERPRIORITY (-1).
+ The function cDevice::Receiving() now returns true if there is any receiver
attached to the device. Its boolean parameter has no meaning any more.
+ The default value for the Priority parameter of the function cDevice::ProvidesChannel()
has been changed to IDLEPRIORITY.
- Added a Query parameter to cDevice::GetDevice(), so that devices can be queried
without side effects when zapping.
- Replaced min(max()) calls with the new function constrain().
- Fixed handling OSD color button texts in case a menu item has texts of its own
(reported by Rolf Ahrenberg). If a plugin creates derived cMenuEditItems that set
color button texts, these should not set the texts directly by calling
cSkinDisplay::Current()->SetButtons(), but rather call the new member function
cMenuEditItem::SetHelp().
- Moved the call to cStatus::MsgChannelSwitch(this, 0) to the beginning of
cDevice::SetChannel(), so that any receivers that have been attached to the
device by plugins may be detached before the final call to GetDevice().
This actually reverts "Only calling cStatus::MsgChannelSwitch() if a channel
is actually going to be switched or has actually been switched successfully"
which was made in version 1.1.10, so please report if this has any unwanted
side effects.
2012-03-10: Version 1.7.26
- Now checking for NULL in cOsd::AddPixmap() (suggested by Christoph Haubrich).
- Fixed the German translation of "VDR will shut down in %s minutes" (thanks to
Frank Neumann).
- The replay progress display is now turned on whenever a mark is toggled (not
only when one is set).
- Toggling a mark now restarts the timeout of the replay progress display.
- Fixed a possible race condition with the SVDRP commands CLRE and PUTE, where
EPG data from the transponder could be handled even though it shouldn't be
handled for 10 seconds.
- Added some missing member initializations in cBitmap.
- Improved displaying the play mode in the ST:TNG skin.
- Made the ST:TNG skin the default in case the user selected skin is not available.
- Improved displaying signal strength and quality in the ST:TNG skin's channel
display.
- Fixed switching devices to the transponders of VPS recordings in case there
are only bonded devices. The cDevice's "avoid device" mechanism has been replaced
by using "occupied".
- Fixed selecting devices for the EPG scan in case the primary device is bonded
with an other one.
- Removed the calls to EITScanner.UsesDevice(this) from dvb[hs]ddevice.c, because
the code following these calls is only executed if LiveView is true, which is
never the case when the EITScanner switches to a channel.
- Removed the obsolete function cEITScanner::UsesDevice(). If a plugin has used this
function to find out whether a call to its cStatus::ChannelSwitch() function was
due to a live channel switch, it can use that function's new parameter LiveView.
Any plugins that implement cStatus::ChannelSwitch() need to add the parameter
'bool LiveView' to that function.
- Fixed parsing channel data in case the audio pid is 0. On channels that only
broadcast Dolby Digital audio there were sometimes log entries like
"changing pids of channel ... from ... to ..." with no apparent difference
between the old and new set of pids.
- Fixed checking pids in case a channel has only Dolby Digital audio.
- The Green button in the "Edit timer" menu can now be used to toggle between single
shot and repeating timers. This is the same as pressing '0' when the "Day" field
is selected, but it works at any time (and is more obvious).
- Revoked "If the first event in a schedule has a table id of 0x00, any incoming EIT data for
that schedule from the DVB stream will be completely ignored".
- Added a new plugin interface for implementing EPG handlers.
+ A plugin can implement an EPG handler by creating an object derived from
cEpgHandler and implementing the necessary member functions.
+ The special handling of events with table id 0x00 has been dropped.
For backwards compatibility EPG events with table ids lower than 0x4E will
be treated as if they had a table id of 0x4E, and the new plugin 'epgtableid0'
can be used to have them handled like in previous versions.
+ The default table id for a newly created cEvent has been changed to 0xFF,
which is higher than any normal table id that is broadcast in the EIT data.
See PLUGINS.html, section "Electronic Program Guide" for more information.
2012-03-25: Version 1.7.27
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Changed the Green button in the "Edit timer" menu from "Once" to "Single"
(suggested by Rolf Ahrenberg).
- Fixed some typos in HISTORY and CONTRIBUTORS (thanks to Ville Skytt<74>).
- The channel name column in the "What's on now/next" menu now adjusts its width
to display the full short name of each channel (suggested by Dominic Evans).
- Dropped the meanwhile obsolete script 'i18n-to-gettext'.
- Removed the obsolete function cPlugin::RegisterI18n().
- Removed the obsolete typedef tI18nPhrase.
- Adapted menu column widths of 'skincurses' to the wider HD OSD sizes.
- Deactivated definition of __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS (recording.h)
and LEGACY_CRECEIVER (receiver.h) to trigger an error for any plugin that still
uses the respective code. You can reactivate these to quickly make your plugin
compile again, but beware that these code parts will be removed in one of the next
versions.
- Made the "overloaded-virtual" warning an error to detect hidden overloaded
virtual functions (thanks to Anssi Hannula for pointing out -Werror=...).
Plugin authors may want to change -Woverloaded-virtual to -Werror=overloaded-virtual
in their Makefiles.
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Improved fast forwarding to the end of a timeshift recording.
- The new function cDevice::DeviceName() returns a string identifying the name of
the given device.
- When toggling a timer between "Single" and "Repeating", the previous setting is now
retained in case the user toggles back to the original value.
- When estimating the remaining disk space (in hours), the average data rate of all
existing recordings is now taken into account. If this value can't be determined,
the previous value of 25.75 MB/min is taken.
- No longer using GetFont() (which is not thread safe) in the 'osddemo' plugin.
- No longer using GetFont() (which is not thread safe) in cSubtitleRegion::UpdateTextData().
- Fixed a memory leak in cSubtitleRegion::UpdateTextData().
- Moved setting LC_NUMERIC further up to make sure any floating point numbers use a
decimal point (suggested by Tobias Grimm).
- Added missing channel locking to cEIT.
- Fixed reduced bpp support for DVB subtitles (thanks to Rolf Ahrenberg).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Reverted some improvements to Make.config.template (thanks to Christian Ruppert).
- Fixed handling IDLEPRIORITY in cDvbDevice::ProvidesChannel() (thanks to Frank
Schmirler).
2012-06-03: Version 1.7.28
- Fixed cPixmapMemory::DrawEllipse() for quadrants -1 and -4.
- Fixed getting the maximum short channel name length in case there are no short names
at all (reported by Derek Kelly).
- The new function cDevice::DeviceType() returns a string identifying the type of
the given device.
- Now limiting the number of characters of a channel's (short) name to 16 in the
schedules menus, to keep that column from getting overly wide in case there is
a channel with a very long name that has no short name.
- Fixed EPG scan on systems with only a single DVB device that use software output
(reported by Juergen Lock).
- Skins can now inquire the menu category for which their cSkinDisplayMenu is currently
being used. This can be done either through a call to cSkinDisplayMenu::MenuCategory()
or by reimplementing cSkinDisplayMenu::SetMenuCategory(). This information allows a
skin to use special icons or decorations for the various types of menus in VDR.
- The new setup option "DVB/Standard compliance" can be used to switch between different
variations of the DVB standard (thanks to Rolf Ahrenberg). Currently there is "DVB"
(for the original DVB standard) and "ANSI/SCTE", which is used to properly handle
certain private stream types.
- The disk usage is no longer automatically added to the title of the main and
"Recordings" menus. This has always been a mekeshift solution and it is now up
to the individual skin if, where and how it wants to display this information.
A skin can use the new cVideoDiskUsage class to implement such a display. For
compatibility, the default skins "Classic VDR", "ST:TNG Panels" and "Text mode"
(i.e. curses) have been changed to behave like before. Other skins may want to
display the disk usage in totally different ways.
- A cOsdMenu can now handle skins that display different numbers of items in the
various menu categories.
- OSD and skin are now reinitialized after a plugin setup page has been confirmed,
to have them react immediately in case any change to a plugin's setup parameter
has an effect on the OSD.
- The Timers list is now marked as modified whenever a recording starts or ends.
- Fixed cDevice::StillPicture(), making sure it doesn't call the derived class's
function if no buffer has been allocated (reported by Marcus Roscher).
- Fixed the SVDRP command UPDR, which didn't update the global recordings list
(reported by Lars Hanisch).
- cControl::Control() now has an additional boolean parameter, which can be set to
true to get the current player control even if it is hidden.
- The new functions cControl::GetRecording() and cControl::GetHeader() can be used
to retrieve information about what the current player is playing.
- Fixed a possible high CPU load when pausing replay (thanks to Reinhard Nissl).
- Fixed character comparisons in cSubtitleObject::DecodeCharacterString() (reported
by Reinhard Mantey).
- Renamed the function cString::sprintf(const char *fmt, va_list &ap) to vsprintf(),
because it might inadvertently be called with a 'char *' as the second argument on
some compilers and cause a crash (reported by Sundararaj Reel).
- Removed the "bondedMasterFailed" mechanism from cDvbTuner, because it caused
problems with the EPG scan in case a transponder is not receivable in a setup with
bonded devices (reported by Michael Schneider).
- Making sure setup strings don't contain any newline characters (thanks to Joachim
Wilke).
- The new member function cSkinDisplayReplay::SetRecording() allows a skin to display
more information about the currently played recording.
- Fixed a mismatched 'delete' in cSchedules::SetEpgDataFileName() (thanks to Reinhard
Mantey).
- The DrawText() functions of the OSD now accept the new alignment flag taBorder,
which triggers keeping a proper distance from the edge that taLeft or taRight
aligns to.
- Fixed checking for UTF-8 support in cFont::Bidi() (reported by Torsten Lang).
- If a recording has no info file, the 'title' of the recording's info is now set
to the recording's name.
- cVector::Clear() now reinitializes any previously used members.
- Fixed resetting CAMs (thanks to Marco Skambraks).
- The new function RgbShade() (include osd.h) can be used to generate a brighter or
darker version of a given color.
- The new class cSortedTimers can be used to quickly get a list of all timers, sorted
by their start time.
- The new skin "LCARS" is an enhanced version of the "ST:TNG" skin (which is still
there in its original layout, for those who don't like the LCARS skin, or can't use
it due to OSD limitations). The LCARS skin utilizes the new "menu category" feature
to display additional information on the main menu page. It shows upcoming timers
and the system's devices, as well as which device is recording which timers. The
upper pane of the main menu displays the programme data in live and replay mode,
and a progress bar. An indicator on the right side of the device list shows which
device is currently used for live viewing, and whether it is in transfer mode.
The individual device displays show the device number, the device type, which CAM
(if any ) is currently assigned to the device, and the signal strength and quality.
On the left side of the OSD there is a permanent display of the current date and
time, the disk usage and the system load.
"LCARS" is the new default skin of VDR. It requires at least a 4bpp (16 color) full
screen OSD, but you can still operate it if your OSD can handle only fewer colors
(in which case you may want to switch to the "ST:TNG" or "Classic VDR" skin).
- Finally removed the code marked with __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS
and LEGACY_CRECEIVER.
- Now making sure that the "small font" is never larger than the "osd font".
- Fixed font handling with fontconfig 2.9.0 or newer (thanks to Joerg Bornkessel).
- Extended the interface to the script that gets called for recordings, so that in
the "edited" case it also provides the name of the original recording (thanks to
Christian Richter).
- Added DeleteEvent() to the EPG handler interface, so that an EPG handler can trigger
deleting of an event (thanks to Christian Kaiser).
- Speeded up opening menus on systems with many (several thousands of) recordings, by
caching the information whether a recording is stored on the video directory file
system within the cRecording data (based on a patch from Torsten Lang).
2012-07-14: Version 1.7.29
- Added a missing template specification to the c'tor of cSortedTimers (thanks to Udo
Richter).
- Fixed the background color of the Transfer Mode indicator bitmap in the LCARS skin.
- The LCARS skin now only displays devices that can actually receive channels, leaving
out, for instance, pure replay devices (suggested by Reinhard Nissl).
- Now scaling down the Transfer Mode indicator bitmap in the LCARS skin in case it
doesn't fit with the selected font size (reported by Reinhard Nissl).
- Fixed making LCARS the default skin.
- Adjusted the default values for OSD and font sizes to better fit HDTV.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed the call to ChannelString() in cSkinLCARSDisplayChannel::SetChannel() (thanks
to Rolf Ahrenberg).
- Removed DeleteEvent() from the EPG handler interface (turned out not to be useful)
and replaced it with HandledExternally() (thanks to J<>rg Wendel).
- Added SetComponents() to the EPG handler interface (thanks to Dirk Heiser).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Changed the button colors in the LCARS skin to better fit with the rest of the theme.
- Removed the gap from the main menu buttons in the LCARS skin.
- Fixed some copy&paste errors in PLUGINS.html (thanks to Winfried K<>hler).
- The LCARS skin's main menu now only displays timers that are actually activated.
- Within the "Recordings" menu, pressing the '0' key now toggles sorting between
"by time" and "by name". The selected sort mode is stored separately for each
folder (provided you have write access to that folder).
If a folder is newly created by a repeating timer, the sort mode for that
folder is initially set to "by time".
Note that in previous versions the default sort order of the top level video
directory was "by name" and all subdirectories were sorted "by time". Now the
default sort order for all directories is "by name", so if you have an existing
folder that shall be sorted "by time", press the '0' key once to achieve this.
- Fixed several spelling errors (thanks to Ville Skytt<74>).
- Fixed handling recording with more than two bonded devices.
- Fixed the type of MBperMinute in cVideoDiskUsage::HasChanged() (thanks to Andreas
Mair).
- Setting the "broken link" or "TEI" flags when cutting recordings is now suppressed
if the editing point merges two seamlessly fitting parts of the same stream (thanks
to Torsten Lang).
- Fixed displaying messages in the LCARS skin.
- Fixed checking for a visible live programme in case a menu or the channel display
is currently open.
- Changed some of the colors in the LCARS skin (you may need to delete the file
lcars-default.theme from your themes directory to see these changes).
- The new setup option "Miscellaneous/Show channel names with source" can be used to
turn on adding the source character to channel names whenever they are displayed
(suggested by Ludi Kaleni).
2012-09-09: Version 1.7.30
- Fixed sorting recordings in the top level video directory.
- Fixed handling control characters in SI data in case of UTF-8 encoded strings
(thanks to Mehdi Karamnejad for reporting a problem with garbled UTF-8 EPG data
and helping to debug it).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- When checking whether a video directory is empty, file names that start with a
dot ('.') are now ignored and will be implicitly removed if the directory contains
no other files. This fixes the leftover ".sort" files that were introduced in
version 1.7.29.
- Added IsUpdate() to the EPG handler interface (thanks to J<>rg Wendel).
- Fixed detecting transfer mode on full featured DVB cards (thanks to Stefan Huelswitt
for reporting a problem with updating CA descriptors in such cases).
- Fixed a race condition when zapping in transfer mode (reported by Reinhard Nissl).
This involves a slight change in the semantics of the cReceiver::Activate() function,
which is now called with 'false' *after* the receiver has been detached from the
device.
- The new function cDevice::ReadFilter() can be used by devices to implement their
own way of retrieving section filter data (thanks to Deti Fliegl).
- The new function cDevice::HasInternalCam() can be implemented by devices that
provide encrypted channels in an already decrypted form, without requiring explicit
handling of a CAM (thanks to Anssi Hannula).
- VDR can now be built according to the FHS ("File system Hierarchy Standard") by
activating the line
#USEFHS = 1
in a copy of the file Make.config.template (thanks to Dennis Bendlin, as well as
Christopher Reimer and Udo Richter for contributing to the patch).
- By default (without FHS support) the config directory is now set to the value
given in the -v option if only -v and no -c is given.
- Fixed a long delay at the end when replaying a recording that has stopped recording
less than an hour ago (typically time shift mode or a freshly edited recording).
- Fixed getting the file size and number of frames of ongoing recordings (only the
timestamp of the recording's directory was checked, while it should have been that
of the index file).
- Fixed sluggish response when manipulating editing marks while a cutting thread
is running (reported by Torsten Lang).
- The new setup options "OSD/Color key [0123]" can be used to adjust the sequence
of the color buttons displayed in the menus to that of the color keys on your
remote control (based on a patch from Oliver Schinagl).
Authors of plugins that implement skins may want to adapt their SetButtons()
function in order to make use of this new feature. See, for instance, the function
cSkinClassicDisplayMenu::SetButtons() in skinclassic.c for details.
2012-09-30: Version 1.7.31
- If regenerating an index file fails and no data is written to the file, VDR now
reports this error and removes the empty index file.
- The setup parameter "Recording/Instant rec. time (min)" can now be set to '0',
which means to record only the currently running event (based on a patch from Matti
Lehtim<69>ki).
- Decreased the ring buffer put/get trigger sizes from 1/3 to 1/10.
- The script given to VDR with the '-r' option is now also called whenever a
recording is deleted (thanks to Alexander Wenzel).
- Improved detecting frames in H.264 video (reported by Andrey Pridvorov).
- cPatPmtParser::ParsePmt() now also recognizes stream type 0x81 as "AC3", so that
recordings that have been converted from the old PES format to TS can be played
(suggested by Jens Vogel).
- Fixed a leftover frame counter in the LCARS skin's replay display after jumping to
an editing mark and resuming replay.
- The new class cIoThrottle is used to allow I/O intense threads to temporarily
suspend their activities in case buffers run full (suggested by Torsten Lang).
Currently the cutter thread is suspended if the TS or Recorder buffer use more
than 50% of their capacity. Plugin authors may want to participate in this
mechanism if they use intense background I/O.
- Increased the size of the TS buffer to 5MB and that of the Recorder buffer to
20MB to better handle HD recordings (suggested by Torsten Lang).
- Moved cleaning up the EPG data and writing the epg.data file into a separate
thread to avoid sluggish response to user input on slow systems (based on a patch from
S<>ren Moch).
- Fixed sorting folders before recordings in case of UTF-8 (thanks to S<>ren Moch).
- Reactivated stripping control characters from EPG texts and adapted it to UTF-8.
- Added missing decrementing of 'len' in libsi/si.c's String::decodeText() functions.
- When checking whether a video directory is empty, file names that start with a
dot ('.') are no longer automatically ignored and implicitly removed if the directory
contains no other files. Instead, RemoveEmptyDirectories() now has an additional
parameter that can be given a list of files that shall be ignored when considering
whether a directory is empty. This allows users to continue to use files such as
".keep" to prevent a directory from being deleted when it is empty. Currently the
only file name that is ignored is ".sort".
2012-11-18: Version 1.7.32
- Pressing the Play key during normal live viewing mode now opens the Recordings menu
if there is no "last viewed" recording (thanks to Alexander Wenzel).
The same behavior has been implemented for the Blue key in the main menu.
- cIoThrottle::Engaged() is now also checked in cRemoveDeletedRecordingsThread::Action(),
to suspend removing deleted recordings in case this is necessary to make room for
new, ongoing recordings (suggested by Udo Richter).
- The cThread constructor now has an additional boolean parameter that can be set to
true to have this thread run at a lower priority. Plugin authors that use low
priority threads may want to use this instead of the calls to SetPriority(19) and
SetIOPriority(7). The priority of a thread ("low" or "high") is now logged when the
thread starts.
- Changed DTV_DVBT2_PLP_ID to DTV_STREAM_ID in dvbdevice.c to adapt to an incompatible
change in DVB API 5.8 (reported by Derek Kelly).
Removed the meanwhile obsolete definition of FE_CAN_TURBO_FEC.
- Fixed some compiler warnings under gcc version 4.7.1.
- Fixed setting the video format in the dvbhdffdevice (thanks to Torsten Lang).
- Fixed 'make install' to not overwrite existing configuration files (thanks to Peter
M<>nster).
- Added including the Make.global and Make.config files to the dvbdhffdevice's
libhdffcmd/Makefile.
- Added options to build a 32-bit version of VDR on a 64-bit machine to
Make.config.template.
- Fixed handling VPS timers in case the running status of an event goes to '1' (not
running) and later goes to '4' (running).
- If a frame position in the 'marks' file of a recording doesn't point to an I-frame,
it will now be shifted towards the next I-frame, either up or down, whichever is
closer (suggested by Udo Richter).
- Fixed a possible memory leak in SI::StructureLoop::getNextAsPointer() (reported by
Sundararaj Reel).
- Fixed handling timers in case an event is modified and "phased out" while the timer
is recording.
- Improved frame detection by parsing just far enough into the H.264 NAL units to get
the necessary information about frames and slices.
- The initial syncing of the frame detector is now done immediately after the first
complete GOP has been seen. This makes recordings and especially pausing live video
start up to twice as fast as before.
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Fixed handling the very last entry in a recording index.
- The return type of cMarks::Add() has been changed to void, since due to the sorting
of the list of marks the returned pointer might have pointed to a totally different
mark. Besides, the return value was never actually used.
- Improved editing TS recordings by
+ stripping dangling TS packets from the beginning of a sequence
+ including pending TS packets at the end of a sequence
+ fixing all timestamps and continuity counters
+ generating editing marks for the edited version in such a way that each cutting
point is marked by an "end" and "begin" mark with the same offset
+ no longer generating an editing mark at the "end" of the edited recording (this
was actually generated at the beginning of the last GOP, so that a subsequent
edit would have cut off the last GOP)
+ no longer generating any editing marks if the edited recording results in just
one single sequence
+ ignoring pairs of editing marks that are placed at exactly the same position of
a recording when actually cutting the recording
+ not doing anything if the editing marks in place would result in the edited
version being the same as the original recording
- Editing marks can now be placed directly on top of each other, in which case they
simply mark a position, but have no effect on the actual cutting process.
- When positioned at an offset where two (or more) editing marks are placed on top
of each other, the '4' key moves the first one of them to the left, while the '6'
key moves the last one of them to the right. The '7' and '9' keys handle multiple
marks at the same place as if it were one single mark.
- Modified editing marks are now written to disk whenever the replay progress display
gets hidden (thanks to Christoph Haubrich).
2012-12-08: Version 1.7.33
- In order to be able to play TS recordings from other sources, in which there is
more than one PMT PID in the PAT, 'int cPatPmtParser::PmtPid(void)' has been changed
to 'bool cPatPmtParser::IsPmtPid(int Pid)'.
- Fixed learning remote control keys with the LCARS skin.
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
- Fixed getting only non-video packets in cCuttingThread::GetPendingPackets() (reported
by S<>ren Moch).
- Changed all occurrences of MPEG4 to H264 (pointed out by S<>ren Moch).
- Fixed getting the number of editing sequences in case the last sequence has no actual
end mark.
- The cutter now only increments the TS continuity counter for packets that have a
payload (pointed out by S<>ren Moch).
- Fixed adjusting the DTS values in the cutter, to compensate for dropped B-frames
(pointed out by S<>ren Moch).
- Fixed a typo in skins.h (thanks to Lars Hanisch).
- Simplified calculating the PTS offset in cPtsFixer::Fix() and fixed the overflow
handling of PCR values (thanks to S<>ren Moch).
- Fixed calling iconv_close() only with a valid iconv_t value (thanks to Juergen Lock).
- Fixed faulty opening of the Recordings menu when pressing the Play key during normal
live viewing mode in case there is a "last viewed" recording.
- Fixed some #include statements in plugins to use <vdr/...> instead of "vdr/..."
(thanks to Lars Hanisch).
- Fixed some spellings in osd.h and svdrp.c (thanks to Ville Skytt<74>).
- Fixed handling lowercase polarization characters in channel definitions if no DiSEqC
is used (reported by Mike Hay, actual bug pointed out by Stefan Huelswitt).
- Synchronizing system time to the transponder time is now done using adjtime() in order
to avoid discontinuities (suggested by Manuel Reimer). If the time difference is more
than 10 seconds, stime() is still used to do the initial sync.
- The '7' and '9' keys now jump to the very beginning or end, respectively, of the
recording, even if there is no mark set at that point (following a request from
Andre Weidemann).
- Now always setting the TDT EIT filter, because otherwise when turning on using the
transponder time in the Setup menu, it would only be used after the next restart
of VDR (thanks to Sundararaj Reel).
- The new functions cDevice::CanScaleVideo() and cDevice::ScaleVideo() can be used by
derived output devices to implement scaling the video to a given size and location
(based on a suggestion by Lucian Muresan).
- The SVDRP command HITK now discards any keys if the remote control is currently
turned off (thanks to Alexander Hans).
- The new remote control key "Play/Pause" can be used with remote controls that don't
have separate keys for "Play" and "Pause", but rather have a single key for both
functions (thanks to Stefan Hofmann for suggesting to implement support for such
remote controls).
- The new option "Setup/Replay/Pause on mark set" can be used to activate automatically
going into Pause mode if an editing mark is set during replay (suggested by Andre
Weidemann).
- When regenerating the index of a recording, the frame rate stored in the info file
is now automatically fixed if it differs from the value detected by the frame
detector.
- Fixed creating the edited version directory if a relative file name is given in
the call to 'vdr --edit' (the '/video' part was stripped from the given file name
even if it wasn't there).
- The new option "Setup/Replay/Progress display time" can be used to activate
automatically displaying the progress display whenever replay of a recording is
started (suggested by Stefan Blochberger).
- Changed reading and writing of floating point numbers into configuration files to
make it independent of the decimal point used in the current locale. All calls to
atof() have been replaced with the new function atod(), which makes sure the string
representation of a floating point number using a '.' as decimal point will be
handled correctly, even if the locale in use expects a ',' as the decimal point.
Plugins that read floating point numbers from their own configuration files will
also need to use atod() for this, or use a method of their own (this is not necessary
if values are stored in VDR's setup.conf file, because VDR takes care of this).
The reason for these changes is that floating point numbers presented to the user
shall be displayed in the way defined by the current locale (suggested by Stefan
Blochberger).
If you use plugins that store floating point values in configuration files of their
own and have not yet been adapted to this change, you should set
export LC_NUMERIC=C
before running VDR. Otherwise your plugin's configuration data may not be read or
written correctly.
- The new functions SetItemEvent(), SetItemTimer(), SetItemChannel() and
SetItemRecording() of the cSkinDisplayMenu class can be reimplemented by skin
plugins to display these items in a more elaborate way than just a simple line of
text.
2012-12-24: Version 1.7.34
- Changed the type of the TimerMatch parameter in cSkinDisplayMenu::SetItemEvent() from
'int' to 'eTimerEvent' (reported by Christoph Haubrich).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Fixed cOsd::GetBitmap() to always return NULL if a non-exising area is requested.
- Added several missing "`ls $^`" in the calls to xgettext in plugin Makefiles and the
"newplugin" script.
- Fixed setting the --package-name and --package-version options in the calls to
xgettext in several plugin Makefiles.
- Added "-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE" to the
DEFINES in the Makefile (somehow got lost from Make.config.template in version 1.7.13).
- Removed some redundancy in the Makefile/Make.global/Make.config mechanism (suggested
by Christopher Reimer). The file Make.global is no longer used, and plugin Makefiles
don't include the file Make.config any more. Instead they now retrieve all necessary
information through calls to pkg-config.
- The plugin Makefiles now have a separate 'install' target (suggested by Christopher
Reimer). In order to still allow the normal building of VDR (with all plugins in its
./PLUGINS/src subdirectory, the plugin libraries in ./PLUGINS/lib and the i18n files in
./locale) the VDR Makefile checks the settings of LIBDIR and LOCDIR when building the
plugins from within the VDR source directory. If these macros have their default values,
then the 'install' targets of the plugins' Makefiles are called. Otherwise the 'all'
targets are called and the plugins are merely built, and will have to be installed by a
call to 'make install-plugins'. This now also allows a user to copy a plugin source to
any directory, change into that directory and do 'make' and 'make install' to have the
plugin installed to wherever the local installation of VDR expects them.
- Plugin Makefiles now use DESTDIR and the 'install' program (thanks to Christopher Reimer).
- Due to the changes to the plugin Makefiles, existing plugins will not build with this
version of VDR any more. You can either use the new 'newplugin' script to generate a
dummy plugin directory and use the Makefile from there (adapting it to your particular
plugin), or apply the patch from
ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.33-pluginmakefile.diff
to your Makefile to make the necessary changes (see comments in that file for details).
- Added the new menu categories mcChannelEdit, mcTimerEdit, mcScheduleNow, mcScheduleNext,
mcRecordingInfo, mcPluginSetup, mcSetupOsd, mcSetupEpg, mcSetupDvb, mcSetupLnb,
mcSetupCam, mcSetupRecord, mcSetupReplay, mcSetupMisc and mcSetupPlugins.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed replay stuttering close to the end of an ongoing recording (reported by Andreas
Regel).
- Fixed cIndexFile::GetNextIFrame() to properly handle the case where the very last frame
is an I-frame (which normally shouldn't occur).
- Fixed replaying ongoing recordings from other VDR instances.
2012-12-30: Version 1.7.35
- Making sure that plugins include the VDR header files from the actual VDR source
directory when doing "make plugins" (suggested by Christoper Reimer).
- Increased the version numbers of all plugins to reflect the recent Makefile changes.
- Removed the lines
ifdef DVBDIR
INCLUDES += -I$(DVBDIR)/include
endif
from the file Make.config.template. If set, DVBDIR is now conveyed to plugins via
the CFLAGS.
- Removed some redundancy from Make.config.template.
- Changed "==" to "=" in the Makefile to make it POSIX style.
- Added MANDIR to the vdr.pc file, so that plugins that need it can retrieve it via
MANDIR = $(DESTDIR)$(call PKGCFG,mandir).
- Using relative paths again when building plugins locally (by request of Udo Richter).
- Plugin Makefiles can now include a configuration file for compile time parameters
(requested by Reinhard Nissl). The actual name of this file can be defined in
Make.config (see "PLGCFG" in Make.config.template), and existing plugin Makefiles
that have compile time parameters should add the lines
PLGCFG = $(call PKGCFG,plgcfg)
-include $(PLGCFG)
accordingly (see the "newplugin" script for details).
- Re-enabled building plugins that still use pre-version-1.7.34 Makefiles.
The file Make.global is present again to satisfy the "include" these Makefiles do,
but the file itself contains no settings. The VDR Makefile's "plugins" target
determines whether a particular plugin uses an old style Makefile and calls it
accordingly. Note that this only works when building plugins from within the VDR
source tree, using "make plugins" in the VDR source directory.
- Removed "include" from the DVBDIR setting in the VDR Makefile (reported by Oliver
Endriss). You may need to adjust your DVBDIR setting in Make.config, in case you
use it.
- Added maximum SNR value for PCTV Systems PCTV 73ESE (thanks to Cedric Dewijs).
2013-01-20: Version 1.7.36
- Added maximum SNR value for PCTV Systems nanoStick T2 290e (thanks to Antti
Hartikainen).
- Added a remark indicating that the coordinates of Rect in a call to
cDevice::CanScaleVideo() are in the range of the width and height returned by
GetOsdSize() (suggested by Reinhard Nissl).
- Modified the Makefiles (thanks to Christopher Reimer).
By default VDR is now built according to the FHS ("File system Hierarchy Standard"),
and a plain "make" in the VDR source directory just builds everything, but doesn't
copy it to ./PLUGINS/lib and ./locale any more. You can use a Make.config file
(copied from Make.config.template) and set the parameter LCLBLD=1 to have everything
built and installed under the VDR source tree (as was the default in previous
versions). If you already have your own Make.config file, you may want to copy the
new Make.config.template and adapt it to your needs. If you don't want VDR's data
files to be spread around your system according to the FHS, you can set the
parameter ONEDIR=1 (using Make.config) to have all files in one /video directory as
before.
- Fixed the example for cReceiver in PLUGINS.html.
- Fixed sorting recordings in case two folders have the same name, but one of them
ends in an additional digit, as in "abc" and "abc2" (reported by Andreas Mair).
- Added "repeat" function when using the keyboard to control VDR (thanks to Reinhard
Nissl).
- The SVDRP command LSTR now knows the additional parameter "path", which can be
given to get the actual file name of a recording's directory (suggested by
Stefan Stolz).
- Fixed multiple occurrences of the same directory in the recordings list in case there
are directories that only differ in non-alphanumeric characters (reported by Andreas
Mair).
- Absolute jumps when replaying a recording (via the Red key) are now only performed
if an actual value has been entered (suggested by Ulf Kiener).
- The last replayed recording is now stored in setup.conf, which allows the blue
"Resume" key in the main menu to work even after a restart of VDR.
- The SVDRP command NEWT no longer checks whether a timer with the given data already
exists (suggested by Malte Forkel).
- Implemented scaling of SPU bitmaps (thanks to Johann Friedrichs).
- Improved cutting MPEG-2 video (thanks to S<>ren Moch).
- Reduced the number of retries in cTransfer::Receive() to avoid blocking recordings
in case the primary device can't handle the current live signal.
2013-02-08: Version 1.7.37
- Now also using FindHeader() in cMpeg2Fixer::AdjTref() (pointed out by S<>ren Moch).
- Added missing template for DVBDIR to Make.config.template (reported by Derek Kelly).
- The LCARS menu now also works if the OSD has only 1bpp (two colors).
- Fixed possible garbage in the remaining time of the LCARS replay display in case the
hours change from two to one digit.
- Fixed upscaling bitmaps. The last row and column of the scaled bitmap was not filled,
which resulted in empty lines between scaled subtitles.
- Fixed a leftover line in case a two line subtitle was followed by a one line
subtitle on the dvbhddevice in "high level" OSD mode.
- Returning 0 from cDvbSdFfDevice::NumProvidedSystems() if option --outputonly is given.
- The index file is now closed after initially reading it if it is older than 3600 seconds.
- Improved responsiveness during replay when close to the recording's end.
- Fixed a leftover progress display in the LCARS main menu when replay of a recording
ends while the menu is open, and the live channel has no EPG information.
- Fixed possible audio chatter when a recording is replayed to its very end.
- Added dependency on 'i18n' to 'install-i18n' in the VDR Makefile (thanks to Tobias
Grimm).
- Changed several calls to Skins.Message() in vdr.c to Skins.QueueMessage() in order to
avoid a black screen while such a message is displayed in case the channel will be
switched (reported by Uwe Scheffler).
- Updated the Slovak language texts (thanks to Milan Hrala).
- Improved LIRC timing for repeat function.
- When pausing live video, the current audio and subtitle tracks are now retained.
- Added some notes about plugin Makefiles to PLUGINS.html.
- Avoiding an extra key press event if the repeat function kicks in when controlling
VDR via the PC keyboard.
- The new options "Setup/Miscellaneous/Remote control repeat delay" and
"Setup/Miscellaneous/Remote control repeat delta" can be used to adjust the
behavior of the remote control in case a key is held pressed down for a while, so
that the repeat function kicks in (see MANUAL).
The builtin LIRC and KBD remote controls already use these parameters. It is
recommended that plugins that implement an interface to any kind of remote controls
also use the parameters Setup.RcRepeatDelay and Setup.RcRepeatDelta for the desired
purpose, and remove any setup options they might have that serve the same purpose.
- cTimer no longer does any special "VFAT" handling to shorten directory names to 40
characters. When a string is used as a directory name for a recording, the maximum
length of the directory path, as well as the individual directory names, is now
limited to the values specified by the new command line option --dirnames (see
man vdr(1) for details). For backwards compatibility the option --vfat is still
available and has the same effect as --dirnames=250,40,1.
- The macro MaxFileName is now obsolete and may be removed in future versions. Use
NAME_MAX directly instead.
- There is no more fixed limit to the maximum number of cPixmap objects an OSD can
create. However, a particular device may still be unable to create an arbitrary
number of pixmaps, due to limited resources. So it's always a good idea to use
as few pixmaps as possible.
- Fixed formatting and removed some superfluous break statements in vdr.c's command
line option switch.
2013-02-17: Version 1.7.38
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the French OSD texts (thanks to Marc Perrudin, Bernard Jaulin and Peter
M<>nster).
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
- Fixed moving editing marks, so that they don't get overwritten with old values
through an update of the marks file.
- Removed an invalid line from channels.conf.terr (reported by Lars Hanisch).
- Fixed an unexpected k_Repeat key event after a k_Release in lirc.c.
- Fixed permissions of po/sr_SR.po (reported by Dominic Evans).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed using "Pause" and "Slow motion" near the end of a recording (replay stopped
a few seconds after the end of the recording file has been reached).
- Fixed selecting the last replayed recording in the Recordings menu in case there
are folders and plain recordings with names that differ only in non-alphanumeric
characters (reported by Andre Weidemann).
- Fixed the description of the OSD drawing functions DrawEllipse() (the values -5...-8
for the Quadrants parameter are not implemented).
- Made cOsd::DestroyPixmap() "NULL proof".
- Now deleting any previously allocated pixmaps in cOsd::SetAreas().
- Added demos of the DrawEllipse() and DrawSlope() function to the 'osddemo'
plugin (press '1' or '2', respectively).
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- The timeout for trying to switch to a valid programme is now reset immediately once
a programme has been found.
- No longer checking for EOPNOTSUPP in cDvbTuner::GetSignalQuality() to avoid breaking
this function in case the driver suddenly decides to return a different errno value
if an operation is not supported.
- Moved the definition of TIMERMACRO_TITLE and TIMERMACRO_EPISODE from recording.h to
config.h and using them to initialize Setup.NameInstantRecord (avoids having the same
information in two places).
- Fixed the return value of cOsdProvider::StoreImage() in case there is no OSD provider.
- Fixed a crash in cMenuEditChanItem::Set() when entering a channel number that
doesn't exist (reported by Mikael H<>bsch).
- Fixed displaying pending timers in "alert" mode in the LCARS skin.
- Added missing $(LDFLAGS) to the Makefile of the dvbhddevice plugin (thanks to Ville
Skytt<74>).
- Fixed some spellings in PLUGINS.html and Doxyfile (thanks to Ville Skytt<74>).
- Added '-p' to the cp command in the install-conf target of the Makefile (thanks to
Ville Skytt<74>).
- Added missing 'const' to cDevice::HasProgramme() and cDevice::HasLock().
- Fixed determining the priority of the primary device in case it is neither replaying
nor receiving a live channel (thanks to Matthias Senzel for reporting a problem with
switching back to live viewing after replay in a setup with device bonding).
- Removed all \return and \param tags from comment lines marked with "///<" for Doxygen.
There was only a rather small number of these, and I would probably always forget to
put them in place when writing future comments, so I decided to drop them entirely.
- Added Doxyfile.filter to have special characters escaped that would otherwise be
dropped by Doxygen (reported by Ville Skytt<74>).
- Using 'cat' instead of 'cp' to copy the Doxyfile to avoid problems in case Doxyfile
is write protected.
- Updated the Doxyfile with a newer version of Doxygen.
- Turned off following symlinks in the Doxyfile.
- Removed trailing whitespace.
- Expanded tabs in PLUGINS/src/dvbhddevice/setup.c.
- Some formatting fixes.
2013-03-03: Version 1.7.39
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Polish OSD texts (thanks to Marek Nazarko).
- Modified handling user inactivity in the shutdown handler to avoid a problem in case
the system time is changed after VDR has been started (thanks to Udo Richter, reported
by S<>ren Moch).
- Updated the Czech OSD texts (thanks to Ales Jurik).
- Changed the template for PLGCFG to $(CONFDIR)/plugins.mk (thanks to Ville Skytt<74>).
- Updated the Swedish OSD texts (thanks to Richard Lithvall).
- Now clearing device bondings for devices that don't provide DVB-S in the Setup/LNB
menu (reported by Juergen Lock).
- Fixed a possible deadlock in handling the tuners of bonded devices (thanks to
Juergen Lock).
- Improved working around the broken driver values for SNR in case of a "TT-budget
S2-3200" receiving DVB-S2.
- The demos in the "osddemo" plugin can now also be ended with the "Back" key.
- Fixed flashing OSD in "high level OSD" mode of the TT S2-6400 in case a menu is open
while subtitles are being displayed.
- Fixed stuttering or asynchronous audio after changing the audio track. This is done
by doing a "jump" to the current position, which clears all buffers. However, this
only works with TS recordings. With PES recordings it causes a segfault - haven't
been able to figure out why.
- Added a manual page for 'svdrpsend' (thanks to Tobias Grimm).
- Fixed immediately disappearing subtitle track menu in "high level OSD" mode of the
TT S2-6400 when selecting "No subtitles".
- Updated the French OSD texts (thanks to Bernard Jaulin).
- Updated the Dutch OSD texts (thanks to Carel Willemse).
- Removed all "fuzzy" translations from the files ar.po, hu_HU.po and sr_SR.po, because
more often than not they are just wrong.
- Now calling DeviceClear() in cTransfer::Receive() if the output device blocks, instead
of not retrying for 10 seconds (reported by Andreas Mair, with help from Oliver Endriss).
- Updated the Spanish OSD texts (thanks to Luca Olivetti).
- Updated the Hungarian language texts (thanks to Istv<74>n F<>ley).
- Changed the calls to Skins.QueueMessage() in vdr.c that are related to reporting the
status of the editing process back to Skins.Message() in order to have them appear
immediately.
- When sorting recordings by name, folders are now always at the top of the list.
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
2013-03-10: Version 1.7.40
- The "Recording info" page of the skins that come with VDR now displays the name of
the channel (if available) from which this recording was taken.
- Updated the Catalan OSD texts (thanks to Luca Olivetti).
- Updated the Spanish OSD texts (thanks to Luca Olivetti).
- Added a note about the new default sort order of recordings to the release notes of
version 1.7.29 and the UPDATE-2.0.0 file (pointed out by Wolfgang Rohdewald).
- Fixed a faulty UTF-8 character in cs_CZ.po.
- Added the system's character set to the page header in the epg2html script (pointed
out by Dimitar Petrovski).
- Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
- The new option "Setup/OSD/Always sort folders first" can be used to control whether
folders will be always at the top of the Recordings menu, or will be interspersed
with plain recordings when sorted alphabetically.
- Updated the Swedish OSD texts (thanks to Richard Lithvall).
- Updated the Chinese OSD texts (thanks to Nan Feng).
- Updated the Slovak OSD texts (thanks to Milan Hrala).
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
- Updated the Dutch OSD texts (thanks to Cedric Dewijs).
- Updated the Czech OSD texts (thanks to Ales Jurik).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Updated the French OSD texts (thanks to Dominique Plu).
- Updated the Finnish OSD texts (thanks to Matti Lehtim<69>ki).
- Updated the Arabic OSD texts (thanks to Osama Alrawab).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Renamed the "plp id" to a more general "stream id" and added support for DVB-S2
"Input Stream Identifier" (ISI) (based on a patch from Rolf Ahrenberg).
With this VDR now supports "multi streaming" on DVB-S2 and DVB-T2 transponders.
- Fixed a possible deadlock when changing the audio track while replaying a recording.
- Fixed resuming replay of PES recordings (reported by Oliver Endriss).
- Limited the Goto() call in cDvbPlayer::SetAudioTrack() to the main thread, in order
to avoid a crash when the track is automatically set from the player thread.
- The LCARS skin now calls SetAntiAliasGranularity(20, 16) in order to reserve enough
fixed colors on 8bpp displays with anti-aliasing.
- Changed the default values for the OSD size back to those before version 1.7.29,
to avoid problems with SD-FF cards in case the user switches to the "ST:TNG" or
"Classic" skin.
2013-03-16: Version 1.7.41
- Updated the Hungarian OSD texts (thanks to Istv<74>n F<>ley).
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
- Updated the Polish OSD texts (thanks to Marek Nazarko).
- Fixed using PATH_MAX and NAME_MAX (+/-1 because the first one includes the
terminating 0, while the latter doesn't).
- The 'plugins' target of the VDR Makefile now also copies files matching the wildcard
"lib$$i-*.so" (previously only "libvdr-*.so") and also descends into subdirectories
of the plugin source.
- The parameters PATH and NAME to the --dirnames command line option may now be left
empty to use the default values if only ENC shall be set (thanks to Helmut Auer for
some improvements to this change).
- Fixed a possible "Channel not available" if a recording starts on a system with
bonded devices (thanks to Siegfried Bosch).
- Fixed stopping an ongoing recording on a system with bonded devices, if a timer with
a higher priority requires a different band.
- Updated the introductory text of the vdr.1 man page.
- Added a note to the INSTALL file regarding multiple disk setup becoming deprecated
in a future version of VDR.
- When switching to a less privileged user id, VDR now sets the environment variables
HOME, USER, LOGNAME and SHELL accordingly (thanks to Manuel Reimer).
- Updated the help and man page entry about the location of the epg.data file (thanks
to Ville Skytt<74>).
- Fixed creating a new VPS timer with the SVDRP command NEWT (thanks to Johann
Friedrichs).
2013-03-23: Version 1.7.42
- Updated the Serbian OSD texts (thanks to Zoran Turalija).
- Added maximum SNR and signal strength value for TechniSat SkyStar HD2 (thanks to
Zoran Turalija).
- Renamed the language file sr_SR.po to sr_RS.po (pointed out by Zoran Turalija).
- Fixed loading the setup.conf file in case a parameter contains the '#' character
(thanks to Johann Friedrichs).
- The "Resume" button in the main menu is now only active if the respective recording
actually exists (reported by Johann Friedrichs).
- The cutter now allocates its buffers on the heap to avoid problems on systems with
limited stack space (suggested by Juergen Lock).
- Fixed formatting the channel definition example in the vdr(5) man page (thanks to
Dominic Evans).
- Updated the default channels.conf file.
2013-03-31: Version 2.0.0
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- Fixed the description of the 'M' parameter of channel definitions in vdr.5.
- Updated the French OSD texts (thanks to Dominique Plu).
- Fixed handling overlapping pending timers (reported by Matthias Senzel).
- Bumped all version numbers to 2.0.0.
- Official release.
2013-04-11: Version 2.0.1
- Fixed initializing cDevice::keepTracks.
- Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than
one character (reported by Stefan Braun).
- Added definitions for older DVB API versions, back until 5.0 (based on a patch from
Udo Richter).
- Fixed handling '/' and '~' in recording file names in case DirectoryEncoding is
used (thanks to Lars Hanisch).
- Changed cThread::SetIOPriority() from "best effort class" to "idle class" in order to
improve overall performance when an editing process is running (thanks to Jochen
Dolze).
2013-05-19: Version 2.0.2
- Fixed multiple occurrences of the same directory in the recordings list in case there
are directories that only differ in non-alphanumeric characters (was broken by
"Fixed selecting the last replayed recording in the Recordings menu in case there
are folders and plain recordings with names that differ only in non-alphanumeric
characters" in version 1.7.36).
- Fixed displaying the frame number when setting an editing mark (thanks to Thomas
G<>nther).
- Fixed no longer generating any editing marks if the edited recording results in just
one single sequence (reported by Halim Sahin).
- Fixed an error message when parsing SCR values in diseqc.conf.
- Fixed an unexpected RCS version tag in the newplugin script.
- Fixed an endless loop in the DrawEllipse() functions for very small ellipses (reported
by Stefan Braun).
- Fixed a crash in the LCARS skin's main menu in case there is no current channel
(reported by Dominique Dumont).
2013-08-25: Version 2.1.1
- Fixed initializing cDevice::keepTracks.
- Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than
one character (reported by Stefan Braun).
- Removed all "modified since version 1.6" markers from PLUGINS.html.
- Added definitions for older DVB API versions, back until 5.0 (based on a patch from
Udo Richter).
- Changed cThread::SetIOPriority() from "best effort class" to "idle class" in order to
improve overall performance when an editing process is running (thanks to Jochen
Dolze).
- Fixed handling '/' and '~' in recording file names in case DirectoryEncoding is
used (thanks to Lars Hanisch).
- Changed the sign of the satellite position value in cSource to reflect the standard
of western values being negative. The new member function cSource::Position() can be
used to retrieve the orbital position of a satellite.
- Fixed multiple occurrences of the same directory in the recordings list in case there
are directories that only differ in non-alphanumeric characters (was broken by
"Fixed selecting the last replayed recording in the Recordings menu in case there
are folders and plain recordings with names that differ only in non-alphanumeric
characters" in version 1.7.36).
- Fixed displaying the frame number when setting an editing mark (thanks to Thomas
G<>nther).
- Fixed no longer generating any editing marks if the edited recording results in just
one single sequence (reported by Halim Sahin).
- Fixed an error message when parsing SCR values in diseqc.conf.
- Fixed an unexpected RCS version tag in the newplugin script.
- Fixed an endless loop in the DrawEllipse() functions for very small ellipses (reported
by Stefan Braun).
- Fixed a crash in the LCARS skin's main menu in case there is no current channel
(reported by Dominique Dumont).
- Added basic support for positioners to control steerable satellite dishes (based on
a patch from Seppo Ingalsuo and Ales Jurik, which in turn used code from Thomas
Bergwinkl's Rotor plugin; with lots of help from Albert Danis).
+ Supports GotoN (aka "DiSEqC 1.2") and GotoX (aka "USALS").
+ The new DiSEqC command code 'P' can be used to instruct a positioner to move the
dish to the required satellite position. When a 'P' code is processed, further
execution of the remaining DiSEqC sequence (if any) is postponed until the positioner
has reached the new satellite position.
+ The new special source value of "S360E" can be used in diseqc.conf to indicate that
an entry using a positioner can move the dish to any requested position within its
range. Think of it as "full circle".
+ The devices a particular cDiseqc or cScr applies to are now stored directly in each
cDiseqc or cScr, respectively.
+ A plugin can implement a custom positioner control (see PLUGINS.html, section "Positioners").
+ The new function cSkinDisplayChannel::SetPositioner() can be implemented by skins to
show the user a progress display when the dish is being moved. The default implementation
calls SetMessage() with a string indicating the new position the dish is being moved to.
The LCARS skin shows a progress bar indicating the movement of the dish.
+ The new parameters "Site latitude", "Site longitude", "Positioner speed", and
"Positioner swing" in the "Setup/LNB" menu can be used to configure the necessary
values for a steerable dish.
+ The cDvbTuner now has a new status tsPositioning, in which it waits until a steerable
dish has reached its target position. Parsing SI data is paused until the target
position has been reached.
- The LCARS skin now shows the source value of the current channel in its channel display.
- Fixed asserting free disk space in the cutter.
- No longer trying to delete old recordings in AssertFreeDiskSpace() if the given
Priority is less than 1.
- Fixed handling LIRC events in case repeated events are lost.
- Fixed a possible crash when shutting down VDR while subtitles are being displayed
(reported by Ville Skytt<74>).
- cDevice::IsPrimaryDevice() now also checks whether the primary device actually has
a decoder and returns false otherwise. This should improve device allocation on
systems that are only used as a receiver and don't actually display anything.
- Increased the value of MAXRETRIES to 20 to reduce the probability of disturbances
in transfer mode.
- All bonded devices (except for the master) now turn off their LNB power completely
to avoid problems when receiving vertically polarized transponders (suggested by
Manfred V<>lkel and Oliver Endriss).
- Reverted the change from version 1.5.7 that made all logging go to LOG_ERR (thanks
to Christopher Reimer).
- Added Begin/EndSegmentTransfer() to the EPG handler interface (thanks to J<>rg Wendel).
- The code for distributing recordings over several video directories is now
deprecated and disabled by default.
You can re-enable this feature by removing the comment sign ('//') from the beginning
of the line
//#define DEPRECATED_DISTRIBUTED_VIDEODIR // Code enclosed with this macro is ...
in the file videodir.c. Note, though, that this can only be a temporary workaround.
This feature will be completely removed in one of the next developer versions.
Distributing the video directory over several disks was a useful feature in times
when disks were still relatively small, but it also caused serious problems in case
one of the disks failed. Nowadays hard disks come in sizes measured in terabytes,
and tools like "mhddfs" can be used to combine several disks to form one large volume.
A recommended method for a relatively safe disk setup in a VDR system is to use two
1TB (or larger) disks and use them as a RAID-1 (mirrored). That way, if one disk
fails, you can replace it without data loss.
2013-09-01: Version 2.0.3
- Fixed asserting free disk space in the cutter.
- No longer trying to delete old recordings in AssertFreeDiskSpace() if the given
Priority is less than 1.
- Fixed handling LIRC events in case repeated events are lost.
- Fixed a possible crash when shutting down VDR while subtitles are being displayed
(reported by Ville Skytt<74>).
- cDevice::IsPrimaryDevice() now also checks whether the primary device actually has
a decoder and returns false otherwise. This should improve device allocation on
systems that are only used as a receiver and don't actually display anything.
- Increased the value of MAXRETRIES to 20 to reduce the probability of disturbances
in transfer mode.
- All bonded devices (except for the master) now turn off their LNB power completely
to avoid problems when receiving vertically polarized transponders (suggested by
Manfred V<>lkel and Oliver Endriss).
- Fixed cleaning up old EPG events in case no epg data file is given (reported by
Dave Pickles).
2013-10-19: Version 2.1.2
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed displaying DVB subtitles (thanks to Rolf Ahrenberg for helping to debug and
understand subtitle page refreshes):
+ Fixed handling DVB subtitle fill region codes for 2 and 8 bpp.
+ Fixed handling pages without an explicit END_OF_DISPLAY_SET_SEGMENT.
The FINISHPAGE_HACK is no longer necessary.
+ Fixed handling "page refreshes". The data is now parsed and stored closer to the
DVB standard specs, introducing "object refs" and "region refs".
+ The debug output now goes into an HTML file named dbg-log.htm and shows the actual
bitmaps (dbg-nnn.jpg) used to display the subtitles. That way it is much easier to
see what's actually going on.
+ Fixed handling subtitles encoded as a string of characters (the very first
character was always skipped).
- Fixed wrong initialization of Setup.PositionerSwing (reported by Arthur Konovalov).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Fixed cleaning up old EPG events in case no epg data file is given (reported by
Dave Pickles).
- Unified the internal sequence of actions when pressing the Blue and the Back key,
respectively, during replay (reported by Thomas Maass).
- The Yellow button in the main menu no longer acts as "Pause" if "Pause key handling"
is set to "do not pause live video" (suggested by Ulf Kiener).
- The code for distributing recordings over several video directories has been
removed. VDR now by default assumes that the video directory is one big disk.
If you absolutely need to use several separate disks to store recordings, you can
write a plugin that uses the new cVideoDirectory API to implement the necessary
functionality (see PLUGINS.html, section "The video directory"). You can copy the
respective code from previous versions of videodir.c.
IMPORTANT NOTE: If you write a plugin that implements a distributed video directory,
=============== be sure to make cVideoDirectory::Rename() follow symbolic links!
This functionality was never implemented in VDR and it therefore
used a workaround in cutter.c. See the section marked with
// XXX this can be removed once RenameVideoFile() follows symlinks
in previous versions of cutter.c.
+ CloseVideoFile() is obsolete and has been removed.
+ The functions OpenVideoFile(), RenameVideoFile(), RemoveVideoFile(), VideoFileSpaceAvailable(),
VideoDiskSpace(), RemoveEmptyVideoDirectories(), IsOnVideoDirectoryFileSystem() and
PrefixVideoFileName() are now static members of cVideoDirectory and need to be called
with the proper prefix.
+ The name of the video directory is now available through cVideoDirectory::Name().
- Added renaming and moving recordings and folders, editing a recording's priority and
lifetime, and queueing cutting jobs (inspired by the "extrecmenu" plugin from Martin
Prochnow).
+ The "Recording info" menu now has a new Blue button named "Edit", which opens a
dialog in which several properties of the selected recording can be changed. It can
be renamed or moved into another folder and its priority and lifetime can be
modified (inspired by the "extrecmenu" plugin from Martin Prochnow).
The new blue "Edit" button in the "Recordings" menu opens a dialog in which a folder
can be renamed or moved. See MANUAL, section "Managing folders".
+ In the "Edit recording" menu the Yellow button ("Delete marks") allows you to delete
all editing marks of the selected recording.
+ cCutter is no longer a static class. Cutting requests should now be invoked by
calling RecordingsHandler.Add(ruCut, FileName). See the new cRecordingsHandler
class in recording.h.
+ Cutting jobs are now placed in a queue (together with any move or copy jobs) and
are processed one by one.
+ The new SVDRP command RENR can be used to rename a recording (suggested by Rolf
Ahrenberg).
+ Note that in several places in the source code a "copy" operation is mentioned,
however there is no user interface for this, yet.
- Changed some variable names in positioner.c to match the names used in the page with
the explanation on vdr-portal.de (suggested by Albert Danis).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed writing group separators to channels.conf that contain a comma (reported by
Eike Edener).
- Now also checking the source (in addition to the transponder) when setting the
system time from the TDT, which avoids problems in case devices are tuned to the
same transponder on different sources, and these broadcast different time data
(reported by Torsten Lang).
- Changed cRecorder::Action() to use cTimeMs instead of time() to avoid problems with
unjustified "video data stream broken" errors in case the system time is changed
while a recording is active (reported by Torsten Lang).
- Revised the section on "Learning the remote control keys" in the INSTALL file to
avoid the impression that there actually is a default remote.conf file, and to
not use any alphabetic keys for special functions, so that they remain available
for textual input.
- The function cRecordings::MBperMinute() now only takes into account recordings with
less than 5 seconds per megabyte, in an attempt to filter out radio recordings
(thanks to Harald Koenig). The result of this function was way off any realistic
value in case there are many radio recordings in the video directory.
- Added maximum signal strength value for TechniSat SkyStar 2 DVB-S rev 2.3P (thanks
to Guido Cordaro).
- Fixed an inconsistent behavior between opening the Recordings menu manually via the
main menu and by pressing the Recordings key. In the latter case it automatically
opened all sub folders to position the cursor to the last replayed recording, which
is unexpected at this point (reported by Helmut Auer). You can still navigate to
the last replayed recording (if any) by pressing Ok repeatedly in the Recordings
menu.
2013-10-23: Version 2.0.4
- Unified the internal sequence of actions when pressing the Blue and the Back key,
respectively, during replay (reported by Thomas Maass).
- The Yellow button in the main menu no longer acts as "Pause" if "Pause key handling"
is set to "do not pause live video" (suggested by Ulf Kiener).
- Fixed writing group separators to channels.conf that contain a comma (reported by
Eike Edener).
- Now also checking the source (in addition to the transponder) when setting the
system time from the TDT, which avoids problems in case devices are tuned to the
same transponder on different sources, and these broadcast different time data
(reported by Torsten Lang).
- Changed cRecorder::Action() to use cTimeMs instead of time() to avoid problems with
unjustified "video data stream broken" errors in case the system time is changed
while a recording is active (reported by Torsten Lang).
- Fixed an inconsistent behavior between opening the Recordings menu manually via the
main menu and by pressing the Recordings key. In the latter case it automatically
opened all sub folders to position the cursor to the last replayed recording, which
is unexpected at this point (reported by Helmut Auer). You can still navigate to
the last replayed recording (if any) by pressing Ok repeatedly in the Recordings
menu.
2014-01-05: Version 2.1.3
- Changed the return value of cPositioner::HorizonLongitude() to 0 in case the
latitude of the antenna location is beyond +/-81 degrees.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed some compiler warnings with gcc-4.6.3 (thanks to Rolf Ahrenberg).
- Changed the name of the SVDRP command RENR to MOVR (suggested by Rolf Ahrenberg).
- When cutting a recording it is now checked whether there is already an edited
version of this recording (with the same name, but starting with '%'), and the
user is prompted for confirmation to overwrite it (suggested by Rolf Ahrenberg).
- Revoked "Added maximum signal strength value for TechniSat SkyStar 2 DVB-S rev 2.3P"
because it broke things for the "TechniSat AirStar 2" DVB-T card.
- The LIRC remote control now connects to the socket even if it doesn't yet exist when
VDR is started (thanks to Lars Hanisch).
- Changed the absolute latitude limit for visible satellites to 81.2 degrees.
- Added code for parsing LCN and AVC descriptors to libsi (thanks to Rolf Ahrenberg).
- In the "Select folder" menu pressing Ok now selects the folder, even if this is a
folder that contains sub folders (marked with "..."). To open such a folder you
can press the Red key.
- Fixed a possible access to uninitialized data in cEIT::cEIT() (reported by Dominik
Strasser).
- The new menu category mcRecordingEdit is now used to mark menus that edit recording
properties (suggested by Stefan Braun).
- Changes in the teletext PID no longer cause retuning (and thus interrupting a
recording).
- Removed '_' from the FileNameChars and CharMap translations in uk_UA.po.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed a missing initialization in the c'tor of cSkinLCARSDisplayChannel (thanks to
Marko M<>kel<65>).
- Simplified some conditional expressions in skinlcars.c and skinsttng.c (suggested
by Marko M<>kel<65>).
- Fixed uninitialized item area coordinates in cSkinLCARSDisplayMenu (reported by
Marko M<>kel<65>).
- Fixed a possible crash if the recordings list is updated externally while the
Recordings menu is open (reported by Lars Hanisch).
- Added a missing closing ')' in the help and man page entry of the --vfat option
(reported by Lars Hanisch).
- Fixed setting the name of the video directory to avoid a crash when using --genindex,
and also to use the correct directory with --edit (the latter reported by Marko
M<>kel<65>).
- The Recordings menu can now be called with a cRecordingFilter, which allows the
caller to have it display only a certain subset of the recordings (thanks to Lars
Hanisch).
- Added handling UTF-8 'umlaut' characters to cKbdRemote (thanks to Lars Hanisch).
- Made it clear that the Data parameter in cDevice::StillPicture() may point to a
series of packets, not just a single one (thanks to Thomas Reufer).
- cDevice::TrickSpeed() now has an additional parameter named Forward, which indicates
the direction in which replay is being done (suggested by Thomas Reufer). This
information may be necessary for some output devices in order to properly implement
trick modes. Authors of plugins that implement output devices will need to add this
parameter to their derived cDevice class, regardless of whether they will make use
of it or not.
- Added a note to ePlayMode in device.h that VDR itself always uses pmAudioVideo when
replaying a recording (suggested by Thomas Reufer).
- Fixed some spellings in positioner.h and Doxyfile (thanks to Ville Skytt<74>).
- Changed '%a' to the POSIX compliant '%m' in all scanf() calls (thanks to Ville
Skytt<74>).
- The new function cCamSlot::Decrypt() can be used by derived classes to implement a
CAM slot that can be freely assigned to any device, without being directly inserted
into the full TS data stream in hardware. A derived class that implements Decrypt()
will also need to set the new parameter ReceiveCaPids in the call to the cCamSlot
base class constructor to true, in order to receive the CA pid TS packets that
contain data necessary for decrypting.
- Many member functions of cCamSlot have been made virtual to allow for easier
implementation of derived classes.
- cTSBuffer now provides the number of available bytes in its Get() function.
- cDvbDevice::GetTSPacket() now calls CamSlot()->Decrypt() in order to allow CAM slots
that can be freely assigned to any device access to the TS data stream.
- Added a check to avoid a possible NULL pointer dereference in cCiSession::SendData()
(reported by Ville Skytt<74>).
- Deleted a superfluous assignment in cPipe::Open() (reported by Ville Skytt<74>).
- The script given to VDR with the '-r' option is now also called after the recording
process has actually started (thanks to Christian Kaiser).
- Avoiding unnecessary pkg-config warnings in plugin Makefiles (thanks to Ville Skytt<74>).
Plugin authors may want to apply the following change to their Makefile:
-PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
+PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:../../.." pkg-config --variable=$(1) vdr))
- Eliminated MAXDVBDEVICES (suggested by Oliver Endriss).
- Channels that are no longer contained in the current SDT of a transponder are now
marked with the keyword OBSOLETE in their name and provider fields. That way you can
identify obsolete channels when you switch to them, and you can get the complete
overview of all obsolete channels by sorting the Channels list by provider (by
pressing the 0 key twice). Automatic deletion of obsolete channels may follow later.
2014-01-07: Version 2.0.5
- The LIRC remote control now connects to the socket even if it doesn't yet exist when
VDR is started (thanks to Lars Hanisch).
- Fixed a missing initialization in the c'tor of cSkinLCARSDisplayChannel (thanks to
Marko M<>kel<65>).
- Fixed uninitialized item area coordinates in cSkinLCARSDisplayMenu (reported by
Marko M<>kel<65>).
- Fixed a possible crash if the recordings list is updated externally while the
Recordings menu is open (reported by Lars Hanisch).
- Added a missing closing ')' in the help and man page entry of the --vfat option
(reported by Lars Hanisch).
- Fixed setting the name of the video directory to avoid a crash when using --genindex,
and also to use the correct directory with --edit (the latter reported by Marko
M<>kel<65>).
2014-01-26: Version 2.1.4
- Updated 'sources.conf' (thanks to Antti Hartikainen).
- cFont::CreateFont() now returns a dummy font in case there are no fonts installed.
This prevents a crash with the LCARS skin on a system that has no fonts.
- Improved locking for CAM slots and made the pure functions of cCiAdapter have
default implementations, to fix a possible crash with CI adapters and CAM slots
that are implemented in a plugin.
- Added logging the supported system ids of a CAM.
- Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 10 in order to be able to record
channels that need more than 5 TS packets for detecting frame borders (reported by
Eike Sauer).
- Fixed deleting the source recording after moving it to a different volume (reported
by Christoph Haubrich).
- Now waiting explicitly until all CAM slots are ready before switching to the
initial channel when VDR is started. This is necessary in case CI adapters are
used that are not physically connected to a dedicated device. The respective checks
in cDvbDevice have been removed to avoid redundancy.
- Fixed detecting frame borders in MPEG-2 streams that have "bottom fields" or varying
GOP structures (reported by Christian Paulick, with help from Helmut Auer).
- Now unassigning CAMs from their devices when they are no longer used.
- Now making sure the primary device goes into transfer mode for live viewing if the
CAM wants to receive the TS data.
- Fixed a wrong alignment in cCiDateTime::SendDateTime().
- Since the new cRecordingsHandler that was introduced in version 2.1.2 not only
handles "cutting", but also "moving" and "copying" recordings, the German word
"Schnitt" has been replaced with the more generic "Bearbeitung", which covers all
three variations of "editing" a recording (suggested by Christoph Haubrich).
Maintainers of translations for other languages may want to change their *.po files
accordingly.
- The new function cStatus::ChannelChange() can be implemented by plugins to be
informed about changes to the parameters of a channel that may require a retune.
This may, for instance, be useful for plugins that implement live streaming, so that
they can react on changes to a channel's PIDs or CA descriptors (problem reported
by Mariusz Bialonczyk).
- Fixed a superfluous call to the skin's SetRecording() function after renaming a
recording (reported by Christoph Haubrich).
2014-02-23: Version 2.1.5
- Now checking whether the primary device actually has a decoder before retuning the
current channel after a change in its parameters. This fixes broken recordings on
the primary device on "headless" systems.
- Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 100 and introduced counting the number
of actual video TS packets in cTsPayload in order to be able to record channels that
sometimes need even more than 10 TS packets for detecting frame borders (reported by
Oliver Endriss).
- Fixed sorting recordings by time in the Recordings menu if "Setup/OSD/Recording
directories" is set to "no".
- Fixed clearing non-editable members in the channel editor (thanks to Rolf Ahrenberg).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Further clarified the semantics of cCamSlot::Decrypt().
- Fixed flickering if subtitles are active while the OSD demo is running.
- Fixed numbering frames. Previously they were numbered starting from 1, while it
is apparently standard to number them from 0. Any existing recordings with editing
marks (which will now be off by one) can still be cut with all VDR versions from
1.7.32, because these will automatically adjust editing marks to I-frames.
Users of stable releases shouldn't notice any problems.
- Fixed a possible crash in the OSD demo (reported by Christopher Reimer).
- Fixed some compiler warnings with Clang 3.4.1 (reported by Paul Menzel).
- Added LinkageTypePremiere to libsi/si.h and eit.c to avoid a compiler warning with
Clang 3.4.1 (suggested by Tony Houghten).
- Replaced the NULL pointer assignment in ~cReceiver() to force a segfault with
a call to abort() (suggested by Tony Houghten).
- Fixed learning keyboard remote control codes (thanks to Lars Hanisch).
- Improved PAT/PMT scanning to speed up initial tuning to encrypted channels on
transponders with many PAT entries (reported by Mariusz Bialonczyk).
- Fixed the replay progress display for very long recordings.
- Fixed detecting broken video data streams when recording.
- Fixed handling frame detection buffer length (reported by Eike Sauer).
2014-03-16: Version 2.1.6
- Revoked "Fixed some compiler warnings with Clang 3.4.1" from ci.c, because this
did not compile with older versions of gcc (thanks to S<>ren Moch).
- Fixed keeping the current position in the Recordings menu if a recording was
deleted in a sub folder.
- Fixed handling transfer mode on full featured DVB cards for encrypted channels
that have no audio pid (reported by Christian Winkler).
- Fixed a possible endless loop in cH264Parser::GetGolombUe(), which caused recordings
on some HD channels to get stuck and resulted in buffer overflows.
- Fixed handling PAT packets when detecting frames, so that they can be properly
taken into account when regenerating the index of a recording.
- Fixed adding new source types in case they are already registered (reported by Rolf
Ahrenberg).
- Removed an unnecessary assignment from cMenuRecordings::~cMenuRecordings().
- The Recordings menu now remembers the last recording the cursor was positioned on,
independent of the last replayed recording. When a replay ends, however, the cursor
will initially be positioned to the last replayed recording again when the menu
is opened.
- Updated the Finnish OSD texts (thanks to Antti Hartikainen).
- Fixed drawing the live indicator in the LCARS skin in case there are no devices.
- When checking for obsolete channels, those with an RID that is not 0 are now
ignored (suggested by Oliver Endriss).
- The SDT is now only parsed *after* the NIT has been read, and it explicitly uses
the source value derived from the NIT. This should prevent new channels from being
created with the wrong source.
- Added a log message in case a receiver is detached from its device because the
assigned CAM can't decrypt the channel.
- Refactored setup parameter handling for output devices:
+ The function cDevice::GetVideoSystem() has been deprecated and will be removed
in a future version. In order to check whether a particular plugin needs to be
modified if this function is removed, you can comment out the line
#define DEPRECATED_VIDEOSYSTEM
in device.h.
+ Handling the "video (display) format" (things like 16:9, 4:3, pan&scan, letterbox
etc) shall now be done by the individual output devices, because the types and
numbers of parameters are too device specific. The Setup/DVB parameters
"Video format" and "Video display format" are still there for now and can be used
by SD devices. HD devices, however, shall not use these parameters (any more),
but rather implement their own setup menu with the necessary parameters for
controlling output.
+ The dvbhdffdevice plugin has been modified accordingly.
+ Made it clear that cDevice::SetDigitalAudioDevice() merely tells the output device
that the current audio track is Dolby Digital. This function was only used by the
original "full featured" DVB cards - do not use it for new developments!
If an output device has several ways of replaying audio (like HDMI or analog jack)
it shall implement the proper options in its plugin's SetupMenu() function.
- Added support for "Pilot", "T2-System-Id" and "SISO/MISO" parameters (thanks to
Rolf Ahrenberg).
- Now initializing the isOnVideoDirectoryFileSystem member of cRecording when
scanning the video directory, so that it won't cause a delay when opening the menu
on a system with a large number of recordings.
- Now resetting the isOnVideoDirectoryFileSystem member of a cRecording to -1 after
renaming it, so that it will be re-checked upon the next call to
IsOnVideoDirectoryFileSystem().
- Added support for systemd (thanks to Christopher Reimer). To activate this you
need to add "SDNOTIFY=1" to the 'make' call.
2014-03-22: Version 2.0.6
- Updated 'sources.conf' (thanks to Antti Hartikainen).
- cFont::CreateFont() now returns a dummy font in case there are no fonts installed.
This prevents a crash with the LCARS skin on a system that has no fonts.
- Fixed detecting frame borders in MPEG-2 streams that have "bottom fields" or varying
GOP structures (reported by Christian Paulick, with help from Helmut Auer).
- Fixed a wrong alignment in cCiDateTime::SendDateTime().
- Now checking whether the primary device actually has a decoder before retuning the
current channel after a change in its parameters. This fixes broken recordings on
the primary device on "headless" systems.
- Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 100 and introduced counting the number
of actual video TS packets in cTsPayload in order to be able to record channels that
sometimes need even more than 10 TS packets for detecting frame borders (reported by
Eike Sauer and Oliver Endriss).
- Fixed sorting recordings by time in the Recordings menu if "Setup/OSD/Recording
directories" is set to "no".
- Fixed clearing non-editable members in the channel editor (thanks to Rolf Ahrenberg).
- Fixed flickering if subtitles are active while the OSD demo is running.
- Fixed a possible crash in the OSD demo (reported by Christopher Reimer).
- Fixed learning keyboard remote control codes (thanks to Lars Hanisch).
- Fixed the replay progress display for very long recordings.
- Improved PAT/PMT scanning to speed up initial tuning to encrypted channels on
transponders with many PAT entries (reported by Mariusz Bialonczyk).
- Fixed detecting broken video data streams when recording.
- Fixed handling frame detection buffer length (reported by Eike Sauer).
- Fixed keeping the current position in the Recordings menu if a recording was
deleted in a sub folder.
- Fixed handling transfer mode on full featured DVB cards for encrypted channels
that have no audio pid (reported by Christian Winkler).
- Fixed a possible endless loop in cH264Parser::GetGolombUe(), which caused recordings
on some HD channels to get stuck and resulted in buffer overflows.
- Fixed handling PAT packets when detecting frames, so that they can be properly
taken into account when regenerating the index of a recording.
- Fixed adding new source types in case they are already registered (reported by Rolf
Ahrenberg).
- Fixed drawing the live indicator in the LCARS skin in case there are no devices.
- The SDT is now only parsed *after* the NIT has been read, and it explicitly uses
the source value derived from the NIT. This should prevent new channels from being
created with the wrong source.
- Now initializing the isOnVideoDirectoryFileSystem member of cRecording when
scanning the video directory, so that it won't cause a delay when opening the menu
on a system with a large number of recordings.
- The APIVERSION has been increased to 2.0.6 due to the changes to pat.h, sdt.h and
the functional modification to cFont::CreateFont().
2015-01-18: Version 2.1.7
- No longer logging an error message in DirSizeMB() if the given directory doesn't
exist. This avoids lots of log entries in case several VDRs use the same video
directory and one of them has already physically removed a recording directory,
while the others still have it in their list of deleted recordings.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- A cCamSlot that has WantsTsData set to true in its constructor now also gets
the CAT and EMM PIDs data.
- Fixed a possible division by zero in frame rate detection.
- VDR now reads command line options from *.conf files in /etc/vdr/conf.d (thanks
to Lars Hanisch). See vdr.1 and vdr.5 for details.
- Fixed a possible crash in the LCARS skin (thanks to Thomas Reufer).
- Updated the dvbhddevice plugin source.
- Fixed a bug in the Makefile when installing plugins with LCLBLD=1 (thanks to
Stefan Huelswitt).
- The pid of the PMT in which the CA descriptors of a given channel are broadcast
is now stored together with the CA descriptors and can be retrieved by calling
GetPmtPid() (this information is only required to receive encrypted channels
with the OctopusNet receiver via the 'satip' plugin).
- Channels that are not listed in the SDT are now only marked as OBSOLETE if
"Setup/DVB/Update channels" is set to a value other than "no" or "PIDs only".
- Fixed multiple OBSOLETE marks in channels that are not listed in the SDT in case
"Setup/Miscellaneous/Show channel names with source" is set to "yes".
- The new function cOsd::DrawScaledBitmap() is now used for drawing subtitles.
This function can be reimplemented by high level OSDs which may be able to do
the scaling in hardware or otherwise more efficiently (thanks to Thomas Reufer).
- Fixed detaching receivers from devices in case a CAM needs to receive the TS
(reported by Dietmar Spingler).
- Fixed resetting the receiver for EMM pids for CAMs that need to receive the TS
(reported by Dietmar Spingler).
- Fixed (well, actually worked around) a problem with subtitles not being displayed
because the broadcaster doesn't set the data's version numbers as required by the
DVB standard (thanks to Rolf Ahrenberg).
- Fixed support for systemd (thanks to Christopher Reimer).
- Added a missing backslash to the help text of the SVDRP command MOVR (thanks to
Lars Hanisch).
- Added subsystem id support for DVB devices connected via USB (thanks to Jose
Alberto Reguero).
- Added the functions IndexOf(), InsertUnique(), AppendUnique() and RemoveElement()
to the cVector class (thanks to Stefan Schallenberg).
- Fixed a possible out-of-bounds access in cVector::Remove().
- Added functions to set and retrieve the priority of a cReceiver (suggested by
Frank Schmirler).
- Added the new parameters "Setup/Miscellaneous/Volume steps" and
".../Volume linearize" (thanks to Claus Muus). See the MANUAL for details.
- Fixed jumping to an absolute position via the Red key in case replay was paused
(reported by Dieter Ferdinand).
- Changed the German weekday names from "MonDieMitDonFreSamSon" to
"Mo.Di.Mi.Do.Fr.Sa.So." (thanks to Stefan Blochberger).
- Now handling CAT sections that consist of more than one TS packet.
- Added handling for DTS audio tracks to cPatPmtParser::ParsePmt() (thanks to
Thomas Reufer).
- Added support for PGS subtitles (thanks to Thomas Reufer).
- Use of the function cOsd::GetBitmap() outside of derived classes is now deprecated,
and it may be made 'protected' in a future version, since it doesn't work with
TrueColor OSDs. Plugin authors may want to modify their code so that it
works without this function.
- Modified the descriptions of several threads, so that the important information
(like device or frontend numbers) is within the first 15 characters of the
string, because only these are displayed in thread listings. Plugin authors may
want to do the same.
- Added the channel name to log messages that reference a channel (suggested by
Dietmar Spingler).
- Modified the CAM API so that it is possible to implement CAMs that can be freely
assigned to any devices (thanks to Jasmin Jessich).
- Plugins can now implement the function SetMenuSortMode() in their skin objects
derived from cSkinDisplayMenu, to get informed about the currently used sort
mode, if applicable (suggested by Martin Schirrmacher).
- Added cOsdProvider::OsdSizeChanged(), which plugins that implement an output device
can call to signal a change in the OSD that requires a redraw of the currently
displayed object (thanks to Thomas Reufer).
- Added a comment to cRecorder::Activate() about the need to call Detach() in the
destructor (suggested by Eike Sauer).
- Now returning from removing deleted recordings after at most 10 seconds, or if the
user presses a remote control key, to keep the system from getting unresponsive
when removing a huge number of files (reported by Dieter Ferdinand).
- Fixed generating the index file of an existing recording in case at the end of a TS file
there is less data in the buffer than needed by the frame detector. In such a case
it was possible that frames were missed, and there was most likely a distortion
when replaying that part of a recording. This is mostly a problem for recordings that
consist of more than one *.ts file. Single file recordings could only lose some
frames at their very end, which probably doesn't matter. At any rate, if you have
generated an index file with VDR version 2.0.6, 2.1.5 or 2.1.6, you may want to
do so again with this version to make sure the index is OK.
- Added the new command line option --updindex, which can be used to update an
incomplete index of a recording (based on a patch from Helmut Auer).
2015-01-20: Version 2.0.7
- Fixed a possible division by zero in frame rate detection.
- Fixed a bug in the Makefile when installing plugins with LCLBLD=1 (thanks to
Stefan Huelswitt).
- Fixed jumping to an absolute position via the Red key in case replay was paused
(reported by Dieter Ferdinand).
- Now returning from removing deleted recordings after at most 10 seconds, or if the
user presses a remote control key, to keep the system from getting unresponsive
when removing a huge number of files (reported by Dieter Ferdinand).
- Fixed generating the index file of an existing recording in case at the end of a TS file
there is less data in the buffer than needed by the frame detector. In such a case
it was possible that frames were missed, and there was most likely a distortion
when replaying that part of a recording. This is mostly a problem for recordings that
consist of more than one *.ts file. Single file recordings could only lose some
frames at their very end, which probably doesn't matter. At any rate, if you have
generated an index file with VDR version 2.0.6 you may want to do so again with this
version to make sure the index is OK.
2015-02-01: Version 2.1.8
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed "warning: invalid suffix on literal" with GCC 4.8 and C++11 (thanks to Joerg
Bornkessel).
- Fixed the link to "svdrpsend (1)" in the vdr.1 man page (thanks to Chris Mayo).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Added functionality based on the "jumpplay" patch from Torsten Kunkel and Thomas
G<>nther:
+ The new option "Setup/Replay/Pause replay when jumping to a mark" can be used to
turn off pausing replay when jumping to an editing mark with the '9' key.
+ The new option "Setup/Replay/Skip edited parts" can be used to automatically skip
the edited parts of a recording during replay, without the need to actually cut
the recording.
+ The new option "Setup/Replay/Pause replay at last mark" can be used to make replay
go into Pause mode when it has reached the last "end" mark.
+ The '8' key for testing an edited sequence now also jumps to the next *end*
mark if "Setup/Replay/Skip edited parts" is active. This allows for testing edits
in recordings that have actually been cut, as well as recordings that have not
been cut, in case "Skip edited parts" is enabled.
- Added support for "Satellite Channel Routing" (SCR) according to EN50607, also
known as "JESS" (thanks to Manfred V<>lkel and Frank Neumann).
- The keys '1' and '3' can now be used in replay mode to position an editing mark
in "binary" mode (based on a patch from Rolf Ahrenberg, with modifications by Helmut
Auer). See MANUAL, section "Editing a Recording".
- The Yellow button in the "Setup/CAM" menu can now be used to put the selected
CAM into a mode where it remains assigned to a device that is tuned to the current
channel until the smart card it contains is activated and the CAM thus starts to
descramble (see MANUAL, section "Setup/CAM" for details).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Added ARGSDIR to the ONEDIR section of Make.config.template (suggested by Derek
Kelly).
- Made cRecording::GetResume() public (suggested by Stefan Braun).
- Fixed setting the read index in cDvbPlayer::Goto() in case Still is false.
- The function cDvbPlayer::Goto() now automatically calls Play() if Still is false.
- Added support for LCN (Logical Channel Numbers), which plugins may use to sort
channels (thanks to Rolf Ahrenberg).
2015-02-08: Version 2.1.9
- Fixed a memory leak in case of broken Extended Event Descriptors (thanks to Lars
Hanisch).
- Fixed the German translation of "Binary skip timeout (s)" (thanks to Matthias
Senzel).
- Fixed the German translation of "VDR will shut down later - press Power to force".
- Fixed the Finnish translation of "Binary skip timeout (s)" (thanks to Rolf
Ahrenberg).
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- Added SDNOTIFY to Make.config.template (suggested by Christian Richter). Also
added NO_KBD and BIDI.
- Added code from the "jumpplay" patch that makes the recording still be considered
unviewed when stopping replay within RESUMEBACKUP seconds of the first mark.
- The new option "Setup/Replay/Alternate behavior for adaptive skipping" can be used
to make adaptive skipping only halve the skip distance when the direction changes.
That way you can reach the desired point in a recording even if you make one too
many skips in a certain direction (see MANUAL for details).
- Fixed cCamSlot::Assign(), so that it actually ignores the value of Query if Device
is NULL (as described in the header file).
- Added a missing VDRDIR="$(CWD)" to the clean-plugins target of the Makefile, to
avoid error messages regarding the missing vdr.pc file.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the Hungarian OSD texts (thanks to Istv<74>n F<>ley).
- Fixed switching channels in the Schedule menu after going through various Now and
Schedule menus for different channels (reported by Matthias Senzel).
- Fixed setting the Blue button in the Schedule/Now/Next menus, so that it only shows
"Switch" if the selected event is on a different channel.
- Added "NORDIG" to the list of "DVB/Standard compliance" options and using it to
restrict the LCN (Logical Channel Numbers) parsing to networks that actually use
this non-standard feature (thanks to Rolf Ahrenberg).
- In the "Edit recording" menu the '0' key can now be used on the "Name:" field to
remove the name of the recording and replace it with the last element of the
recording's folder path name (suggested by Christoph Haubrich). See MANUAL, section
"Managing folders" for details.
- Updated the Italian OSD texts (thanks to Nino Gerbino).
- The "Select folder" menu now adds the folder names of all existing recordings to
any names that have been predefined in "folders.conf" (suggested by S<>ren Moch).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed the German translations of "latitude" and "longitude" (they were swapped).
- Modified runvdr.template to improve compatibility with the "bash" and "dash" shells
(thanks to Clemens Brauers).
- Changed the German translations if the texts related to "binary skipping" (based
on a suggestion by Thomas Reufer).
- Updated sources.conf to reflect the fact that Astra 4A and SES5 are actually in
two separate positions (thanks to Arthur Konovalov).
- Fixed cMarks::GetNextBegin() and cMarks::GetNextEnd() (thanks to Stefan Herdler).
The behavior of these two functions is now exacly as described in the header file.
Editing marks that are placed at exactly the same offset in a recording are now
preserved in the cutting process.
- Changed the naming of "binary skip mode" to "adaptive skip mode" (suggested by
Rolf Ahrenberg and Derek Kelly).
- cDvbPlayer and cReplayControl now use the same list of editing marks. This avoids
inconsistent behavior with the "Skip edited parts" or "Pause replay at last mark"
functions when the editing marks are manipulated during replay.
- Fixed setting an empty recording name or folder to a blank in the "Edit recording"
menu (reported by Christoph Haubrich).
- Added a confirmation before renaming a recording to its folder name (suggested
by Christoph Haubrich).
- Modified EntriesOnSameFileSystem(), so that it returns 'true' if either of the given
files doesn't exist (to avoid any actions that might be triggered if files are on
different file system), and changed handling the 'error' variable in cDirCopier, so
that it is initialized to 'true' and will only be set to 'false' if the entire
copy process has been successful (problem reported by Christoph Haubrich).
- Added the UPDATE-2.2.0 file.
2015-02-11: Version 2.1.10
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Added "#REMOTE=LIRC" to Make.config.template (suggested by Martin Dauskardt).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Increased the width of the left text column in the Setup menus to avoid cutting
off German texts.
- Added an empty target to the Makefile to make sure the sub-make for libsi is always
called (thanks to S<>ren Moch).
- Updated the Italian OSD texts (thanks to Diego Pierotto and Nino Gerbino).
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- The new options "Setup/Replay/Skip distance with Green/Yellow keys" and
"Setup/Replay/Skip distance with Green/Yellow keys in repeat" can be used to
configure the number of seconds to skip when pressing these keys once or pressing
and holding them (based on a patch from Matthias Senzel, originally from Tobias
Faust).
- The new option "Setup/Replay/Use Prev/Next keys for adaptive skipping" can be used
to change the behavior of these keys during replay. They normally jump between
editing marks, but with this option set to 'yes' they will do adaptive skipping.
- The new command line option --chartab can be used to set the default character
table to use for strings in the DVB data stream that don't begin with a proper
character table indicator (suggested by Christopher Reimer). The old mechanism
of using the environment variable VDR_CHARSET_OVERRIDE still works, but is now
deprecated and may be removed in a future version. The value given in the --chartab
option takes precedence over that in VDR_CHARSET_OVERRIDE.
- cOsd::RenderPixmaps() now returns a pointer to cPixmap instead of cPixmapMemory
(suggested by Thomas Reufer). This is necessary to allow plugins with derived
cPixmap implementations to use this function. Plugins that use this function
with cPixmapMemory now need to add a dynamic cast to the call, as in
cPixmapMemory *pm = dynamic_cast<cPixmapMemory *>(RenderPixmaps()));
They also need to call DestroyPixmap(pm) instead of "delete pm" to properly release
the resulting pixmap after use.
The dvbhddevice plugin has been modified accordingly.
- A cPixmap with a negative layer no longer marks any portion of the OSD's view port
as "dirty" when drawing on it. This may improve performance when drawing on a
hidden pixmap, because it avoids unnecessary refreshes of the OSD.
- Added a missing initialization of "panning" to the constructor of cPixmapMemory.
- Updated the Dutch OSD texts (thanks to Erik Oomen).
- Updated the French OSD texts (thanks to R<>gis Bossut).
- Fixed the German translation of "Zap timeout" (thanks to Albert Danis).
2015-02-19: Version 2.2.0
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Italian OSD texts (thanks to Diego Pierotto and Nino Gerbino).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Swedish OSD texts (thanks to Magnus Sirwi<77>).
- Updated the Hungarian OSD texts (thanks to Istv<74>n F<>ley and Albert Danis).
- Modified the German translations of the OSD texts regarding "adaptive skipping".
- Fixed pausing replay at the last editing mark (reported by Stefan Herdler).
- Updated the Polish OSD texts (thanks to Tomasz Maciej Nowak).
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Fixed using the default sort mode in a video directory without a ".sort" file
(reported by Stefan Herdler).
- Improved the German translations of "EPG bugfix level"", "StreamId" and "T2SystemId"
(thanks to Albert Danis).
- Updated the Czech OSD texts (thanks to Ales Jurik).
- Updated the Slovak OSD texts (thanks to Milan Hrala).
- Updated sources.conf to reflect the fact that Thor 5/6 and Intelsat 10-02 are
actually in two separate positions.
- Updated the French OSD texts (thanks to R<>gis Bossut).
- Updated the Spanish OSD texts (thanks to Gabriel Bonich).
- Fixed leading/trailing/multiple blanks in the translation files.
- Bumped all version numbers to 2.2.0.
- Official release.
2015-09-14: Version 2.3.1
- The new function cOsd::MaxPixmapSize() can be called to determine the maximum size
a cPixmap may have on the current OSD. The 'osddemo' example has been modified
accordingly. Plugin authors may want to use this function in case they use pixmaps
that are larger than the full OSD size. The default implementation sets this limit
to 2048x2048 pixel.
- The Setup/CAM menu now displays which device an individual CAM is currently
assigned to (suggested by Frank Neumann).
- Added detection of 24fps (thanks to Thomas Reufer).
- Added a note about the VDR User Counter and VDR's facebook page to the README file.
- The dvbhddevice plugin is no longer part of the VDR source archive.
You can get the latest version of this plugin from the author's repository at
https://bitbucket.org/powARman/dvbhddevice.
- The dvbsddevice and rcu plugins are no longer part of the VDR source archive.
You can get the latest versions of these plugins from ftp://ftp.tvdr.de/vdr/Plugins.
- Added a section about Output Devices to the INSTALL file.
- Fixed setting the source value of newly created channels, in case the NIT is
received from a different, but very close satellite position (reported by Daniel
Ribeiro). The code for handling different NITs has been removed from nit.c, because
according to the DVB standard table id 0x40 carries only the NIT of the actual
network.
- Added some comment to cPixmap about the relation between OSD, ViewPort and DrawPort
(suggested by Thomas Reufer).
- Improved syncing on sections when parsing the NIT and SDT.
- Fixed scaling subtitles (their areas could sometimes extend outside the actual OSD).
- Reduced the priority of the "video directory scanner" thread (suggested by Thomas
Reufer) and checking cIoThrottle::Engaged() when it is running.
- The script that gets called for recordings is now also called right before a
recording is edited, with the first parameter being "editing" (suggested by
Dieter Ferdinand).
- The new setup option "OSD/Default sort mode for recordings" can be used to define
how recordings shall be sorted by default (either by time or by name, with "by time"
being the default). If a particular sort mode has been selected for a folder by
pressing '0', the default no longer applies to that folder. Repeating timers no
longer write a ".sort" file into a recordings folder to have the recordings sorted
by time.
- The command line option -D now accepts the value '-' (as in -D-), which prevents
VDR from using any DVB devices (suggested by Dietmar Spingler).
- The -V and -h options now list the plugins in alphabetical order (suggested by
Dietmar Spingler).
- Fixed a compiler warning in font.c.
- Commented out the line
#define DEPRECATED_VIDEOSYSTEM
in device.h. If a plugin doesn't compile with this version of VDR, you can uncomment
this line as a quick workaround. In the long run the plugin will need to be adapted.
- The function cOsd::GetBitmap() is now 'protected'. If a plugin doesn't compile with
this version of VDR, you can uncomment the line
//#define DEPRECATED_GETBITMAP
in osd.h as a quick workaround. In the long run the plugin will need to be adapted.
- The -u option now also accepts a numerical user id (suggested by Derek Kelly).
- The SVDRP port now accepts multiple concurrent connections. You can now keep an
SVDRP connection open as long as you wish, without preventing others from
connecting. Note, though, that SVDRP connections still get closed automatically
if there has been no activity for 300 seconds (configurable via
"Setup/Miscellaneous/SVDRP timeout (s)").
- The SVDRP log messages have been unified and now always contain the IP and port
number of the remote host.
- SVDRP connections are now handled in a separate "SVDRP server handler" thread,
which makes them more responsive. Note that there is only one thread that handles
all concurrent SVDRP connections. That way each SVDRP command is guaranteed to be
processed separately, without interfering with any other SVDRP commands that might
be issued at the same time. Plugins that implement SVDRP commands may need to take
care of proper locking if the commands access global data.
- VDR now sends out a broadcast to port 6419/udp, which was assigned to 'svdrp-disc'
by the IANA. VDRs listening on that port will automatically initiate an SVDRP
connection to the broadcasting VDR, and in turn send out a broadcast to make
other VDRs connect to them. That way all VDRs within the local network will
have permanent "peer-to-peer" SVDRP connections between each other. The
configuration in the svdrphosts.conf file is taken into account when considering
whether or not to respond to an SVDRP discover broadcast.
- The new SVDRP command PING is used by automatically established peer-to-peer
connections to keep them alive.
- The new function GetSVDRPServerNames() can be used to get a list of all VDRs
this VDR is connected to via SVDRP.
- The new function ExecSVDRPCommand() can be used to execute an SVDRP command on
one of the servers this VDR is connected to, and retrieve the result.
The helper functions SVDRPCode() and SVDRPValue() can be used to easily access
the codes and values returned by ExecSVDRPCommand().
- The cTimer class now has a new member named 'remote', which holds the name of the
remote server this timer will record on. If this is NULL, it is a local timer.
- Timers from other VDRs that are connected to this VDR via SVDRP are now
automatically fetched and stored in the global Timers list. In order for this
to work, all of the channels used by timers on the remote VDR must also be
defined on the local VDR (however, not necessarily in the same sequence).
Automatic channel syncing will be implemented later.
- The main menu of the LCARS skin now displays a small rectangle on the left side
of a timer if this is a remote timer. The color of that rectangle changes if
the timer is currently recording on the remote VDR.
- Accessing the global Timers list now has to be protected by proper locking,
because SVDRP commands are now executed in a separate thread.
The introduction of this locking mechanism required the following changes:
+ The new classes cStateLock and cStateKey are used to implement locking
with quick detection of state changes.
+ cConfig::cConfig() now has a parameter that indicates whether this list
requires locking.
+ The global lists of Timers, Channels, Schedules and Recordings are no longer
static variables. They are now pointers that need to be retrieved through
a call to cTimers::GetTimersRead/Write(), cChannels::GetChannelsRead/Write(),
cSchedules::GetSchedulesRead/Write() and cRecordings::GetRecordingsRead/Write(),
respectively.
+ References from/to link channels are now removed in cChannels::Del() rather
than cChannel::~cChannel(), to make sure the caller holds a proper lock.
+ cChannel::HasTimer() has been removed. This information is now retrieved
via cSchedule::HasTimer().
+ Several member functions of cChannel, cTimer, cMarks and cRecording have
been made 'const', and some of them are now available as both 'const' and
'non-const' versions.
+ The cChannel::Set...() functions are now 'bool' and return true if they have
actually changed any of the channels's members.
+ cChannels::SetModified() has been renamed to cChannels::SetModifiedByUser().
+ cChannels::Modified() has been renamed to cChannels::ModifiedByUser(), and
now has a 'State' parameter that allows the caller to see whether a channel
has been modified since the last call to this function with the same State
variable.
+ The macros CHANNELSMOD_NONE/_AUTO/_USER have been removed.
+ cMarks now requires locking via cStateKey.
+ cSortedTimers now requires a pointer to the list of timers.
+ cEvent::HasTimer() no longer scans the list of timers to check whether an event
is referenced by a timer, but rather keeps score of how many timers reference
it. This was necessary in order to avoid having to lock the list of timers from
within a cEvent.
+ The new class cListGarbageCollector is used to temporary store any objects deleted
from cLists that require locking. This allows pointers to such objects to be
dereferenced even if the objects are no longer part of the list.
+ cListBase::Contains() can be used to check whether a particular object is still
contained in that list.
+ Outdated events are no longer "phased out", but rather deleted right away and thus
taken care of by the new "garbage collector" of the list.
+ Deleted cRecording objects are no longer kept in a list of "vanished" recordings,
but are rather taken care of by the new "garbage collector" of the list.
+ cSchedules::ClearAll() has been removed. The functionality is now implemented
directly in cSVDRPServer::CmdCLRE().
+ tEventID has been changed to u_int16_t in order to make room for the new member
numTimers in cEvent.
+ cSchedule now has a member Modified(), which can be used with a State variable
to quickly determine whether this schedule has been modified since the last call
to this function with the same State variable.
+ cSchedulesLock has been removed. Locking the list of schedules is now done via
the cList's new locking mechanism.
+ The 'OnlyRunningStatus' parameters in cEpgHandler::BeginSegmentTransfer() and
cEpgHandler::EndSegmentTransfer() are now obsolete. They are still present in
the interface for backward compatibility, but may be removed in a future version.
Their value is always 'false'.
+ The constant tcMod is no longer used in cStatus::TimerChange(). The definition is
still there for backward compatibility.
Plugins that access the global lists of Timers, Channels, Recordings or Schedules
will need to be adapted as follows:
+ Instead of directly accessing the global variables Timers, Channels or Recordings,
they need to set up a cStateKey variable and call the proper getter function,
as in
cStateKey StateKey;
if (const cTimers *Timers = cTimers::GetTimersRead(StateKey)) {
// access the timers
StateKey.Remove();
}
and
cStateKey StateKey;
if (cTimers *Timers = cTimers::GetTimersWrite(StateKey)) {
// access the timers
StateKey.Remove();
}
See timers.h, thread.h and tools.h for details on this new locking mechanism.
+ There are convenience macros for easily accessing these lists without having
to explicitly set up a cStateKey and calling its Remove() function. These macros
have the form LOCK_*_READ/WRITE (with '*' being TIMERS, CHANNELS, SCHEDULES or
RECORDINGS). Simply put such a macro before the point where you need to access
the respective list, and there will be a pointer named Timers, Channels, Schedules
or Recordings, respectively, which is valid until the end of the current block.
+ If a plugin needs to access several of the global lists in parallel, locking must
always be done in the sequence Timers, Channels, Recordings, Schedules. This is
necessary to make sure that different threads that need to lock several lists at
the same time don't end up in a deadlock.
+ Some pointer variables may need to be made 'const'. The compiler will tell you
about these.
- cSectionSyncer has been improved to better handle missed sections.
- Added a missing initialization of 'seen' in cChannel's copy constructor.
- Background modifications of channels, timers and events are now displayed immediately
in the corresponding menus.
- cEIT now checks the version of the tables before doing any processing, which saves
a lot of locking and processing.
- If a timer is newly created with the Red button in the Schedule menu, and the timer
is presented to the user in the "Edit timer" menu because it will start immediately,
it now *must* be confirmed with "Ok" to set the timer. Otherwise the timer will not
be created.
- Recordings and deleted recordings are now scanned in a single thread.
- The new SVDRP command POLL is used by automatically established peer-to-peer
connections to trigger fetching remote timers.
- You can now set DumpSVDRPDataTransfer in svdrp.c to true to have all SVDRP
communication printed to the console for debugging.
- Added a missing 'const' to cReceiver::Receive(), to protect the given Data from
being modified.
- The SVDRP commands that deal with timers (DELT, LSTT, MODT, NEWT, NEXT and UPDT)
as well as any log messages that refer to timers, now use a unique id for each
timer, which remains valid as long as this instance of VDR is running. This means
that timers are no longer continuously numbered from 1 to N in LSTT. There may be
gaps in the sequence, in case timers have been deleted.
- The Timers menu now displays the name of the remote VDR in front of the timer's
file name, if this is a remote timer.
- The new options "Setup/Miscellaneous/SVDRP peering", ".../SVDRP host name" and
".../SVDRP default host" can be used to configure automatic peering between VDRs
in the same network. Peering is disabled by default and can be enabled by setting
"SVDRP peering" to "yes".
- The function cTimer::ToText() no longer returns a newline character at the end of
the string. The newline is now added by the caller as necessary. This was changed
because cTimer::ToText() is now also needed in a context where the terminating
newline can't be used. Consequently, cChannel::ToText() and cMark::ToText() have
been modified accordingly.
- All timer related response strings from SVDRP commands now use the channel ID
instead of channel numbers.
- The "Edit timer" menu now has a new parameter "Record on", which can be used to
select the VDR on which this timer shall record. Timers can be freely moved
between connected VDRs by simply selecting the desired machine in this field.
- The SVDRP command DELT no longer checks whether the timer that shall be deleted
is currently recording.
- The character 0x0D is now stripped from EPG texts (reported by Janne P<>nk<6E>l<EFBFBD>).
- The EPG scanner no longer moves the dish if there is a positioner.
- The 'newplugin' script now creates the 'po' subdirectory for translations (thanks
to Thomas Reufer).
- Skins can now implement cSkinDisplayMenu::MenuOrientation() to display horizontal
menus (thanks to Stefan Braun).
- Fixed a possible stack overflow in cListBase::Sort() (thanks to Oliver Endriss).
- Changed the description of the --chartab option in the INSTALL file to refer to
"DVB SI table strings" instead of "EPG data".
- The width and height of the OSD are now limited to the actual maximum dimensions
of the output device, taking into account the top and left offset.
- The new setup option "Recording/Record key handling" can be used to define
what happens if the Record key on the remote control is pressed during
live tv (suggested by Dietmar Spingler).
- Empty adaptation field TS packets are now skipped when recording (thanks to
Christopher Reimer, based on the "AFFcleaner" by Stefan P<>schel).
2016-12-24: Version 2.3.2
- Fixed a crash when deleting a recording (reported by Oliver Endriss).
- Fixed an overflow of PIDs in a receiver (thanks to Robert Hannebauer).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed initializing device specific parameters in cDvbTransponderParameters.
- The function SetCurrentChannel(const cChannel *Channel) is now deprecated and
may be removed in a future version. Use SetCurrentChannel(int ChannelNumber)
instead.
- The SVDRP command DELC now refuses to delete the very last channel in the list,
to avoid ending up with an empty channel list.
- The cRwLock class now allows nested read locks within a write lock from the
same thread. This fixes possible crashes when moving or deleting channels in
the menu or through SVDRP (as well as other operations that try to acquire a
read lock within a write lock).
- Fixed a crash when trying to delete a channel that is being used by a timer.
- Fixed setting the current item and counter values in the Recordings menu after
deleting the last recording in a subfolder.
- Fixed a crash when deleting a recording that is currently being replayed.
- Fixed a crash when moving a recording to a folder on a different volume.
The cRecordingsHandler now performs its actual operations in a separate thread,
thus avoiding locking problems and reducing the time between subsequent
operations.
- Added a note to the description of cFont::Size(), regarding possible differences
between it and cFont::Height() (suggested to Thomas Reufer).
- Made the cPlayer member functions FramesPerSecond, GetIndex and GetReplayMode
'const' (thanks to Thomas Reufer).
- Fixed resuming replay at a given position, which was off by one frame (thanks
to Thomas Reufer).
- Improved handling frame numbers to have a smoother progress display during
replay of recordings with B-frames (thanks to Thomas Reufer).
- Fixed replaying recordings to their very end, if they don't end with an I-frame
(thanks to Thomas Reufer).
- Implemented a frame parser for H.265 (HEVC) recordings (thanks to Thomas Reufer).
- Added cFont::Width(void) to get the default character width and allow stretched
font drawing in high level OSDs (thanks to Thomas Reufer).
- Fixed regenerating the index of audio recordings (thanks to Thomas Reufer).
- Fixed building VDR with systemd >= 230 (thanks to Ville Skytt<74>).
- Sorted sources.conf by continuous azimuth (thanks to Lucian Muresan).
- Added 'S58.5E Kazsat 3' to sources.conf (thanks to Aitugan Sarbassov).
- Fixed truncated date/time strings in the skins on multi-byte UTF-8 systems
(reported by Sergey Chernyavskiy).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Added a 'const' version of cTimers::GetTimer() (thanks to Lars Hanisch).
- Fixed a typo in the description of cTimers::GetTimersRead() (thanks to Lars
Hanisch).
- Fixed a possible buffer overflow in handling CA descriptors (suggested by
Lars Hanisch).
- Avoiding some duplicate code and unnecessary work in nit.c (thanks to Ville
Skytt<74>).
- Added support for the systemd watchdog (thanks to Marc Perrudin),
- Added a short sleep to cTSBuffer::Action() to avoid high CPU usage (thanks to
Sergey Chernyavskiy).
2017-03-28: Version 2.3.3
- Added 'S3W ABS-3A' to sources.conf (thanks to Frank Richter).
- Fixed a possible deadlock in the recordings handler thread.
- Updated the Russian OSD texts (thanks to Andrey Pridvorov).
- Added a missing dependency to the Makefile to avoid error messages in the
clean-plugins target (thanks to Tobias Grimm).
- The channel/CAM relations (i.e. the information which CAM can decrypt a given
channel) are now stored in the file 'cam.data' in the cache directory (suggested
by Dietmar Spingler). This speeds up switching to encrypted channels after
newly starting VDR, in case there is more than one CAM in the system.
- Fixed a flaw in handling timeouts for encrypted channels.
- The mechanism of trying different CAMs when switching to an encrypted channel is
now only triggered if there acually is more than one CAM in the system.
- Fixed updating the elapsed/remaining time in the progress display during fast
forward/rewind.
- Changed 'unsigned' to 'signed' in some places to avoid trouble with abs() in
gcc6+ (reported by Derek Kelly).
- CAMs that can handle multiple devices at the same time can now indicate this
by creating the first cCamSlot as usual, and every other cCamSlot by giving
it the first one as its "MasterSlot". To VDR this means that when searching
for a CAM that can decrypt a particular channel, it only needs to ask the
master CAM slot whether it is suitable for decrypting, and can skip all the
other slots belonging to the same master. This can greatly speed up channel
switching on systems with more than one CAM (that can handle multiple devices).
- The LCARS skin now displays the master CAM's number when a device is tuned to
an encrypted channel.
- The Setup/CAM menu now only displays master CAMs.
- Fixed setting the local machine's SVDRP host name (was overwritten if setup.conf
contained an empty string).
- PIDs can now be added to and deleted from a cReceiver while it is attached to
a cDevice, without having to detach it first and re-attach it afterwards.
- Implemented support for MTD ("Multi Transponder Decryption"). This allows a CAM
that is capable of decrypting more than one channel ("Multi Channel Decryption")
to decrypt channels from different transponders. See the remarks in mtd.h on
what a derived cCamSlot class needs to do in order to activate MTD (thanks to
Jasmin Jessich for writing the ddci2 plugin and for valuable input and help
with testing and debugging).
- The function cRingBufferLinear::Clear() can now be called safely from the
reading thread, without additional locking.
- Now stopping any ongoing recordings before stopping the plugins, to avoid
a crash when stopping VDR while recording.
2017-04-27: Version 2.3.4
- The functionality of HandleRemoteModifications(), which synchronizes changes to
timers between peer VDR machines, has been moved to timers.[ch] and renamed to
HandleRemoteTimerModifications(). It now also handles deleting remote timers.
- The function cEpgHandlers::BeginSegmentTransfer() is now boolean (thanks to
J<>rg Wendel). See the description in epg.h for the meaning of the return value.
- Changed tEventID back to u_int32_t (suggested by J<>rg Wendel). The change to
u_int16_t in version 2.3.1 was ill-conceived, because the description of the
"event id" in vdr.5 explicitly mentioned this parameter to be 32 bit in size!
The members of cEvent have been slightly rearranged to minimize the memory
requirements on both 32 and 64 bit systems.
- The file 'cam.data' is no longer written if it is read-only.
- Detecting whether a particular CAM actually decrypts a given channel is now
done separately for each receiver.
- The cEvent class now has a new member 'aux', in which external applications can
store auxiliary information with an event (thanks to J<>rg Wendel). This string
has no meaning whatsoever to VDR itself, and it will not be written into the
info file of a recording that is made for such an event.
- Added some guidelines and recommendations to the 'Logging' section of PLUGINS.html.
The most important being: implement a command line option to control the level
of logging (in particular allow turning off logging completely!) and never print
anything to stdout or stderr (unless one of the listed exceptions applies).
- Added a note to the "Pausing live video" section of the MANUAL, stating that
the timer for paused live video will always record on the local VDR, even if
an "SVDRP default host" has been set for normal timer recordings.
- cOsdMenu::Display() now checks whether the OSD size has changed and if so calls
SetDisplayMenu().
- The SVDRP commands that deal with recordings (DELR, EDIT, LSTR, MOVR, and PLAY)
now use a unique id for each recording, which remains valid as long as this
instance of VDR is running. This means that recordings are no longer continuously
numbered from 1 to N in LSTR. There may be gaps in the sequence, in case recordings
have been deleted, and they are not necessarily listed in numeric order.
Thanks to Sergey Chernyavskiy.
- Changed 'number' to 'id' in the help texts of SVDRP commands that deal with
timers.
- Fixed a deadlock in the SVDRP command PLAY in case there is currently a
recording being replayed.
- Signal strength and quality (CNR) are now determined via DVB API 5 (if available).
Fallback is the old DVB API 3 method.
- The function cCamSlot::Decrypt() can now also be called with Data == NULL.
This is necessary to allow CAMs that copy the incoming data into a separate buffer
to return previously received and decrypted TS packets. See ci.h for details.
Plugins that implement a derived cCamSlot need to properly handle this case, and
plugins that implement a derived cDevice need to call Decrypt() in their
GetTSPacket() function even if the incoming buffer is currently empty (see
cDvbDevice::GetTSPacket()).
- cTSBuffer::Skip() no longer immediately deletes the given number of bytes from the
TS buffer, but rather stores the number for later deletion in the next call to
Get(). This is necessary because in cDvbDevice::GetTSPacket() tsBuffer->Skip()
is called, but the actual TS packet returned (pointed to by Data) may well be
(and typically is, unless the CAM copies the data) in the area of the buffer that
would be deleted by Skip().
- The new function cDevice::SignalStats() (if implemented by an actual device) returns
statistics about the currently received signal.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed displaying remote timers in the main menu of skin LCARS.
- Fixed editing a remote timer immediately after it has been created.
- Fixed handling the uncorrected block counter for DVB API 3 devices when calculating
signal quality.
- The SVDRP command LSTC can now list the channels with channel ids if the option
':ids' is given (suggested by Dietmar Spingler).
- If 0 is given as the channel number in the SVDRP command LSTC, the data of the
current channel is listed.
- Fixed a possible crash when pulling the CAM while decrypting a channel with MTD.
2017-05-25: Version 2.3.5
- CAMs are now sent a generated EIT packet that contains a single 'present event' for
the current SID, in order to avoid any parental rating dialogs.
- Fixed handling UNC values (the shift operator behaves unexpected for shift values
larger than the size of the variable).
- Log messages about switching channels now include the channel ID (suggested by
Dietmar Spingler).
- Events in the EIT that end before the EPG linger time are now ignored in the incoming
data stream, because they would just be deleted in the next schedules cleanup anyway.
- The constructor of cHash (via cHashBase) now has an additional parameter (OwnObjects)
which, if set to true, makes the hash take ownership of the hashed objects, so that
they are deleted when the hash is cleared or destroyed.
- Fixed a memory leak in cSectionSyncerHash. The cSectionSyncerEntry objects put into
the hash were never explicitly deleted. Now the cSectionSyncerHash takes ownership of
these objects.
- cListObject now implements a private copy constructor and assignment operator, to keep
derived objects from calling them implicitly.
- When selecting a device/CAM combination for live viewing, CAMs that are known to decrypt
the requested channel are now given a higher priority than prefering the primary device
(reported by Christian Winkler).
- Changed the default return value of cEpgHandler::BeginSegmentTransfer() to true, to
avoid problems with derived classes that don't implement this function (reported by
Frank Neumann).
- Fixed selecting delivery system names in case of undefined indexes (thanks to Jasmin
Jessich).
- Changed the legacy delivery system name "DMBTH" to "DTMB", and added names for
DVBC_ANNEX_C and DVBC2.
- Added a Status parameter to the interface of cDevice::SignalStats() and
cDvbDevice::SignalStats() (thanks to Rolf Ahrenberg).
- Fixed handling line numbers in error messages when reading EPG data.
- Added handling RI_HOST_CONTROL to the CI protocol (no actual processing, but its
presence is required by some CAMs).
- Fixed a crash in case the bottom text of a CAM menu is empty.
- Extended the CI API to allow plugins to implement additional CAM resources.
- Fixed a race between SVDRP CHAN and cDevice::HasProgramme() (reported by Dietmar
Spingler).
- Reduced the time before a CAM is marked as known to decrypt a particular channel to
3 seconds.
- When the connection to a peer VDR is terminated, any remote timers of that peer
are no longer shown on the local VDR.
- No longer setting a new timer's remote host name if "SVDRP peering" is turned off.
- Fixed a double deletion of a cTimer in case HandleRemoteModifications() returned
false (thanks to Johann Friedrichs).
- Removed TsGetContinuityCounter() from remux.h, using TsContinuityCounter() instead.
- Fixed setting the local machine's SVDRP host name (was overwritten if setup.conf
contained an empty string). The SVDRP host name is now only written to setup.conf
if it differs from the system's host name.
- If the Channel+/- keys are pressed while in the Schedules menu, the menu is now
switched to the EPG of the new current channel.
- The Makefiles have been modified so that during the build process they no longer
display the actual (lengthy) commands, but rather just the name of the file that
is being built, as in
CC vdr.o
The first two characters indicate the kind of operation (CC=compile, LD=link,
AR=archive, MO=msgfmt, GT=xgettext, PO=msgmerge, IN=install).
This way it is much easier to spot error messages and warnings, since they are not
buried under tons of text.
Plugin authors should modify their makefiles accordingly, by simply preceeding
the respective commands with an '@' and inserting '@echo XX $@' (where XX is one
of the character combinations listed above) before the command.
The newplugin script has also been modified accordingly.
- Fixed detecting the inclusion of STL header files in tools.h (thanks to Jasmin
Jessich).
2017-06-04: Version 2.3.6
- Added backtrace functions for debugging (see cBackTrace in thread.h).
- Added checking the correct sequence of locking global lists (with help and
suggestions from Jasmin Jessich). At the first occurrence of an invalid locking
sequence, the 20 most recent locks will be written to the log file, followed by a
backtrace that led to the call in question. This code can be activated by defining
the macro DEBUG_LOCKSEQ in thread.c (which is on by default).
When debugging an actual invalid locking sequence, you can additionally define
the macro DEBUG_LOCKCALL in thread.c, which will add information about the caller
of each lock. Note that this may cause some stress on the CPU, therefore it is off
by default.
- The file Make.config.template now reacts on DEBUG=1 in the 'make' command line,
and disables code optimizations by setting -O0 (thanks to Jasmin Jessich).
This can be helpful when backtracing highly optimized code. You may want to
'make distclean' before running 'make' with a modified setting of DEBUG, to make
sure all object files are newly compiled.
- Fixed the locking sequence when dumping EPG data.
- Fixed the locking sequence when starting a recording.
- The Makefiles now use the macro $(Q) instead of a plain '@' in front of their
commands, so that verbosity can be controlled by the user (suggested by Jasmin
Jessich). Add VERBOSE=1 to the 'make' call in the VDR source directory to see the
actual commands that are executed.
Plugin authors should modify their makefiles accordingly, by simply preceeding
the respective commands with '$(Q)' and inserting '@echo XX $@' (where XX is one
of the character combinations listed in the release note for version 2.3.5) before
the command.
The newplugin script has also been modified accordingly.
Note that if you build a plugin directly in the plugin's own source directory,
the $(Q) macro won't be defined and commands will be displayed. You can add
Q=@ to the make call to have it less verbose (provided the plugin's Makefile
was modified as described above).
- Added clearing CiResourceHandlers before shutting down the plugin manager.
- Fixed a double channel switch when pressing the Channel+/- keys while no menu
or channel display is open.
- Fixed generating k_Release key events for LIRC remote controls (due to the short
timeout another normal key was sometimes put into the queue after the generated
release). Also removed some code redundancy and added some buffer checks.
- Now using a separate mutex to fix the race between SVDRP CHAN and
cDevice::HasProgramme(), because the previous fix caused a deadlock (reported by
Derek Kelly).
- Fixed a possible crash in case the SVDRP connection to a peer VDR is terminated
while getting remote timers.
- Fixed the locking sequence when creating a new timer from the Schedules menu.
- Fixed the locking sequence when switching between 'Now', 'Next' and 'Schedule'
in the Schedules menu.
2017-06-11: Version 2.3.7
- Fixed false positives when checking the locking sequence, in case of nested locks
within the same thread.
- Fixed uninitialized variable SdWatchdog in vdr.c (reported by Frank Neumann).
- Fixed the locking sequence when starting an instant recording.
- Fixed L(ock) and U(nlock) indicators in cStateLockLog.
- Increased SLL_LENGTH in thread.c to better handle long caller lines, and enclosed
logCaller with DEBUG_LOCKCALL to preserve memory in normal operation.
- Fixed a typo in CAMMENURETYTIMEOUT and added logging CAM enquiries.
- The new configuration file 'camresponses.conf' can be used to define automatic
responses to CAM menus, for instance to avoid annyoing popup messages or entering
the parental rating PIN. See vdr.5 for details.
- The option "Setup/Miscellaneous/Show channel names with source" can now be set to
"type" or "full" to show either the type or the full name of the source (thanks to
Martin Wache).
- The "Channels" menu now indicates whether a channel is encrypted ('X') or a radio
channel ('R') (thanks to Martin Wache).
- Changed ##Lock to ##_Lock in the DEF_LIST_LOCK and USE_LIST_LOCK macros defined
in tools.h, so that there is no cSchedulesLock any more. The epgsearch plugin still
had an abandoned member of class cSchedulesLock, which, as a side effect, caused an
invalid lock sequence to be flagged (reported by Johann Friedrichs). In order to
have the compiler report such things, these macros have been changed.
- Introduced the new macro DISABLE_TEMPLATES_COLLIDING_WITH_STL, which can be defined
before including tools.h in case some plugin needs to use the STL and gets error
messages regarding one of the template functions defined in tools.h.
2017-06-30: Version 2.3.8
- Updated links in the INSTALL file (thanks to Chris Mayo).
- Fixed detecting whether a CAM replies to queries, which didn't work on some systems
since the implementation of RI_HOST_CONTROL (reported by Daniel Scheller).
- Added some missing locks when calling functions from cStatus or cSkin*, and added
some text to status.h and skins.h, explaining the locking situation when such
functions are called.
- Fixed a possible crash in cStateLockLog.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Now skipping a leading '/' in AddDirectory(), to avoid double slashes (reported by
Chris Mayo).
- Fixed drawing very long menu titles in the LCARS skin (reported by Matthias Senzel).
- Timers are now linked to EPG events even if they are inactive. By default Events that
are linked to inactive timers are marked with 'I' and 'i', depending on whether the
timer would record the entire Event or only part of it.
The function cSkinDisplayMenu::SetItemEvent() now has an additional parameter named
TimerActive, which indicates whether the timer that would record this event (if any)
is active. A plugin may react on this when displaying a menu line for an event.
The old version of cSkinDisplayMenu::SetItemEvent() (without the TimerActive parameter)
is still there for backwards compatibility. It may be removed in a future version,
so plugin authors should switch to the new one.
- Now using readdir() instead of readdir_r(), if GLIBC version 2.24 or newer is used
(suggested by Frank Neumann).
- Added a note to the log, indicating that no further invalid lock sequences will be
reported until VDR is restarted.
- Whenever a change is made to the recordings in the video directory, the SVDRP command
UPDR is now sent to all peer VDRs, so that they will update their recordings list.
This is especially useful if one VDR mounts the video directory of an other one into
a subdirectory.
- SVDRP peering can now be limited to the default SVDRP host (see MANUAL for details).
2018-03-18: Version 2.3.9
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed a possible crash when stopping VDR (thanks to Matthias Senzel for reporting and
helping to debug this one).
- Fixed handling VPS events outside the LingerLimit, which could cause recordings to
stop prematurely (thanks to Johann Friedrichs).
- Fixed an invalid lock sequence when trying to remove a deleted recording in case
of low disk space.
- Now making sure that AssertFreeDiskSpace() is called with the maximum timer
priority in case there are several timers recording with different priorities.
- The MTD mapper now avoids immediately reusing unique PIDs when switching channels,
to prevent possible problems with old data in buffers (thanks to Onur Sent<6E>rk).
- The function cDevice::GetVideoSystem() (which has been deprecated since version 2.1.6)
has been finally removed.
- The macros used to control deprecated code or functions have been changed to hold
numeric values (0 and 1), so that they can be controlled at compile time, without
having to edit the actual source code (suggested by Jasmin Jessich).
- The default for DEPRECATED_VDR_CHARSET_OVERRIDE has been set to 0, which means VDR
no longer reacts on the environment variable VDR_CHARSET_OVERRIDE. You can add
'DEPRECATED_VDR_CHARSET_OVERRIDE=1' when compiling in order to restore this
functionality. However, it is recommended to use the command line option --chartab
instead.
- The timeout for the channel display is now reset whenever the channel or EPG data
changes.
- OSD menus now try to keep the offset of the list cursor at a constant position on
the screen, even if the list is modified while being displayed.
- The LCARS skin's main menu now reacts to changes of the current channel's name.
- If an event in the Schedules menu is marked with a 'T' or 'I' and the user presses the
Red button to edit the timer, local timers are now preferred over remote timers
in case there is more than one timer that will record that event.
- Switching the primary device is no longer done via osSwitchDvb (which has been
removed), but rather by the main program loop reacting to changes in Setup.PrimaryDVB.
- The new SVDRP commands 'LSTD' and 'PRIM' can be used to list all available devices
and to switch the primary device (thanks to Thomas Reufer).
- Added some comments regarding font height (thanks to Thomas Reufer).
- Fixed handling timers during the change from DST to winter time (thanks to Johann
Friedrichs).
- Added missing checks of 'player' in member functions of cControl, and setting
cControl::player to NULL in cDvbPlayerControl::Stop() to avoid a possible crash
with plugins that retrieve player information after a replay has been stopped, but
before the replay control has been destroyed (thanks to Johann Friedrich).
- Now calling Hide() and cStatus::MsgReplaying(..., false) from cReplayControl::Stop(),
to inform plugins about an ending replay session before the replay control gets
destroyed.
- Fixed a possible crash when moving a recording between different volumes (reported by
Matthias Senzel).
- Fixed positioning the cursor in the Recordings menu when moving a recording between
different volumes.
- Added a note to PLUGINS.html about writing log messages in English.
- Fixed a deadlock when moving a folder containing several recordings between
different volumes (reported by Matthias Senzel).
- Fixed positioning to the current item when changing the sort mode in the Recordings
menu, in case there is a LastReplayed recording.
- The CAM menu is now automatically closed when the current channel is switched
(suggested by Dietmar Spingler).
- Fixed a lengthy write lock on the Recordings list in case of moving a folder with
more than one recording (thanks to Matthias Senzel).
- If TS packets are not accepted by the output device in Transfer Mode, this is now
reported only once per minute in the log file.
- The new setup option "OSD/Sorting direction for recordings" can be used to switch
the sequence in which recordings are presented in the "Recordings" menu between
ascending (oldest first) and descendeng (newest first) (thanks to Matthias Senzel).
- When moving recordings between volumes, the "Recordings" menu now displays those items
that have not yet been moved completely as non-selectable. This avoids situations
where trying to play such a recording might fail.
- Fixed canceling moving a folder with several recordings between volumes.
- When moving a recording to a different folder, the cursor is no longer placed on the
new location of the recording, but rather stays in the original folder (suggested by
Matthias Senzel). If the original folder got empty by moving away the last recording
it contained, the cursor is moved up until a non empty folder is found.
- Changed the log message ""ERROR: copying directory '%s' to '%s' ended prematurely" from
"error" to "info", because any actual error would have already been reported before this
(suggested by Matthias Senzel).
- When selecting a folder for a recording or timer, it is now possible to open a folder
even if it doesn't contain any subfolders (suggested by Matthias Senzel).
- Fixed a possible deadlock when detaching a receiver from a device.
- Moved any locking from cutter.c into recording.c, to avoid a problem with locking
the Recordings list (reported by Matthias Senzel).
- Now using the 'example' macro in vdr.5 (thanks to Chris Mayo).
- Now unlocking the Recordings list before displaying an error message in
cMenuPathEdit::ApplyChanges() and cReplayControl::Stop() (reported by Matthias Senzel).
- Fixed a possible deadlock when quickly zapping through encrypted channels (reported
by J<>rg Wendel).
- The new function cStatus::MarksModified() can be implemented by plugins to get
informed about any modifications to the editing marks of the currently played
recording (based on a patch from J<>rg Wendel).
- Fixed handling editing marks in the replay progress display, in case the marks are
deleted via the Info/Edit menu of the currently played recording (the progress
display still displayed them).
- Limited some CAM related log messages to the actual master CAM, if any.
- The Perl script 'peerdemo' shows how one can find all the VDRs in the local network
using the peer connection mechanism.
- Added the UPDATE-2.4.0 file.
- Making sure cSVDRPClient::Process() reads the entire reply once it started reading,
even if no Response parameter is given.
- Replaced the warning regarding the open SVDRP port in the INSTALL file with a remark
about using svdrphosts.conf to completely disable SVDRP access.
- Added a note about the fixed UDP port for SVDRP discovery to vdr.1.
- Fixed updating the Timers menu after turning a local timer on/off with the Red
button.
- Fixed keeping the cursor position in the Recordings menu in case a timer starts
recording while the menu is open.
- When a timer is newly created in the Timers menu, it now immediately appears at the
correct position in the list, rather than first being added at the end and then
jumping to the proper offset.
- Fixed getting the info of a newly edited recording (reported by Matthias Senzel).
- Improved calculating signal strength and quality (thanks to Helmut Binder).
- While a timer is recording, the file '.timer' in the recording directory now contains
the full id of the timer that is currently recording into this directory. This is used
to determine whether a timer is still recording on a remote VDR when deleting a recording
from the Recordings menu.
- Fixed handling SVDRP peering for more than one instance of VDR on the same machine, and
improved logging and debug output.
- Fixed case inconsistency with SVDRPDefaultHost in config.c.
- Added a section about the '.sort' file to vdr.5.
- Initiating the client side of a peer-to-peer SVDRP connection is now done with the new
SVDRP command CONN instead of using the UDP port with the server's address.
This change requires that all VDRs that shall take part in a peer-to-peer network need
to be updated to this version.
- Moved handling remote timers into cSVDRPClientHandler::ProcessConnections().
- Combined Start/StopSVDRPServer/ClientHandler() into Start/StopSVDRPHandler().
- Updated the Polish OSD texts (thanks to Tomasz Maciej Nowak).
- When remote timers are fetched from a peer VDR, we no longer blindly delete and re-add
them, but rather compare them and make only the minimum necessary changes.
- Fixed the CompareInts() function.
- Disabled the use of posix_fadvise() when reading (i.e. replaying), since it caused
stuttering replay in fast forward and fast rewind mode in case the video directory
is mounted via NFS. You can re-enable it by setting the macro USE_FADVISE_READ to 1
in tools.c.
- Modified cStateLock's SetExplicitModify() and IncState() (changed to SetModified()) to
allow for the introduction of syncing a separate cStateKey to a cStateLock.
- Assigning events to timers no longer triggers sending a POLL to all peer VDRs.
- When making modifications to remote timers, the local VDR no longer sends a POLL to
all remote VDRs.
- Fixed removing a cStateKey from a cStateLock (setting StateKey.stateLock = NULL was
done too late, after the lock had already been released).
- Now writing the info file before attaching the recorder to the device, to make sure it
is present when the recorder needs to update the fps value.
- Making sure the Schedules menu has a proper title, even if it is empty.
- Removed sending the SVDRP command UPDR to peer VDRs whenever a change is made to the
recordings in the video directory (which was introduced in version 2.3.8), because it
triggered re-reading the video directory too fast.
- Improved handling VPS timers to better react to EPG changes during an ongoing recording.
- Commented out the logging in cMarks::Align(), to avoid log entries in case of editing
marks that are not generated by VDR itself, and thus may be a little off (suggested by
J<>rg Wendel). You can activate this line again for debugging if necessary.
- Made the input buffer in cSVDRPClient dynamic.
- Fixed handling parameters in the S2SatelliteDeliverySystemDescriptor and
T2DeliverySystemDescriptor that were overwritten when parsing the
SatelliteDeliverySystemDescriptor or TerrestrialDeliverySystemDescriptor, respectively.
- Modified cMenuTimers::Delete() to avoid a lengthy lock on the Timers list while prompting
the user.
2018-04-15: Version 2.4.0
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Fixed processing SVDRP client responses in case the caller doesn't want the actual
response strings (reported by Johann Friedrichs).
- Fixed (not) saving the 'cam.data' file in case VDR stops early during startup due to
some error.
- Fixed some warnings from g++ 7.2.0 regarding fixed buffer sizes in cMenuEditTimeItem::Set()
and cCountdown::Update() (reported by J<>rg Wendel).
- Fixed a possible discrepancy of the primary device number in the LSTD and PRIM
commands, by setting Setup.PrimaryDVB in cDevice::SetPrimaryDevice() (reported by
J<>rgen Schneider).
- Fixed setting the initial offset of the cursor in a list menu (reported by Matthias
Senzel).
- The EIT filter no longer parses data from "other TS", to avoid problems with
broadcasters who transmit faulty EIT data.
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed sluggish setting of editing marks and a jumping progress display with very
short recordings (reported by Oliver Endriss).
- Fixed updating the Schedule menu after editing a timer.
- Fixed scaling bitmaps with very small factors (reported by Rolf Ahrenberg).
- Added a missing initialization of osdState in cDisplayChannel::cDisplayChannel(eKeys
FirstKey).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Updated the Hungarian OSD texts (thanks to Istv<74>n F<>ley).
- Updated the French OSD texts (thanks to Bernard Jaulin).
- Fixed a high CPU load during replay with active progress display (reported by Matthias
Senzel).
- Official release.
2019-06-17: Version 2.4.1
- Fixed handling the tfRecording flag in the SVDRP commands MODT and UPDT (reported
by Johann Friedrichs).
- Fixed a possible invalid locking sequence in case a remote timer handling error message
is displayed on the OSD and the skin tries to lock the Recordings or DeletedRecordings
list in its Flush() function (for instance by calling cVideoDiskUsage::HasChanged()).
To do this, the call to Skins.Message() in menu.c's HandleRemoteModifications() has
been changed to Skins.QueueMessage(), and cSkins::ProcessQueuedMessages() is now called
unconditionally in the main loop, and checks whether the current cSkinDisplay object
(if any) implements SetMessage().
- Fixed locking the Channels list in cDisplayChannel, where the lock was still held
when Flush() was called (reported by Matthias Senzel and Uwe Scheffler).
- Fixed shutdown after user inactivity in case a plugin is keeping the OSD open
(reported by Ulrich Eckhardt).
- Fixed switching through encrypted channels with the Up/Down keys (thanks to Helmut
Binder).
- Now deactivating MTD support if a non MCD capable CAM is inserted after removing
a previously used CAM that is MCD capable (thanks to Helmut Binder).
- Added support for DVB devices with more than one frontend that all use the same
dvr and demux. Note that in order for this to work, you must not set symbolic
links like "demux1 -> demux0" and "dvr1 -> dvr0", as is mentioned in some user
manuals of multi frontend DVB cards.
- Reverted the change "The EIT filter no longer parses data from "other TS"...". It led to
missing EPG data on channels from Canal Digital Norway (reported by Stian B. Barmen).
- Fixed accessing the actual frontend on multi frontend devices (thanks to Helmut Binder).
- Fixed opening the UDP port in peerdemo (thanks to Robert Hannebauer).
- Fixed handling PATs that contain no PMTs.
- Fixed processing the last entry in the scan list of the EIT scanner (thanks to
Helmut Binder).
- Fixed processing transponder data in the NIT (thanks to Helmut Binder).
- Fixed triggering the SDT filter when parsing the NIT (thanks to Helmut Binder).
- Added support for EAC3 audio from other sources (thanks to J<>rgen Schneider).
- No longer logging tuning timeouts for transponders that are announced in the NIT but
are not currently broadcasting.
- Fixed processing SI::T2DeliverySystemDescriptor when typecasting it over an
SI::ExtensionDescriptor (reported by Helmut Binder).
- Fixed sorting recordings alphabetically.
- Fixed dropping capabilities in case cap_sys_time is not available.
- Fixed updating the cursor position when switching channels with the Channel+/- keys
while the Channels menu is open.
- Fixed handling shared CA pids (thanks to Onur Sent<6E>rk).
- Now touching the .update file in the video directory after removing deleted
recordings, so that other VDRs that use the same video directory will update their
list of (deleted) recordings and thus won't display too much empty disk space.
- Fixed the install target in case of multiple jobs (thanks to Chris Mayo).
- Fixed mapping SIDs in MTD (thanks to Helmut Binder).
- Fixed updating the checksum in the CA table after mapping EMM PIDs for MTD (thanks to
Helmut Binder).
- Fixed a compiler warning in ExchangeChars() (thanks to Helmut Binder).
- Fixed a compiler warning and a possible buffer overflow in cCiMMI::SendAnswer().
- Fixed a possible invalid lock sequence if the main menu is open and the user
switches to a channel that is currently not available, using the Channel+/- keys.
- Fixed handling remote timers in case the response to LSTT is '550 No timers defined'.
- Fixed a compiler warning in cIndexFile::ConvertToPes() and added __attribute__((packed))
to tIndexPes and tIndexTs (suggested by Helmut Binder).
- Fixed handling repeat function for keyboards.
- Added a workaround for broadcasters who set an event to status "not running" where
this is inappropriate; implicitly setting events to "not running" is now also logged.
- Fixed asserting free disk space in case there is no local timer currently recording.
- The default maximum size of a cPixmap has been raised to the maximum possible value.
- Increased PLAYERBUFSIZE to (MAXFRAMESIZE * 5) to avoid stuttering replay under heavy
system load, and to better document that this buffer size is related to the maximum
frame size.
- Fixed inconsistent behavior in case only certain devices are used (selected by the '-D'
option).
- Fixed a wrong variable name in cFileName::cFileName().
- If cSkins::Message() is called from a background thread and Type is not mtStatus,
the call is now automatically forwarded to QueueMessage().
- Fixed handling the S2SatelliteDeliverySystemDescriptor for transponders broadcasting
in "backwards compatibility mode" according to ETSI EN 300 468 (thanks to Onur Sent<6E>rk).
2020-05-18: Version 2.4.2
- Fixed moving channels between number groups in SVDRP's MOVC command and the Channels
menu, in case a channel is moved to a higher number and into a numbered group
(reported by Manuel Reimer).
- Now retuning if the received transponder's SDT doesn't contain the expected values
for NID and TID (thanks to Uwe Scheffler for reporting a problem with failed tuning
in SCR systems, and Helmut Binder for helping with the implementation).
- Fixed compatibility with current versions of glibc (thanks to Manuel Reimer).
- The SVDRP command DELC now also accepts a channel id (suggested by Manuel Reimer).
- Fixed dropping capabilities in case cap_sys_time is not available.
- Added the language code for Bulgarian (thanks to Helmut Binder).
- Fixed handling multi part ExtendedEventDescriptors where only the first part
contains information about the character table (based on a patch from Helmut Binder).
- When setting the system character table, it is no longer checked against the known
entries that are hard coded in libsi/si.c, but rather given to iconv_open() and the
result of that call is used to check whether the given name is valid.
- Checking whether the system character table is "single byte" is now done by checking
the result of a sample call to iconv().
- Setting the override character table now checks and reports whether the given value
is valid (suggested by Helmut Binder).
- The isSingleByte parameter in the call to getCharacterTable() is deprecated and only
present for backwards compatibility.
- Fixed a possible crash in case replay is started and stopped in rapid sequence, by
adding missing locking to cControl::Control(). The caller of this function must now
provide a cMutexLock which stays alive as long as the result of this call is used.
The old version of this function is still there for backwards compatibility with
plugins, because this problem appears to occur only under very rare circumstances.
Authors of plugins that use this function should switch to the new version, because
the old one is deprecated and will be removed in a future version.
The version numbers (both VDRVERSNUM and APIVERSNUM) have been bumped to 2.4.2, so
that plugins can detect the presence of the new cControl::Control().
2020-06-27: Version 2.4.3
- Added a missing '-D' to the 'plugins' target of the Makefile (thanks to Johann
Friedrichs).
- Fixed the size of cChannel::dtypes[] (thanks to Winfried K<>hler).
The version numbers (both VDRVERSNUM and APIVERSNUM) have been bumped to 2.4.3 to
indicate this change.
- Added a device hook for detecting whether a device provides EIT data (thanks to
Winfried K<>hler).
- Fixed memory handling in cString::Append() (reported by Stefan Herdler).
- Revised 'Fixed a possible deadlock when detaching a receiver from a device' from
version 2.3.9, which sometimes caused a black screen when switching channels
(thanks to Stefan Verse).
- Added failsafe defaults for 'make LCLBLD=1' to the Makefile (thanks to Stefan
Herdler).
- Added codes for more languages and special audio tracks (thanks to Helmut Binder).
- Added cMtdCamSlot::TsPostProcess() (thanks to Helmut Binder).
- Added cMtdHandler::StopDecrypting() (thanks to Helmut Binder).
- Added support for detecting new channels broadcast in HEVC (thanks to Helmut Binder).
- Added support for detecting 'advanced codec digital radio sound service' (thanks to
Helmut Binder).
- Added handling shared PMT pids and multiple PMT sections (thanks to Helmut Binder).
- Changed the country code in the generated ParentalRatingDescriptor from 'DEU' to
'902' to make it valid for all countries (thanks to Helmut Binder).
- Added optional verbose output to the libsi Makefile (thanks to Tobias Grimm).
- Made the call to pkg_config configurable via the PKG_CONFIG macro, which is necessary
for cross-building VDR (thanks to Tobias Grimm). Plugin authors may want to modify
their Makefiles accordingly by adding the line 'PKG_CONFIG ?= pkg-config' and
replacing every occurrence of 'pkg-config' with '$(PKG_CONFIG)', as can be seen in
the Makefiles of the plugins that come with the VDR source.
- Fixed a typo in svdrp.c (thanks to Tobias Grimm).
- Added support for HEVC-video and AC-4-audio (thanks to Christoph Haubrich).
- Added a comment about the semantics of cTimeMs::Set().
- Adjusted device selection in GetDeviceForTransponder() to that in GetDevice() (thanks
to Helmut Binder).
- Now adding CPPFLAGS to CXXFLAGS to allow extra preprocessor flags to be given when
doing make (suggested by Tobisa Grimm).
- Added CRC check of the CAT in cCaPidReceiver::Receive() (thanks to Helmut Binder).
- Fixed the 'else if' branch in cDevice::GetDeviceForTransponder(), which hasn't
been active since version 1.7.29 (reported by Helmut Binder). The original purpose of
this branch was to use a device that is currently not recording for switching to the
transponder of an upcoming VPS timer. However, this caused problems with more than
two bonded devices, which was "fixed" in version 1.7.29. Apparently this fix merely
rendered the whole code branch inactive. Now this branch is only executed for devices
that are not bonded.
2020-08-02: Version 2.4.4
- Improved deleting plugins in case the plugin uses its own memory management (thanks
to Winfried K<>hler). Plugins that have been compiled with previous versions of VDR
do not need to be recompiled, they will silently be handled as before.
- Now setting currentDisplayChannel = NULL before calling cStatus::MsgOsdClear() in
~cDisplayChannel(), to avoid possible problems in case a plugin calls IsOpen()
(reported by Thomas Reufer).
- Fixed handling inactive shared CA pids (thanks to Helmut Binder).
- Implemented handling multi packet CATs with MTD (thanks to Helmut Binder).
- Fixed a possible 'invalid lock sequence' when switching to an unavailable channel
with the main menu open.
- Official release.
2020-10-16: Version 2.4.5
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed handling newline characters in ci.c's CopyString() (reported by Winfried K<>hler).
- Fixed checking the return value of the Open() call in cFileName::SetOffset() (reported
by Winfried K<>hler).
- Fixed a possible invalid lock sequence in cMenuTimers::OnOff().
- Fixed several typos (reported by Jens Schleusener).
- Implemented anti-aliasing for cPixmap::DrawSlope() and cPixmap::DrawEllipse() (thanks
to Christoph Haubrich).
The version numbers (both VDRVERSNUM and APIVERSNUM) have been bumped to 2.4.5 to
indicate this change.
- Fixed alignment of semi-circles in case of odd sizes.
- Increased the size of the TS buffer to 16MB, to have more reserve when recording
several HD programmes.
- Added checking the symbol rate to cDvbTuner::IsTunedTo(), which apparently got lost
in version 1.7.13 (thanks to Helmut Binder).
- Now checking for an empty command in cDvbTuner::GetSignalStats() to avoid a possible
error message (thanks to Helmut Binder).
- Now initializing the status variable in cDvbTuner::GetFrontendStatus() and
cDvbTuner::GetSignalStats() to avoid problems with drivers that don't do this
(thanks to Helmut Binder).
2020-12-22: Version 2.4.6
- Fixed multiple recording entries in case a recording is started during the initial
reading of the video directory (reported by Claus Muus).
- Fixed an unnecessary double call to Display() in cMenuRecording::RefreshRecording()
(reported by Christoph Haubrich).
- Fixed a crash in case an error occurs when setting a remote timer.
- Fixed allocating memory for cImage (reported by Christoph Haubrich).
- Fixed parsing the '-l' command line option (reported by Harald Milz).
- Fixed possible compilation errors with libjpeg (thanks to Bernd Kuhls).
- Fixed "read incomplete section" errors (thanks to Helmut Binder).
- Fixed generating the HashId in cEIT::cEIT() (thanks to Helmut Binder).
- Added initialization of cDvbFrontend::frontendInfo (thanks to Winfried K<>hler).
- Fixed a bug in handling shared PMTs, where after the first pass not all SIDs of a
PMT pid were checked any more (thanks to Helmut Binder).
- Fixed PMT handling in case locking the Channels list times out (reported by Helmut
Binder).
- Avoiding a lengthy lock on the Channels list when starting a recording (thanks to
Helmut Binder).
- Fixed error handling when loading a plugin (reported by Markus Ehrnsperger).
- Improved handling missing VDRPluginDestroyer() (thanks to Winfried K<>hler).
- Fixed initializing tmpbuf in ExtendedEventDescriptors::getText() (thanks to Helmut
Binder).
- Fixed a compiler warning (thanks to Winfried K<>hler).
- Fixed convertCharacterTable() in case iconv_open() fails (thanks to Helmut Binder).
- Official release.
2020-12-26: Version 2.5.1
- Implemented "Pattern Timers" (see MANUAL, vdr.1 and vdr.5 for details).
- Events in the past are no longer marked as having a timer in the Schedules
menu.
2021-01-02: Version 2.4.7
- Fixed strreplace() to handle NULL strings (reported by J<>rgen Schneider).
- Somewhere down the road the 'x' bit of Doxyfile.filter got lost, so the
Makefile now makes sure it is set before calling doxygen.
- Fixed a crash in the SVDRP command CLRE in case a non-existing channel number is
given (reported by Manuel Reimer).
- Fixed handling $(PKG_CONFIG) in newplugin (thanks to Winfried K<>hler).
2021-04-06: Version 2.5.2
- Fixed strreplace() to handle NULL strings (reported by J<>rgen Schneider).
- Somewhere down the road the 'x' bit of Doxyfile.filter got lost, so the
Makefile now makes sure it is set before calling doxygen.
- Using strgetlast() in more places.
- Fixed a crash in the SVDRP command CLRE in case a non-existing channel number is
given (reported by Manuel Reimer).
- Fixed handling $(PKG_CONFIG) in newplugin (thanks to Winfried K<>hler).
- Fixed initializing the cChannel::schedule pointer after reading EPG data with PUTE
(reported by Manuel Reimer).
- Fixed VPS handling when spawning a pattern timer, in case Setup.UseVps is false
(reported by J<>rgen Schneider).
- Increased the number of possible modulation systems in cDevice::GetDevice()
(reported by Ulf Gr<47>ne).
- Now explicitly triggering respawning of pattern timers.
- If an event in the Schedules menu is marked with a 'T' or 'I' and the user presses the
Red button to edit the timer, spawned timers are now preferred over pattern timers
in case there is more than one timer that will match that event.
- Made the functions cRecordingInfo::SetData() and cRecordingInfo::SetAux() public
(thanks to Peter Bieringer).
- Fixed setting the 'title' of a recording's info to the recording's name if there
is no info file (the change in version 1.7.28 broke the fallback to the old 'summary.vdr').
- Now making sure a spawned timer only fully overlaps the given event (reported by
J<>rgen Schneider).
- Added some missing user command calls for copying, renaming and moving recordings
(thanks to Peter Bieringer).
- Improved cSectionSyncer to make sure that no sections are missed, and to allow
handling partially used segments (as in the EIT) and processing sections in random
order. Segment syncing is now done with the two member functions Check() and
Processed(). The old functions Sync() and Repeat() are deprecated and may be
removed in a future version. See the comments in filter.h for a description on
how to use these new function.
- When checking whether a particular recording has already been made by a pattern
timer, the characters ' ' (blank), ':' and '-' are now ignored, making
"TITLE - EPISODE" and "TITLE: EPISODE" the same.
- Decreased the scrambling timeout for CAMs known to decrypt a certain channel, so
that it won't collide with MAXBROKENTIMEOUT in recorder.c.
- Fixed scaling subtitles with anti-aliasing (thanks to Peter Bieringer).
- Improved handling EPG data from the EIT tables:
+ Table 0x4F is now completely ignored.
+ Once a schedule has seen events from 0x5X, tables 0x6X are ignored for that
schedule.
+ When looking up an event in its schedule, the start time is used for tables 0x6X, and the
event id for tables 0x4E and 0x5X.
+ When hashing events by event id or start time, existing older entries in the hash
tables are now deleted before entering the new ones.
+ The function cSchedule::GetEvent() is now deprecated and may be removed in a future
version. Use GetEventById() and GetEventByTime() instead.
+ On channels that use proper event ids a change of the start time no longer
causes a new event to be created, but rather modifies the existing one. This
avoids possible interruptions in VPS recordings in case the event's start time
is changed while the recording is already going on.
- The margins for timer recordings are now always limited to the duration of the
previous and next event.
- Spawned timers that don't use VPS now automatically adjust their start/stop times
to changes in the respective event's times.
- Fixed handling the timer counter in cSchedule::DelEvent().
- Fixed MakePatternFileName() in case the event doesn't yet have a short text (reported
by J<>rgen Schneider).
- No longer switching devices for pattern timers (thanks to Helmut Binder).
- cTimer::TriggerRespawn() now only acts on local timers.
2021-04-20: Version 2.5.3
- When spawning pattern timers, the new function cTimers::GetTimerForEvent() is now used
to check whether a matching event already has a local spawned timer. Reason: creating a timer
from the Schedule menu (by pressing the Red button), then pressing Red again to edit
the timer, making it a pattern timer and moving it to a remote machine, did not cause
an immediate respawn on the remote machine, because at that time the event on the remote
machine was still covered by the initial timer (which, from the remote machine's standpoint,
was "remote").
- Now adjusting spawned timers before setting events to timers.
- Fixed dropping outdated events.
- To avoid problems with very short events, non-VPS pattern timers now spawn timers for all
matching events that would start while the first one is still recording.
- Now making sure that spawned timers with reduced start/stop margins actually record with
the full margins.
- Fixed the timer indicator in the Schedule menu in case an event is already over, but the
timer is still recording.
- The new functions cTimer::Start/StopTimeEvent() are now used in the LCARS skin to display
the start/stop times of timers in the main menu.
- EXPIRELATENCY now only applies to VPS timers.
- Deleting expired timers is now triggered immediately after the timers are modified.
2021-05-21: Version 2.5.4
- Now using a separate fixed value for internal EPG linger time. This fixes problems with
spawned timers jumping to the next event in case Setup.EPGLinger is very small. (reported
by J<>rgen Schneider).
- Fixed a possible crash in the Schedule menu, in case Setup.EPGLinger is 0.
- Fixed cTsPayload::AtPayloadStart() to ignore TS packets from other PIDs.
- Recordings are now checked for errors:
+ On TS level, the continuity counter, transport error indicator and scramble flags are
checked.
+ On frame level it is checked whether there are no gaps in the PTS.
+ The number of errors during a recording is stored in the recording's 'info' file, with
the new tag 'O'.
+ Spawned timers that shall avoid recording reruns only store the recording's name in
the donerecs,data file if there were no errors during recording, and if the timer has
actually finished.
- Removed the macros __STL_CONFIG_H, _STL_ALGOBASE_H and _MOVE_H from tools.h. If your
plugin insists in using "using namespace std;" you can still define
DISABLE_TEMPLATES_COLLIDING_WITH_STL before including any VDR header files.
- Removed 'register' from libsi/util.c to avoid a warning with ISO-C++17.
- The cFile class has been partially deprecated:
+ The handling of file handles was not thread-safe.
+ It was only actually used in svdrp.c.
+ cFile::Ready() now processes only its own file descriptor by calling FileReady()
instead of AnyFileReady().
- The transponder value of channels is now cached, because cChannel::Transponder(void)
is called very often (pointed out by Helmut Binder).
- Added code for the 'qad' audio track (thanks to Helmut Binder).
- The 'Edit path' dialog now also shows the total size of all recordings in that path
(thanks to Christoph Haubrich).
- The macro DEPRECATED_VDR_CHARSET_OVERRIDE and the related code has been removed.
- The default for DEPRECATED_SETCURRENTCHANNEL has been set to 0, which means that
the function SetCurrentChannel(const cChannel *Channel) is no longer available.
You can add 'DEPRECATED_SETCURRENTCHANNEL=1' when compiling in order to restore this
functionality. However, it is recommended to use SetCurrentChannel(int ChannelNumber)
instead.
- The macro DEPRECATED_GETBITMAP and the related code has been removed.
- The default for DEPRECATED_SKIN_SETITEMEVENT has been set to 0, which means that
the function cSkinDisplayMenu::SetItemEvent() without the TimerActive parameter is
no longer available. You can add 'DEPRECATED_SKIN_SETITEMEVENT=1' when compiling in
order to restore this functionality. However, it is recommended to use the function
with the TimerActive parameter instead.
2021-06-10: Version 2.5.5
- cRecordingInfo::Errors() now returns -1 for old recordings; added a missing 'const'
(suggested by Christoph Haubrich).
- The error counter of a recording is now copied as is when editing a recording.
- Added missing initialization of cRecorder::lastErrors.
- Now using __cplusplus instead of DISABLE_TEMPLATES_COLLIDING_WITH_STL, and using
std::min(), std::max() and std::swap() if available (thanks to Winfried K<>hler).
- No longer permanently looping through PMT PIDs, which caused problems with some
SatIP receivers (reported by Andr<64> Weidemann; with help from Helmut Binder).
- Fixed flushing old data from the section handler (thanks to Helmut Binder).
- Removed unused declaration of cDvbTuner::SetFrontendType() (thanks to Helmut Binder).
- Fixed handling incomplete multi-packet CAT (thanks to Helmut Binder).
2021-07-02: Version 2.5.6
- Fixed restarting PMT pids after starting a recording on the currently viewed channel
(with help from Helmut Binder).
- If an error occurs while recording, the respective entry in the list of recordings is
now updated immediately (reported by Matthias Senzel).
- Fixed a possible access to characters after the terminating zero of strings in
cDoneRecordings::Contains(), in case there are fuzzy characters at the end of a
string.
- When checking whether a recording has already been made, recording names are now
compared case insensitive.
- Improved responsiveness in cSectionHandler::Action() (thanks to Helmut Binder).
- Fixed deleting the edited recording in case of an error (reported by Christoph Haubrich).
- Fixed triggering the PAT filter.
- The Recordings menu now marks recordings with errors with an exclamation mark ('!'),
and the number of errors (if any) is displayed in the recording's Info menu.
2021-12-20: Version 2.5.7
- Replaced all umlauts in the example channels.conf with their ae, oe, ue substitutes
to avoid problems on UTF-8 systems.
- Added missing '0x09=H.265 video, 0x19 = AC4 audio' to vdr.5 (reported by Christoph
Haubrich).
- Fixed unlocking vs. call to EpgHandlers.EndSegmentTransfer() (reported by Christoph
Haubrich).
- Fixed a memory leak in handling the NIT (thanks to Helmut Binder).
2021-12-27: Version 2.4.8
- Fixed a possible crash in the Schedule menu, in case Setup.EPGLinger is 0.
- Fixed cTsPayload::AtPayloadStart() to ignore TS packets from other PIDs.
- Fixed unlocking vs. call to EpgHandlers.EndSegmentTransfer() (reported by Christoph
Haubrich).
- Fixed a memory leak in handling the NIT (thanks to Helmut Binder).
- Fixed a possible memory leak in creating fonts (reported by Helmut Binder).
- Fixed calculating the disk use percentage if there's more than 20TB of recordings
(reported by Timo Weing<6E>rtner).
- Official release.
2021-12-27: Version 2.6.0
- Fixed a possible memory leak in creating fonts (reported by Helmut Binder).
- Fixed calculating the disk use percentage if there's more than 20TB of recordings
(reported by Timo Weing<6E>rtner).
- Official release.
2022-02-02: Version 2.6.1
- Replaced strncpy() with memcpy() in strreplace() to avoid a compiler warning
(reported by Marko M<>kel<65>).
- Fixed starting replay after jumping to an editing mark.
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Added some missing "AUTO" values to vdr.5 (thanks to Winfried K<>hler).
- Fixed handling zero bytes in cH264Parser (thanks to Christoph Haubrich).
- Fixed handling error conditions in the index file (reported by Markus Ehrnsperger).
- Fixed a possible deadlock in cDevice::DetachAllReceivers() (thanks to Helmut Binder).
- Clarified some potentially mistakable code in cSectionHandler::SetStatus() (pointed
out by Onur Sent<6E>rk).
- Official release.
2022-11-30: Version 2.6.2
- Added UPDATE-2.6.0, which was missing in the official 2.6.0 release.
- Fixed unexpected calls of the '-r' script when a recording is interrupted and
the timer has not yet finished.
- Now dropping capabilities after opening terminal.
- Now assuming the lock when removing deleted recordings even if the disk is full
(reported by Claus Muus).
- When checking whether a recording is still active, VDR no longer checks whether the
index file is being written, but rather checks for the presence of a '.timer' file.
The cutter now writes a dummy '.timer' file with timer ID '0' to make this work
for recordings that are currently being edited.
- Fixed a possible crash if an editing process is canceled while the edited
recording is being replayed.
- Added a warning if an attempt is made to obtain a write lock twice from the same thread.
- Fixed default values for DVB-T (thanks to Winfried K<>hler and Jose Angel).
- Removed some unnecessary locks from SVDRPClientHandler.
- Fixed a possible deadlock in case two SVDRP clients send each other POLL commands
at the same time.
- Added a missing 'const' to cTimers::GetTimerForEvent() (reported by Markus Ehrnsperger).
- Added a chapter about locking to PLUGINS.html (suggested by Markus Ehrnsperger).
- Implemented parsing frame rate and image size for MPEG2, H.264 and H.265 (thanks
to Christoph Haubrich).
- Using the frame rate parsed from the stream, with fall back to determining it from
PTS values.
- Fixed printing/scanning values for systems where %ld doesn't work for time_t.
- Added support for kernel based LIRC driver (thanks to Marko M<>kel<65>). Use the
command line option '--lirc=/dev/lirc0' to use this. Requires kernel version 5.10
or above.
- Added periodic calls to malloc_trim(0) to reduce memory consumption (thanks to
Onur Sent<6E>rk).
- Fixed regenerating the index file of a recording in case it is present, but empty
(reported by Stefan Herdler).
- Added missing rounding when dividing frequencies in processing the NIT (thanks to
Winfried K<>hler).
2022-12-14: Version 2.6.3
- Fixed a compiler warning.
- Fixed generating the index file in the cutter (reported by Christoph Haubrich).
- Fixed a faulty 'Timer still recording' query when canceling an editing job.
- Added code for the 'qks' audio track (thanks to Johann Friedrichs).
- Fixed a possible heap-use-after-free in cDvbTuner::Action() (reported by Marko M<>kel<65>).
- Fixed initializing cDvbPlayerControl and cTransferControl (reported by Marko M<>kel<65>).
- Now avoiding calling poll() in cSectionHandler::Action() if there are no filters
(reported by Marko M<>kel<65>).
- Now avoiding the memcpy() call in cGlyph::cGlyph() if the bitmap is empty (thanks
to Marko M<>kel<65>).
- Now avoiding unnecessary processing in cDvbSubtitleConverter::FinishPage() if there
are no areas (thanks to Marko M<>kel<65>).
- Avoiding a zero sized array in cDevice::GetDevice() (thanks to Marko M<>kel<65>).
- Now checking the video directory after setting the user id.
2023-02-17: Version 2.6.4
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed restoring the volume at program start (thanks to Matthias Senzel).
- Fixed symmetry of Begin/EndSegmentTransfer() calls in cEIT::cEIT() (thanks to
J<>rg Wendel).
- Added a note to epg.h about not messing with event ids (suggested by Winfried K<>hler).
- Added a note to vdr.5 about event ids possibly changing when an event moves from
one table to another.
- Fixed initializing cDvbPlayerControl (was broken in version 2.6.3).
- Reverted 'Fixed a possible crash if an editing process is canceled while the edited
recording is being replayed' (introduced in version 2.6.2), because it caused a
deadlock when moving recordings between volumes.
- Fixed a possible crash if an editing process is canceled while the edited recording
is being replayed (new solution).
- Fixed unnecessary interruption of ongoing recordings if timers avoided the transfer
mode receiver device (thanks to Markus Ehrnsperger).
- Revised support for kernel based LIRC driver (thanks to Marko M<>kel<65>).