Ticket #3640: dvbstreamdata.cpp.patch

File dvbstreamdata.cpp.patch, 4.9 KB (added by klaas.de.waal@…, 12 years ago)

scan fixed network id

Line 
1*** libs/libmythtv/mpeg/dvbstreamdata.cpp.orig  2008-01-10 23:11:39.000000000 +0100
2--- libs/libmythtv/mpeg/dvbstreamdata.cpp       2008-02-10 11:50:03.952514387 +0100
3***************
4*** 189,194 ****
5--- 189,199 ----
6   *  \brief Assembles PSIP packets and processes them.
7   *  \todo This is just a stub.
8   */
9+ static uint userDefinedNetworkID(void)
10+ {
11+     return 1111;
12+ }
13+
14  bool DVBStreamData::HandleTables(uint pid, const PSIPTable &psip)
15  {
16      if (MPEGStreamData::HandleTables(pid, psip))
17***************
18*** 197,226 ****
19      if (IsRedundant(pid, psip))
20          return true;
21 
22      switch (psip.TableID())
23      {
24          case TableID::NIT:
25          {
26!             SetVersionNIT(psip.Version(), psip.LastSection());
27!             SetNITSectionSeen(psip.Section());
28!
29!             if (_cache_tables)
30!             {
31!                 NetworkInformationTable *nit =
32!                     new NetworkInformationTable(psip);
33!                 CacheNIT(nit);
34!                 QMutexLocker locker(&_listener_lock);
35!                 for (uint i = 0; i < _dvb_main_listeners.size(); i++)
36!                     _dvb_main_listeners[i]->HandleNIT(nit);
37!             }
38!             else
39!             {
40!                 NetworkInformationTable nit(psip);
41!                 QMutexLocker locker(&_listener_lock);
42!                 for (uint i = 0; i < _dvb_main_listeners.size(); i++)
43!                     _dvb_main_listeners[i]->HandleNIT(&nit);
44!             }
45!
46              return true;
47          }
48          case TableID::SDT:
49--- 202,237 ----
50      if (IsRedundant(pid, psip))
51          return true;
52 
53+
54      switch (psip.TableID())
55      {
56          case TableID::NIT:
57          {
58!           // If we have a user-defined network ID then process this
59!           // only if it is the network that we want
60!           if (userDefinedNetworkID() &&
61!               userDefinedNetworkID() == psip.TableIDExtension())
62!           {
63!                 SetVersionNIT(psip.Version(), psip.LastSection());
64!                 SetNITSectionSeen(psip.Section());
65!
66!                 if (_cache_tables)
67!                 {
68!                     NetworkInformationTable *nit =
69!                         new NetworkInformationTable(psip);
70!                     CacheNIT(nit);
71!                     QMutexLocker locker(&_listener_lock);
72!                     for (uint i = 0; i < _dvb_main_listeners.size(); i++)
73!                         _dvb_main_listeners[i]->HandleNIT(nit);
74!                 }
75!                 else
76!                 {
77!                     NetworkInformationTable nit(psip);
78!                     QMutexLocker locker(&_listener_lock);
79!                     for (uint i = 0; i < _dvb_main_listeners.size(); i++)
80!                         _dvb_main_listeners[i]->HandleNIT(&nit);
81!                 }
82!           }
83              return true;
84          }
85          case TableID::SDT:
86***************
87*** 246,259 ****
88          }
89          case TableID::NITo:
90          {
91!             SetVersionNITo(psip.Version(), psip.LastSection());
92!             SetNIToSectionSeen(psip.Section());
93!             NetworkInformationTable nit(psip);
94 
95!             QMutexLocker locker(&_listener_lock);
96!             for (uint i = 0; i < _dvb_other_listeners.size(); i++)
97!                 _dvb_other_listeners[i]->HandleNITo(&nit);
98 
99              return true;
100          }
101          case TableID::SDTo:
102--- 257,297 ----
103          }
104          case TableID::NITo:
105          {
106!           // If we have a user-defined network ID then treat this as
107!           // the NIT if this is the network that we want
108!           if (userDefinedNetworkID() &&
109!               userDefinedNetworkID() == psip.TableIDExtension())
110!             {
111!                 SetVersionNIT(psip.Version(), psip.LastSection());
112!                 SetNITSectionSeen(psip.Section());
113 
114!                 if (_cache_tables)
115!                 {
116!                     NetworkInformationTable *nit =
117!                         new NetworkInformationTable(psip);
118!                     CacheNIT(nit);
119!                     QMutexLocker locker(&_listener_lock);
120!                     for (uint i = 0; i < _dvb_main_listeners.size(); i++)
121!                         _dvb_main_listeners[i]->HandleNIT(nit);
122!                 }
123!                 else
124!                 {
125!                     NetworkInformationTable nit(psip);
126!                     QMutexLocker locker(&_listener_lock);
127!                     for (uint i = 0; i < _dvb_main_listeners.size(); i++)
128!                         _dvb_main_listeners[i]->HandleNIT(&nit);
129!                 }
130!           }
131!           else
132!           {
133!                 SetVersionNITo(psip.Version(), psip.LastSection());
134!                 SetNIToSectionSeen(psip.Section());
135!                 NetworkInformationTable nit(psip);
136 
137+                 QMutexLocker locker(&_listener_lock);
138+                 for (uint i = 0; i < _dvb_other_listeners.size(); i++)
139+                     _dvb_other_listeners[i]->HandleNITo(&nit);
140+           }
141              return true;
142          }
143          case TableID::SDTo: