blob: adc749ff9da019f713697f44d63c7d2aae482ef8 [file] [log] [blame]
/*
* Copyright 2023 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.
*/
#include "media/base/media_channel_shim.h"
namespace cricket {
// Note: The VideoMediaChannel default implementations are not used here, and
// should be removed from that interface.
// TODO(bugs.webrtc.org/13931): Remove them.
VoiceMediaShimChannel::VoiceMediaShimChannel(
std::unique_ptr<VoiceMediaSendChannelInterface> send_impl,
std::unique_ptr<VoiceMediaReceiveChannelInterface> receive_impl)
: VoiceMediaChannel(MediaChannel::Role::kBoth, nullptr, false),
send_impl_(std::move(send_impl)),
receive_impl_(std::move(receive_impl)) {
if (send_impl_ && receive_impl_) {
send_impl_->SetSsrcListChangedCallback(
[this](const std::set<uint32_t>& choices) {
receive_impl_->ChooseReceiverReportSsrc(choices);
});
send_impl_->SetSendCodecChangedCallback([this]() {
receive_impl_->SetReceiveNackEnabled(send_impl_->SendCodecHasNack());
receive_impl_->SetReceiveNonSenderRttEnabled(
send_impl_->SenderNonSenderRttEnabled());
});
}
}
VideoMediaShimChannel::VideoMediaShimChannel(
std::unique_ptr<VideoMediaSendChannelInterface> send_impl,
std::unique_ptr<VideoMediaReceiveChannelInterface> receive_impl)
: VideoMediaChannel(MediaChannel::Role::kBoth, nullptr, false),
send_impl_(std::move(send_impl)),
receive_impl_(std::move(receive_impl)) {
if (send_impl_ && receive_impl_) {
send_impl_->SetSendCodecChangedCallback([this]() {
// Adjust receive streams based on send codec.
receive_impl_->SetReceiverFeedbackParameters(
send_impl_->SendCodecHasLntf(), send_impl_->SendCodecHasNack(),
send_impl_->SendCodecRtcpMode(), send_impl_->SendCodecRtxTime());
});
send_impl_->SetSsrcListChangedCallback(
[this](const std::set<uint32_t>& choices) {
receive_impl_->ChooseReceiverReportSsrc(choices);
});
}
}
} // namespace cricket