owt-server
owt-server copied to clipboard
InternalServer浪费带宽资源
1、video或者audio来streaming订阅会把音视频数据都给到internalclient,实际上video agent只要视频audio agent只要音频 void InternalServer::onSessionData(int id, uint8_t* data, uint32_t len) { if (!m_sessions.count(id)) { ELOG_WARN("Unknown ID:%d for onSessionData", id); return; } if (len <= 0) { return; } if (data[0] == TDT_FEEDBACK_MSG) { auto session = m_sessions[id]; if (session) { FeedbackMsg fbMsg = (reinterpret_cast<FeedbackMsg>(data + 1)); if (fbMsg.cmd == INIT_STREAM_ID) { // Init stream ID std::string streamId(fbMsg.buffer.data, fbMsg.buffer.len); if (!session->streamId().empty()) { ELOG_WARN("Multiple init stream fb, ignored"); streamId = session->streamId(); } else if (m_sourceMap.count(streamId)) { ELOG_WARN("Mapped StreamID :%s %p", streamId.c_str(), m_sourceMap[streamId]);
FrameSource* src = m_sourceMap[streamId];
if (src) {
**这里video或者audio来订阅会把音视频数据都给到internalclient实际上video agent只要视频audio agent只要音频**
// Unlink source & destination
src->addAudioDestination(session.get());
src->addVideoDestination(session.get());
src->addDataDestination(session.get());
}
session->setStreamId(streamId);
m_sessionIdMap[streamId].insert(id);
if (m_listener) {
m_listener->onConnected(streamId);
}
} else {
ELOG_WARN("Unknown streamId:%s", streamId.c_str());
}
} else {
std::string streamId = session->streamId();
if (m_sourceMap.count(streamId)) {
FrameSource* src = m_sourceMap[streamId];
if (src) {
src->onFeedback(fbMsg);
}
}
}
}
} else {
ELOG_WARN("Receive unexpected data from:%d", id);
}
}