]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
descrambler: capmt - follow enigma2 way to build the capmt descriptor, issue #4793 v4.2.5
authorJaroslav Kysela <perex@perex.cz>
Thu, 14 Dec 2017 20:28:22 +0000 (21:28 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 18 Dec 2017 08:57:28 +0000 (09:57 +0100)
src/descrambler/capmt.c

index b7a930d80affb26bf4cf2f7162720f5511bc8ea0..d6bd4763597c0c7163af87c6cccdf9c0307902b8 100644 (file)
@@ -99,6 +99,7 @@ typedef struct dmx_filter {
 // ca_pmt_descriptor types
 #define CAPMT_DESC_ENIGMA  0x81
 #define CAPMT_DESC_DEMUX   0x82
+#define CAPMT_DESC_ADAPTER 0x83
 #define CAPMT_DESC_PID     0x84
 
 // message type
@@ -2040,16 +2041,6 @@ capmt_send_request(capmt_service_t *ct, int lm)
   buf[pos++] = 1; /* OK DESCRAMBLING, skipped for parse_descriptors, but */
                   /* mandatory for getDemuxOptions() */
 
-  /* build program info tags */
-
-  if (capmt->capmt_oscam != CAPMT_OSCAM_SO_WRAPPER) {
-    /* build SI tag */
-    buf[pos++] = CAPMT_DESC_DEMUX;
-    buf[pos++] = 2;
-    buf[pos++] = 0;
-    buf[pos++] = adapter_num;
-  }
-
   /* build SI tag */
   buf[pos++] = CAPMT_DESC_ENIGMA;
   buf[pos++] = 8;
@@ -2062,13 +2053,11 @@ capmt_send_request(capmt_service_t *ct, int lm)
   buf[pos++] = onid >> 8;
   buf[pos++] = onid;
 
-  if (capmt->capmt_oscam == CAPMT_OSCAM_SO_WRAPPER) {
-    /* build SI tag */
-    buf[pos++] = CAPMT_DESC_DEMUX;
-    buf[pos++] = 2;
-    buf[pos++] = 1 << adapter_num;
-    buf[pos++] = adapter_num;
-  }
+  /* build SI tag */
+  buf[pos++] = CAPMT_DESC_DEMUX;
+  buf[pos++] = 2;
+  buf[pos++] = 1 << adapter_num;
+  buf[pos++] = capmt->capmt_oscam == CAPMT_OSCAM_SO_WRAPPER ? adapter_num : 0;
 
   /* build SI tag */
   buf[pos++] = CAPMT_DESC_PID;
@@ -2076,6 +2065,13 @@ capmt_send_request(capmt_service_t *ct, int lm)
   buf[pos++] = pmtpid >> 8;
   buf[pos++] = pmtpid;
 
+  if (capmt->capmt_oscam != CAPMT_OSCAM_SO_WRAPPER) {
+    /* build SI tag */
+    buf[pos++] = CAPMT_DESC_ADAPTER;
+    buf[pos++] = 1;
+    buf[pos++] = adapter_num;
+  }
+
   capmt_caid_ecm_t *cce2;
   LIST_FOREACH(cce2, &ct->ct_caid_ecm, cce_link) {
     /* build SI tag */