Changeset 3396
- Timestamp:
- 10/06/10 16:35:33 (13 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-dvbapi.c
r3394 r3396 307 307 } 308 308 309 void dvbapi_add_ecmpid(int demux_id, ushort caid, ushort ecmpid, ulong provid, int chid, char stream ) {309 void dvbapi_add_ecmpid(int demux_id, ushort caid, ushort ecmpid, ulong provid, int chid, char stream, unsigned char streamtype) { 310 310 int n,added=0; 311 311 … … 320 320 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].CAID = demux[demux_id].ECMpids[caid].CAID; 321 321 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].PROVID = demux[demux_id].ECMpids[caid].PROVID; 322 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].sflag = demux[demux_id].ECMpids[caid].sflag; 322 323 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].slen = demux[demux_id].ECMpids[caid].slen; 323 324 memcpy(demux[demux_id].ECMpids[caid].stream,demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].stream,8); 324 325 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].irdeto_chid = chid; 325 cs_log("[ADD PID %d] IRDETO CHID: %#X STREAM: %#x ", demux[demux_id].ECMpidcount, chid,stream);326 cs_log("[ADD PID %d] IRDETO CHID: %#X STREAM: %#x SFLAG: %#x", demux[demux_id].ECMpidcount, chid,stream,demux[demux_id].ECMpids[caid].sflag); 326 327 demux[demux_id].ECMpidcount++; 327 328 }else … … 332 333 added=1; 333 334 demux[demux_id].ECMpids[n].stream[demux[demux_id].ECMpids[n].slen++]=stream; 334 cs_log("[ADD PID %d] CAID: %04X\tECM_PID: %04X\tPROVID: %06X STREAM: %#x", n, caid, ecmpid, provid,stream); 335 if (demux[demux_id].ECMpids[n].sflag != 0 && demux[demux_id].ECMpids[n].sflag != streamtype) demux[demux_id].ECMpids[n].sflag=0; 336 cs_log("[ADD PID %d] CAID: %04X\tECM_PID: %04X\tPROVID: %06X STREAM: %#x SFLAG: %#x", n, caid, ecmpid, provid,stream,demux[demux_id].ECMpids[n].sflag); 335 337 } 336 338 } … … 341 343 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].PROVID = provid; 342 344 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].stream[demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].slen++]=stream; 343 cs_log("[ADD PID %d] CAID: %04X\tECM_PID: %04X\tPROVID: %06X STREAM: %#x", demux[demux_id].ECMpidcount, caid, ecmpid, provid,stream); 345 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].sflag=streamtype; 346 cs_log("[ADD PID %d] CAID: %04X\tECM_PID: %04X\tPROVID: %06X STREAM: %#x SFLAG: %#x", demux[demux_id].ECMpidcount, caid, ecmpid, provid,stream,demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].sflag); 344 347 demux[demux_id].ECMpidcount++; 345 348 } … … 457 460 cs_log("Start descrambling PID #%d (CAID: %04X)", demux[demux_id].curindex, demux[demux_id].ECMpids[demux[demux_id].curindex].CAID); 458 461 459 demux[demux_id].pidindex=demux[demux_id].curindex;460 462 i=demux[demux_id].curindex; 461 for (j=0; j<demux[demux_id].ECMpidcount; j++) 462 if (demux[demux_id].ECMpids[j].checked>0 && demux[demux_id].ECMpids[i].CAID == demux[demux_id].ECMpids[j].CAID && demux[demux_id].ECMpids[i].PROVID == demux[demux_id].ECMpids[j].PROVID ) ar[l++]=j; 463 463 demux[demux_id].pidindex=i; 464 if (demux[demux_id].ECMpids[i].sflag == 0) ar[l++]=i; 465 else 466 { 467 for (j=0; j<demux[demux_id].ECMpidcount; j++) 468 if (demux[demux_id].ECMpids[j].checked>0 && demux[demux_id].ECMpids[i].CAID == demux[demux_id].ECMpids[j].CAID && demux[demux_id].ECMpids[i].PROVID == demux[demux_id].ECMpids[j].PROVID ) ar[l++]=j; 469 } 464 470 for (i=0;i<l;i++) 465 471 for (j=0; j<demux[demux_id].ECMpids[ar[i]].slen; j++) … … 744 750 745 751 746 void dvbapi_parse_descriptor(int demux_id, unsigned int info_length, unsigned char *buffer, char stream ) {752 void dvbapi_parse_descriptor(int demux_id, unsigned int info_length, unsigned char *buffer, char stream, unsigned char streamtype) { 747 753 //int ca_pmt_cmd_id = buffer[i + 5]; 748 754 unsigned int descriptor_length=0; … … 774 780 descriptor_ca_pid = ((buffer[j+2+u] & 0x1F) << 8) | buffer[j+2+u+1]; 775 781 descriptor_ca_provider = (buffer[j+2+u+2] << 8) | buffer[j+2+u+3]; 776 dvbapi_add_ecmpid(demux_id, descriptor_ca_system_id, descriptor_ca_pid, descriptor_ca_provider, 0, stream );782 dvbapi_add_ecmpid(demux_id, descriptor_ca_system_id, descriptor_ca_pid, descriptor_ca_provider, 0, stream, streamtype); 777 783 } 778 784 } else { … … 783 789 descriptor_ca_provider = buffer[j+6] << 16 | (buffer[j+7] << 8| (buffer[j+8])); 784 790 785 dvbapi_add_ecmpid(demux_id, descriptor_ca_system_id, descriptor_ca_pid, descriptor_ca_provider, 0, stream );791 dvbapi_add_ecmpid(demux_id, descriptor_ca_system_id, descriptor_ca_pid, descriptor_ca_provider, 0, stream, streamtype); 786 792 } 787 793 } … … 812 818 ar[k++]=n; 813 819 cs_debug("APPEND(P) PID %#x", demux[demux_id].ECMpids[n].ECM_PID); 814 if (demux[demux_id].ECMpids[n].s len>1) break;820 if (demux[demux_id].ECMpids[n].sflag == 0 ) break; 815 821 } 816 822 } … … 830 836 ar[k++]=n; 831 837 cs_debug("APPEND PID %#x", demux[demux_id].ECMpids[n].ECM_PID); 832 if (demux[demux_id].ECMpids[n].s len>1) break;838 if (demux[demux_id].ECMpids[n].sflag == 0) break; 833 839 } 834 840 } … … 912 918 913 919 if (program_info_length > 1 && program_info_length < length) 914 dvbapi_parse_descriptor(demux_id, program_info_length-1, buffer+7,-1 );920 dvbapi_parse_descriptor(demux_id, program_info_length-1, buffer+7,-1,0); 915 921 916 922 unsigned int es_info_length=0; … … 929 935 if (es_info_length != 0 && es_info_length < length) { 930 936 //int offset = (cfg->dvbapi_boxtype == BOXTYPE_IPBOX_PMT) ? i - 1 : i; 931 dvbapi_parse_descriptor(demux_id, es_info_length, buffer+i+5,demux[demux_id].STREAMpidcount-1 );937 dvbapi_parse_descriptor(demux_id, es_info_length, buffer+i+5,demux[demux_id].STREAMpidcount-1,(unsigned char)stream_type); 932 938 } 933 939 } … … 1229 1235 //TODO: remove no longer used chids 1230 1236 for (i=1;i<=buffer[5];i++) { 1231 dvbapi_add_ecmpid(demux_id, demux[demux_id].demux_fd[filter_num].pidindex, -1, 0, i,(char)-1 );1237 dvbapi_add_ecmpid(demux_id, demux[demux_id].demux_fd[filter_num].pidindex, -1, 0, i,(char)-1,0); 1232 1238 } 1233 1239 demux[demux_id].irdeto_numchids = buffer[5]; … … 1507 1513 1508 1514 //cs_log("mask %02X write to %d", demux[demux_id].ca_mask, i); 1509 cs_debug("write cw%d index: %d (ca%d)", n, demux_id, i);1515 cs_debug("write cw%d index: %d (ca%d)", n, ca_descr.index, i); 1510 1516 1511 1517 if (ca_fd[i]<=0) { -
trunk/module-dvbapi.h
r3333 r3396 49 49 unsigned char table; 50 50 int index; 51 unsigned char sflag; 51 52 unsigned char slen; 52 53 char stream[8];
Note:
See TracChangeset
for help on using the changeset viewer.