AbstractStream::status PlaylistManager::demux(mtime_t nzdeadline, bool send) { AbstractStream::status i_return = AbstractStream::status_eof; std::vector<AbstractStream *>::iterator it; for(it=streams.begin(); it!=streams.end(); ++it) { AbstractStream *st = *it; if (st->isDisabled()) { if(st->isSelected() && !st->isEOF()) reactivateStream(st); else continue; } AbstractStream::status i_ret = st->demux(nzdeadline, send); if(i_ret == AbstractStream::status_buffering_ahead || i_return == AbstractStream::status_buffering_ahead) { i_return = AbstractStream::status_buffering_ahead; } else if(i_ret == AbstractStream::status_buffering) { i_return = AbstractStream::status_buffering; } else if(i_ret == AbstractStream::status_demuxed && i_return != AbstractStream::status_buffering) { i_return = AbstractStream::status_demuxed; } else if(i_ret == AbstractStream::status_dis) { i_return = AbstractStream::status_dis; } } /* might be end of current period */ if(i_return == AbstractStream::status_eof && currentPeriod) { unsetPeriod(); currentPeriod = playlist->getNextPeriod(currentPeriod); i_return = (setupPeriod()) ? AbstractStream::status_eop : AbstractStream::status_eof; } return i_return; }