Fixed handling the S2SatelliteDeliverySystemDescriptor for transponders broadcasting in "backwards compatibility mode" according to ETSI EN 300 468

This commit is contained in:
Klaus Schmidinger 2019-05-31 13:25:00 +02:00
parent 0873d14614
commit 2b39c192a6
3 changed files with 19 additions and 5 deletions

View File

@ -3567,6 +3567,8 @@ Daniel Scheller <d.scheller@gmx.net>
Onur Sentürk <onur@sentek.org> Onur Sentürk <onur@sentek.org>
for making the MTD mapper avoid immediately reusing unique PIDs when switching channels for making the MTD mapper avoid immediately reusing unique PIDs when switching channels
for fixing handling shared CA pids for fixing handling shared CA pids
for fixing handling the S2SatelliteDeliverySystemDescriptor for transponders broadcasting
in "backwards compatibility mode" according to ETSI EN 300 468
Helmut Binder <cco@aon.at> Helmut Binder <cco@aon.at>
for improving calculating signal strength and quality for improving calculating signal strength and quality

View File

@ -9348,7 +9348,7 @@ Video Disk Recorder Revision History
Senzel). Senzel).
- Official release. - Official release.
2019-05-29: Version 2.4.1 2019-05-31: Version 2.4.1
- Fixed handling the tfRecording flag in the SVDRP commands MODT and UPDT (reported - Fixed handling the tfRecording flag in the SVDRP commands MODT and UPDT (reported
by Johann Friedrichs). by Johann Friedrichs).
@ -9417,3 +9417,5 @@ Video Disk Recorder Revision History
- Fixed a wrong variable name in cFileName::cFileName(). - Fixed a wrong variable name in cFileName::cFileName().
- If cSkins::Message() is called from a background thread and Type is not mtStatus, - If cSkins::Message() is called from a background thread and Type is not mtStatus,
the call is now automatically forwarded to QueueMessage(). the call is now automatically forwarded to QueueMessage().
- Fixed handling the S2SatelliteDeliverySystemDescriptor for transponders broadcasting
in "backwards compatibility mode" according to ETSI EN 300 468 (thanks to Onur Sentürk).

18
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 4.8 2019/03/18 10:29:09 kls Exp $ * $Id: nit.c 4.9 2019/05/31 13:25:00 kls Exp $
*/ */
#include "nit.h" #include "nit.h"
@ -97,6 +97,15 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
} }
delete fld; delete fld;
// Necessary for "backwards compatibility mode" according to ETSI EN 300 468:
bool ForceDVBS2 = false;
for (SI::Loop::Iterator it2; (d = ts.transportStreamDescriptors.getNext(it2)); ) {
if (d->getDescriptorTag() == SI::S2SatelliteDeliverySystemDescriptorTag) {
ForceDVBS2 = true;
break;
}
}
for (SI::Loop::Iterator it2; (d = ts.transportStreamDescriptors.getNext(it2)); ) { for (SI::Loop::Iterator it2; (d = ts.transportStreamDescriptors.getNext(it2)); ) {
switch (d->getDescriptorTag()) { switch (d->getDescriptorTag()) {
case SI::SatelliteDeliverySystemDescriptorTag: { case SI::SatelliteDeliverySystemDescriptorTag: {
@ -110,11 +119,12 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
dtp.SetCoderateH(CodeRates[sd->getFecInner()]); dtp.SetCoderateH(CodeRates[sd->getFecInner()]);
static int Modulations[] = { QAM_AUTO, QPSK, PSK_8, QAM_16 }; static int Modulations[] = { QAM_AUTO, QPSK, PSK_8, QAM_16 };
dtp.SetModulation(Modulations[sd->getModulationType()]); dtp.SetModulation(Modulations[sd->getModulationType()]);
dtp.SetSystem(sd->getModulationSystem() ? DVB_SYSTEM_2 : DVB_SYSTEM_1); bool System = sd->getModulationSystem() || ForceDVBS2;
dtp.SetSystem(System ? DVB_SYSTEM_2 : DVB_SYSTEM_1);
static int RollOffs[] = { ROLLOFF_35, ROLLOFF_25, ROLLOFF_20, ROLLOFF_AUTO }; static int RollOffs[] = { ROLLOFF_35, ROLLOFF_25, ROLLOFF_20, ROLLOFF_AUTO };
dtp.SetRollOff(sd->getModulationSystem() ? RollOffs[sd->getRollOff()] : ROLLOFF_AUTO); dtp.SetRollOff(System ? RollOffs[sd->getRollOff()] : ROLLOFF_AUTO);
int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10; int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
dbgnit(" %s %d %c %d %d\n", *cSource::ToString(Source), Frequency, dtp.Polarization(), SymbolRate, cChannel::Transponder(Frequency, dtp.Polarization())); dbgnit(" %s %d %c %d %d DVB-S%d\n", *cSource::ToString(Source), Frequency, dtp.Polarization(), SymbolRate, cChannel::Transponder(Frequency, dtp.Polarization()), System ? 2 : 1);
if (Setup.UpdateChannels >= 5) { if (Setup.UpdateChannels >= 5) {
bool found = false; bool found = false;
bool forceTransponderUpdate = false; bool forceTransponderUpdate = false;