Hi,
I am trying to integrate an MPEG-2 TS conditional access system with VLC v1.0.x. My current implementation works as follows:
1. I have modified ts.c to provide a "conditional-access" parameter, and to use "module_need()" to load a generic wrapper plugin if the "conditional-access" parameter is set
2. I have written a generic plugin that provides a "ca" capability, and uses a very simple API to load and communicate with a DLL/.so that provides the actual crypto routines
3. In ts.c, I have modified Demux() and DemuxFile() to pass encrypted TS packets (as well as PSI data) into a method in the "ca" plugin (which in turn passes it into the DLL/.so)
All of this works flawlessly when playing a static file that has been encrypted. However, when receiving either a UDP multicast stream or using RTSP, I get _occasional_ successful decryption (appears to be content-related, in fact - certainly the same RTSP request will always give the same result). With UDP multicast, I usually get a blank screen (no audio). With RTSP, I usually get a blank screen (again, no audio either) for a period of approx 10s, and then the TEARDOWN occurs. I've found this timeout in modules/demux/live555.cpp, but can't seem to figure out _why_ it is happening.
My questions are:
1. Is this an acceptable method for integrating the CA platform (modify MPEG-TS plugin, use it to load a CA plugin, etc)?
2. Why does the LIVE555 plugin timeout after 10s when _encrypted_ RTSP content is streamed? (My best guess is that the LIVE555 plugin cannot read the encrypted payload - in which case I'm guessing it is incompatible with the likes of CSA, and my only solution would be to fix the LIVE555 plugin...)
3. Is there an alternative (i.e. _better_) method for integrating (and controlling loading of, and parsing TS data into) a new plugin of this type? If so, what is it?
TIA.
Neil.