/* * Copyright 2016 The WebRTC Project Authors. All rights reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree.
*/
for (constauto& sender : rtp_senders) {
attachment_id_by_track_[sender->track().get()] = sender->AttachmentId();
} for (constauto& receiver : rtp_receivers) {
attachment_id_by_track_[receiver->track().get()] = receiver->AttachmentId();
}
if (voice_media_info_.has_value()) { for (auto& sender_info : voice_media_info_->senders) {
AudioTrackInterface* associated_track =
FindValueOrNull(local_audio_track_by_ssrc, sender_info.ssrc()); if (associated_track) { // One sender is associated with at most one track. // One track may be associated with multiple senders.
audio_track_by_sender_info_[&sender_info] = associated_track;
} if (sender_info.ssrc() == 0) continue; // Unconnected SSRC. bugs.webrtc.org/8673
RTC_CHECK(voice_info_by_sender_ssrc_.count(sender_info.ssrc()) == 0)
<< "Duplicate voice sender SSRC: " << sender_info.ssrc();
voice_info_by_sender_ssrc_[sender_info.ssrc()] = &sender_info;
} for (auto& receiver_info : voice_media_info_->receivers) {
AudioTrackInterface* associated_track =
FindValueOrNull(remote_audio_track_by_ssrc, receiver_info.ssrc()); if (associated_track) { // One receiver is associated with at most one track, which is uniquely // associated with that receiver.
audio_track_by_receiver_info_[&receiver_info] = associated_track;
} elseif (unsignaled_audio_track) {
audio_track_by_receiver_info_[&receiver_info] = unsignaled_audio_track;
}
RTC_CHECK(voice_info_by_receiver_ssrc_.count(receiver_info.ssrc()) == 0)
<< "Duplicate voice receiver SSRC: " << receiver_info.ssrc();
voice_info_by_receiver_ssrc_[receiver_info.ssrc()] = &receiver_info;
}
} if (video_media_info_.has_value()) { for (auto& sender_info : video_media_info_->senders) {
std::set<uint32_t> ssrcs;
ssrcs.insert(sender_info.ssrc()); for (auto& ssrc_group : sender_info.ssrc_groups) { for (auto ssrc : ssrc_group.ssrcs) {
ssrcs.insert(ssrc);
}
} for (auto ssrc : ssrcs) {
VideoTrackInterface* associated_track =
FindValueOrNull(local_video_track_by_ssrc, ssrc); if (associated_track) { // One sender is associated with at most one track. // One track may be associated with multiple senders.
video_track_by_sender_info_[&sender_info] = associated_track; break;
}
}
} for (auto& sender_info : video_media_info_->aggregated_senders) { if (sender_info.ssrc() == 0) continue; // Unconnected SSRC. bugs.webrtc.org/8673
RTC_DCHECK(video_info_by_sender_ssrc_.count(sender_info.ssrc()) == 0)
<< "Duplicate video sender SSRC: " << sender_info.ssrc();
video_info_by_sender_ssrc_[sender_info.ssrc()] = &sender_info;
VideoTrackInterface* associated_track =
FindValueOrNull(local_video_track_by_ssrc, sender_info.ssrc()); if (associated_track) {
video_track_by_sender_info_[&sender_info] = associated_track;
}
} for (auto& receiver_info : video_media_info_->receivers) {
VideoTrackInterface* associated_track =
FindValueOrNull(remote_video_track_by_ssrc, receiver_info.ssrc()); if (associated_track) { // One receiver is associated with at most one track, which is uniquely // associated with that receiver.
video_track_by_receiver_info_[&receiver_info] = associated_track;
} elseif (unsignaled_video_track) {
video_track_by_receiver_info_[&receiver_info] = unsignaled_video_track;
}
RTC_DCHECK(video_info_by_receiver_ssrc_.count(receiver_info.ssrc()) == 0)
<< "Duplicate video receiver SSRC: " << receiver_info.ssrc();
video_info_by_receiver_ssrc_[receiver_info.ssrc()] = &receiver_info;
}
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.