summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY5
-rw-r--r--nit.c19
2 files changed, 21 insertions, 3 deletions
diff --git a/HISTORY b/HISTORY
index b765553c..ad48f22a 100644
--- a/HISTORY
+++ b/HISTORY
@@ -9162,7 +9162,7 @@ Video Disk Recorder Revision History
a subdirectory.
- SVDRP peering can now be limited to the default SVDRP host (see MANUAL for details).
-2018-03-17: Version 2.3.9
+2018-03-18: Version 2.3.9
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
@@ -9311,3 +9311,6 @@ Video Disk Recorder Revision History
marks that are not generated by VDR itself, and thus may be a little off (suggested by
Jörg Wendel). You can activate this line again for debugging if necessary.
- Made the input buffer in cSVDRPClient dynamic.
+- Fixed handling parameters in the S2SatelliteDeliverySystemDescriptor and
+ T2DeliverySystemDescriptor that were overwritten when parsing the
+ SatelliteDeliverySystemDescriptor or TerrestrialDeliverySystemDescriptor, respectively.
diff --git a/nit.c b/nit.c
index 874367f3..299a4066 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.4 2016/12/23 14:16:59 kls Exp $
+ * $Id: nit.c 4.5 2018/03/18 10:52:21 kls Exp $
*/
#include "nit.h"
@@ -120,6 +120,10 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
bool forceTransponderUpdate = 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()) {
+ // Preserve parameters set separately in S2SatelliteDeliverySystemDescriptor:
+ cDvbTransponderParameters dtpc(Channel->Parameters());
+ dtp.SetStreamId(dtpc.StreamId());
+ //
int transponder = Channel->Transponder();
found = true;
if (!ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), transponder)) {
@@ -157,8 +161,8 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
if (!Channel->GroupSep() && cSource::IsSat(Channel->Source()) && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
SI::S2SatelliteDeliverySystemDescriptor *sd = (SI::S2SatelliteDeliverySystemDescriptor *)d;
cDvbTransponderParameters dtp(Channel->Parameters());
- dtp.SetSystem(DVB_SYSTEM_2);
dtp.SetStreamId(sd->getInputStreamIdentifier());
+ dbgnit(" stream id = %d\n", dtp.StreamId());
ChannelsModified |= Channel->SetTransponderData(Channel->Source(), Channel->Frequency(), Channel->Srate(), dtp.ToString('S'));
break;
}
@@ -239,6 +243,16 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
bool forceTransponderUpdate = 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()) {
+ // Preserve parameters set separately in T2DeliverySystemDescripto:
+ cDvbTransponderParameters dtpc(Channel->Parameters());
+ dtp.SetSystem(dtpc.System());
+ dtp.SetStreamId(dtpc.StreamId());
+ dtp.SetT2SystemId(dtp.T2SystemId());
+ dtp.SetSisoMiso(dtpc.SisoMiso());
+ dtp.SetBandwidth(dtpc.Bandwidth());
+ dtp.SetGuard(dtpc.Guard());
+ dtp.SetTransmission(dtpc.Transmission());
+ //
int transponder = Channel->Transponder();
found = true;
if (!ISTRANSPONDER(Frequency / 1000000, transponder)) {
@@ -295,6 +309,7 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
dtp.SetTransmission(T2TransmissionModes[td->getTransmissionMode()]);
//TODO add parsing of frequencies
}
+ dbgnit(" stream id = %d\n", dtp.StreamId());
ChannelsModified |= Channel->SetTransponderData(Source, Frequency, SymbolRate, dtp.ToString('T'));
}
}