void CZegoRoomModel::AddStream(StreamPtr stream) { if (stream == nullptr) { return; } std::string strStreamId = stream->GetId(); if (stream->IsPrimary()) { if (stream->IsPlaying()) { auto iter = std::find_if(m_playingPrimaryStreams.begin(), m_playingPrimaryStreams.end(), [&strStreamId](const StreamPtr& elem) { return elem->GetId() == strStreamId; }); if (iter == m_playingPrimaryStreams.end()) m_playingPrimaryStreams.push_back(stream); } else { auto iter = std::find_if(m_pendingPrimaryStreams.begin(), m_pendingPrimaryStreams.end(), [&strStreamId](const StreamPtr& elem) { return elem->GetId() == strStreamId; }); if (iter == m_pendingPrimaryStreams.end()) m_pendingPrimaryStreams.push_back(stream); } } else { if (stream->IsPlaying()) { auto iter = std::find_if(m_playingStudentStreams.begin(), m_playingStudentStreams.end(), [&strStreamId](const StreamPtr& elem) { return elem->GetId() == strStreamId; }); if (iter == m_playingStudentStreams.end()) m_playingStudentStreams.push_back(stream); } else { auto iter = std::find_if(m_pendingStudentStreams.begin(), m_pendingStudentStreams.end(), [&strStreamId](const StreamPtr& elem) { return elem->GetId() == strStreamId; }); if (iter == m_pendingStudentStreams.end()) m_pendingStudentStreams.push_back(stream); } } }