The "Update channels" parameter in the "Setup/DVB" menu has been extended to allow updating only the PIDs

This commit is contained in:
Klaus Schmidinger 2006-04-15 14:18:25 +02:00
parent 50b77a6d4b
commit 94c729a6fa
8 changed files with 54 additions and 27 deletions

View File

@ -4537,3 +4537,7 @@ Video Disk Recorder Revision History
- Implemented kNext and kPrev keys (based on a patch from Peter Juszack).
See MANUAL for details.
- Implemented kChanPrev (from a patch from Darren Salt).
- The "Update channels" parameter in the "Setup/DVB" menu has been extended to
allow updating only the PIDs (see MANUAL for details). When updating to this
version of VDR, please verify that the setting is as you want it to be, because
the values have been shifted.

8
MANUAL
View File

@ -639,11 +639,11 @@ Version 1.3
If turned off, Dolby Digital tracks also don't appear in the
"Audio" menu.
Update channels = 4 Controls the automatic channel update function. '0' means
Update channels = 5 Controls the automatic channel update function. '0' means
no update, '1' will only update channel names, '2' will
update channel names and PIDs, '3' will perform all
updates and also add newly found channels, and '4' will
also add newly found transponders.
only update PIDs, '3' will update channel names and PIDs,
'4' will perform all updates and also add newly found channels,
and '5' will also add newly found transponders.
Audio languages = 0 Some tv stations broadcast various audio tracks in different
languages. This option allows you to define which language(s)

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: config.c 1.143 2006/04/09 12:12:01 kls Exp $
* $Id: config.c 1.144 2006/04/15 14:05:41 kls Exp $
*/
#include "config.h"
@ -251,7 +251,7 @@ cSetup::cSetup(void)
RecordingDirs = 1;
VideoDisplayFormat = 1;
VideoFormat = 0;
UpdateChannels = 4;
UpdateChannels = 5;
UseDolbyDigital = 1;
ChannelInfoPos = 0;
ChannelInfoTime = 5;

6
eit.c
View File

