diff options
author | Danil Chapovalov <danilchap@webrtc.org> | 2021-06-08 12:30:46 +0200 |
---|---|---|
committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2021-06-21 09:17:52 +0000 |
commit | 76a35d9ce2e0fddbc661969a596d16d639cee7ec (patch) | |
tree | 69d1903aedceb98383e28146b570f9411c4dad5c | |
parent | 257f81b98e437c22964b9be40d967b68c5ad83c4 (diff) | |
download | webrtc-76a35d9ce2e0fddbc661969a596d16d639cee7ec.tar.gz |
Delete legacy RtpHeaderParser wrapper
Bug: None
Change-Id: I4deec4fab631488ef2d0706848cbbe4e085825bc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221617
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34341}
-rw-r--r-- | rtc_tools/BUILD.gn | 1 | ||||
-rw-r--r-- | rtc_tools/video_replay.cc | 33 | ||||
-rw-r--r-- | test/BUILD.gn | 1 | ||||
-rw-r--r-- | test/fuzzers/rtp_header_parser_fuzzer.cc | 21 | ||||
-rw-r--r-- | test/fuzzers/utils/BUILD.gn | 1 | ||||
-rw-r--r-- | test/fuzzers/utils/rtp_replayer.cc | 37 | ||||
-rw-r--r-- | test/rtp_header_parser.cc | 70 | ||||
-rw-r--r-- | test/rtp_header_parser.h | 32 |
8 files changed, 36 insertions, 160 deletions
diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn index 08f2742528..b841228a8e 100644 --- a/rtc_tools/BUILD.gn +++ b/rtc_tools/BUILD.gn @@ -243,6 +243,7 @@ if (!is_component_build) { "../call:call_interfaces", "../common_video", "../media:rtc_internal_video_codecs", + "../modules/rtp_rtcp:rtp_rtcp_format", "../modules/video_coding:video_coding_utility", "../rtc_base:checks", "../rtc_base:rtc_json", diff --git a/rtc_tools/video_replay.cc b/rtc_tools/video_replay.cc index 08f4c7accc..d96c7be410 100644 --- a/rtc_tools/video_replay.cc +++ b/rtc_tools/video_replay.cc @@ -25,6 +25,7 @@ #include "call/call.h" #include "common_video/libyuv/include/webrtc_libyuv.h" #include "media/engine/internal_decoder_factory.h" +#include "modules/rtp_rtcp/source/rtp_packet.h" #include "modules/video_coding/utility/ivf_file_writer.h" #include "rtc_base/checks.h" #include "rtc_base/string_to_number.h" @@ -39,7 +40,6 @@ #include "test/gtest.h" #include "test/null_transport.h" #include "test/rtp_file_reader.h" -#include "test/rtp_header_parser.h" #include "test/run_loop.h" #include "test/run_test.h" #include "test/test_video_capturer.h" @@ -544,11 +544,11 @@ class RtpReplayer final { if (!rtp_reader->NextPacket(&packet)) { break; } - RTPHeader header; - std::unique_ptr<RtpHeaderParser> parser(RtpHeaderParser::CreateForTest()); - parser->Parse(packet.data, packet.length, &header); - if (header.timestamp < start_timestamp || - header.timestamp > stop_timestamp) { + rtc::CopyOnWriteBuffer packet_buffer(packet.data, packet.length); + RtpPacket header; + header.Parse(packet_buffer); + if (header.Timestamp() < start_timestamp || + header.Timestamp() > stop_timestamp) { continue; } @@ -560,10 +560,9 @@ class RtpReplayer final { ++num_packets; PacketReceiver::DeliveryStatus result = PacketReceiver::DELIVERY_OK; worker_thread->PostTask(ToQueuedTask([&]() { - result = call->Receiver()->DeliverPacket( - webrtc::MediaType::VIDEO, - rtc::CopyOnWriteBuffer(packet.data, packet.length), - /* packet_time_us */ -1); + result = call->Receiver()->DeliverPacket(webrtc::MediaType::VIDEO, + std::move(packet_buffer), + /* packet_time_us */ -1); event.Set(); })); event.Wait(/*give_up_after_ms=*/10000); @@ -571,21 +570,17 @@ class RtpReplayer final { case PacketReceiver::DELIVERY_OK: break; case PacketReceiver::DELIVERY_UNKNOWN_SSRC: { - if (unknown_packets[header.ssrc] == 0) - fprintf(stderr, "Unknown SSRC: %u!\n", header.ssrc); - ++unknown_packets[header.ssrc]; + if (unknown_packets[header.Ssrc()] == 0) + fprintf(stderr, "Unknown SSRC: %u!\n", header.Ssrc()); + ++unknown_packets[header.Ssrc()]; break; } case PacketReceiver::DELIVERY_PACKET_ERROR: { fprintf(stderr, "Packet error, corrupt packets or incorrect setup?\n"); - RTPHeader header; - std::unique_ptr<RtpHeaderParser> parser( - RtpHeaderParser::CreateForTest()); - parser->Parse(packet.data, packet.length, &header); fprintf(stderr, "Packet len=%zu pt=%u seq=%u ts=%u ssrc=0x%8x\n", - packet.length, header.payloadType, header.sequenceNumber, - header.timestamp, header.ssrc); + packet.length, header.PayloadType(), header.SequenceNumber(), + header.Timestamp(), header.Ssrc()); break; } } diff --git a/test/BUILD.gn b/test/BUILD.gn index 988d15fd30..77f003cfbe 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -212,6 +212,7 @@ rtc_library("rtp_test_utils") { "../rtc_base/synchronization:mutex", "../rtc_base/system:arch", ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } rtc_library("field_trial") { diff --git a/test/fuzzers/rtp_header_parser_fuzzer.cc b/test/fuzzers/rtp_header_parser_fuzzer.cc index d6af5ca3ce..cb5bea2456 100644 --- a/test/fuzzers/rtp_header_parser_fuzzer.cc +++ b/test/fuzzers/rtp_header_parser_fuzzer.cc @@ -22,27 +22,6 @@ namespace webrtc { void FuzzOneInput(const uint8_t* data, size_t size) { RtpHeaderParser::IsRtcp(data, size); RtpHeaderParser::GetSsrc(data, size); - RTPHeader rtp_header; - - std::unique_ptr<RtpHeaderParser> rtp_header_parser( - RtpHeaderParser::CreateForTest()); - - rtp_header_parser->Parse(data, size, &rtp_header); - for (int i = 1; i < kRtpExtensionNumberOfExtensions; ++i) { - if (size > 0 && i >= data[size - 1]) { - RTPExtensionType add_extension = static_cast<RTPExtensionType>(i); - rtp_header_parser->RegisterRtpHeaderExtension(add_extension, i); - } - } - rtp_header_parser->Parse(data, size, &rtp_header); - - for (int i = 1; i < kRtpExtensionNumberOfExtensions; ++i) { - if (size > 1 && i >= data[size - 2]) { - RTPExtensionType remove_extension = static_cast<RTPExtensionType>(i); - rtp_header_parser->DeregisterRtpHeaderExtension(remove_extension); - } - } - rtp_header_parser->Parse(data, size, &rtp_header); } } // namespace webrtc diff --git a/test/fuzzers/utils/BUILD.gn b/test/fuzzers/utils/BUILD.gn index 6249156058..3e0782f39d 100644 --- a/test/fuzzers/utils/BUILD.gn +++ b/test/fuzzers/utils/BUILD.gn @@ -24,6 +24,7 @@ rtc_library("rtp_replayer") { "../../../call:call_interfaces", "../../../common_video", "../../../media:rtc_internal_video_codecs", + "../../../modules/rtp_rtcp:rtp_rtcp_format", "../../../rtc_base:checks", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:rtc_base_tests_utils", diff --git a/test/fuzzers/utils/rtp_replayer.cc b/test/fuzzers/utils/rtp_replayer.cc index a664adb31d..43b1fc2ea4 100644 --- a/test/fuzzers/utils/rtp_replayer.cc +++ b/test/fuzzers/utils/rtp_replayer.cc @@ -17,13 +17,13 @@ #include "api/task_queue/default_task_queue_factory.h" #include "api/transport/field_trial_based_config.h" +#include "modules/rtp_rtcp/source/rtp_packet.h" #include "rtc_base/strings/json.h" #include "system_wrappers/include/clock.h" #include "test/call_config_utils.h" #include "test/encoder_settings.h" #include "test/fake_decoder.h" #include "test/rtp_file_reader.h" -#include "test/rtp_header_parser.h" #include "test/run_loop.h" namespace webrtc { @@ -164,37 +164,32 @@ void RtpReplayer::ReplayPackets(rtc::FakeClock* clock, std::min(deliver_in_ms, static_cast<int64_t>(100)))); } + rtc::CopyOnWriteBuffer packet_buffer(packet.data, packet.length); ++num_packets; - switch (call->Receiver()->DeliverPacket( - webrtc::MediaType::VIDEO, - rtc::CopyOnWriteBuffer(packet.data, packet.length), - /* packet_time_us */ -1)) { + switch (call->Receiver()->DeliverPacket(webrtc::MediaType::VIDEO, + packet_buffer, + /* packet_time_us */ -1)) { case PacketReceiver::DELIVERY_OK: break; case PacketReceiver::DELIVERY_UNKNOWN_SSRC: { - RTPHeader header; - std::unique_ptr<RtpHeaderParser> parser( - RtpHeaderParser::CreateForTest()); - - parser->Parse(packet.data, packet.length, &header); - if (unknown_packets[header.ssrc] == 0) { - RTC_LOG(LS_ERROR) << "Unknown SSRC: " << header.ssrc; + webrtc::RtpPacket header; + header.Parse(packet_buffer); + if (unknown_packets[header.Ssrc()] == 0) { + RTC_LOG(LS_ERROR) << "Unknown SSRC: " << header.Ssrc(); } - ++unknown_packets[header.ssrc]; + ++unknown_packets[header.Ssrc()]; break; } case PacketReceiver::DELIVERY_PACKET_ERROR: { RTC_LOG(LS_ERROR) << "Packet error, corrupt packets or incorrect setup?"; - RTPHeader header; - std::unique_ptr<RtpHeaderParser> parser( - RtpHeaderParser::CreateForTest()); - parser->Parse(packet.data, packet.length, &header); + webrtc::RtpPacket header; + header.Parse(packet_buffer); RTC_LOG(LS_ERROR) << "Packet packet_length=" << packet.length - << " payload_type=" << header.payloadType - << " sequence_number=" << header.sequenceNumber - << " time_stamp=" << header.timestamp - << " ssrc=" << header.ssrc; + << " payload_type=" << header.PayloadType() + << " sequence_number=" << header.SequenceNumber() + << " time_stamp=" << header.Timestamp() + << " ssrc=" << header.Ssrc(); break; } } diff --git a/test/rtp_header_parser.cc b/test/rtp_header_parser.cc index 45686acb4c..6a7df4b095 100644 --- a/test/rtp_header_parser.cc +++ b/test/rtp_header_parser.cc @@ -9,41 +9,10 @@ */ #include "test/rtp_header_parser.h" -#include <memory> - -#include "modules/rtp_rtcp/include/rtp_header_extension_map.h" #include "modules/rtp_rtcp/source/rtp_utility.h" -#include "rtc_base/synchronization/mutex.h" -#include "rtc_base/thread_annotations.h" namespace webrtc { -class RtpHeaderParserImpl : public RtpHeaderParser { - public: - RtpHeaderParserImpl(); - ~RtpHeaderParserImpl() override = default; - - bool Parse(const uint8_t* packet, - size_t length, - RTPHeader* header) const override; - - bool RegisterRtpHeaderExtension(RTPExtensionType type, uint8_t id) override; - bool RegisterRtpHeaderExtension(RtpExtension extension) override; - - bool DeregisterRtpHeaderExtension(RTPExtensionType type) override; - bool DeregisterRtpHeaderExtension(RtpExtension extension) override; - - private: - mutable Mutex mutex_; - RtpHeaderExtensionMap rtp_header_extension_map_ RTC_GUARDED_BY(mutex_); -}; - -std::unique_ptr<RtpHeaderParser> RtpHeaderParser::CreateForTest() { - return std::make_unique<RtpHeaderParserImpl>(); -} - -RtpHeaderParserImpl::RtpHeaderParserImpl() {} - bool RtpHeaderParser::IsRtcp(const uint8_t* packet, size_t length) { RtpUtility::RtpHeaderParser rtp_parser(packet, length); return rtp_parser.RTCP(); @@ -59,43 +28,4 @@ absl::optional<uint32_t> RtpHeaderParser::GetSsrc(const uint8_t* packet, return absl::nullopt; } -bool RtpHeaderParserImpl::Parse(const uint8_t* packet, - size_t length, - RTPHeader* header) const { - RtpUtility::RtpHeaderParser rtp_parser(packet, length); - *header = RTPHeader(); - - RtpHeaderExtensionMap map; - { - MutexLock lock(&mutex_); - map = rtp_header_extension_map_; - } - - const bool valid_rtpheader = rtp_parser.Parse(header, &map); - if (!valid_rtpheader) { - return false; - } - return true; -} -bool RtpHeaderParserImpl::RegisterRtpHeaderExtension(RtpExtension extension) { - MutexLock lock(&mutex_); - return rtp_header_extension_map_.RegisterByUri(extension.id, extension.uri); -} - -bool RtpHeaderParserImpl::RegisterRtpHeaderExtension(RTPExtensionType type, - uint8_t id) { - MutexLock lock(&mutex_); - return rtp_header_extension_map_.RegisterByType(id, type); -} - -bool RtpHeaderParserImpl::DeregisterRtpHeaderExtension(RtpExtension extension) { - MutexLock lock(&mutex_); - return rtp_header_extension_map_.Deregister( - rtp_header_extension_map_.GetType(extension.id)); -} - -bool RtpHeaderParserImpl::DeregisterRtpHeaderExtension(RTPExtensionType type) { - MutexLock lock(&mutex_); - return rtp_header_extension_map_.Deregister(type) == 0; -} } // namespace webrtc diff --git a/test/rtp_header_parser.h b/test/rtp_header_parser.h index 851ccf3bc2..ca4eaf657c 100644 --- a/test/rtp_header_parser.h +++ b/test/rtp_header_parser.h @@ -10,44 +10,18 @@ #ifndef TEST_RTP_HEADER_PARSER_H_ #define TEST_RTP_HEADER_PARSER_H_ -#include <memory> +#include <stddef.h> +#include <stdint.h> -#include "api/rtp_parameters.h" -#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" +#include "absl/types/optional.h" namespace webrtc { -struct RTPHeader; - class RtpHeaderParser { public: - static std::unique_ptr<RtpHeaderParser> CreateForTest(); - virtual ~RtpHeaderParser() {} - // Returns true if the packet is an RTCP packet, false otherwise. static bool IsRtcp(const uint8_t* packet, size_t length); static absl::optional<uint32_t> GetSsrc(const uint8_t* packet, size_t length); - - // Parses the packet and stores the parsed packet in |header|. Returns true on - // success, false otherwise. - // This method is thread-safe in the sense that it can parse multiple packets - // at once. - virtual bool Parse(const uint8_t* packet, - size_t length, - RTPHeader* header) const = 0; - - // Registers an RTP header extension and binds it to |id|. - virtual bool RegisterRtpHeaderExtension(RTPExtensionType type, - uint8_t id) = 0; - - // Registers an RTP header extension. - virtual bool RegisterRtpHeaderExtension(RtpExtension extension) = 0; - - // De-registers an RTP header extension. - virtual bool DeregisterRtpHeaderExtension(RTPExtensionType type) = 0; - - // De-registers an RTP header extension. - virtual bool DeregisterRtpHeaderExtension(RtpExtension extension) = 0; }; } // namespace webrtc #endif // TEST_RTP_HEADER_PARSER_H_ |