mirror of
https://github.com/rofafor/vdr-plugin-iptv.git
synced 2023-10-10 13:37:03 +02:00
Added setup options for section filtering and Sid scanning.
This commit is contained in:
parent
e4f7904187
commit
588a86284d
6
config.c
6
config.c
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.c,v 1.10 2007/09/29 18:15:31 rahrenbe Exp $
|
* $Id: config.c,v 1.11 2007/09/30 21:38:31 rahrenbe Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
@ -14,6 +14,8 @@ cIptvConfig IptvConfig;
|
|||||||
cIptvConfig::cIptvConfig(void)
|
cIptvConfig::cIptvConfig(void)
|
||||||
: readBufferTsCount(48),
|
: readBufferTsCount(48),
|
||||||
tsBufferSize(2),
|
tsBufferSize(2),
|
||||||
tsBufferPrefillRatio(0)
|
tsBufferPrefillRatio(0),
|
||||||
|
sectionFiltering(1),
|
||||||
|
sidScanning(1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
8
config.h
8
config.h
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h,v 1.8 2007/09/29 18:15:31 rahrenbe Exp $
|
* $Id: config.h,v 1.9 2007/09/30 21:38:31 rahrenbe Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __IPTV_CONFIG_H
|
#ifndef __IPTV_CONFIG_H
|
||||||
@ -18,14 +18,20 @@ protected:
|
|||||||
unsigned int readBufferTsCount;
|
unsigned int readBufferTsCount;
|
||||||
unsigned int tsBufferSize;
|
unsigned int tsBufferSize;
|
||||||
unsigned int tsBufferPrefillRatio;
|
unsigned int tsBufferPrefillRatio;
|
||||||
|
unsigned int sectionFiltering;
|
||||||
|
unsigned int sidScanning;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
cIptvConfig();
|
cIptvConfig();
|
||||||
unsigned int GetReadBufferTsCount(void) { return readBufferTsCount; }
|
unsigned int GetReadBufferTsCount(void) { return readBufferTsCount; }
|
||||||
unsigned int GetTsBufferSize(void) { return tsBufferSize; }
|
unsigned int GetTsBufferSize(void) { return tsBufferSize; }
|
||||||
unsigned int GetTsBufferPrefillRatio(void) { return tsBufferPrefillRatio; }
|
unsigned int GetTsBufferPrefillRatio(void) { return tsBufferPrefillRatio; }
|
||||||
|
unsigned int GetSectionFiltering(void) { return sectionFiltering; }
|
||||||
|
unsigned int GetSidScanning(void) { return sidScanning; }
|
||||||
void SetTsBufferSize(unsigned int Size) { tsBufferSize = Size; }
|
void SetTsBufferSize(unsigned int Size) { tsBufferSize = Size; }
|
||||||
void SetTsBufferPrefillRatio(unsigned int Ratio) { tsBufferPrefillRatio = Ratio; }
|
void SetTsBufferPrefillRatio(unsigned int Ratio) { tsBufferPrefillRatio = Ratio; }
|
||||||
|
void SetSectionFiltering(unsigned int On) { sectionFiltering = On; }
|
||||||
|
void SetSidScanning(unsigned int On) { sidScanning = On; }
|
||||||
};
|
};
|
||||||
|
|
||||||
extern cIptvConfig IptvConfig;
|
extern cIptvConfig IptvConfig;
|
||||||
|
12
device.c
12
device.c
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.c,v 1.47 2007/09/30 17:32:43 ajhseppa Exp $
|
* $Id: device.c,v 1.48 2007/09/30 21:38:31 rahrenbe Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
@ -152,7 +152,7 @@ bool cIptvDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
pIptvStreamer->Set(addr, port, protocol);
|
pIptvStreamer->Set(addr, port, protocol);
|
||||||
if (sidFinder && (Setup.UpdateChannels >= 2))
|
if (sidFinder && IptvConfig.GetSidScanning())
|
||||||
sidFinder->SetChannel(Channel);
|
sidFinder->SetChannel(Channel);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -192,6 +192,10 @@ bool cIptvDevice::IsBlackListed(u_short Pid, u_char Tid, u_char Mask)
|
|||||||
|
|
||||||
int cIptvDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask)
|
int cIptvDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask)
|
||||||
{
|
{
|
||||||
|
// Check if disabled by user
|
||||||
|
if (!IptvConfig.GetSectionFiltering())
|
||||||
|
return -1;
|
||||||
|
|
||||||
// Black-listing check, refuse certain filters
|
// Black-listing check, refuse certain filters
|
||||||
if (IsBlackListed(Pid, Tid, Mask))
|
if (IsBlackListed(Pid, Tid, Mask))
|
||||||
return -1;
|
return -1;
|
||||||
@ -228,7 +232,7 @@ bool cIptvDevice::OpenDvr(void)
|
|||||||
mutex.Unlock();
|
mutex.Unlock();
|
||||||
ResetBuffering();
|
ResetBuffering();
|
||||||
pIptvStreamer->Open();
|
pIptvStreamer->Open();
|
||||||
if (sidFinder && (Setup.UpdateChannels >= 4))
|
if (sidFinder && IptvConfig.GetSidScanning())
|
||||||
sidFinder->SetStatus(true);
|
sidFinder->SetStatus(true);
|
||||||
isOpenDvr = true;
|
isOpenDvr = true;
|
||||||
return true;
|
return true;
|
||||||
@ -237,7 +241,7 @@ bool cIptvDevice::OpenDvr(void)
|
|||||||
void cIptvDevice::CloseDvr(void)
|
void cIptvDevice::CloseDvr(void)
|
||||||
{
|
{
|
||||||
debug("cIptvDevice::CloseDvr(%d)\n", deviceIndex);
|
debug("cIptvDevice::CloseDvr(%d)\n", deviceIndex);
|
||||||
if (sidFinder && (Setup.UpdateChannels >= 4))
|
if (sidFinder && IptvConfig.GetSidScanning())
|
||||||
sidFinder->SetStatus(false);
|
sidFinder->SetStatus(false);
|
||||||
pIptvStreamer->Close();
|
pIptvStreamer->Close();
|
||||||
isOpenDvr = false;
|
isOpenDvr = false;
|
||||||
|
6
iptv.c
6
iptv.c
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: iptv.c,v 1.8 2007/09/29 18:15:31 rahrenbe Exp $
|
* $Id: iptv.c,v 1.9 2007/09/30 21:38:31 rahrenbe Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -158,6 +158,10 @@ bool cPluginIptv::SetupParse(const char *Name, const char *Value)
|
|||||||
IptvConfig.SetTsBufferSize(atoi(Value));
|
IptvConfig.SetTsBufferSize(atoi(Value));
|
||||||
else if (!strcasecmp(Name, "TsBufferPrefill"))
|
else if (!strcasecmp(Name, "TsBufferPrefill"))
|
||||||
IptvConfig.SetTsBufferPrefillRatio(atoi(Value));
|
IptvConfig.SetTsBufferPrefillRatio(atoi(Value));
|
||||||
|
else if (!strcasecmp(Name, "SectionFiltering"))
|
||||||
|
IptvConfig.SetSectionFiltering(atoi(Value));
|
||||||
|
else if (!strcasecmp(Name, "SidScanning"))
|
||||||
|
IptvConfig.SetSidScanning(atoi(Value));
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
|
20
po/fi_FI.po
20
po/fi_FI.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.5.7\n"
|
"Project-Id-Version: VDR 1.5.7\n"
|
||||||
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
|
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
|
||||||
"POT-Creation-Date: 2007-09-29 21:11+0300\n"
|
"POT-Creation-Date: 2007-10-01 00:37+0300\n"
|
||||||
"PO-Revision-Date: 2007-08-12 23:22+0300\n"
|
"PO-Revision-Date: 2007-08-12 23:22+0300\n"
|
||||||
"Last-Translator: Rolf Ahrenberg\n"
|
"Last-Translator: Rolf Ahrenberg\n"
|
||||||
"Language-Team: <vdr@linuxtv.org>\n"
|
"Language-Team: <vdr@linuxtv.org>\n"
|
||||||
@ -47,14 +47,26 @@ msgstr "Osoite"
|
|||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "Portti"
|
msgstr "Portti"
|
||||||
|
|
||||||
#: setup.c:298
|
#: setup.c:259
|
||||||
|
msgid "Cannot find unique channel settings!"
|
||||||
|
msgstr "Yksilöllisiä kanava-asetuksia ei löydetä!"
|
||||||
|
|
||||||
|
#: setup.c:333
|
||||||
msgid "IPTV Channels"
|
msgid "IPTV Channels"
|
||||||
msgstr "IPTV-kanavat"
|
msgstr "IPTV-kanavat"
|
||||||
|
|
||||||
#: setup.c:441
|
#: setup.c:478
|
||||||
msgid "TS buffer size [MB]"
|
msgid "TS buffer size [MB]"
|
||||||
msgstr "TS-puskurin koko [MB]"
|
msgstr "TS-puskurin koko [MB]"
|
||||||
|
|
||||||
#: setup.c:442
|
#: setup.c:479
|
||||||
msgid "TS buffer prefill ratio [%]"
|
msgid "TS buffer prefill ratio [%]"
|
||||||
msgstr "TS-puskurin esitäyttöaste [%]"
|
msgstr "TS-puskurin esitäyttöaste [%]"
|
||||||
|
|
||||||
|
#: setup.c:480
|
||||||
|
msgid "Use section filtering"
|
||||||
|
msgstr "Käytä sektioiden suodatusta"
|
||||||
|
|
||||||
|
#: setup.c:482
|
||||||
|
msgid "Scan Sid automatically"
|
||||||
|
msgstr "Etsi palvelu-ID automaattisesti"
|
||||||
|
47
setup.c
47
setup.c
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: setup.c,v 1.15 2007/09/30 17:34:13 ajhseppa Exp $
|
* $Id: setup.c,v 1.16 2007/09/30 21:38:31 rahrenbe Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -204,22 +204,17 @@ eOSState cIptvMenuEditChannel::ProcessKey(eKeys Key)
|
|||||||
if (Key == kOk) {
|
if (Key == kOk) {
|
||||||
cChannel newchannel;
|
cChannel newchannel;
|
||||||
SetChannelData(&newchannel);
|
SetChannelData(&newchannel);
|
||||||
|
|
||||||
bool uniquityFailed = false;
|
bool uniquityFailed = false;
|
||||||
|
|
||||||
// Search for identical channels as these will be ignored by vdr
|
// Search for identical channels as these will be ignored by vdr
|
||||||
for (cChannel *iteratorChannel = Channels.First(); iteratorChannel;
|
for (cChannel *iteratorChannel = Channels.First(); iteratorChannel;
|
||||||
iteratorChannel = Channels.Next(iteratorChannel)) {
|
iteratorChannel = Channels.Next(iteratorChannel)) {
|
||||||
|
|
||||||
// This is one of the channels cause the uniquity check to fail
|
// This is one of the channels cause the uniquity check to fail
|
||||||
if (!iteratorChannel->GroupSep() && iteratorChannel != channel
|
if (!iteratorChannel->GroupSep() && iteratorChannel != channel
|
||||||
&& iteratorChannel->GetChannelID() == newchannel.GetChannelID()) {
|
&& iteratorChannel->GetChannelID() == newchannel.GetChannelID()) {
|
||||||
|
|
||||||
// See if it has unique Plugin param. If yes then increment
|
// See if it has unique Plugin param. If yes then increment
|
||||||
// the corresponding Rid until it is unique
|
// the corresponding Rid until it is unique
|
||||||
if (strcmp(iteratorChannel->PluginParam(),
|
if (strcmp(iteratorChannel->PluginParam(),
|
||||||
newchannel.PluginParam())) {
|
newchannel.PluginParam())) {
|
||||||
|
|
||||||
// If the channel RID is already at maximum, then fail the
|
// If the channel RID is already at maximum, then fail the
|
||||||
// channel modification
|
// channel modification
|
||||||
if (iteratorChannel->Rid() >= 8192) {
|
if (iteratorChannel->Rid() >= 8192) {
|
||||||
@ -227,26 +222,23 @@ eOSState cIptvMenuEditChannel::ProcessKey(eKeys Key)
|
|||||||
uniquityFailed = true;
|
uniquityFailed = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
debug("Incrementing conflicting channel RID\n");
|
debug("Incrementing conflicting channel RID\n");
|
||||||
iteratorChannel->SetId(iteratorChannel->Nid(),
|
iteratorChannel->SetId(iteratorChannel->Nid(),
|
||||||
iteratorChannel->Tid(),
|
iteratorChannel->Tid(),
|
||||||
iteratorChannel->Sid(),
|
iteratorChannel->Sid(),
|
||||||
iteratorChannel->Rid() + 1);
|
iteratorChannel->Rid() + 1);
|
||||||
|
// Re-set the search and start again
|
||||||
// Re-set the search and start again
|
iteratorChannel = Channels.First();
|
||||||
iteratorChannel = Channels.First();
|
continue;
|
||||||
continue;
|
// Cannot work around by incrementing rid because channels
|
||||||
|
// are actually copies of each other
|
||||||
// Cannot work around by incrementing rid because channels
|
}
|
||||||
// are actually copies of each other
|
else {
|
||||||
} else {
|
uniquityFailed = true;
|
||||||
uniquityFailed = true;
|
break;
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!uniquityFailed) {
|
if (!uniquityFailed) {
|
||||||
if (channel) {
|
if (channel) {
|
||||||
SetChannelData(channel);
|
SetChannelData(channel);
|
||||||
@ -264,7 +256,7 @@ eOSState cIptvMenuEditChannel::ProcessKey(eKeys Key)
|
|||||||
Channels.SetModified(true);
|
Channels.SetModified(true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Skins.Message(mtError, trVDR("Cannot find unique channel settings!"));
|
Skins.Message(mtError, tr("Cannot find unique channel settings!"));
|
||||||
state = osContinue;
|
state = osContinue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -473,6 +465,8 @@ cIptvPluginSetup::cIptvPluginSetup()
|
|||||||
{
|
{
|
||||||
tsBufferSize = IptvConfig.GetTsBufferSize();
|
tsBufferSize = IptvConfig.GetTsBufferSize();
|
||||||
tsBufferPrefill = IptvConfig.GetTsBufferPrefillRatio();
|
tsBufferPrefill = IptvConfig.GetTsBufferPrefillRatio();
|
||||||
|
sectionFiltering = IptvConfig.GetSectionFiltering();
|
||||||
|
sidScanning = IptvConfig.GetSidScanning();
|
||||||
Setup();
|
Setup();
|
||||||
SetHelp(trVDR("Channels"), NULL, NULL, NULL);
|
SetHelp(trVDR("Channels"), NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
@ -481,8 +475,11 @@ void cIptvPluginSetup::Setup(void)
|
|||||||
{
|
{
|
||||||
int current = Current();
|
int current = Current();
|
||||||
Clear();
|
Clear();
|
||||||
Add(new cMenuEditIntItem(tr("TS buffer size [MB]"), &tsBufferSize, 2, 16));
|
Add(new cMenuEditIntItem( tr("TS buffer size [MB]"), &tsBufferSize, 2, 16));
|
||||||
Add(new cMenuEditIntItem(tr("TS buffer prefill ratio [%]"), &tsBufferPrefill, 0, 40));
|
Add(new cMenuEditIntItem( tr("TS buffer prefill ratio [%]"), &tsBufferPrefill, 0, 40));
|
||||||
|
Add(new cMenuEditBoolItem(tr("Use section filtering"), §ionFiltering));
|
||||||
|
if (sectionFiltering)
|
||||||
|
Add(new cMenuEditBoolItem(tr("Scan Sid automatically"), &sidScanning));
|
||||||
SetCurrent(Get(current));
|
SetCurrent(Get(current));
|
||||||
Display();
|
Display();
|
||||||
}
|
}
|
||||||
@ -511,8 +508,12 @@ void cIptvPluginSetup::Store(void)
|
|||||||
// Store values into setup.conf
|
// Store values into setup.conf
|
||||||
SetupStore("TsBufferSize", tsBufferSize);
|
SetupStore("TsBufferSize", tsBufferSize);
|
||||||
SetupStore("TsBufferPrefill", tsBufferPrefill);
|
SetupStore("TsBufferPrefill", tsBufferPrefill);
|
||||||
|
SetupStore("SectionFiltering", sectionFiltering);
|
||||||
|
SetupStore("SidScanning", sidScanning);
|
||||||
// Update global config
|
// Update global config
|
||||||
IptvConfig.SetTsBufferSize(tsBufferSize);
|
IptvConfig.SetTsBufferSize(tsBufferSize);
|
||||||
IptvConfig.SetTsBufferPrefillRatio(tsBufferPrefill);
|
IptvConfig.SetTsBufferPrefillRatio(tsBufferPrefill);
|
||||||
|
IptvConfig.SetSectionFiltering(sectionFiltering);
|
||||||
|
IptvConfig.SetSidScanning(sidScanning);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
setup.h
4
setup.h
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: setup.h,v 1.8 2007/09/29 18:15:31 rahrenbe Exp $
|
* $Id: setup.h,v 1.9 2007/09/30 21:38:31 rahrenbe Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __IPTV_SETUP_H
|
#ifndef __IPTV_SETUP_H
|
||||||
@ -16,6 +16,8 @@ class cIptvPluginSetup : public cMenuSetupPage
|
|||||||
private:
|
private:
|
||||||
int tsBufferSize;
|
int tsBufferSize;
|
||||||
int tsBufferPrefill;
|
int tsBufferPrefill;
|
||||||
|
int sectionFiltering;
|
||||||
|
int sidScanning;
|
||||||
eOSState EditChannel(void);
|
eOSState EditChannel(void);
|
||||||
virtual void Setup(void);
|
virtual void Setup(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user