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 |