VDR是支持Multi ECM的
浏览:750 发布日期:2014-11-21

Linux操作系统自带的DVB API是不支持CA_SET_PID指令的,也就无法支持音视频使用不同CW的情况。不过VDR在操作系统上打了补丁,提供了对CA_SET_PID指令的处理,所以VDR上应该不受数码反制的影响,至少使用SCPlugin的是不会受影响的。 
 
以下是SCPlugin中的两段代码: 
void cCam::SetCWIndex(int pid, int index) 

  if(index<MAX_CW_IDX) { 
    ca_pid_t ca_pid; 
    ca_pid.pid=pid; 
    ca_pid.index=index; 
    PRINTF(L_CORE_PIDS,"%d: descrambling pid %04x on index %x",cardNum,pid,index); 
    if(!device->SetCaPid(&ca_pid)) 
      if(index>0) { 
        PRINTF(L_GEN_ERROR,"CA_SET_PID failed (%s). Expect a black screen/bad recording. Do you use the patched DVB driver?",strerror(errno)); 
        PRINTF(L_GEN_WARN,"Adjusting 'Concurrent FF streams' to NO"); 
        ScSetup.ConcurrentFF=0; 
        ScSetup.Store(true); 
        } 
    } 

 
void cEcmHandler::SetPrg(cPrg *prg) 

... 
  for(cPrgPid *npid=prg->pids.First(); npid; npid=prg->pids.Next(npid)) { 
    if(!npid->Proc()) { 
      cPrgPid *pid=new cPrgPid(npid->Type(),npid->Pid()); 
      pids.Add(pid); 
      cam->SetCWIndex(pid->Pid(),cwIndex); 
      } 
    } 
... 

 

扫码下方或搜索关注公众号“卫星参数网”,独家内幕新闻!

卫星参数网公众号