Version 1.7.26

Original announce message:
VDR developer version 1.7.26 is now available at

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

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.25-1.7.26.diff

MD5 checksums:

eb57398e44935ecb0bfc532bdfead312  vdr-1.7.26.tar.bz2
62e0f39e2c53ec2b5abd3ebb0e00ce3d  vdr-1.7.25-1.7.26.diff

WARNING:
========

This is a developer version. Even though I use it in my productive
environment. I strongly recommend that you only use it under controlled
conditions and for testing and debugging.

From the HISTORY file:
- 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.
This commit is contained in:
Klaus Schmidinger
2012-03-10 16:18:00 +01:00
committed by Dieter Hametner
parent 3df1b6d139
commit 5117f35938
65 changed files with 1282 additions and 617 deletions

View File

@@ -21,6 +21,9 @@ html, body {
.modified {
background-color: #FFDDDD;
}
modified {
background-color: #FFDDDD;
}
</style>
</head>
<body>
@@ -34,9 +37,9 @@ Copyright &copy; 2009 Klaus Schmidinger<br>
<a href="mailto:kls@tvdr.de">kls@tvdr.de</a><br>
<a href="http://www.tvdr.de">www.tvdr.de</a>
</div>
<div class="modified">
Important modifications introduced since version 1.6 are marked like this.
</div modified>
<div class="center">
<modified>Important modifications introduced since version 1.6 are marked like this.</modified>
</div>
<p>
VDR provides an easy to use plugin interface that allows additional functionality
to be added to the program by implementing a dynamically loadable library file.
@@ -99,6 +102,7 @@ structures and allows it to hook itself into specific areas to perform special a
<li><a href="#Audio">Audio</a>
<li><a href="#Remote Control">Remote Control</a>
<li><a href="#Conditional Access">Conditional Access</a>
<li><modified><a href="#Electronic Program Guide">Electronic Program Guide</modified></a>
</ul>
</ul>
@@ -1221,10 +1225,10 @@ If a plugin wants to get informed on various events in VDR, it can derive a clas
class cMyStatusMonitor : public cStatus {
protected:
virtual void ChannelSwitch(const cDevice *Device, int ChannelNumber);
virtual void ChannelSwitch(const cDevice *Device, int ChannelNumber<modified>, bool LiveView</modified>);
};
void cMyStatusMonitor::ChannelSwitch(const cDevice *Device, int ChannelNumber)
void cMyStatusMonitor::ChannelSwitch(const cDevice *Device, int ChannelNumber<modified>, bool LiveView</modified>)
{
if (ChannelNumber)
dsyslog("channel switched to %d on DVB %d", ChannelNumber, Device-&gt;CardIndex());
@@ -1510,9 +1514,7 @@ The above example sets up a receiver that wants to receive data from only one
PID (for example the Teletext PID). In order to not interfere with other recording
operations, it sets its priority to <tt>-1</tt> (any negative value will allow
a <tt>cReceiver</tt> to be detached from its <tt>cDevice</tt> at any time
<div class="modified">
in favor of a timer recording or live viewing).
</div modified>
<modified>in favor of a timer recording or live viewing</modified>).
<p>
Once a <tt>cReceiver</tt> has been created, it needs to be <i>attached</i> to
a <tt>cDevice</tt>:
@@ -1528,9 +1530,9 @@ the receiver is attached to the device that actually receives the current live
video stream (this may be different from the primary device in case of <i>Transfer
Mode</i>).
<p>
<div class="modified">
<modified>
The <tt>cReceiver</tt> must be detached from its device before it is deleted.
</div modified>
</modified>
<hr><h2><a name="Filters">Filters</a></h2>
@@ -1808,9 +1810,7 @@ If the new device can receive, it most likely needs to provide a way of
selecting which channel it shall tune to:
<p><table><tr><td class="code"><pre>
<div class="modified">
virtual int NumProvidedSystems(void) const;
</div modified>
<modified>virtual int NumProvidedSystems(void) const;</modified>
virtual bool ProvidesSource(int Source) const;
virtual bool ProvidesTransponder(const cChannel *Channel) const;
virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const;
@@ -1859,9 +1859,7 @@ virtual bool HasDecoder(void) const;
virtual bool CanReplay(void) const;
virtual bool SetPlayMode(ePlayMode PlayMode);
virtual int64_t GetSTC(void);
<div class="modified">
virtual bool IsPlayingVideo(void) const;
</div modified>
<modified>virtual bool IsPlayingVideo(void) const;</modified>
virtual bool HasIBPTrickSpeed(void);
virtual void TrickSpeed(int Speed);
virtual void Clear(void);
@@ -1938,13 +1936,13 @@ void cMyDevice::MakePrimaryDevice(bool On)
The OSD provider object is allocated on the heap and shall not be deleted
(it will be deleted automatically in case a different device sets up an OSD
provider, or when the program ends).
<p>
Note that an OSD implementation need not be physically linked to the device
in any way. All it needs to make sure is that the OSD will be visible to the
user - whether this goes through OSD facilities of the physical device (like
a "full featured" DVB card) or through a graphics adapter that overlays its
output with the video signal, doesn't matter.
<p>
<div class="modified">
In order to be able to determine the proper size of the OSD, the device
should implement the function
@@ -2215,5 +2213,37 @@ virtual bool Assign(cDevice *Device, bool Query = false);
See the description of this function in <tt>ci.h</tt> for details.
<div class="modified">
<hr><h2><a name="Electronic Program Guide">Electronic Program Guide</a></h2>
<div class="blurb">The grass is always greener on the other side...</div><p>
In case the <i>Electronic Program Guide (EPG)</i> provided by the broadcaster
isn't sufficient for your taste, you can implement a <tt>cEpgHandler</tt> to
improve it from external sources. For instance, to replace the description
of the broadcaster's EPG with one from some external database, you could do:
<p><table><tr><td class="code"><pre>
#include &lt;vdr/epg.h&gt;
class cMyEpgHandler : public cEpgHandler {
public:
virtual bool SetDescription(cEvent *Event, const char *Description);
};
bool cMyEpgHandler::SetDescription(cEvent *Event, const char *Description)
{
Event-&gt;SetDescription(DescriptionFromDatabase(Event));
return true;
}
</pre></td></tr></table><p>
where <tt>DescriptionFromDatabase()</tt> would derive the description of the
given event from some external source. Note that the function returns <tt>true</tt>
to signal VDR that no other EPG handlers shall be queried after this one.
<p>
See <tt>VDR/epg.h</tt> for details.
</div modified>
</body>
</html>