mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
CAM handling refactored; multiple recordings with one CAM; automatic CAM selection
This commit is contained in:
47
PLUGINS.html
47
PLUGINS.html
@@ -6,7 +6,7 @@
|
||||
|
||||
<center><h1>The VDR Plugin System</h1></center>
|
||||
|
||||
<center><b>Version 1.4.1</b></center>
|
||||
<center><b>Version 1.5.0</b></center>
|
||||
<p>
|
||||
<center>
|
||||
Copyright © 2006 Klaus Schmidinger<br>
|
||||
@@ -14,6 +14,10 @@ Copyright © 2006 Klaus Schmidinger<br>
|
||||
<a href="http://www.cadsoft.de/vdr">www.cadsoft.de/vdr</a>
|
||||
</center>
|
||||
<p>
|
||||
<!--X1.5.0--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.0 are marked like this.
|
||||
<!--X1.5.0--></td></tr></table>
|
||||
<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.
|
||||
This interface allows programmers to develop additional functionality for VDR completely
|
||||
@@ -72,6 +76,9 @@ structures and allows it to hook itself into specific areas to perform special a
|
||||
<li><a href="#Devices">Devices</a>
|
||||
<li><a href="#Audio">Audio</a>
|
||||
<li><a href="#Remote Control">Remote Control</a>
|
||||
<!--X1.5.0--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
<li><a href="#Conditional Access">Conditional Access</a>
|
||||
<!--X1.5.0--></td></tr></table>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
@@ -1727,6 +1734,7 @@ selecting which channel it shall tune to:
|
||||
|
||||
<p><table><tr><td bgcolor=#F0F0F0><pre>
|
||||
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);
|
||||
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
|
||||
</pre></td></tr></table><p>
|
||||
@@ -2038,5 +2046,42 @@ Put(uint64 Code, bool Repeat = false, bool Release = false);
|
||||
|
||||
The other parameters have the same meaning as in the first version of this function.
|
||||
|
||||
<!--X1.5.0--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
<a name="Conditional Access"><hr><h2>Conditional Access</h2>
|
||||
|
||||
<center><i><b>Members only!</b></i></center><p>
|
||||
|
||||
Pay TV providers usually encrypt their broadcasts, so that only viewers who
|
||||
have the proper smart card can watch them. Such a smart card needs to be inserted
|
||||
into a CAM (Conditional Access Module), which in turn goes into a CI (Common
|
||||
Interface) slot.
|
||||
<p>
|
||||
VDR's mechanisms for supporting Conditional Access are mainly the two classes
|
||||
<tt>cCiAdapter</tt> and <tt>cCamSlot</tt>. A <tt>cCiAdapter</tt> handles exactly
|
||||
one CI, and can provide several CAM slots, represented by the appropriate
|
||||
number of <tt>cCamSlot</tt> objects.
|
||||
<p>
|
||||
In order to decrypt a particular channel, a <tt>cCiAdapter</tt> with a <tt>cCamSlot</tt>
|
||||
that contains the necessary CAM will be assigned to a <tt>cDevice</tt>, and exactly
|
||||
one of its CAM slots will be activated. Whether or not a <tt>cCiAdapter</tt> can
|
||||
be assigned to a particular device depends on the hardware implementation.
|
||||
Some devices (like the Siemens/Technotrend DVB cards) are hardwired with their
|
||||
CI adapters, so the <tt>cCiAdapter</tt> for these can only be used with one device.
|
||||
Other hardware implementations may allow CI adapters and devices to be connected
|
||||
through some sort of matrix switch. When trying to decrypt an encrypted channel,
|
||||
VDR will automatically select a useful combination of device and CAM slot.
|
||||
<p>
|
||||
If a plugin implements a derived <tt>cCiAdapter</tt>, it has to implement
|
||||
several low level functions that handle the actual data transfer (see <tt>dvbci.c</tt>
|
||||
for example). The decision whether the adapter can actually be assigned to different
|
||||
devices is made in the function
|
||||
|
||||
<p><table><tr><td bgcolor=#F0F0F0><pre>
|
||||
virtual bool Assign(cDevice *Device, bool Query = false);
|
||||
</pre></td></tr></table><p>
|
||||
|
||||
See the description of this function in <tt>ci.h</tt> for details.
|
||||
<!--X1.5.0--></td></tr></table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
Reference in New Issue
Block a user