rendered paste bodydiff --git a/mythtv/libs/libmythtv/mpeg/dvbstreamdata.cpp b/mythtv/libs/libmythtv/mpeg/dvbstreamdata.cpp
index 5fd3d29..daf85c1 100644
--- a/mythtv/libs/libmythtv/mpeg/dvbstreamdata.cpp
+++ b/mythtv/libs/libmythtv/mpeg/dvbstreamdata.cpp
@@ -280,6 +280,24 @@ bool DVBStreamData::HandleTables(uint pid, const PSIPTable &psip)
SetSDToSectionSeen(tsid, psip.Section());
ServiceDescriptionTable sdt(psip);
+ if (sdt.OriginalNetworkID() == _desired_netid &&
+ tsid == _desired_tsid)
+ {
+ ServiceDescriptionTable *sdta =
+ new ServiceDescriptionTable(psip);
+ sdta->Mutate();
+ if (_cache_tables)
+ {
+ CacheSDT(sdta);
+ ProcessSDT(tsid, sdta);
+ }
+ else
+ {
+ ProcessSDT(tsid, &sdt);
+ delete sdta;
+ }
+ }
+
QMutexLocker locker(&_listener_lock);
for (uint i = 0; i < _dvb_other_listeners.size(); i++)
_dvb_other_listeners[i]->HandleSDTo(tsid, &sdt);
diff --git a/mythtv/libs/libmythtv/mpeg/dvbtables.cpp b/mythtv/libs/libmythtv/mpeg/dvbtables.cpp
index a766a1f..8d5d5ef 100644
--- a/mythtv/libs/libmythtv/mpeg/dvbtables.cpp
+++ b/mythtv/libs/libmythtv/mpeg/dvbtables.cpp
@@ -136,6 +136,12 @@ ServiceDescriptor *ServiceDescriptionTable::GetServiceDescriptor(uint i) const
return NULL;
}
+void ServiceDescriptionTable::Mutate(void)
+{
+ SetTableID((TableID() == TableID::SDTo) ? TableID::SDT : TableID::SDTo);
+ SetCRC(CalcCRC());
+}
+
void DVBEventInformationTable::Parse(void) const
{
_ptrs.clear();
diff --git a/mythtv/libs/libmythtv/mpeg/dvbtables.h b/mythtv/libs/libmythtv/mpeg/dvbtables.h
index 05dfdb5..f6f9d2a 100644
--- a/mythtv/libs/libmythtv/mpeg/dvbtables.h
+++ b/mythtv/libs/libmythtv/mpeg/dvbtables.h
@@ -154,6 +154,8 @@ class ServiceDescriptionTable : public PSIPTable
// }
ServiceDescriptor *GetServiceDescriptor(uint i) const;
+ void Mutate(void);
+
void Parse(void) const;
QString toString(void) const;