[dvblast-devel] Optional descrambling.

Kompan Kolia kompan at yandex.ru
Fri May 31 17:46:14 CEST 2013


We made a patch for dvblast 2.2 from last git version (2013-04-17).
This patch adds a compatibility with DRE Multi Pro CAM (DRE Crypt or ADAC encodings)

For successful descrambling several channels (up to 10) you have to choose ONLY first SID of SIDs you need. Next 9 SIDs CAM will be descrambled automatically.

For example:

We have dish on Eutelsat W4 36°.
Transponder № 37 at 12418 L contains:

Mezzo Live HD - SID 37001
Ohotnik i Rybolov HD - SID 37002
MGM HD Russia - SID 37003
MTV Live HD - SID 37004
Nickelodeon HD - SID 37005

You can receive only last channel of this transponder with standard config like below.

# Standard conf file
#<IP>[:<port>]   <always on>     <SID>   [<PID>,]*
#Mezzo Live HD
224.64.64.3:1234      1       37001
# Ohotnik i Rybolov HD
224.64.64.95:1234       1       37002
# MGM HD Russia
224.64.64.12:1234       1       37003
# MTV Live HD
224.64.64.64:1234      1       37004
# Nickelodeon HD
224.64.64.35:1234      1       37005

It occurs because CAM module must have ONLY one SID. It opens up to ten channels starting from the FIRST SID. You don`t need to choose descramble for other channels (SIDs). 

We made patch to resolve this problem.
We just add option "/no_desc" :)

Correct conf file:
# Conf file for patched DVBlast
#<IP>[:<port>]   <always on>     <SID>   [<PID>,]*
#Mezzo Live HD
224.64.64.3:1234      1       37001
# Ohotnik i Rybolov HD
224.64.64.95:1234/no_desc       1       37002
# MGM HD Russia
224.64.64.12:1234/no_desc       1       37003
# MTV Live HD
224.64.64.64:1234/no_desc      1       37004
# Nickelodeon HD
224.64.64.35:1234/no_desc      1       37005

We send only first SID to CAM for descramble. Other 9 SIDs from first will be descrambled automatically.


---------------------------- Patch started ----------------------------------------------------------------

--- demux.c	2013-04-12 05:25:02.000000000 -0400
+++ demux.c	2013-05-24 19:27:24.000000000 -0400
@@ -536,6 +536,7 @@
 
     uint16_t i_old_sid = p_output->config.i_sid;
     uint16_t i_sid = p_config->i_sid;
+    bool b_no_descramble = p_config->b_no_descramble;
     uint16_t *pi_old_pids = p_output->config.pi_pids;
     uint16_t *pi_pids = p_config->pi_pids;
     int i_old_nb_pids = p_output->config.i_nb_pids;
@@ -661,6 +662,7 @@
     p_output->config.pi_pids = malloc( sizeof(uint16_t) * i_nb_pids );
     memcpy( p_output->config.pi_pids, pi_pids, sizeof(uint16_t) * i_nb_pids );
     p_output->config.i_nb_pids = i_nb_pids;
+    p_output->config.b_no_descramble = b_no_descramble;
 
 out_change:
     if ( b_sid_change )
@@ -1682,6 +1684,12 @@
     uint16_t j;
     uint8_t *p_es;
     const uint8_t *p_desc;
+    int z;
+
+    for ( z = 0; z < i_nb_outputs; z++ ) {
+        output_t *p_output = pp_outputs[z];
+	if (p_output->config.i_sid==pmt_get_program(p_pmt) && p_output->config.b_no_descramble==true) return false;
+    }
 
     j = 0;
     while ( (p_desc = descs_get_desc( pmt_get_descs( p_pmt ), j )) != NULL )
--- dvblast.c	2013-04-12 05:25:02.000000000 -0400
+++ dvblast.c	2013-05-24 19:24:07.000000000 -0400
@@ -173,6 +173,7 @@
     p_config->i_output_latency = i_latency_global;
     p_config->i_tsid = -1;
     p_config->i_ttl = i_ttl_global;
+    p_config->b_no_descramble= false;
     memcpy( p_config->pi_ssrc, pi_ssrc_global, 4 * sizeof(uint8_t) );
 }
 
@@ -300,6 +301,10 @@
             }
             p_config->b_do_remap = true;
         }
+        else if ( IS_OPTION("no_desc") )
+        {
+            p_config->b_no_descramble = true;
+        }
         else
             msg_Warn( NULL, "unrecognized option %s", psz_string );
 
--- dvblast.h	2013-04-12 05:25:02.000000000 -0400
+++ dvblast.h	2013-05-24 19:24:52.000000000 -0400
@@ -115,6 +115,7 @@
     /* demux config */
     int i_tsid;
     uint16_t i_sid; /* 0 if raw mode */
+    bool b_no_descramble;
     uint16_t *pi_pids;
     int i_nb_pids;
 
--- README 2013-05-06 07:26:14.000000000 -0400
+++ README      2013-05-30 17:27:52.000000000 -0400
@@ -137,6 +137,7 @@
  /udp (turns on -U for a specific output)
  /dvb (turns on -C for a specific output)
  /epg (turns on -C -e for a specific output)
+ /no_desc (disable descramling for this SID. Necessary for DRE CAM PRO scrambling)
  /tsid=XXX (sets the transport stream ID)
  /ssrc=XXX.XXX.XXX.XXX (sets the RTP synchronization source IPv4)
  /retention=XXX (see -E)

---------------------------- Patch ended ----------------------------------------------------------------

01.04.2013, 18:26, "Kompan Kolia" <kompan at yandex.ru>:
> Hello All.
>
> How i can descramble only first channel of transponder?
>
> I have trasponder 11958 L at 36°E.
> I need to descramble only first channel, other channels would be stream is scrambled.
>
> This feature need for compatible with new DRE PRO MULTI CAM.
>
> Thanks a lot.
> _______________________________________________
> dvblast-devel mailing list
> dvblast-devel at videolan.org
> http://mailman.videolan.org/listinfo/dvblast-devel


More information about the dvblast-devel mailing list