Skip to main content

Channel map updates

11 replies [Last post]
snmukkala
Offline
Joined: 2010-06-02
Points: 0

I want to generate channel map updates, so that ServiceDetailsChangeListener will be invoked when an update happens to channel map.

I create two channel maps, one with 4 channels and other with 2 channels. The channel map with 4 channels is placed in fdc-files.txt when ri is launched, once the application is running with 4 channels; i updated fdc-files.txt with second channel map . But the notify method on ServiceDetailsChangeListener is not called.

If i delete the second channel map, which is currently in the fdc-files.txt, RI crash's. So i feel the channel map is picked correctly but the event is not generated.

can you confirm me, is this the way to generate channel map update events.

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
mertl
Offline
Joined: 2010-06-22
Points: 0

When you start tracking these issues, please include IT266 which is on a related theme. This is about incorrectly matching CRCs for sections that originated from different filter requests. This leads to a problem of thinking sections are complete because the same section arrives twice in a row once from each filter request and the RI thinks the table is complete, unaware that following this other sections will arrive. A patch is provided for this issue. While investigating this I noticed that there are two DCM tables in the fake si data, the first contains channel 813 which doesn't exist, the second doesn't, but the RI doesn't seem to make use of the new DCM and still thinks 813 is supposed to exist.
Thanks

cpratt
Offline
Joined: 2008-12-18
Points: 0

Please see the note I've attached to IT-266.

Re: Conflicting DCM entries.

The proper disposition of a channel which is marked "defined" in one DCM section and "undefined" in another is unclear in any case - esp under Profile 1.

There's no good way to know which section is correct and - on a real network - could be seen in different orders. This is the reason why the RI still allows the VCM to be considered "acquired" based purely on section counts. Otherwise a single channel marked "defined" in the DCM but never signaled in the VCM would not allow initial channel map acquisition to complete on these networks.

greg80303
Offline
Joined: 2008-07-03
Points: 0

I thought I would post this here so that more of our community would have access to this information. After researching this issue, the problem became very obvious to me. It also became very obvious that it will not be easy to solve (if it can be solved at all). First, a little background on SCTE65 SI:

SCTE65 describes 6 different profiles for the delivery of out-of-band SI. For the sake of this discussion we will only focus on Profile 1 and Profile 2. Profile 1 mandates the standard tables -- NIT_CDS, NIT_MMS, SVCT_VCM, SVCT_DCM, NTT, and STT. Some of these tables can be quite large and must be carried in multiple MPEG private sections. This creates a problem with the Profile 1 table format since there is no way to determine how many total sections there are in the complete table. Additionally, the standard table format provides no table version information. SCTE65 Profile 2 provides a solution to both of these problems via the Revision Detection Descriptor (RDD).

Unfortunately, our experience has been that many deployed cable networks only broadcast Profile 1 SCTE65 tables. The tru2way Workbench is also only capable of generating Profile 1 tables. The RI implements a heuristic algorithm for parsing this data. We capture sections for each table and record their CRC value. Once we have received X copies of each section for a particular table, we consider that table "complete" and we pass it on up to the stack. The number X is configurable in the mpeenv.ini file for each table (SITP.SI.MAX.

.SECTION.SEEN.COUNT).

So, lets say that the network operator modifies the channel map and signals new versions of the tables. The current RI implementation sees a new section CRC and and it just assumes that it is another section for current table instead of the first section of whole new version of that table. In the case of the OP's bug, we see a new channel map exactly the same as the first, only there are a couple of channels missing. We see that the original channel information hasn't changed, so we don't make any changes to the SI database.

After all that, we do believe that there are a couple of bugs in the RI that we need to track for future enhancements:

1) For Profile 1 SI, the network operator could trigger the removal of a service by signaling a new version of the SVCT_DCM and change a service from being DEFINED to being UNDEFINED. The RI can see this transition and trigger the appropriate events to be delivered up the stack. Conversely, the operator could trigger the addition of service previously found in the SVCT_VCM by modifying the SVCT_DCM to change that service from UNDEFINED to DEFINED.

2) For Profile 1 SI, if a new virtual_channel() record appears in a new SVCT_VCM section, we should add that new service to the native SI database and send the appropriate events up the stack.

3) For Profile 2 SI, the RI needs to do a better job of "re-creating" the native SI database based on the new table and sending change events up the stack.

I will create internal project issues to track these bugs/enhancements.

G

snmukkala
Offline
Joined: 2010-06-02
Points: 0

Thanks for detailed observation.

snmukkala
Offline
Joined: 2010-06-02
Points: 0
snmukkala
Offline
Joined: 2010-06-02
Points: 0

we are creating channel map bin files using SDK.

greg80303
Offline
Joined: 2008-07-03
Points: 0

I would say that you should create a bug in IssueTracker for this. Be sure to attach your channel map files (both versions) to the issue. I would also post some example code that shows how you are registering your listener.

G

snmukkala
Offline
Joined: 2010-06-02
Points: 0

Actually we could create the channel map bin files. so what i created was two channel map bin files, one with 4 channels and other with 2 channels(removed 2 channels from first).
In the fdc-files.txt i placed first channel map and launched application. when app is running, i replaced second channel map in the fdc-files.txt. by doing so i was expecting i could get ServiceDetailsChangeListener informed about update. But this listener is never called.

pmodem
Offline
Joined: 2008-12-17
Points: 0

Channel map updates should trigger ServiceDetails change events.
Removing fdc-files.txt is not the way to go.
It would be useful to see the log or a snippet showing this behavior..
I'll try to re-produce the issue here as well.

snmukkala
Offline
Joined: 2010-06-02
Points: 0

Actual question is how can i simulate the channel map updates in RI. the channel map information is bin as specified in the fdc-files.txt. Now if i have to update the channel map to include/delete a channel how can i do it?

greg80303
Offline
Joined: 2008-07-03
Points: 0

The .bin files specified in the fdc-files.txt file just contain concatenated MPEG sections. The files that we distributed with the RI were just captures of sections from a real headend. We don't currently have a standalone tool that will allow you to generate this section data. If we had such a tool, you would simulate channel map changes by creating new section files that had new revisions of the SCTE65 tables. Then, you can just change the contents of the fdc-files.txt at runtime and the stack would see the changes.

G