Changeset 10654
- Timestamp:
- 05/05/15 13:30:35 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-dvbapi.c
r10653 r10654 45 45 "", // 07 46 46 "", // 08 47 "Conditional Access ", // 0947 "Conditional Access ", // 09 48 48 "", // 0A 49 49 "", // 0B … … 63 63 "", // 19 64 64 "", // 1A 65 "MPEG-4 videostream ", // 1B66 "MPEG-4 audiostream ",65 "MPEG-4 videostream ", // 1B 66 "MPEG-4 audiostream ", 67 67 }; 68 68 … … 1248 1248 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].table = 0; 1249 1249 1250 cs_log("Demuxer %d added newecmpid %d CAID: %04X ECM_PID: %04X PROVID: %06X", demux_id, demux[demux_id].ECMpidcount, caid, ecmpid, provid);1250 cs_log("Demuxer %d ecmpid %d CAID: %04X ECM_PID: %04X PROVID: %06X", demux_id, demux[demux_id].ECMpidcount, caid, ecmpid, provid); 1251 1251 if(caid_is_irdeto(caid)) { demux[demux_id].emmstart.time = 1; } // marker to fetch emms early irdeto needs them! 1252 1252 … … 2610 2610 for(i = 0; i < MAX_DEMUX; i++) 2611 2611 { 2612 if(cfg.dvbapi_pmtmode == 6 && pmt_stopmarking == 1) { continue; } // already marked -> skip!2612 if(cfg.dvbapi_pmtmode == 6 && pmt_stopmarking == 1) { continue; } // already marked channels that need to stop -> skip! 2613 2613 if(demux[i].program_number == 0) { continue; } // skip empty demuxers 2614 if(demux[i].ECMpidcount != 0 && demux[i].pidindex != -1 ) { demux[i].running = 1; } // running channel changes from scrambled to fta2614 if(demux[i].ECMpidcount != 0 && demux[i].pidindex != -1 ) { demux[i].running = 1; } // mark if channel is already descrambling and running 2615 2615 if(demux[i].socket_fd != connfd) { continue; } // skip demuxers belonging to other ca pmt connection 2616 2616 if(cfg.dvbapi_pmtmode == 6) … … 2671 2671 } 2672 2672 start_descrambling = 1; // flag that demuxer descrambling is to be executed! 2673 pmt_stopmarking = 0; // flag that demuxers may be marked for stop decoding again 2673 2674 } 2674 2675 … … 2695 2696 cs_strncpy(demux[demux_id].pmt_file, pmtfile, sizeof(demux[demux_id].pmt_file)); 2696 2697 } 2697 2698 2699 for(j = 0; j < demux[demux_id].ECMpidcount; j++) // cleanout demuxer from possible stale info 2700 { 2701 demux[demux_id].ECMpids[j].streams = 0; // reset streams of each ecmpid! 2702 } 2703 demux[demux_id].STREAMpidcount = 0; // reset number of streams 2698 2704 demux[demux_id].ECMpidcount = 0; // reset number of ecmpids 2699 2705 … … 2705 2711 uint32_t es_info_length = 0, vpid = 0; 2706 2712 struct s_dvbapi_priority *addentry; 2707 2708 for(j = 0; j < demux[demux_id].ECMpidcount; j++)2709 {2710 demux[demux_id].ECMpids[j].streams = 0; // reset streams of each ecmpid!2711 }2712 demux[demux_id].STREAMpidcount = 0; // reset number of streams2713 2713 2714 2714 const char *stream_in_text = NULL; … … 2727 2727 stream_in_text = ""; 2728 2728 } 2729 cs_log_dbg(D_DVBAPI, "Demuxer %d added newstream %s(type: %02x pid: %04x length: %d)", demux_id, stream_in_text, stream_type, elementary_pid, es_info_length);2729 cs_log_dbg(D_DVBAPI, "Demuxer %d stream %s(type: %02x pid: %04x length: %d)", demux_id, stream_in_text, stream_type, elementary_pid, es_info_length); 2730 2730 2731 2731 if(demux[demux_id].STREAMpidcount >= ECM_PIDS) … … 2751 2751 || (addentry->srvid != demux[demux_id].program_number)) 2752 2752 { continue; } 2753 cs_log_dbg(D_DVBAPI, "Demuxer %d addedfake ecmpid %04X:%06x:%04x for unencrypted stream on srvid %04X", demux_id, addentry->mapcaid, addentry->mapprovid,2753 cs_log_dbg(D_DVBAPI, "Demuxer %d fake ecmpid %04X:%06x:%04x for unencrypted stream on srvid %04X", demux_id, addentry->mapcaid, addentry->mapprovid, 2754 2754 addentry->mapecmpid, demux[demux_id].program_number); 2755 2755 dvbapi_add_ecmpid(demux_id, addentry->mapcaid, addentry->mapecmpid, addentry->mapprovid); … … 2765 2765 2766 2766 getDemuxOptions(demux_id, buffer, &ca_mask, &demux_index, &adapter_index, &pmtpid); 2767 cs_log("Demuxer %d receiver wants to demux srvid %04X on adapter %04X camask %04X index %04X pmtpid %04X", demux_id, 2768 demux[demux_id].program_number, adapter_index, ca_mask, demux_index, pmtpid); 2767 char channame[32]; 2768 get_servicename(dvbapi_client, demux[demux_id].program_number, demux[demux_id].ECMpidcount > 0 ? demux[demux_id].ECMpids[0].CAID : NO_CAID_VALUE, channame); 2769 cs_log("Demuxer %d serving srvid %04X (%s) on adapter %04X camask %04X index %04X pmtpid %04X", demux_id, 2770 demux[demux_id].program_number, channame, adapter_index, ca_mask, demux_index, pmtpid); 2771 2769 2772 demux[demux_id].adapter_index = adapter_index; 2770 2773 demux[demux_id].ca_mask = ca_mask; … … 2779 2782 unassoc_fd[j] = 0; 2780 2783 2781 char channame[32];2782 get_servicename(dvbapi_client, demux[demux_id].program_number, demux[demux_id].ECMpidcount > 0 ? demux[demux_id].ECMpids[0].CAID : NO_CAID_VALUE, channame);2783 cs_log("Demuxer %d new program number: %04X (%s) [pmt_list_management %d]", demux_id, program_number, channame, ca_pmt_list_management);2784 2785 2784 dvbapi_capmt_notify(&demux[demux_id]); 2786 2787 cs_log_dbg(D_DVBAPI, "Demuxer %d demux_index: %2d ca_mask: %02x program_info_length: %3d ca_pmt_list_management %02x",2788 demux_id, demux[demux_id].demux_index, demux[demux_id].ca_mask, program_info_length, ca_pmt_list_management);2789 2785 2790 2786 struct s_dvbapi_priority *xtraentry; … … 3963 3959 { 3964 3960 pmthandling = 1; // pmthandling in progress! 3965 if(cfg.dvbapi_pmtmode == 6)3966 {3967 pmt_stopmarking = 0; // to stop_descrambling marking in PMT 6 mode3968 }3969 3970 3961 connfd = -1; // initially no socket to read from 3971 3962 int add_to_poll = 0; // we may need to additionally poll this socket when no PMT data comes in … … 4929 4920 if(type == TYPE_ECM && er->srvid != demux[demux_index].program_number) continue; 4930 4921 if((demux[demux_index].demux_fd[n].pid == er->pid) && 4931 ((demux[demux_index].demux_fd[n].provid == er->prid) || demux[demux_index].demux_fd[n].provid == 0 ) &&4922 ((demux[demux_index].demux_fd[n].provid == er->prid) || demux[demux_index].demux_fd[n].provid == 0 || er->prid == 0) && 4932 4923 ((demux[demux_index].demux_fd[n].caid == er->caid) || (demux[demux_index].demux_fd[n].caid == er->ocaid))) // current ecm pid? 4933 4924 {
Note:
See TracChangeset
for help on using the changeset viewer.