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 |