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

Unified Diff: webrtc/modules/video_coding/h264_sps_pps_tracker_unittest.cc

Issue 2750633003: Save width/height of SPS nalus and restore them on the first packet of an IDR. (Closed)
Patch Set: More testing. Created 3 years, 9 months 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
Index: webrtc/modules/video_coding/h264_sps_pps_tracker_unittest.cc
diff --git a/webrtc/modules/video_coding/h264_sps_pps_tracker_unittest.cc b/webrtc/modules/video_coding/h264_sps_pps_tracker_unittest.cc
index 9d4d64f97e7bba301b3aa740186ece176b2d2a4c..dcdb2356394977e4cdf9aa7ba6ffc16a69044689 100644
--- a/webrtc/modules/video_coding/h264_sps_pps_tracker_unittest.cc
+++ b/webrtc/modules/video_coding/h264_sps_pps_tracker_unittest.cc
@@ -327,5 +327,59 @@ TEST_F(TestH264SpsPpsTracker, SpsPpsOutOfBandIncompleteNalu) {
tracker_.CopyAndFixBitstream(&idr_packet));
}
+TEST_F(TestH264SpsPpsTracker, SaveRestoreWidthHeight) {
+ std::vector<uint8_t> data;
+
+ // Insert an SPS/PPS packet with widht/height and make sure
stefan-webrtc 2017/03/14 10:32:20 width
philipel 2017/03/14 11:51:12 Done.
+ // that information is set on the first IDR packet.
+ VCMPacket sps_pps_packet1 = GetDefaultPacket();
+ AddSps(&sps_pps_packet1, 0, &data);
+ AddPps(&sps_pps_packet1, 0, 1, &data);
+ sps_pps_packet1.dataPtr = data.data();
+ sps_pps_packet1.sizeBytes = data.size();
+ sps_pps_packet1.width = 320;
+ sps_pps_packet1.height = 240;
+ EXPECT_EQ(H264SpsPpsTracker::kDrop,
stefan-webrtc 2017/03/14 10:32:20 Can you clarify why this is dropped?
philipel 2017/03/14 11:51:12 Since this packet only contains SPS/PPS we don't w
+ tracker_.CopyAndFixBitstream(&sps_pps_packet1));
+
+ VCMPacket idr_packet1 = GetDefaultPacket();
+ idr_packet1.video_header.is_first_packet_in_frame = true;
+ AddIdr(&idr_packet1, 1);
+ data.insert(data.end(), {1, 2, 3});
+ idr_packet1.dataPtr = data.data();
+ idr_packet1.sizeBytes = data.size();
+ EXPECT_EQ(H264SpsPpsTracker::kInsert,
+ tracker_.CopyAndFixBitstream(&idr_packet1));
+
+ EXPECT_EQ(320, idr_packet1.width);
+ EXPECT_EQ(240, idr_packet1.height);
+ delete[] idr_packet1.dataPtr;
+
+ // Insert an SPS/PPS packet without widht/height and make sure
+ // widht/height is not overwritten by the tracker.
stefan-webrtc 2017/03/14 10:32:20 width
philipel 2017/03/14 11:51:12 Done.
+ VCMPacket sps_pps_packet2 = GetDefaultPacket();
+ AddSps(&sps_pps_packet2, 1, &data);
+ AddPps(&sps_pps_packet2, 1, 2, &data);
+ sps_pps_packet2.dataPtr = data.data();
+ sps_pps_packet2.sizeBytes = data.size();
+ EXPECT_EQ(H264SpsPpsTracker::kDrop,
+ tracker_.CopyAndFixBitstream(&sps_pps_packet2));
+
+ VCMPacket idr_packet2 = GetDefaultPacket();
+ idr_packet2.video_header.is_first_packet_in_frame = true;
+ AddIdr(&idr_packet2, 2);
+ data.insert(data.end(), {1, 2, 3});
+ idr_packet2.dataPtr = data.data();
+ idr_packet2.sizeBytes = data.size();
+ idr_packet2.width = 1280;
+ idr_packet2.height = 720;
+ EXPECT_EQ(H264SpsPpsTracker::kInsert,
+ tracker_.CopyAndFixBitstream(&idr_packet2));
+
+ EXPECT_EQ(1280, idr_packet2.width);
+ EXPECT_EQ(720, idr_packet2.height);
+ delete[] idr_packet2.dataPtr;
+}
+
} // namespace video_coding
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698