| Index: webrtc/video/payload_router.cc
|
| diff --git a/webrtc/video/payload_router.cc b/webrtc/video/payload_router.cc
|
| index 5bcf70532fe819fc338947ee65a85b71caed47f9..2cc3e887b59e1da3254adf04b826574153ee23d7 100644
|
| --- a/webrtc/video/payload_router.cc
|
| +++ b/webrtc/video/payload_router.cc
|
| @@ -90,10 +90,8 @@ void CopyCodecSpecific(const CodecSpecificInfo* info, RTPVideoHeader* rtp) {
|
| PayloadRouter::PayloadRouter(const std::vector<RtpRtcp*>& rtp_modules,
|
| int payload_type)
|
| : active_(false),
|
| - num_sending_modules_(1),
|
| rtp_modules_(rtp_modules),
|
| payload_type_(payload_type) {
|
| - UpdateModuleSendingState();
|
| }
|
|
|
| PayloadRouter::~PayloadRouter() {}
|
| @@ -108,7 +106,11 @@ void PayloadRouter::set_active(bool active) {
|
| if (active_ == active)
|
| return;
|
| active_ = active;
|
| - UpdateModuleSendingState();
|
| +
|
| + for (auto& module : rtp_modules_) {
|
| + module->SetSendingStatus(active_);
|
| + module->SetSendingMediaStatus(active_);
|
| + }
|
| }
|
|
|
| bool PayloadRouter::active() {
|
| @@ -116,34 +118,13 @@ bool PayloadRouter::active() {
|
| return active_ && !rtp_modules_.empty();
|
| }
|
|
|
| -void PayloadRouter::SetSendStreams(const std::vector<VideoStream>& streams) {
|
| - RTC_DCHECK_LE(streams.size(), rtp_modules_.size());
|
| - rtc::CritScope lock(&crit_);
|
| - num_sending_modules_ = streams.size();
|
| - streams_ = streams;
|
| - // TODO(perkj): Should SetSendStreams also call SetTargetSendBitrate?
|
| - UpdateModuleSendingState();
|
| -}
|
| -
|
| -void PayloadRouter::UpdateModuleSendingState() {
|
| - for (size_t i = 0; i < num_sending_modules_; ++i) {
|
| - rtp_modules_[i]->SetSendingStatus(active_);
|
| - rtp_modules_[i]->SetSendingMediaStatus(active_);
|
| - }
|
| - // Disable inactive modules.
|
| - for (size_t i = num_sending_modules_; i < rtp_modules_.size(); ++i) {
|
| - rtp_modules_[i]->SetSendingStatus(false);
|
| - rtp_modules_[i]->SetSendingMediaStatus(false);
|
| - }
|
| -}
|
| -
|
| EncodedImageCallback::Result PayloadRouter::OnEncodedImage(
|
| const EncodedImage& encoded_image,
|
| const CodecSpecificInfo* codec_specific_info,
|
| const RTPFragmentationHeader* fragmentation) {
|
| rtc::CritScope lock(&crit_);
|
| RTC_DCHECK(!rtp_modules_.empty());
|
| - if (!active_ || num_sending_modules_ == 0)
|
| + if (!active_)
|
| return Result(Result::ERROR_SEND_FAILED);
|
|
|
| int stream_index = 0;
|
| @@ -154,12 +135,6 @@ EncodedImageCallback::Result PayloadRouter::OnEncodedImage(
|
| CopyCodecSpecific(codec_specific_info, &rtp_video_header);
|
| rtp_video_header.rotation = encoded_image.rotation_;
|
| rtp_video_header.playout_delay = encoded_image.playout_delay_;
|
| -
|
| - RTC_DCHECK_LT(rtp_video_header.simulcastIdx, rtp_modules_.size());
|
| - // The simulcast index might actually be larger than the number of modules
|
| - // in case the encoder was processing a frame during a codec reconfig.
|
| - if (rtp_video_header.simulcastIdx >= num_sending_modules_)
|
| - return Result(Result::ERROR_SEND_FAILED);
|
| stream_index = rtp_video_header.simulcastIdx;
|
|
|
| uint32_t frame_id;
|
| @@ -168,6 +143,7 @@ EncodedImageCallback::Result PayloadRouter::OnEncodedImage(
|
| encoded_image.capture_time_ms_, encoded_image._buffer,
|
| encoded_image._length, fragmentation, &rtp_video_header, &frame_id);
|
|
|
| + RTC_DCHECK_LT(rtp_video_header.simulcastIdx, rtp_modules_.size());
|
| if (send_result < 0)
|
| return Result(Result::ERROR_SEND_FAILED);
|
|
|
| @@ -177,7 +153,7 @@ EncodedImageCallback::Result PayloadRouter::OnEncodedImage(
|
| size_t PayloadRouter::MaxPayloadLength() const {
|
| size_t min_payload_length = DefaultMaxPayloadLength();
|
| rtc::CritScope lock(&crit_);
|
| - for (size_t i = 0; i < num_sending_modules_; ++i) {
|
| + for (size_t i = 0; i < rtp_modules_.size(); ++i) {
|
| size_t module_payload_length = rtp_modules_[i]->MaxDataPayloadLength();
|
| if (module_payload_length < min_payload_length)
|
| min_payload_length = module_payload_length;
|
|
|