All pastes #462829 Raw Edit

Myth patch

public text v1 · immutable
#462829 ·published 2007-04-28 16:02 UTC
rendered paste body
diff --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;