Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1441)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc

Issue 2558453002: Revert of H.264 packetization mode 0 (try 3) (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_format_h264.cc ('k') | webrtc/modules/video_coding/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc
index ccaef1a9f4745fe97cd68b8c36a1e112cdb3348d..03082a420d2cd9d1a09c2aa9c22fac65c462a485 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc
@@ -48,27 +48,6 @@
// Bit masks for FU (A and B) headers.
enum FuDefs { kSBit = 0x80, kEBit = 0x40, kRBit = 0x20 };
-
-void CreateThreeFragments(RTPFragmentationHeader* fragmentation,
- size_t frameSize,
- size_t payloadOffset) {
- fragmentation->VerifyAndAllocateFragmentationHeader(3);
- fragmentation->fragmentationOffset[0] = 0;
- fragmentation->fragmentationLength[0] = 2;
- fragmentation->fragmentationOffset[1] = 2;
- fragmentation->fragmentationLength[1] = 2;
- fragmentation->fragmentationOffset[2] = 4;
- fragmentation->fragmentationLength[2] =
- kNalHeaderSize + frameSize - payloadOffset;
-}
-
-RtpPacketizer* CreateH264Packetizer(H264PacketizationMode mode,
- size_t max_payload_size) {
- RTPVideoTypeHeader type_header;
- type_header.H264.packetization_mode = mode;
- return RtpPacketizer::Create(kRtpVideoH264, max_payload_size, &type_header,
- kEmptyFrame);
-}
void VerifyFua(size_t fua_index,
const uint8_t* expected_payload,
@@ -109,8 +88,8 @@
fragmentation.VerifyAndAllocateFragmentationHeader(1);
fragmentation.fragmentationOffset[0] = 0;
fragmentation.fragmentationLength[0] = frame_size;
- std::unique_ptr<RtpPacketizer> packetizer(CreateH264Packetizer(
- H264PacketizationMode::NonInterleaved, max_payload_size));
+ std::unique_ptr<RtpPacketizer> packetizer(RtpPacketizer::Create(
+ kRtpVideoH264, max_payload_size, NULL, kEmptyFrame));
packetizer->SetPayloadData(frame.get(), frame_size, &fragmentation);
RtpPacketToSend packet(kNoExtensions);
@@ -170,19 +149,14 @@
}
} // namespace
-// Tests that should work with both packetization mode 0 and
-// packetization mode 1.
-class RtpPacketizerH264ModeTest
- : public ::testing::TestWithParam<H264PacketizationMode> {};
-
-TEST_P(RtpPacketizerH264ModeTest, TestSingleNalu) {
+TEST(RtpPacketizerH264Test, TestSingleNalu) {
const uint8_t frame[2] = {0x05, 0xFF}; // F=0, NRI=0, Type=5.
RTPFragmentationHeader fragmentation;
fragmentation.VerifyAndAllocateFragmentationHeader(1);
fragmentation.fragmentationOffset[0] = 0;
fragmentation.fragmentationLength[0] = sizeof(frame);
std::unique_ptr<RtpPacketizer> packetizer(
- CreateH264Packetizer(GetParam(), kMaxPayloadSize));
+ RtpPacketizer::Create(kRtpVideoH264, kMaxPayloadSize, NULL, kEmptyFrame));
packetizer->SetPayloadData(frame, sizeof(frame), &fragmentation);
RtpPacketToSend packet(kNoExtensions);
ASSERT_LE(kMaxPayloadSize, packet.FreeCapacity());
@@ -194,7 +168,7 @@
EXPECT_FALSE(packetizer->NextPacket(&packet, &last));
}
-TEST_P(RtpPacketizerH264ModeTest, TestSingleNaluTwoPackets) {
+TEST(RtpPacketizerH264Test, TestSingleNaluTwoPackets) {
const size_t kFrameSize = kMaxPayloadSize + 100;
uint8_t frame[kFrameSize] = {0};
for (size_t i = 0; i < kFrameSize; ++i)
@@ -210,7 +184,7 @@
frame[fragmentation.fragmentationOffset[1]] = 0x01;
std::unique_ptr<RtpPacketizer> packetizer(
- CreateH264Packetizer(GetParam(), kMaxPayloadSize));
+ RtpPacketizer::Create(kRtpVideoH264, kMaxPayloadSize, NULL, kEmptyFrame));
packetizer->SetPayloadData(frame, kFrameSize, &fragmentation);
RtpPacketToSend packet(kNoExtensions);
@@ -226,12 +200,6 @@
EXPECT_FALSE(packetizer->NextPacket(&packet, &last));
}
-
-INSTANTIATE_TEST_CASE_P(
- PacketMode,
- RtpPacketizerH264ModeTest,
- ::testing::Values(H264PacketizationMode::SingleNalUnit,
- H264PacketizationMode::NonInterleaved));
TEST(RtpPacketizerH264Test, TestStapA) {
const size_t kFrameSize =
@@ -243,9 +211,16 @@
for (size_t i = 0; i < kFrameSize - kPayloadOffset; ++i)
frame[i + kPayloadOffset] = i;
RTPFragmentationHeader fragmentation;
- CreateThreeFragments(&fragmentation, kFrameSize, kPayloadOffset);
- std::unique_ptr<RtpPacketizer> packetizer(CreateH264Packetizer(
- H264PacketizationMode::NonInterleaved, kMaxPayloadSize));
+ fragmentation.VerifyAndAllocateFragmentationHeader(3);
+ fragmentation.fragmentationOffset[0] = 0;
+ fragmentation.fragmentationLength[0] = 2;
+ fragmentation.fragmentationOffset[1] = 2;
+ fragmentation.fragmentationLength[1] = 2;
+ fragmentation.fragmentationOffset[2] = 4;
+ fragmentation.fragmentationLength[2] =
+ kNalHeaderSize + kFrameSize - kPayloadOffset;
+ std::unique_ptr<RtpPacketizer> packetizer(
+ RtpPacketizer::Create(kRtpVideoH264, kMaxPayloadSize, NULL, kEmptyFrame));
packetizer->SetPayloadData(frame, kFrameSize, &fragmentation);
RtpPacketToSend packet(kNoExtensions);
@@ -259,31 +234,6 @@
for (size_t i = 0; i < fragmentation.fragmentationVectorSize; ++i)
VerifyStapAPayload(fragmentation, 0, i, frame, packet.payload());
- EXPECT_FALSE(packetizer->NextPacket(&packet, &last));
-}
-
-TEST(RtpPacketizerH264Test, TestSingleNalUnitModeHasNoStapA) {
- // This is the same setup as for the TestStapA test.
- const size_t kFrameSize =
- kMaxPayloadSize - 3 * kLengthFieldLength - kNalHeaderSize;
- uint8_t frame[kFrameSize] = {0x07, 0xFF, // F=0, NRI=0, Type=7 (SPS).
- 0x08, 0xFF, // F=0, NRI=0, Type=8 (PPS).
- 0x05}; // F=0, NRI=0, Type=5 (IDR).
- const size_t kPayloadOffset = 5;
- for (size_t i = 0; i < kFrameSize - kPayloadOffset; ++i)
- frame[i + kPayloadOffset] = i;
- RTPFragmentationHeader fragmentation;
- CreateThreeFragments(&fragmentation, kFrameSize, kPayloadOffset);
- std::unique_ptr<RtpPacketizer> packetizer(CreateH264Packetizer(
- H264PacketizationMode::SingleNalUnit, kMaxPayloadSize));
- packetizer->SetPayloadData(frame, kFrameSize, &fragmentation);
-
- RtpPacketToSend packet(kNoExtensions);
- bool last = false;
- // The three fragments should be returned as three packets.
- ASSERT_TRUE(packetizer->NextPacket(&packet, &last));
- ASSERT_TRUE(packetizer->NextPacket(&packet, &last));
- ASSERT_TRUE(packetizer->NextPacket(&packet, &last));
EXPECT_FALSE(packetizer->NextPacket(&packet, &last));
}
@@ -304,8 +254,8 @@
fragmentation.fragmentationOffset[2] = 4;
fragmentation.fragmentationLength[2] =
kNalHeaderSize + kFrameSize - kPayloadOffset;
- std::unique_ptr<RtpPacketizer> packetizer(CreateH264Packetizer(
- H264PacketizationMode::NonInterleaved, kMaxPayloadSize));
+ std::unique_ptr<RtpPacketizer> packetizer(
+ RtpPacketizer::Create(kRtpVideoH264, kMaxPayloadSize, NULL, kEmptyFrame));
packetizer->SetPayloadData(frame, kFrameSize, &fragmentation);
RtpPacketToSend packet(kNoExtensions);
@@ -352,8 +302,8 @@
frame[nalu_offset + j] = i + j;
}
}
- std::unique_ptr<RtpPacketizer> packetizer(CreateH264Packetizer(
- H264PacketizationMode::NonInterleaved, kMaxPayloadSize));
+ std::unique_ptr<RtpPacketizer> packetizer(
+ RtpPacketizer::Create(kRtpVideoH264, kMaxPayloadSize, NULL, kEmptyFrame));
packetizer->SetPayloadData(frame, kFrameSize, &fragmentation);
// First expecting two FU-A packets.
@@ -426,28 +376,6 @@
sizeof(kExpectedPayloadSizes) / sizeof(size_t)));
}
-#if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
-
-TEST(RtpPacketizerH264DeathTest, SendOverlongDataInPacketizationMode0) {
- const size_t kFrameSize = kMaxPayloadSize + 1;
- uint8_t frame[kFrameSize] = {0};
- for (size_t i = 0; i < kFrameSize; ++i)
- frame[i] = i;
- RTPFragmentationHeader fragmentation;
- fragmentation.VerifyAndAllocateFragmentationHeader(1);
- fragmentation.fragmentationOffset[0] = 0;
- fragmentation.fragmentationLength[0] = kFrameSize;
- // Set NAL headers.
- frame[fragmentation.fragmentationOffset[0]] = 0x01;
-
- std::unique_ptr<RtpPacketizer> packetizer(CreateH264Packetizer(
- H264PacketizationMode::SingleNalUnit, kMaxPayloadSize));
- EXPECT_DEATH(packetizer->SetPayloadData(frame, kFrameSize, &fragmentation),
- "payload_size");
-}
-
-#endif // RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
-
namespace {
const uint8_t kStartSequence[] = {0x00, 0x00, 0x00, 0x01};
const uint8_t kOriginalSps[] = {kSps, 0x00, 0x00, 0x03, 0x03,
@@ -488,9 +416,9 @@
const size_t kHeaderOverhead = kFuAHeaderSize + 1;
// Set size to fragment SPS into two FU-A packets.
- packetizer_.reset(
- CreateH264Packetizer(H264PacketizationMode::NonInterleaved,
- sizeof(kOriginalSps) - 2 + kHeaderOverhead));
+ packetizer_.reset(RtpPacketizer::Create(
+ kRtpVideoH264, sizeof(kOriginalSps) - 2 + kHeaderOverhead, nullptr,
+ kEmptyFrame));
packetizer_->SetPayloadData(in_buffer_.data(), in_buffer_.size(),
&fragmentation_header_);
@@ -522,8 +450,9 @@
sizeof(kIdrTwo) + (kLengthFieldLength * 3);
// Set size to include SPS and the rest of the packets in a Stap-A package.
- packetizer_.reset(CreateH264Packetizer(H264PacketizationMode::NonInterleaved,
- kExpectedTotalSize + kHeaderOverhead));
+ packetizer_.reset(RtpPacketizer::Create(kRtpVideoH264,
+ kExpectedTotalSize + kHeaderOverhead,
+ nullptr, kEmptyFrame));
packetizer_->SetPayloadData(in_buffer_.data(), in_buffer_.size(),
&fragmentation_header_);
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_format_h264.cc ('k') | webrtc/modules/video_coding/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698