Ticket #3640: dvbstreamdata.cpp.patch

File dvbstreamdata.cpp.patch, 4.9 KB (added by klaas.de.waal@…, 18 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: