Hi, I managed to fix a few more bugs last night and can now descramble on stream level too. (Which means I have currently no need to moving of CA descriptors.) However, what I have done for now is to implement the move of CA descriptors in the way Manu describes below. Although, this is done _only_ if a new flag (-m) is given to ca_zap. So, if this new flag is give to ca_zap, it checks that the move criterias are fulfilled. If they are, the CA descriptors are moved from stream to programme level. Hence, the user of ca_zap have an option of moving the descriptors if he/she sees fit. Does this sound reasonable? /Henrik > Dominique Dumont wrote: > >>Manu Abraham <abraham.manu@xxxxxxxxx> writes: >> >> >> >>>The first one that i had seen was with TPS, and this was the only way it >>>could be worked. In fact stream level decryption according to TPS wasn't >>>probably stream level decryption but only program level decryption. I >>>might be wrong here though, but that was the only thing that got it to >>>descramble. >>> >>> >> >>You statement related to "program level decryption" is misleading. In >>all cases only the elementary streams are encrypted. Sending CA >>descriptors at program level is only a mean of saying "this >>descriptor is valid for *all* elementary streams of this program" >> >>Here's the section 8.4.3.4 of EN50221 that specifies this behavior: >> >> The CA_descriptor after the current_next_indicator is at the >> programme level and is valid for all elementary components of the >> programme. The CA_descriptor(s) at elementary_stream level is (are) >> valid for the elementary_stream only. If, for one >> elementary_stream, CA_descriptor(s) exist at programme level and at >> elementary_stream level, only the CA_descriptor(s) at >> elementary_stream level are taken into account. >> >> > > from a module point of view, the rule is the following > > rule 1) check for each component the elementary stream level, > if there are any, use it and IGNORE the one from the program level. > > rule 2) if there is no ca_descriptor on the ES level (and only in this > case), > > use the one at the program level. > > > > so , clearly, if you see that all the ca_desc at ES level are the same, > you can remove them from es level, and put them only once at program > level. > > then, rule 1 will no more be applied, but rule2 will be use instead... > and the result will be 100% > the same, since the ca_descriptor at program level > will be used for each ES. > > > So what is the reason to send a longer message which does exactly the > same thing in that context ? > > HTH > > > _______________________________________________ > > linux-dvb@xxxxxxxxxxx > http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb >