Changeset 10655
- Timestamp:
- 05/05/15 15:56:56 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-dvbapi.c
r10654 r10655 2606 2606 cs_log_dump_dbg(D_DVBAPI, buffer, length, "capmt:"); 2607 2607 cs_log_dbg(D_DVBAPI, "Receiver sends PMT command %d for channel %04X", ca_pmt_list_management, program_number); 2608 if((ca_pmt_list_management == LIST_FIRST || ca_pmt_list_management == LIST_ONLY))2609 {2610 for(i = 0; i < MAX_DEMUX; i++)2611 {2612 if(cfg.dvbapi_pmtmode == 6 && pmt_stopmarking == 1) { continue; } // already marked channels that need to stop -> skip!2613 if(demux[i].program_number == 0) { continue; } // skip empty demuxers2614 if(demux[i].ECMpidcount != 0 && demux[i].pidindex != -1 ) { demux[i].running = 1; } // mark if channel is already descrambling and running2615 if(demux[i].socket_fd != connfd) { continue; } // skip demuxers belonging to other ca pmt connection2616 if(cfg.dvbapi_pmtmode == 6)2617 {2618 demux[i].stopdescramble = 1; // Mark for deletion if not used again by following pmt objects.2619 cs_log_dbg(D_DVBAPI, "Marked demuxer %d/%d (srvid = %04X fd = %d) to stop decoding", i, MAX_DEMUX, demux[i].program_number, connfd);2620 }2621 }2622 pmt_stopmarking = 1;2608 2609 for(i = 0; i < MAX_DEMUX && !pmt_stopmarking; i++, pmt_stopmarking = (i == MAX_DEMUX)) // only mark running and deleting for first pmt record 2610 { 2611 if(demux[i].program_number == 0) { continue; } // skip empty demuxers 2612 if(demux[i].ECMpidcount != 0 && demux[i].pidindex != -1 ) 2613 { 2614 cs_log_dbg(D_DVBAPI, "Marked demuxer %d/%d (srvid = %04X fd = %d ecmpids = %d pidindex = %d) as already running", i, MAX_DEMUX, 2615 demux[i].program_number, connfd, demux[i].ECMpidcount, demux[i].pidindex); 2616 demux[i].running = 1; } // mark if channel is already descrambling and running 2617 if(demux[i].socket_fd != connfd) { continue; } // skip demuxers belonging to other ca pmt connection 2618 if(ca_pmt_list_management == LIST_FIRST || ca_pmt_list_management == LIST_ONLY) 2619 { 2620 demux[i].stopdescramble = 1; // Mark for deletion if not used again by following pmt objects. 2621 cs_log_dbg(D_DVBAPI, "Marked demuxer %d/%d (srvid = %04X fd = %d) to stop decoding", i, MAX_DEMUX, demux[i].program_number, connfd); 2622 } 2623 2623 } 2624 2624 getDemuxOptions(i, buffer, &ca_mask, &demux_index, &adapter_index, &pmtpid); … … 2662 2662 } 2663 2663 2664 // st op descramble old demuxers from this ca pmt connection that arent used anymore2665 if( (ca_pmt_list_management == LIST_LAST) || (ca_pmt_list_management == LIST_ONLY))2664 // start using the new list 2665 if(ca_pmt_list_management != LIST_FIRST && ca_pmt_list_management != LIST_MORE) 2666 2666 { 2667 2667 for(j = 0; j < MAX_DEMUX; j++) … … 2881 2881 } 2882 2882 2883 if( demux[demux_id].running == 0) // only do emm setup on non-running channels!2883 if(cfg.dvbapi_au > 0 && demux[demux_id].EMMpidcount == 0) // only do emm setup if au enabled and not running! 2884 2884 { 2885 2885 demux[demux_id].emm_filter = -1; // to register first run emmfilter start 2886 if( cfg.dvbapi_au > 0 &&demux[demux_id].emmstart.time == 1) // irdeto fetch emm cat direct!2886 if(demux[demux_id].emmstart.time == 1) // irdeto fetch emm cat direct! 2887 2887 { 2888 2888 cs_ftime(&demux[demux_id].emmstart); // trick to let emm fetching start after 30 seconds to speed up zapping … … 2937 2937 2938 2938 if(k > 0) 2939 cs_log_dump_dbg(D_DVBAPI, buffer + k, len - k, "Parsing next PMT object (s):");2939 cs_log_dump_dbg(D_DVBAPI, buffer + k, len - k, "Parsing next PMT object:"); 2940 2940 2941 2941 if(buffer[3 + k] & 0x80) … … 4093 4093 if ((opcode & 0xFFFFF000) == DVBAPI_AOT_CA) 4094 4094 { 4095 cs_log_dump_dbg(D_DVBAPI, mbuf, chunksize, "Parsing %d PMT object(s):", chunks_processed);4095 cs_log_dump_dbg(D_DVBAPI, mbuf, chunksize, "Parsing PMT object %d:", chunks_processed); 4096 4096 dvbapi_handlesockmsg(mbuf, chunksize, connfd); 4097 4097 add_to_poll = 0;
Note:
See TracChangeset
for help on using the changeset viewer.