diff options
author | Danil Chapovalov <danilchap@webrtc.org> | 2019-10-14 14:20:20 +0200 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-14 13:12:29 +0000 |
commit | 0deef725b963d220ffa7ff5310700af0b4359dbc (patch) | |
tree | b6b73ca6fc05d48adf801918da3f4b8ec5c3ef39 | |
parent | fbde32e596f06893d6dda13eb7d29f4c251cf08b (diff) | |
download | webrtc-0deef725b963d220ffa7ff5310700af0b4359dbc.tar.gz |
Remove deprecated functions in RTPSenderVideo
Bug: webrtc:10809
Change-Id: I7f5b175b43f3e79c0400b80c7278723d6036d8ee
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156567
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29463}
-rw-r--r-- | modules/rtp_rtcp/source/rtp_sender_video.cc | 170 | ||||
-rw-r--r-- | modules/rtp_rtcp/source/rtp_sender_video.h | 62 |
2 files changed, 40 insertions, 192 deletions
diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc index b6799c9dfa..e6fca7c6bb 100644 --- a/modules/rtp_rtcp/source/rtp_sender_video.cc +++ b/modules/rtp_rtcp/source/rtp_sender_video.cc @@ -255,28 +255,6 @@ RTPSenderVideo::RTPSenderVideo(const Config& config) RTPSenderVideo::~RTPSenderVideo() {} -void RTPSenderVideo::RegisterPayloadType(int8_t payload_type, - absl::string_view payload_name, - bool raw_payload) { - absl::optional<VideoCodecType> video_type; - if (!raw_payload) { - if (absl::EqualsIgnoreCase(payload_name, "VP8")) { - video_type = kVideoCodecVP8; - } else if (absl::EqualsIgnoreCase(payload_name, "VP9")) { - video_type = kVideoCodecVP9; - } else if (absl::EqualsIgnoreCase(payload_name, "H264")) { - video_type = kVideoCodecH264; - } else { - video_type = kVideoCodecGeneric; - } - } - - { - rtc::CritScope cs(&payload_type_crit_); - payload_type_map_[payload_type] = video_type; - } -} - void RTPSenderVideo::AppendAsRedMaybeWithUlpfec( std::unique_ptr<RtpPacketToSend> media_packet, bool protect_media_packet, @@ -284,44 +262,39 @@ void RTPSenderVideo::AppendAsRedMaybeWithUlpfec( std::unique_ptr<RtpPacketToSend> red_packet( new RtpPacketToSend(*media_packet)); BuildRedPayload(*media_packet, red_packet.get()); + red_packet->SetPayloadType(*red_payload_type_); std::vector<std::unique_ptr<RedPacket>> fec_packets; - { - // Only protect while creating RED and FEC packets, not when sending. - rtc::CritScope cs(&crit_); - red_packet->SetPayloadType(*red_payload_type_); - if (ulpfec_enabled()) { - if (protect_media_packet) { - if (exclude_transport_sequence_number_from_fec_experiment_) { - // See comments at the top of the file why experiment - // "WebRTC-kExcludeTransportSequenceNumberFromFec" is needed in - // conjunction with datagram transport. - // TODO(sukhanov): We may also need to implement it for flexfec_sender - // if we decide to keep this approach in the future. - uint16_t transport_senquence_number; - if (media_packet->GetExtension<webrtc::TransportSequenceNumber>( - &transport_senquence_number)) { - if (!media_packet->RemoveExtension( - webrtc::TransportSequenceNumber::kId)) { - RTC_NOTREACHED() - << "Failed to remove transport sequence number, packet=" - << media_packet->ToString(); - } + if (ulpfec_enabled()) { + if (protect_media_packet) { + if (exclude_transport_sequence_number_from_fec_experiment_) { + // See comments at the top of the file why experiment + // "WebRTC-kExcludeTransportSequenceNumberFromFec" is needed in + // conjunction with datagram transport. + // TODO(sukhanov): We may also need to implement it for flexfec_sender + // if we decide to keep this approach in the future. + uint16_t transport_senquence_number; + if (media_packet->GetExtension<webrtc::TransportSequenceNumber>( + &transport_senquence_number)) { + if (!media_packet->RemoveExtension( + webrtc::TransportSequenceNumber::kId)) { + RTC_NOTREACHED() + << "Failed to remove transport sequence number, packet=" + << media_packet->ToString(); } } - - ulpfec_generator_.AddRtpPacketAndGenerateFec( - media_packet->Buffer(), media_packet->headers_size()); - } - uint16_t num_fec_packets = ulpfec_generator_.NumAvailableFecPackets(); - if (num_fec_packets > 0) { - uint16_t first_fec_sequence_number = - rtp_sender_->AllocateSequenceNumber(num_fec_packets); - fec_packets = ulpfec_generator_.GetUlpfecPacketsAsRed( - *red_payload_type_, *ulpfec_payload_type_, - first_fec_sequence_number); - RTC_DCHECK_EQ(num_fec_packets, fec_packets.size()); } + + ulpfec_generator_.AddRtpPacketAndGenerateFec( + media_packet->Buffer(), media_packet->headers_size()); + } + uint16_t num_fec_packets = ulpfec_generator_.NumAvailableFecPackets(); + if (num_fec_packets > 0) { + uint16_t first_fec_sequence_number = + rtp_sender_->AllocateSequenceNumber(num_fec_packets); + fec_packets = ulpfec_generator_.GetUlpfecPacketsAsRed( + *red_payload_type_, *ulpfec_payload_type_, first_fec_sequence_number); + RTC_DCHECK_EQ(num_fec_packets, fec_packets.size()); } } @@ -405,33 +378,7 @@ void RTPSenderVideo::LogAndSendToNetwork( } } -void RTPSenderVideo::SetUlpfecConfig(int red_payload_type, - int ulpfec_payload_type) { - // Sanity check. Per the definition of UlpfecConfig (see config.h), - // a payload type of -1 means that the corresponding feature is - // turned off. - RTC_DCHECK_GE(red_payload_type, -1); - RTC_DCHECK_LE(red_payload_type, 127); - RTC_DCHECK_GE(ulpfec_payload_type, -1); - RTC_DCHECK_LE(ulpfec_payload_type, 127); - - rtc::CritScope cs(&crit_); - if (red_payload_type != -1) { - red_payload_type_ = red_payload_type; - } - if (ulpfec_payload_type != -1) { - ulpfec_payload_type_ = ulpfec_payload_type; - } - - // Must not enable ULPFEC without RED. - RTC_DCHECK(!(red_enabled() ^ ulpfec_enabled())); - - // Reset FEC parameters. - delta_fec_params_ = FecProtectionParams{0, 1, kFecMaskRandom}; - key_fec_params_ = FecProtectionParams{0, 1, kFecMaskRandom}; -} - -size_t RTPSenderVideo::CalculateFecPacketOverhead() const { +size_t RTPSenderVideo::FecPacketOverhead() const { if (flexfec_enabled()) return flexfec_sender_->MaxPacketOverhead(); @@ -468,54 +415,6 @@ absl::optional<uint32_t> RTPSenderVideo::FlexfecSsrc() const { } bool RTPSenderVideo::SendVideo( - VideoFrameType frame_type, - int8_t payload_type, - uint32_t rtp_timestamp, - int64_t capture_time_ms, - const uint8_t* payload_data, - size_t payload_size, - const RTPFragmentationHeader* fragmentation, - const RTPVideoHeader* video_header, - absl::optional<int64_t> expected_retransmission_time_ms) { - absl::optional<VideoCodecType> codec_type; - { - rtc::CritScope cs(&payload_type_crit_); - const auto it = payload_type_map_.find(payload_type); - if (it == payload_type_map_.end()) { - RTC_LOG(LS_ERROR) << "Payload type " << static_cast<int>(payload_type) - << " not registered."; - return false; - } - codec_type = it->second; - } - RTPVideoHeader rtp_video_header = *video_header; - rtp_video_header.frame_type = frame_type; - return SendVideo(payload_type, codec_type, rtp_timestamp, capture_time_ms, - rtc::MakeArrayView(payload_data, payload_size), - fragmentation, rtp_video_header, - expected_retransmission_time_ms); -} - -bool RTPSenderVideo::SendVideo( - VideoFrameType frame_type, - int8_t payload_type, - absl::optional<VideoCodecType> codec_type, - uint32_t rtp_timestamp, - int64_t capture_time_ms, - const uint8_t* payload_data, - size_t payload_size, - const RTPFragmentationHeader* fragmentation, - const RTPVideoHeader* video_header, - absl::optional<int64_t> expected_retransmission_time_ms) { - RTPVideoHeader rtp_video_header = *video_header; - rtp_video_header.frame_type = frame_type; - return SendVideo(payload_type, codec_type, rtp_timestamp, capture_time_ms, - rtc::MakeArrayView(payload_data, payload_size), - fragmentation, rtp_video_header, - expected_retransmission_time_ms); -} - -bool RTPSenderVideo::SendVideo( int payload_type, absl::optional<VideoCodecType> codec_type, uint32_t rtp_timestamp, @@ -581,9 +480,7 @@ bool RTPSenderVideo::SendVideo( transmit_color_space_next_frame_ ? !IsBaseLayer(video_header) : false; } - size_t fec_packet_overhead; - bool red_enabled; - { + if (flexfec_enabled() || ulpfec_enabled()) { rtc::CritScope cs(&crit_); // FEC settings. const FecProtectionParams& fec_params = @@ -594,14 +491,11 @@ bool RTPSenderVideo::SendVideo( flexfec_sender_->SetFecParameters(fec_params); if (ulpfec_enabled()) ulpfec_generator_.SetFecParameters(fec_params); - - fec_packet_overhead = CalculateFecPacketOverhead(); - red_enabled = this->red_enabled(); } // Maximum size of packet including rtp headers. // Extra space left in case packet will be resent using fec or rtx. - int packet_capacity = rtp_sender_->MaxRtpPacketSize() - fec_packet_overhead - + int packet_capacity = rtp_sender_->MaxRtpPacketSize() - FecPacketOverhead() - (rtp_sender_->RtxStatus() ? kRtxHeaderSize : 0); std::unique_ptr<RtpPacketToSend> single_packet = @@ -782,7 +676,7 @@ bool RTPSenderVideo::SendVideo( protect_packet = false; } - if (red_enabled) { + if (red_enabled()) { AppendAsRedMaybeWithUlpfec(std::move(packet), protect_packet, &rtp_packets); } else { diff --git a/modules/rtp_rtcp/source/rtp_sender_video.h b/modules/rtp_rtcp/source/rtp_sender_video.h index 8906e31cce..9cc7e4ff03 100644 --- a/modules/rtp_rtcp/source/rtp_sender_video.h +++ b/modules/rtp_rtcp/source/rtp_sender_video.h @@ -102,43 +102,6 @@ class RTPSenderVideo { const RTPFragmentationHeader* fragmentation, RTPVideoHeader video_header, absl::optional<int64_t> expected_retransmission_time_ms); - - RTC_DEPRECATED - bool SendVideo(VideoFrameType frame_type, - int8_t payload_type, - absl::optional<VideoCodecType> codec_type, - uint32_t rtp_timestamp, - int64_t capture_time_ms, - const uint8_t* payload_data, - size_t payload_size, - const RTPFragmentationHeader* fragmentation, - const RTPVideoHeader* video_header, - absl::optional<int64_t> expected_retransmission_time_ms); - - // TODO(bugs.webrtc.org/10809): Remove when downstream usage is gone. - RTC_DEPRECATED - bool SendVideo(VideoFrameType frame_type, - int8_t payload_type, - uint32_t capture_timestamp, - int64_t capture_time_ms, - const uint8_t* payload_data, - size_t payload_size, - const RTPFragmentationHeader* fragmentation, - const RTPVideoHeader* video_header, - absl::optional<int64_t> expected_retransmission_time_ms); - - // TODO(bugs.webrtc.org/10809): Remove when downstream usage is gone. - void RegisterPayloadType(int8_t payload_type, - absl::string_view payload_name, - bool raw_payload); - - // Set RED and ULPFEC payload types. A payload type of -1 means that the - // corresponding feature is turned off. Note that we DO NOT support enabling - // ULPFEC without enabling RED, and RED is only ever used when ULPFEC is - // enabled. - // TODO(bugs.webrtc.org/10809): Remove when downstream usage is gone. - void SetUlpfecConfig(int red_payload_type, int ulpfec_payload_type); - // FlexFEC/ULPFEC. // Set FEC rates, max frames before FEC is sent, and type of FEC masks. // Returns false on failure. @@ -182,12 +145,13 @@ class RTPSenderVideo { int64_t last_frame_time_ms; }; - size_t CalculateFecPacketOverhead() const RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_); + size_t FecPacketOverhead() const RTC_EXCLUSIVE_LOCKS_REQUIRED(send_checker_); void AppendAsRedMaybeWithUlpfec( std::unique_ptr<RtpPacketToSend> media_packet, bool protect_media_packet, - std::vector<std::unique_ptr<RtpPacketToSend>>* packets); + std::vector<std::unique_ptr<RtpPacketToSend>>* packets) + RTC_EXCLUSIVE_LOCKS_REQUIRED(send_checker_); // TODO(brandtr): Remove the FlexFEC functions when FlexfecSender has been // moved to PacedSender. @@ -198,13 +162,9 @@ class RTPSenderVideo { std::vector<std::unique_ptr<RtpPacketToSend>> packets, size_t unpacketized_payload_size); - bool red_enabled() const RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_) { - return red_payload_type_.has_value(); - } + bool red_enabled() const { return red_payload_type_.has_value(); } - bool ulpfec_enabled() const RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_) { - return ulpfec_payload_type_.has_value(); - } + bool ulpfec_enabled() const { return ulpfec_payload_type_.has_value(); } bool flexfec_enabled() const { return flexfec_sender_ != nullptr; } @@ -215,12 +175,6 @@ class RTPSenderVideo { RTPSender* const rtp_sender_; Clock* const clock_; - // Maps payload type to codec type, for packetization. - // TODO(bugs.webrtc.org/10809): Remove when downstream usage is gone. - rtc::CriticalSection payload_type_crit_; - std::map<int8_t, absl::optional<VideoCodecType>> payload_type_map_ - RTC_GUARDED_BY(payload_type_crit_); - const int32_t retransmission_settings_; // These members should only be accessed from within SendVideo() to avoid @@ -246,9 +200,9 @@ class RTPSenderVideo { RTC_PT_GUARDED_BY(crit_); // RED/ULPFEC. - absl::optional<int> red_payload_type_ RTC_GUARDED_BY(crit_); - absl::optional<int> ulpfec_payload_type_ RTC_GUARDED_BY(crit_); - UlpfecGenerator ulpfec_generator_ RTC_GUARDED_BY(crit_); + const absl::optional<int> red_payload_type_; + const absl::optional<int> ulpfec_payload_type_; + UlpfecGenerator ulpfec_generator_ RTC_GUARDED_BY(send_checker_); // FlexFEC. FlexfecSender* const flexfec_sender_; |