
FFdecsa implementation
======================

This plugin package contains a FFdecsa implementation for software descrambling
on budget cards. On full featured cards this is done by the hardware ECD chip.

FFdecsa only works with budget cards (a full featured card isn't able to deliver
an encrypted stream due to hardware design).

This package uses code from the great FFdecsa-1.0.0 package. FFdecsa-1.0.0 is
copyright by fatih89r and released under the GPL. Many thanks for this
outstanding work! You'll find the slightly modified FFdecsa code in the FFdecsa
directory.

There are several options to configure optimization at compile time. Use:

CPUOPT=type   to determine your CPU type. With gcc 3.2 valid options are:
              pentium, pentium-mmx, pentiumpro, pentium2, pentium3, pentium4,
              k6, k6-2, k6-3, athlon, athlon-tbird, athlon4, athlon-xp and
              athlon-mp. You should set your CPU type as close as possible for
              best performance. Defaults to pentium.

PARALLEL=mode to determine which datatype should be used for parallel
              processing. Valid modes are:
                 PARALLEL_32_4CHAR
                 PARALLEL_32_4CHARA
                 PARALLEL_32_INT
                 PARALLEL_64_8CHAR
                 PARALLEL_64_8CHARA
                 PARALLEL_64_2INT
                 PARALLEL_64_LONG
                 PARALLEL_64_MMX
                 PARALLEL_128_16CHAR
                 PARALLEL_128_16CHARA
                 PARALLEL_128_4INT
                 PARALLEL_128_2LONG
                 PARALLEL_128_2MMX
                 PARALLEL_128_SSE
              Hints: if you have a Pentium4 or AthlonXP and a recent compiler
              try PARALLEL_64_MMX. If you have a 64-bit CPU, try
              PARALLEL_128_SSE. If you're unsure take PARALLEL_32_INT (which
              isn't the fastest, but quite good and very portable).
              For additional information read the FFdecsa documentation.
              Defaults to PARALLEL_32_INT.

CSAFLAGS=opts to set compiler options.
              Defaults to -Wall -fPIC -g -O3 -mmmx -fomit-frame-pointer
                          -fexpensive-optimizations -funroll-loops

All of them can be added to VDR's make.config file.

It has been reported that FFdecsa yields invalid results (make test fails) if
compiled with gcc 4.4.x and option -O3. Use -O2 in this case to work around.
Suggestions how to fix the problem in source are highly appreciated.



History:
--------

30.01.2007:
- Integrated into SC plugin as of version 0.7.0. Future changes will be reported
  in HISTORY file.

02.01.2006: Version 0.1.3
- Now locking the CSA engine properly to prevent potentional problems when
  updating CWs during decryption. Thanks to NooneImportant for pointing this
  out.
- Added -fPIC to default compiler flags.

09.11.2005: Version 0.1.2
- Fixed segfault when starting VDR with devices in non-native sequence i.e. by
  using -D switches. Thanks to noneed for reporting.

03.10.2005: Version 0.1.1
- Removed static vars from stream code. Caused glitches when using two budgets
  cards concurrently. Thanks to dingo35 for reporting.
- Some small performace improvements. Thanks to dingo35.
- Removed ugly tmp_autogenerated stuff.

18.09.2005: Version 0.1.0
- Initial version.
- Supporting concurrent decryption.
- Requires sc plugin 0.5.0 or newer.
