Chromium Code Reviews| Index: webrtc/modules/rtp_rtcp/source/flexfec_sender.cc |
| diff --git a/webrtc/modules/rtp_rtcp/source/flexfec_sender.cc b/webrtc/modules/rtp_rtcp/source/flexfec_sender.cc |
| index 55e8e5266919bbb978b44e8d5fcd1fff356549c1..54ed1ab089468c7c5df720452c5e4b56205cf0e6 100644 |
| --- a/webrtc/modules/rtp_rtcp/source/flexfec_sender.cc |
| +++ b/webrtc/modules/rtp_rtcp/source/flexfec_sender.cc |
| @@ -38,6 +38,26 @@ const int kMsToRtpTimestamp = kVideoPayloadTypeFrequency / 1000; |
| // How often to log the generated FEC packets to the text log. |
| constexpr int64_t kPacketLogIntervalMs = 10000; |
| +// Only activate BWE header extensions for FlexFEC. |
| +RtpHeaderExtensionMap FilterRtpHeaderExtensions( |
| + const std::vector<RtpExtension>& rtp_header_extensions) { |
| + RtpHeaderExtensionMap map; |
| + for (const auto& extension : rtp_header_extensions) { |
| + if (extension.uri == RtpExtension::kTransportSequenceNumberUri) { |
| + map.Register(kRtpExtensionTransportSequenceNumber, extension.id); |
|
danilchap
2016/11/10 11:29:23
I would like to remove this version of Register ev
brandtr
2016/11/10 12:00:41
Done.
|
| + } else if (extension.uri == RtpExtension::kAbsSendTimeUri) { |
| + map.Register(kRtpExtensionAbsoluteSendTime, extension.id); |
| + } else if (extension.uri == RtpExtension::kTimestampOffsetUri) { |
| + map.Register(kRtpExtensionTransmissionTimeOffset, extension.id); |
| + } else { |
| + LOG(LS_WARNING) << "RTP header extension with id: " << extension.id |
| + << ", uri: " << extension.uri |
| + << ", is unsupported by FlexfecSender."; |
| + } |
| + } |
| + return map; |
| +} |
| + |
| } // namespace |
| FlexfecSender::FlexfecSender( |
| @@ -57,7 +77,8 @@ FlexfecSender::FlexfecSender( |
| protected_media_ssrc_(protected_media_ssrc), |
| seq_num_(random_.Rand(1, kMaxInitRtpSeqNumber)), |
| ulpfec_generator_(ForwardErrorCorrection::CreateFlexfec()), |
| - rtp_header_extension_map_() { |
| + rtp_header_extension_map_( |
| + FilterRtpHeaderExtensions(rtp_header_extensions)) { |
|
danilchap
2016/11/10 11:29:23
maybe call this function 'RegisterBweExtensions'
brandtr
2016/11/10 12:00:41
Done.
|
| // This object should not have been instantiated if FlexFEC is disabled. |
| RTC_DCHECK_GE(payload_type, 0); |
| RTC_DCHECK_LE(payload_type, 127); |
| @@ -65,24 +86,6 @@ FlexfecSender::FlexfecSender( |
| // It's OK to create this object on a different thread/task queue than |
| // the one used during main operation. |
| sequence_checker_.Detach(); |
| - |
| - // Register RTP header extensions for BWE. |
| - for (const auto& extension : rtp_header_extensions) { |
| - if (extension.uri == RtpExtension::kTransportSequenceNumberUri) { |
| - rtp_header_extension_map_.Register(kRtpExtensionTransportSequenceNumber, |
| - extension.id); |
| - } else if (extension.uri == RtpExtension::kAbsSendTimeUri) { |
| - rtp_header_extension_map_.Register(kRtpExtensionAbsoluteSendTime, |
| - extension.id); |
| - } else if (extension.uri == RtpExtension::kTimestampOffsetUri) { |
| - rtp_header_extension_map_.Register(kRtpExtensionTransmissionTimeOffset, |
| - extension.id); |
| - } else { |
| - LOG(LS_WARNING) << "RTP header extension with id: " << extension.id |
| - << ", uri: " << extension.uri |
| - << ", is unsupported by FlexfecSender."; |
| - } |
| - } |
| } |
| FlexfecSender::~FlexfecSender() = default; |
| @@ -158,8 +161,10 @@ FlexfecSender::GetFecPackets() { |
| return fec_packets_to_send; |
| } |
| +// For FlexFEC, the overhead is the FEC header, as well as the BWE header exts. |
|
danilchap
2016/11/10 11:29:23
may be instead of shortering word remove redundant
brandtr
2016/11/10 12:00:41
Done.
|
| size_t FlexfecSender::MaxPacketOverhead() const { |
| - return kFlexfecMaxHeaderSize; |
| + return kFlexfecMaxHeaderSize + |
| + rtp_header_extension_map_.GetTotalLengthInBytes(); |
|
danilchap
2016/11/10 11:29:23
really tiny nit: may be sum other way around since
brandtr
2016/11/10 12:00:41
I like that! These things make the code easier to
|
| } |
| } // namespace webrtc |