src/libtsduck/dtv/tsSignalizationDemux.cpp
void ts::SignalizationDemux::removeServiceId(uint16_t sid)
{
    // Do something only when the service is currently monitored.
    if (hasServiceId(sid)) {

        // Forget the service id to monitor.
        _service_ids.erase(sid);

        // If a PAT is known and references the service, remove its PMT PID.
        // If all PMT's are still monitored, don't change anything.
        if (_last_pat.isValid() && !hasTableId(TID_PMT)) {
            const auto it(_last_pat.pmts.find(sid));
            if (it != _last_pat.pmts.end()) {
                _demux.removePID(it->second);
            }
        }
    }
}
//----------------------------------------------------------------------------
// Remove a service id to filter its PMT.
//----------------------------------------------------------------------------
Remove a service id to filter its PMT.
Remove a service id to filter its PMT .
void ts::SignalizationDemux::removeServiceId(uint16_t sid)
{
    if (hasServiceId(sid)) {
        _service_ids.erase(sid);
        if (_last_pat.isValid() && !hasTableId(TID_PMT)) {
            const auto it(_last_pat.pmts.find(sid));
            if (it != _last_pat.pmts.end()) {
                _demux.removePID(it->second);
            }
        }
    }
}
void ts :: SignalizationDemux :: removeServiceId ( uint16_t sid ) { if ( hasServiceId ( sid ) ) { _service_ids . erase ( sid ) ; if ( _last_pat . isValid ( ) && ! hasTableId ( TID_PMT ) ) { const auto it ( _last_pat . pmts . find ( sid ) ) ; if ( it != _last_pat . pmts . end ( ) ) { _demux . removePID ( it -> second ) ; } } } }
Remove a service id to filter its PMT.
Remove a service id to filter its PMT .
// Do something only when the service is currently monitored. // Forget the service id to monitor. // If a PAT is known and references the service, remove its PMT PID. // If all PMT's are still monitored, don't change anything.