summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS2
-rw-r--r--HISTORY4
-rw-r--r--nit.c18
3 files changed, 19 insertions, 5 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index c1c42c97..24f72e86 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -3567,6 +3567,8 @@ Daniel Scheller <d.scheller@gmx.net>
Onur Sentürk <onur@sentek.org>
for making the MTD mapper avoid immediately reusing unique PIDs when switching channels
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>
for improving calculating signal strength and quality
diff --git a/HISTORY b/HISTORY
index f0010f55..a226479f 100644
--- a/HISTORY
+++ b/HISTORY
@@ -9348,7 +9348,7 @@ Video Disk Recorder Revision History
Senzel).
- 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
by Johann Friedrichs).
@@ -9417,3 +9417,5 @@ Video Disk Recorder Revision History
- Fixed a wrong variable name in cFileName::cFileName().
- If cSkins::Message() is called from a background thread and Type is not mtStatus,
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).
diff --git a/nit.c b/nit.c
index 41d135a0..785aba52 100644
--- a/nit.c
+++ b/nit.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* 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"
@@ -97,6 +97,15 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
}
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)); ) {
switch (d->getDescriptorTag()) {
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()]);
static int Modulations[] = { QAM_AUTO, QPSK, PSK_8, QAM_16 };
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 };
- dtp.SetRollOff(sd->getModulationSystem() ? RollOffs[sd->getRollOff()] : ROLLOFF_AUTO);
+ dtp.SetRollOff(System ? RollOffs[sd->getRollOff()] : ROLLOFF_AUTO);
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) {
bool found = false;
bool forceTransponderUpdate = false;