diff --git a/audio/channel_send.cc b/audio/channel_send.cc index 06e9238ce8..ee6f0c54cd 100644 --- a/audio/channel_send.cc +++ b/audio/channel_send.cc @@ -502,6 +502,8 @@ ChannelSend::ChannelSend( configuration.rtcp_packet_type_counter_observer = this; configuration.local_media_ssrc = ssrc; + configuration.use_deferred_sequencing = + !field_trial::IsDisabled("WebRTC-Audio-DeferredSequencing"); rtp_rtcp_ = ModuleRtpRtcpImpl2::Create(configuration); rtp_rtcp_->SetSendingMediaStatus(false); diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc index 536e5d43a8..f20fe876a5 100644 --- a/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc +++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc @@ -384,7 +384,9 @@ bool ModuleRtpRtcpImpl2::TrySendPacket(RtpPacketToSend* packet, RTC_DCHECK(rtp_sender_); RTC_DCHECK_RUN_ON(&pacer_thread_checker_); if (rtp_sender_->deferred_sequencing_) { - RTC_DCHECK(rtp_sender_->packet_generator.SendingMedia()); + if (!rtp_sender_->packet_generator.SendingMedia()) { + return false; + } if (packet->packet_type() == RtpPacketMediaType::kPadding && packet->Ssrc() == rtp_sender_->packet_generator.SSRC() && !rtp_sender_->sequencer_.CanSendPaddingOnMediaSsrc()) { diff --git a/modules/rtp_rtcp/source/rtp_sender_audio.cc b/modules/rtp_rtcp/source/rtp_sender_audio.cc index 4d72211b7c..c23e81a06a 100644 --- a/modules/rtp_rtcp/source/rtp_sender_audio.cc +++ b/modules/rtp_rtcp/source/rtp_sender_audio.cc @@ -304,8 +304,10 @@ bool RTPSenderAudio::SendAudio(AudioFrameType frame_type, return false; memcpy(payload, payload_data, payload_size); - if (!rtp_sender_->AssignSequenceNumber(packet.get())) + if (!rtp_sender_->deferred_sequence_numbering() && + !rtp_sender_->AssignSequenceNumber(packet.get())) { return false; + } { MutexLock lock(&send_audio_mutex_); @@ -374,8 +376,10 @@ bool RTPSenderAudio::SendTelephoneEventPacket(bool ended, packet->SetSsrc(rtp_sender_->SSRC()); packet->SetTimestamp(dtmf_timestamp); packet->set_capture_time_ms(clock_->TimeInMilliseconds()); - if (!rtp_sender_->AssignSequenceNumber(packet.get())) + if (!rtp_sender_->deferred_sequence_numbering() && + !rtp_sender_->AssignSequenceNumber(packet.get())) { return false; + } // Create DTMF data. uint8_t* dtmfbuffer = packet->AllocatePayload(kDtmfSize);