From fc3587418d3b303a5286c8eb4cf721091061bea5 Mon Sep 17 00:00:00 2001 From: philipel Date: Thu, 26 Sep 2019 16:59:45 +0200 Subject: [PATCH] Use new RtpFrameObject ctor for unittests. Bug: webrtc:10979 Change-Id: I63f501b3a4538d65a73aae226f2006de191dbbec Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154565 Reviewed-by: Ilya Nikolaevskiy Reviewed-by: Niels Moller Commit-Queue: Philip Eliasson Cr-Commit-Position: refs/heads/master@{#29337} --- .../rtp_frame_reference_finder_unittest.cc | 171 ++++++------------ video/buffered_frame_decryptor_unittest.cc | 52 ++---- 2 files changed, 77 insertions(+), 146 deletions(-) diff --git a/modules/video_coding/rtp_frame_reference_finder_unittest.cc b/modules/video_coding/rtp_frame_reference_finder_unittest.cc index 5fe5c09333..29fdba53a5 100644 --- a/modules/video_coding/rtp_frame_reference_finder_unittest.cc +++ b/modules/video_coding/rtp_frame_reference_finder_unittest.cc @@ -26,23 +26,43 @@ namespace webrtc { namespace video_coding { -class FakePacketBuffer : public PacketBuffer { - public: - FakePacketBuffer() : PacketBuffer(nullptr, 0, 0, nullptr) {} +namespace { +std::unique_ptr CreateFrame( + uint16_t seq_num_start, + uint16_t seq_num_end, + bool keyframe, + VideoCodecType codec, + const RTPVideoTypeHeader& video_type_header, + const FrameMarking& frame_markings) { + RTPVideoHeader video_header; + video_header.frame_type = keyframe ? VideoFrameType::kVideoFrameKey + : VideoFrameType::kVideoFrameDelta; + video_header.video_type_header = video_type_header; + video_header.frame_marking = frame_markings; - VCMPacket* GetPacket(uint16_t seq_num) override { - auto packet_it = packets_.find(seq_num); - return packet_it == packets_.end() ? nullptr : &packet_it->second; - } - - bool InsertPacket(VCMPacket* packet) override { - packets_[packet->seqNum] = *packet; - return true; - } - - private: - std::map packets_; -}; + // clang-format off + return std::make_unique( + seq_num_start, + seq_num_end, + /*markerBit=*/true, + /*times_nacked=*/0, + /*first_packet_received_time=*/0, + /*last_packet_received_time=*/0, + /*rtp_timestamp=*/0, + /*ntp_time_ms=*/0, + VideoSendTiming(), + /*payload_type=*/0, + codec, + kVideoRotation_0, + VideoContentType::UNSPECIFIED, + video_header, + /*color_space=*/absl::nullopt, + /*generic_descriptor=*/absl::nullopt, + RtpPacketInfos(), + EncodedImageBuffer::Create(/*size=*/0)); + // clang-format on +} +} // namespace class TestRtpFrameReferenceFinder : public ::testing::Test, public OnCompleteFrameCallback { @@ -71,21 +91,10 @@ class TestRtpFrameReferenceFinder : public ::testing::Test, void InsertGeneric(uint16_t seq_num_start, uint16_t seq_num_end, bool keyframe) { - VCMPacket packet; - packet.video_header.codec = kVideoCodecGeneric; - packet.seqNum = seq_num_start; - packet.video_header.frame_type = keyframe - ? VideoFrameType::kVideoFrameKey - : VideoFrameType::kVideoFrameDelta; - packet_buffer_.InsertPacket(&packet); + std::unique_ptr frame = + CreateFrame(seq_num_start, seq_num_end, keyframe, kVideoCodecGeneric, + RTPVideoTypeHeader(), FrameMarking()); - packet.seqNum = seq_num_end; - packet.video_header.is_last_packet_in_frame = true; - packet_buffer_.InsertPacket(&packet); - - auto frame = std::make_unique( - &packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(), - EncodedImageBuffer::Create(/*size=*/0)); reference_finder_->ManageFrame(std::move(frame)); } @@ -96,31 +105,16 @@ class TestRtpFrameReferenceFinder : public ::testing::Test, uint8_t tid = kNoTemporalIdx, int32_t tl0 = kNoTl0PicIdx, bool sync = false) { - VCMPacket packet; - packet.video_header.codec = kVideoCodecVP8; - packet.seqNum = seq_num_start; - packet.video_header.is_last_packet_in_frame = - (seq_num_start == seq_num_end); - packet.video_header.frame_type = keyframe - ? VideoFrameType::kVideoFrameKey - : VideoFrameType::kVideoFrameDelta; - auto& vp8_header = - packet.video_header.video_type_header.emplace(); + RTPVideoHeaderVP8 vp8_header{}; vp8_header.pictureId = pid % (1 << 15); vp8_header.temporalIdx = tid; vp8_header.tl0PicIdx = tl0; vp8_header.layerSync = sync; - packet_buffer_.InsertPacket(&packet); - if (seq_num_start != seq_num_end) { - packet.seqNum = seq_num_end; - packet.video_header.is_last_packet_in_frame = true; - packet_buffer_.InsertPacket(&packet); - } + std::unique_ptr frame = + CreateFrame(seq_num_start, seq_num_end, keyframe, kVideoCodecVP8, + vp8_header, FrameMarking()); - auto frame = std::make_unique( - &packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(), - EncodedImageBuffer::Create(/*size=*/0)); reference_finder_->ManageFrame(std::move(frame)); } @@ -134,17 +128,7 @@ class TestRtpFrameReferenceFinder : public ::testing::Test, bool up_switch = false, bool inter_pic_predicted = true, GofInfoVP9* ss = nullptr) { - VCMPacket packet; - auto& vp9_header = - packet.video_header.video_type_header.emplace(); - packet.timestamp = pid; - packet.video_header.codec = kVideoCodecVP9; - packet.seqNum = seq_num_start; - packet.video_header.is_last_packet_in_frame = - (seq_num_start == seq_num_end); - packet.video_header.frame_type = keyframe - ? VideoFrameType::kVideoFrameKey - : VideoFrameType::kVideoFrameDelta; + RTPVideoHeaderVP9 vp9_header{}; vp9_header.flexible_mode = false; vp9_header.picture_id = pid % (1 << 15); vp9_header.temporal_idx = tid; @@ -156,18 +140,11 @@ class TestRtpFrameReferenceFinder : public ::testing::Test, vp9_header.ss_data_available = true; vp9_header.gof = *ss; } - packet_buffer_.InsertPacket(&packet); - if (seq_num_start != seq_num_end) { - packet.video_header.is_last_packet_in_frame = true; - vp9_header.ss_data_available = false; - packet.seqNum = seq_num_end; - packet_buffer_.InsertPacket(&packet); - } + std::unique_ptr frame = + CreateFrame(seq_num_start, seq_num_end, keyframe, kVideoCodecVP9, + vp9_header, FrameMarking()); - auto frame = std::make_unique( - &packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(), - EncodedImageBuffer::Create(/*size=*/0)); reference_finder_->ManageFrame(std::move(frame)); } @@ -179,17 +156,7 @@ class TestRtpFrameReferenceFinder : public ::testing::Test, uint8_t tid = kNoTemporalIdx, bool inter = false, std::vector refs = std::vector()) { - VCMPacket packet; - auto& vp9_header = - packet.video_header.video_type_header.emplace(); - packet.timestamp = pid; - packet.video_header.codec = kVideoCodecVP9; - packet.seqNum = seq_num_start; - packet.video_header.is_last_packet_in_frame = - (seq_num_start == seq_num_end); - packet.video_header.frame_type = keyframe - ? VideoFrameType::kVideoFrameKey - : VideoFrameType::kVideoFrameDelta; + RTPVideoHeaderVP9 vp9_header{}; vp9_header.inter_layer_predicted = inter; vp9_header.flexible_mode = true; vp9_header.picture_id = pid % (1 << 15); @@ -199,17 +166,10 @@ class TestRtpFrameReferenceFinder : public ::testing::Test, vp9_header.num_ref_pics = refs.size(); for (size_t i = 0; i < refs.size(); ++i) vp9_header.pid_diff[i] = refs[i]; - packet_buffer_.InsertPacket(&packet); - if (seq_num_start != seq_num_end) { - packet.seqNum = seq_num_end; - packet.video_header.is_last_packet_in_frame = true; - packet_buffer_.InsertPacket(&packet); - } - - auto frame = std::make_unique( - &packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(), - EncodedImageBuffer::Create(/*size=*/0)); + std::unique_ptr frame = + CreateFrame(seq_num_start, seq_num_end, keyframe, kVideoCodecVP9, + vp9_header, FrameMarking()); reference_finder_->ManageFrame(std::move(frame)); } @@ -219,28 +179,14 @@ class TestRtpFrameReferenceFinder : public ::testing::Test, uint8_t tid = kNoTemporalIdx, int32_t tl0 = kNoTl0PicIdx, bool sync = false) { - VCMPacket packet; - packet.video_header.frame_type = keyframe - ? VideoFrameType::kVideoFrameKey - : VideoFrameType::kVideoFrameDelta; - packet.seqNum = seq_num_start; - packet.video_header.is_last_packet_in_frame = - (seq_num_start == seq_num_end); - packet.video_header.codec = kVideoCodecH264; - packet.video_header.frame_marking.temporal_id = tid; - packet.video_header.frame_marking.tl0_pic_idx = tl0; - packet.video_header.frame_marking.base_layer_sync = sync; - packet_buffer_.InsertPacket(&packet); + FrameMarking frame_marking{}; + frame_marking.temporal_id = tid; + frame_marking.tl0_pic_idx = tl0; + frame_marking.base_layer_sync = sync; - if (seq_num_start != seq_num_end) { - packet.seqNum = seq_num_end; - packet.video_header.is_last_packet_in_frame = true; - packet_buffer_.InsertPacket(&packet); - } - - auto frame = std::make_unique( - &packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(), - EncodedImageBuffer::Create(/*size=*/0)); + std::unique_ptr frame = + CreateFrame(seq_num_start, seq_num_end, keyframe, kVideoCodecH264, + RTPVideoTypeHeader(), frame_marking); reference_finder_->ManageFrame(std::move(frame)); } @@ -298,7 +244,6 @@ class TestRtpFrameReferenceFinder : public ::testing::Test, void RefsToSet(std::set* m) const {} Random rand_; - FakePacketBuffer packet_buffer_; std::unique_ptr reference_finder_; struct FrameComp { bool operator()(const std::pair f1, diff --git a/video/buffered_frame_decryptor_unittest.cc b/video/buffered_frame_decryptor_unittest.cc index 7dcf712c9e..9c6bfad6f3 100644 --- a/video/buffered_frame_decryptor_unittest.cc +++ b/video/buffered_frame_decryptor_unittest.cc @@ -26,25 +26,6 @@ using ::testing::Return; namespace webrtc { namespace { -class FakePacketBuffer : public video_coding::PacketBuffer { - public: - FakePacketBuffer() : PacketBuffer(nullptr, 0, 0, nullptr) {} - ~FakePacketBuffer() override {} - - VCMPacket* GetPacket(uint16_t seq_num) override { - auto packet_it = packets_.find(seq_num); - return packet_it == packets_.end() ? nullptr : &packet_it->second; - } - - bool InsertPacket(VCMPacket* packet) override { - packets_[packet->seqNum] = *packet; - return true; - } - - private: - std::map packets_; -}; - FrameDecryptorInterface::Result DecryptSuccess() { return FrameDecryptorInterface::Result(FrameDecryptorInterface::Status::kOk, 0); @@ -83,21 +64,27 @@ class BufferedFrameDecryptorTest bool key_frame) { seq_num_++; - VCMPacket packet; - packet.video_header.codec = kVideoCodecGeneric; - packet.seqNum = seq_num_; - packet.video_header.frame_type = key_frame - ? VideoFrameType::kVideoFrameKey - : VideoFrameType::kVideoFrameDelta; - packet.generic_descriptor = RtpGenericFrameDescriptor(); - fake_packet_buffer_.InsertPacket(&packet); - packet.seqNum = seq_num_; - packet.video_header.is_last_packet_in_frame = true; - fake_packet_buffer_.InsertPacket(&packet); - + // clang-format off return std::make_unique( - &fake_packet_buffer_, seq_num_, seq_num_, 0, 0, 0, RtpPacketInfos(), + seq_num_, + seq_num_, + /*markerBit=*/true, + /*times_nacked=*/0, + /*first_packet_received_time=*/0, + /*last_packet_received_time=*/0, + /*rtp_timestamp=*/0, + /*ntp_time_ms=*/0, + VideoSendTiming(), + /*payload_type=*/0, + kVideoCodecGeneric, + kVideoRotation_0, + VideoContentType::UNSPECIFIED, + RTPVideoHeader(), + /*color_space=*/absl::nullopt, + RtpGenericFrameDescriptor(), + RtpPacketInfos(), EncodedImageBuffer::Create(/*size=*/0)); + // clang-format on } protected: @@ -115,7 +102,6 @@ class BufferedFrameDecryptorTest static const size_t kMaxStashedFrames; std::vector fake_packet_data_; - FakePacketBuffer fake_packet_buffer_; rtc::scoped_refptr mock_frame_decryptor_; std::unique_ptr buffered_frame_decryptor_; size_t decrypted_frame_call_count_;