Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: Conax CAM



Le 01/02/2004 04:51 PM, Jan Ekholm a joliment écrit :
Hi,

Finally we got our Hauppauge CI (the external one that looks like a
floppy) and the Conax CAM and I've been trying to get it all to work. So
far with little success. VDR seems to find it just fine, but it won't
decrypt at all. I must be missing something, as I've only done the
following:

Have the Nexus-S card ?

I had to apply this patch to make the CAM-CI module work.
Then it automatically decodes the channel if needed.

Nicolas.

PS patch -p1 < CAM.patch
thesre's some protests but nothing real important.



--
   Powered           .~.
   by Linux          /V\
    ------          // \\
 solutions for     /(   )\
 smart penguins     ^`~'^
Here is a rough patch to make it work:
--- vdr-1.2.2/ci.c      2003-08-02 12:00:01.000000000 +0200
+++ vdr-1.2.2-mod/ci.c  2003-09-14 15:16:56.000000000 +0200
@@ -1253,10 +1253,10 @@
   capmt[length++] = 0x00; // program_info_length L
 }

-void cCiCaPmt::AddPid(int Pid)
+void cCiCaPmt::AddPid(int Pid, int StreamType)
 {
   //XXX buffer overflow check???
-  capmt[length++] = 0x00; //XXX stream_type (apparently doesn't matter)
+  capmt[length++] = StreamType; //XXX stream_type (apparently doesn't matter, except for Aston/SECA)
   capmt[length++] = (Pid >> 8) & 0xFF;
   capmt[length++] =  Pid       & 0xFF;
   esInfoLengthPos = length;

vdr-1.2.2-mod/ci.h
--- vdr-1.2.2/ci.h      2003-05-25 13:44:47.000000000 +0200
+++ vdr-1.2.2-mod/ci.h  2003-09-14 16:51:40.000000000 +0200
@@ -66,7 +66,7 @@
   uint8_t capmt[2048]; ///< XXX is there a specified maximum?
 public:
   cCiCaPmt(int ProgramNumber);
-  void AddPid(int Pid);
+  void AddPid(int Pid, int StreamType);
   void AddCaDescriptor(int Length, uint8_t *Data);
   };

vdr-1.2.2-mod/dvbdevice.c
--- vdr-1.2.2/dvbdevice.c       2003-05-24 15:23:51.000000000 +0200
+++ vdr-1.2.2-mod/dvbdevice.c   2003-09-14 16:52:25.000000000 +0200
@@ -276,13 +276,13 @@
                               cCiCaPmt CaPmt(channel.Sid());
                               CaPmt.AddCaDescriptor(length, buffer);
                               if (channel.Vpid())
-                                 CaPmt.AddPid(channel.Vpid());
+                                 CaPmt.AddPid(channel.Vpid(),0x02);
                               if (channel.Apid1())
-                                 CaPmt.AddPid(channel.Apid1());
+                                 CaPmt.AddPid(channel.Apid1(),0x04);
                               if (channel.Apid2())
-                                 CaPmt.AddPid(channel.Apid2());
+                                 CaPmt.AddPid(channel.Apid2(),0x04);
                               if (channel.Dpid1())
-                                 CaPmt.AddPid(channel.Dpid1());
+                                 CaPmt.AddPid(channel.Dpid1(),0x00);
                               if (ciHandler->SetCaPmt(CaPmt, Slot)) {
                                  tunerStatus = tsCam;
                                  startTime = 0; 

Home | Main Index | Thread Index