libdvr: irdeto PVR support TSE with TSN at the same time [1/1]

PD#RSP-2559

Problem:
enable tsn out double ts

Solution:
set hw source can enable double ts

Verify:
AH212 + AndroidR

Change-Id: I5d609817404a59a313237b739821b07108d69384
Signed-off-by: Chuangcheng Peng <chuangcheng.peng@amlogic.com>
diff --git a/src/dvb_utils.c b/src/dvb_utils.c
index 4fc6702..acc524c 100644
--- a/src/dvb_utils.c
+++ b/src/dvb_utils.c
@@ -32,122 +32,49 @@
     r = stat(node, &st);
     if (r == -1)
     {
-        int fd, source, input;
+        int fd, source, input = 0;
         memset(node, 0, sizeof(node));
         snprintf(node, sizeof(node), "/dev/dvb0.demux%d", dmx_idx);
         fd = open(node, O_WRONLY);
         if (fd != -1)
         {
-            switch (src)
-            {
-            case DVB_DEMUX_SOURCE_TS0:
-                source = FRONTEND_TS0;
+            if (src >= DVB_DEMUX_SOURCE_TS0 &&
+                src <= DVB_DEMUX_SOURCE_TS7) {
+                source = FRONTEND_TS0 + src - DVB_DEMUX_SOURCE_TS0;
                 input = INPUT_DEMOD;
-                break;
-            case DVB_DEMUX_SOURCE_TS1:
-                source = FRONTEND_TS1;
+            } else if (src >= DVB_DEMUX_SOURCE_DMA0 &&
+                src <= DVB_DEMUX_SOURCE_DMA7) {
+                source = DMA_0 + src - DVB_DEMUX_SOURCE_DMA0;
+                input = INPUT_LOCAL;
+            } else if (src >= DVB_DEMUX_SECSOURCE_DMA0 &&
+                src <= DVB_DEMUX_SECSOURCE_DMA7) {
+                source = DMA_0 + src - DVB_DEMUX_SECSOURCE_DMA0;
+                input = INPUT_LOCAL_SEC;
+            } else if (src >= DVB_DEMUX_SOURCE_DMA0_1 &&
+                src <= DVB_DEMUX_SOURCE_DMA7_1) {
+                source = DMA_0_1 + src - DVB_DEMUX_SOURCE_DMA0_1;
+                input = INPUT_LOCAL;
+            } else if (src >= DVB_DEMUX_SECSOURCE_DMA0_1 &&
+                src <= DVB_DEMUX_SECSOURCE_DMA7_1) {
+                source = DMA_0_1 + src - DVB_DEMUX_SECSOURCE_DMA0_1;
+                input = INPUT_LOCAL_SEC;
+            } else if (src >= DVB_DEMUX_SOURCE_TS0_1 &&
+                src <= DVB_DEMUX_SOURCE_TS7_1) {
+                source = FRONTEND_TS0_1 + src - DVB_DEMUX_SOURCE_TS0_1;
                 input = INPUT_DEMOD;
-                break;
-            case DVB_DEMUX_SOURCE_TS2:
-                source = FRONTEND_TS2;
-                input = INPUT_DEMOD;
-                break;
-            case DVB_DEMUX_SOURCE_TS3:
-                source = FRONTEND_TS3;
-                input = INPUT_DEMOD;
-                break;
-            case DVB_DEMUX_SOURCE_TS4:
-                source = FRONTEND_TS4;
-                input = INPUT_DEMOD;
-                break;
-            case DVB_DEMUX_SOURCE_TS5:
-                source = FRONTEND_TS5;
-                input = INPUT_DEMOD;
-                break;
-            case DVB_DEMUX_SOURCE_TS6:
-                source = FRONTEND_TS6;
-                input = INPUT_DEMOD;
-                break;
-            case DVB_DEMUX_SOURCE_TS7:
-                source = FRONTEND_TS7;
-                input = INPUT_DEMOD;
-                break;
-            case DVB_DEMUX_SOURCE_DMA0:
-                source = DMA_0;
-                input = INPUT_LOCAL;
-                break;
-            case DVB_DEMUX_SOURCE_DMA1:
-                source = DMA_1;
-                input = INPUT_LOCAL;
-                break;
-            case DVB_DEMUX_SOURCE_DMA2:
-                source = DMA_2;
-                input = INPUT_LOCAL;
-                break;
-            case DVB_DEMUX_SOURCE_DMA3:
-                source = DMA_3;
-                input = INPUT_LOCAL;
-                break;
-            case DVB_DEMUX_SOURCE_DMA4:
-                source = DMA_4;
-                input = INPUT_LOCAL;
-                break;
-            case DVB_DEMUX_SOURCE_DMA5:
-                source = DMA_5;
-                input = INPUT_LOCAL;
-                break;
-            case DVB_DEMUX_SOURCE_DMA6:
-                source = DMA_6;
-                input = INPUT_LOCAL;
-                break;
-            case DVB_DEMUX_SOURCE_DMA7:
-                source = DMA_7;
-                input = INPUT_LOCAL;
-                break;
-            case DVB_DEMUX_SECSOURCE_DMA0:
-                source = DMA_0;
-                input = INPUT_LOCAL_SEC;
-                break;
-            case DVB_DEMUX_SECSOURCE_DMA1:
-                source = DMA_1;
-                input = INPUT_LOCAL_SEC;
-                break;
-            case DVB_DEMUX_SECSOURCE_DMA2:
-                source = DMA_2;
-                input = INPUT_LOCAL_SEC;
-                break;
-            case DVB_DEMUX_SECSOURCE_DMA3:
-                source = DMA_3;
-                input = INPUT_LOCAL_SEC;
-                break;
-            case DVB_DEMUX_SECSOURCE_DMA4:
-                source = DMA_4;
-                input = INPUT_LOCAL_SEC;
-                break;
-            case DVB_DEMUX_SECSOURCE_DMA5:
-                source = DMA_5;
-                input = INPUT_LOCAL_SEC;
-                break;
-            case DVB_DEMUX_SECSOURCE_DMA6:
-                source = DMA_6;
-                input = INPUT_LOCAL_SEC;
-                break;
-            case DVB_DEMUX_SECSOURCE_DMA7:
-                source = DMA_7;
-                input = INPUT_LOCAL_SEC;
-                break;
-            default:
+            } else {
                 assert(0);
             }
+
             if (ioctl(fd, DMX_SET_INPUT, input) == -1)
             {
-                DVR_DEBUG(1, "dvb_set_demux_source ioctl DMX_SET_INPUT:%d error:%d", input, errno);
-                r = -1;
+                 DVR_DEBUG(1, "dvb_set_demux_source ioctl DMX_SET_INPUT:%d error:%d", input, errno);
+                 r = -1;
             }
             else
             {
-                DVR_DEBUG(1, "dvb_set_demux_source ioctl sucesss src:%d DMX_SET_INPUT:%d dmx_idx:%d", src, input, dmx_idx);
-                r = 0;
+                 DVR_DEBUG(1, "dvb_set_demux_source ioctl sucesss src:%d DMX_SET_INPUT:%d dmx_idx:%d", src, input, dmx_idx);
+                 r = 0;
             }
             if (ioctl(fd, DMX_SET_HW_SOURCE, source) == -1)
             {
@@ -346,4 +273,4 @@
         return 1;
     }
     return 0;
-}
\ No newline at end of file
+}