Request: E parameter in channels.conf for epg scan
Commit Message
On Mon, 6 Dec 2010, Mario Schulz wrote:
> Am 05.12.2010 23:33, schrieb Klaus Schmidinger:
>> What would that be necessary for?
I'd like to prevent EIT scans on IPTV devices.
> In its default behaviour VDR will add transponders and channels to the
> channels.conf, as a result these will be searched and probably result in
> a match and a timer entry, even for uninteresting or undecodable channels.
The following patch might expose the necessary API for plugins to create
white and/or blacklists for EIT scanning on certain devices/channels.
BR,
--
rofa
Comments
I'm seeing two different things talked about here. One is not to scan
EPG data on some channels and that does seem like something that belongs
in the channels.conf. I use the web vdradmin and epg search for shows to
record can be limited to a range of channels but they must be grouped
together which could be a problem.
The other is updating list of channels and channel info. This IS a
problem for me as I want it to update ATSC channels, but my sat dish is
on a rotor and vdr starts scanning before the dish gets to postition
causing it to add channels that are not there and mess up information
for channels that are.
On 12/6/2010 8:48 AM, Rolf Ahrenberg wrote:
> On Mon, 6 Dec 2010, Mario Schulz wrote:
>
>> Am 05.12.2010 23:33, schrieb Klaus Schmidinger:
>>> What would that be necessary for?
@@ -56,6 +56,11 @@
return true;
}
+bool cDeviceHook::DeviceProvidesEITScan(const cDevice *Device, const cChannel *Channel) const
+{
+ return true;
+}
+
// --- cDevice ---------------------------------------------------------------
// The default priority for non-primary devices:
@@ -594,6 +599,17 @@
return true;
}
+bool cDevice::DeviceHooksProvidesEITScan(const cChannel *Channel) const
+{
+ cDeviceHook *Hook = deviceHooks.First();
+ while (Hook) {
+ if (!Hook->DeviceProvidesEITScan(this, Channel))
+ return false;
+ Hook = deviceHooks.Next(Hook);
+ }
+ return true;
+}
+
bool cDevice::ProvidesTransponder(const cChannel *Channel) const
{
return false;
@@ -96,6 +96,8 @@
///< program ends.
virtual bool DeviceProvidesTransponder(const cDevice *Device, const cChannel *Channel) const;
///< Returns true if the given Device can provide the given Channel's transponder.
+ virtual bool DeviceProvidesEITScan(const cDevice *Device, const cChannel *Channel) const;
+ ///< Returns true if the given Device can scan EIT on the given Channel's transponder.
};
/// The cDevice class is the base from which actual devices can be derived.
@@ -204,6 +206,8 @@
static cList<cDeviceHook> deviceHooks;
protected:
bool DeviceHooksProvidesTransponder(const cChannel *Channel) const;
+public:
+ bool DeviceHooksProvidesEITScan(const cChannel *Channel) const;
// SPU facilities
@@ -146,7 +146,7 @@
if (Device) {
for (cScanData *ScanData = scanList->First(); ScanData; ScanData = scanList->Next(ScanData)) {
const cChannel *Channel = ScanData->GetChannel();
- if (Channel) {
+ if (Channel && Device->DeviceHooksProvidesEITScan(Channel)) {
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= CA_ENCRYPTED_MIN) {
if (Device->ProvidesTransponder(Channel)) {
if (!Device->Receiving()) {