@ -8,7 +8,7 @@
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
*
* $Id: eit.c 1.115 2006/02/19 09:51:02 kls Exp $
* $Id: eit.c 1.116 2006/04/15 14:11:52 kls Exp $
*/
#include "eit.h"
@ -180,10 +180,10 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data)
if (link != channel) { // only link to other channels, not the same one
//fprintf(stderr, "Linkage %s %4d %4d %5d %5d %5d %5d %02X '%s'\n", hit ? "*" : "", channel->Number(), link ? link->Number() : -1, SiEitEvent.getEventId(), ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId(), ld->getLinkageType(), linkName);//XXX
if (link) {
if (Setup.UpdateChannels >= 1)
if (Setup.UpdateChannels == 1 || Setup.UpdateChannels >= 3)
link->SetName(linkName, "", "");
}
else if (Setup.UpdateChannels >= 3) {
else if (Setup.UpdateChannels >= 4) {
link = Channels.NewChannel(channel, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId());
//XXX patFilter->Trigger();
}

24
i18n.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: i18n.c 1.260 2006/04/15 13:53:23 kls Exp $
* $Id: i18n.c 1.261 2006/04/15 14:13:45 kls Exp $
*
* Translations provided by:
*
@ -3722,6 +3722,28 @@ const tI18nPhrase Phrases[] = {
"kun navne",
"jen názvy",
},
{ "PIDs only",
"nur PIDs",
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
},
{ "names and PIDs",
"Namen und PIDs",
"imena in PIDe",

13
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menu.c 1.431 2006/04/15 13:37:09 kls Exp $
* $Id: menu.c 1.432 2006/04/15 14:09:40 kls Exp $
*/
#include "menu.h"
@ -2299,7 +2299,7 @@ private:
int numAudioLanguages;
void Setup(void);
const char *videoDisplayFormatTexts[3];
const char *updateChannelsTexts[5];
const char *updateChannelsTexts[6];
public:
cMenuSetupDVB(void);
virtual eOSState ProcessKey(eKeys Key);
@ -2315,9 +2315,10 @@ cMenuSetupDVB::cMenuSetupDVB(void)
videoDisplayFormatTexts[2] = tr("center cut out");
updateChannelsTexts[0] = tr("no");
updateChannelsTexts[1] = tr("names only");
updateChannelsTexts[2] = tr("names and PIDs");
updateChannelsTexts[3] = tr("add new channels");
updateChannelsTexts[4] = tr("add new transponders");
updateChannelsTexts[2] = tr("PIDs only");
updateChannelsTexts[3] = tr("names and PIDs");
updateChannelsTexts[4] = tr("add new channels");
updateChannelsTexts[5] = tr("add new transponders");
SetSection(tr("DVB"));
Setup();
@ -2334,7 +2335,7 @@ void cMenuSetupDVB::Setup(void)
if (data.VideoFormat == 0)
Add(new cMenuEditStraItem(tr("Setup.DVB$Video display format"), &data.VideoDisplayFormat, 3, videoDisplayFormatTexts));
Add(new cMenuEditBoolItem(tr("Setup.DVB$Use Dolby Digital"), &data.UseDolbyDigital));
Add(new cMenuEditStraItem(tr("Setup.DVB$Update channels"), &data.UpdateChannels, 5, updateChannelsTexts));
Add(new cMenuEditStraItem(tr("Setup.DVB$Update channels"), &data.UpdateChannels, 6, updateChannelsTexts));
Add(new cMenuEditIntItem( tr("Setup.DVB$Audio languages"), &numAudioLanguages, 0, I18nNumLanguages));
for (int i = 0; i < numAudioLanguages; i++)
Add(new cMenuEditStraItem(tr("Setup.DVB$Audio language"), &data.AudioLanguages[i], I18nNumLanguages, I18nLanguages()));

14
nit.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: nit.c 1.10 2004/10/17 12:00:54 kls Exp $
* $Id: nit.c 1.11 2006/04/15 14:10:42 kls Exp $
*/
#include "nit.h"
@ -116,12 +116,12 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
bool found = false;
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
if (Setup.UpdateChannels >= 4)
if (Setup.UpdateChannels >= 5)
Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate);
found = true;
}
}
if (!found && Setup.UpdateChannels >= 4) {
if (!found && Setup.UpdateChannels >= 5) {
cChannel *Channel = new cChannel;
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
if (Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate))
@ -151,12 +151,12 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
bool found = false;
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
if (Setup.UpdateChannels >= 4)
if (Setup.UpdateChannels >= 5)
Channel->SetCableTransponderData(Source, Frequency, Modulation, SymbolRate, CodeRate);
found = true;
}
}
if (!found && Setup.UpdateChannels >= 4) {
if (!found && Setup.UpdateChannels >= 5) {
cChannel *Channel = new cChannel;
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
if (Channel->SetCableTransponderData(Source, Frequency, Modulation, SymbolRate, CodeRate))
@ -193,12 +193,12 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
bool found = false;
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
if (Setup.UpdateChannels >= 4)
if (Setup.UpdateChannels >= 5)
Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode);
found = true;
}
}
if (!found && Setup.UpdateChannels >= 4) {
if (!found && Setup.UpdateChannels >= 5) {
cChannel *Channel = new cChannel;
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
if (Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode))

8
sdt.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: sdt.c 1.15 2005/08/27 09:27:47 kls Exp $
* $Id: sdt.c 1.16 2006/04/15 14:12:21 kls Exp $
*/
#include "sdt.h"
@ -78,7 +78,7 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
char *pp = compactspace(ProviderNameBuf);
if (channel) {
channel->SetId(sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId());
if (Setup.UpdateChannels >= 1)
if (Setup.UpdateChannels == 1 || Setup.UpdateChannels >= 3)
channel->SetName(pn, ps, pp);
// Using SiSdtService.getFreeCaMode() is no good, because some
// tv stations set this flag even for non-encrypted channels :-(
@ -86,7 +86,7 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
// and would have been overwritten with real CA values later:
// channel->SetCa(SiSdtService.getFreeCaMode() ? 0xFFFF : 0);
}
else if (*pn && Setup.UpdateChannels >= 3) {
else if (*pn && Setup.UpdateChannels >= 4) {
channel = Channels.NewChannel(Channel(), pn, ps, pp, sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId());
patFilter->Trigger();
}
@ -111,7 +111,7 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
SI::NVODReferenceDescriptor::Service Service;
for (SI::Loop::Iterator it; nrd->serviceLoop.getNext(Service, it); ) {
cChannel *link = Channels.GetByChannelID(tChannelID(Source(), Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId()));
if (!link && Setup.UpdateChannels >= 3) {
if (!link && Setup.UpdateChannels >= 4) {
link = Channels.NewChannel(Channel(), "NVOD", "", "", Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId());
patFilter->Trigger();
}