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). - Implemented kNext and kPrev keys (based on a patch from Peter Juszack).
See MANUAL for details. See MANUAL for details.
- Implemented kChanPrev (from a patch from Darren Salt). - 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 If turned off, Dolby Digital tracks also don't appear in the
"Audio" menu. "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 no update, '1' will only update channel names, '2' will
update channel names and PIDs, '3' will perform all only update PIDs, '3' will update channel names and PIDs,
updates and also add newly found channels, and '4' will '4' will perform all updates and also add newly found channels,
also add newly found transponders. and '5' will also add newly found transponders.
Audio languages = 0 Some tv stations broadcast various audio tracks in different Audio languages = 0 Some tv stations broadcast various audio tracks in different
languages. This option allows you to define which language(s) 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 * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "config.h"
@ -251,7 +251,7 @@ cSetup::cSetup(void)
RecordingDirs = 1; RecordingDirs = 1;
VideoDisplayFormat = 1; VideoDisplayFormat = 1;
VideoFormat = 0; VideoFormat = 0;
UpdateChannels = 4; UpdateChannels = 5;
UseDolbyDigital = 1; UseDolbyDigital = 1;
ChannelInfoPos = 0; ChannelInfoPos = 0;
ChannelInfoTime = 5; ChannelInfoTime = 5;

6
eit.c
View File

@ -8,7 +8,7 @@
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * 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>. * 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" #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 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 //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 (link) {
if (Setup.UpdateChannels >= 1) if (Setup.UpdateChannels == 1 || Setup.UpdateChannels >= 3)
link->SetName(linkName, "", ""); link->SetName(linkName, "", "");
} }
else if (Setup.UpdateChannels >= 3) { else if (Setup.UpdateChannels >= 4) {
link = Channels.NewChannel(channel, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId()); link = Channels.NewChannel(channel, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId());
//XXX patFilter->Trigger(); //XXX patFilter->Trigger();
} }

24
i18n.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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: * Translations provided by:
* *
@ -3722,6 +3722,28 @@ const tI18nPhrase Phrases[] = {
"kun navne", "kun navne",
"jen názvy", "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", { "names and PIDs",
"Namen und PIDs", "Namen und PIDs",
"imena in PIDe", "imena in PIDe",

13
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "menu.h"
@ -2299,7 +2299,7 @@ private:
int numAudioLanguages; int numAudioLanguages;
void Setup(void); void Setup(void);
const char *videoDisplayFormatTexts[3]; const char *videoDisplayFormatTexts[3];
const char *updateChannelsTexts[5]; const char *updateChannelsTexts[6];
public: public:
cMenuSetupDVB(void); cMenuSetupDVB(void);
virtual eOSState ProcessKey(eKeys Key); virtual eOSState ProcessKey(eKeys Key);
@ -2315,9 +2315,10 @@ cMenuSetupDVB::cMenuSetupDVB(void)
videoDisplayFormatTexts[2] = tr("center cut out"); videoDisplayFormatTexts[2] = tr("center cut out");
updateChannelsTexts[0] = tr("no"); updateChannelsTexts[0] = tr("no");
updateChannelsTexts[1] = tr("names only"); updateChannelsTexts[1] = tr("names only");
updateChannelsTexts[2] = tr("names and PIDs"); updateChannelsTexts[2] = tr("PIDs only");
updateChannelsTexts[3] = tr("add new channels"); updateChannelsTexts[3] = tr("names and PIDs");
updateChannelsTexts[4] = tr("add new transponders"); updateChannelsTexts[4] = tr("add new channels");
updateChannelsTexts[5] = tr("add new transponders");
SetSection(tr("DVB")); SetSection(tr("DVB"));
Setup(); Setup();
@ -2334,7 +2335,7 @@ void cMenuSetupDVB::Setup(void)
if (data.VideoFormat == 0) if (data.VideoFormat == 0)
Add(new cMenuEditStraItem(tr("Setup.DVB$Video display format"), &data.VideoDisplayFormat, 3, videoDisplayFormatTexts)); 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 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)); Add(new cMenuEditIntItem( tr("Setup.DVB$Audio languages"), &numAudioLanguages, 0, I18nNumLanguages));
for (int i = 0; i < numAudioLanguages; i++) for (int i = 0; i < numAudioLanguages; i++)
Add(new cMenuEditStraItem(tr("Setup.DVB$Audio language"), &data.AudioLanguages[i], I18nNumLanguages, I18nLanguages())); 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 * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #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; bool found = false;
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { 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 (!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); Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate);
found = true; found = true;
} }
} }
if (!found && Setup.UpdateChannels >= 4) { if (!found && Setup.UpdateChannels >= 5) {
cChannel *Channel = new cChannel; cChannel *Channel = new cChannel;
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0); Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
if (Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate)) 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; bool found = false;
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { 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 (!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); Channel->SetCableTransponderData(Source, Frequency, Modulation, SymbolRate, CodeRate);
found = true; found = true;
} }
} }
if (!found && Setup.UpdateChannels >= 4) { if (!found && Setup.UpdateChannels >= 5) {
cChannel *Channel = new cChannel; cChannel *Channel = new cChannel;
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0); Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
if (Channel->SetCableTransponderData(Source, Frequency, Modulation, SymbolRate, CodeRate)) 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; bool found = false;
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { 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 (!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); Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode);
found = true; found = true;
} }
} }
if (!found && Setup.UpdateChannels >= 4) { if (!found && Setup.UpdateChannels >= 5) {
cChannel *Channel = new cChannel; cChannel *Channel = new cChannel;
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0); Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
if (Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode)) 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 * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #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); char *pp = compactspace(ProviderNameBuf);
if (channel) { if (channel) {
channel->SetId(sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId()); channel->SetId(sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId());
if (Setup.UpdateChannels >= 1) if (Setup.UpdateChannels == 1 || Setup.UpdateChannels >= 3)
channel->SetName(pn, ps, pp); channel->SetName(pn, ps, pp);
// Using SiSdtService.getFreeCaMode() is no good, because some // Using SiSdtService.getFreeCaMode() is no good, because some
// tv stations set this flag even for non-encrypted channels :-( // 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: // and would have been overwritten with real CA values later:
// channel->SetCa(SiSdtService.getFreeCaMode() ? 0xFFFF : 0); // 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()); channel = Channels.NewChannel(Channel(), pn, ps, pp, sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId());
patFilter->Trigger(); 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; SI::NVODReferenceDescriptor::Service Service;
for (SI::Loop::Iterator it; nrd->serviceLoop.getNext(Service, it); ) { for (SI::Loop::Iterator it; nrd->serviceLoop.getNext(Service, it); ) {
cChannel *link = Channels.GetByChannelID(tChannelID(Source(), Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId())); 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()); link = Channels.NewChannel(Channel(), "NVOD", "", "", Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId());
patFilter->Trigger(); patFilter->Trigger();
} }