diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2015-02-08 11:39:17 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2015-02-08 11:39:17 +0100 |
commit | a7fa43fd397e00dad2304cfc3e7e27f9d13529cc (patch) | |
tree | 8c1e7dc97f16b63e7d0900744372ce5336234527 /UPDATE-2.2.0 | |
parent | 890e57cfab9864f8cc433c8edf2116c211985790 (diff) | |
download | vdr-a7fa43fd397e00dad2304cfc3e7e27f9d13529cc.tar.gz vdr-a7fa43fd397e00dad2304cfc3e7e27f9d13529cc.tar.bz2 |
Added the UPDATE-2.2.0 file2.1.9
Diffstat (limited to 'UPDATE-2.2.0')
-rw-r--r-- | UPDATE-2.2.0 | 388 |
1 files changed, 388 insertions, 0 deletions
diff --git a/UPDATE-2.2.0 b/UPDATE-2.2.0 new file mode 100644 index 00000000..fe516bdb --- /dev/null +++ b/UPDATE-2.2.0 @@ -0,0 +1,388 @@ +This is a summary of the changes in VDR 2.2.0 since the last stable +version 2.0.0. It only contains things that are of actual importance +to the user and doesn't mention the many fixes and improvements that +have been made "behind the scenes". + +See the file HISTORY for a detailed list of all changes. + +Support for steerable satellite dishes: + +- Added basic support for positioners to control steerable satellite dishes. + + 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. +- 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. + +Conditional Access: + +- 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 WantsTsData in the call to the cCamSlot + base class constructor to true, in order to receive all the 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. +- 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. +- 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. +- 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. +- 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. +- Added a log message in case a receiver is detached from its device because the + assigned CAM can't decrypt the channel. +- 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). +- Modified the CAM API so that it is possible to implement CAMs that can be freely + assigned to any devices. +- 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). +- Fixed cCamSlot::Assign(), so that it actually ignores the value of Query if Device + is NULL (as described in the header file). + +Satellite Channel Routing: + +- Added support for "Satellite Channel Routing" (SCR) according to EN50607, also + known as "JESS". + +Subtitles: + +- Improved displaying DVB subtitles. +- 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. +- 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. +- 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. +- Added support for PGS subtitles. + +Plugins: + +- A plugin can implement a custom positioner control (see PLUGINS.html, section "Positioners"). +- The new menu category mcRecordingEdit is now used to mark menus that edit recording + properties. +- 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. +- cDevice::TrickSpeed() now has an additional parameter named Forward, which indicates + the direction in which replay is being done. 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. +- Avoiding unnecessary pkg-config warnings in plugin Makefiles. + 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)) +- 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. +- 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. +- 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. +- 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. +- 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. + +Skins: + +- 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 LCARS skin now shows the source value of the current channel in its channel display. +- 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. + +Remote control: + +- 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 LIRC remote control now connects to the socket even if it doesn't yet exist when + VDR is started. +- Added handling UTF-8 'umlaut' characters to cKbdRemote. + +Devices: + +- 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. +- 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. +- All bonded devices (except for the master) now turn off their LNB power completely + to avoid problems when receiving vertically polarized transponders. +- cDevice::TrickSpeed() now has an additional parameter named Forward, which indicates + the direction in which replay is being done. 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. +- 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. +- 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. +- Added subsystem id support for DVB devices connected via USB. + +DiSEqC: + +- 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. + +EPG: + +- Added Begin/EndSegmentTransfer() to the EPG handler interface. + +OSD: + +- 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. +- 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. +- 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. +- The "Select folder" menu now adds the folder names of all existing recordings to + any names that have been predefined in "folders.conf". +- 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. You can still navigate to + the last replayed recording (if any) by pressing Ok repeatedly in the Recordings + menu. + +Channels: + +- 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. +- Added support for LCN (Logical Channel Numbers), which plugins may use to sort + channels. +- 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. + +Recordings: + +- 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. + 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. +- 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. + + 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. + 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 MOVR can be used to rename a recording + + Note that in several places in the source code a "copy" operation is mentioned, + however there is no user interface for this, yet. +- 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 + The result of this function was way off any realistic + value in case there are many radio recordings in the video directory. +- 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. +- 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. +- 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. +- 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. +- 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. See MANUAL, section "Managing folders" for details. + +Replay: + +- 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. +- A recording is now still considered unviewed when stopping replay within 10 seconds + of the first mark. +- The keys '1' and '3' can now be used in replay mode to position an editing mark + in "adaptive" mode. See MANUAL, section "Editing a Recording". +- 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). + +SVDRP: + +- The new SVDRP command MOVR can be used to rename a recording + +Audio: + +- Added the new parameters "Setup/Miscellaneous/Volume steps" and + ".../Volume linearize". See the MANUAL for details. +- Added handling for DTS audio tracks to cPatPmtParser::ParsePmt(). + +Misc: + +- Reverted the change from version 1.5.7 that made all logging go to LOG_ERR. +- The Yellow button in the main menu no longer acts as "Pause" if "Pause key handling" + is set to "do not pause live video". +- Added code for parsing LCN and AVC descriptors to libsi. +- Changes in the teletext PID no longer cause retuning (and thus interrupting a + recording). +- Made it clear that the Data parameter in cDevice::StillPicture() may point to a + series of packets, not just a single one. +- Changed '%a' to the POSIX compliant '%m' in all scanf() calls. +- cTSBuffer now provides the number of available bytes in its Get() function. +- The script given to VDR with the '-r' option is now also called after the recording + process has actually started. +- Updated 'sources.conf'. +- 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 many TS packets for detecting frame borders. +- Improved PAT/PMT scanning to speed up initial tuning to encrypted channels on + transponders with many PAT entries. +- 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 support for systemd. To activate this you need to add "SDNOTIFY=1" to the + 'make' call. +- 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. +- VDR now reads command line options from *.conf files in /etc/vdr/conf.d. + See vdr.1 and vdr.5 for details. +- Added the functions IndexOf(), InsertUnique(), AppendUnique() and RemoveElement() + to the cVector class. +- Added functions to set and retrieve the priority of a cReceiver. +- Changed the German weekday names from "MonDieMitDonFreSamSon" to + "Mo.Di.Mi.Do.Fr.Sa.So.". +- Added the channel name to log messages that reference a channel. +- Added ARGSDIR to the ONEDIR section of Make.config.template. +- Added SDNOTIFY, NO_KBD and BIDI to Make.config.template. +- Modified runvdr.template to improve compatibility with the "bash" and "dash" shells. +- Updated sources.conf to reflect the fact that Astra 4A and SES5 are actually in + two separate positions. +- Fixed cMarks::GetNextBegin() and cMarks::GetNextEnd(). 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. |