Chromium Code Reviews| 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 |