------- FFdecsa ------- FFdecsa is a fast implementation of the CSA decryption algorithm for MPEG TS packets. Q: What does FF stands for? A: FFdecsa means "Fucking Fast decsa". Q: Why would you use such a rude name? A: Because this code is fucking fast, more than 800% the speed of the best implementation I'm able to find around at the moment. Q: How it that possible? Are all other programmers stupid? A: No, they just tried to save a cycle or two tweaking a fundamentally wrong implementation. The algorithm has to be implemented in a totally different way to achieve good speed. Q: Do you use multimedia instructions? A: I use every trick I could come up with, including multimedia instructions. They are not fundamental in achieving speed, a version without them runs at 6x the speed of the best implementation around (which uses MMX). Q: So how did you do that? A: By using a different approach for the implementation. This code is not exploiting some new CSA vulnerability, it is just doing the same calculations better. Think about replacing bubble sort with quick sort. Q: You're joking, it's impossible to gain so much speed. A: Speed test are available, technical documentation is available, source code is available. Try it yourself. If you want details, these are some of the documented tricks I used (more details in the docs directory): TRICK NUMBER 0: emulate the hardware TRICK NUMBER 1: virtual shift registers TRICK NUMBER 2: parallel bitslice TRICK NUMBER 3: multimedia instructions TRICK NUMBER 4: parallel byteslice TRICK NUMBER 5: efficient bit permutation TRICK NUMBER 6: efficient normal<->slice conversion TRICK NUMBER 7: try hard to process packets together TRICK NUMBER 8: try to avoid doing the same thing many times TRICK NUMBER 9: compiler TRICK NUMBER a: a lot of brain work Q: How can be this code useful? A: You can use this code in place of the old slow implementations and save a lot of CPU power. Q: Just that? A: Well, new applications are possible. Decrypting a whole transponder is easily doable now. Well, a $50 CPU can decrypt four transponder at the same time if you have four DVB boards (but I couldn't test that). Q: You're cheating, this code is fake, I don't believe one word. A: Go away. This is technical stuff for people with brains. Q: This code is great, may I distribute your code in original or modified form? A: Only if you respect the license. Q: May I use your code in my player/library/plugin...? A: Again, you have to respect the license. Q: Are you an extraterrestrial programmer? A: No, just a Turkish guy with a PC to play with :-) Q: Why did you spend your time doing this? A: Because I thought that my approach was doable and I was sure it would have been much faster, so I had to implement it to confirm I was right. I got 8x the speed and that's enough to be proud of it. And I could not just keep the code for myself only. Q: What is the answer to the meaning of the universe? A: 42,43,71,5f,65,85,f6,76,0d,13,28,96,...