| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 bool Insert(uint16_t seq_num, // packet sequence number | 52 bool Insert(uint16_t seq_num, // packet sequence number |
| 53 IsKeyFrame keyframe, // is keyframe | 53 IsKeyFrame keyframe, // is keyframe |
| 54 IsFirst first, // is first packet of frame | 54 IsFirst first, // is first packet of frame |
| 55 IsLast last, // is last packet of frame | 55 IsLast last, // is last packet of frame |
| 56 int data_size = 0, // size of data | 56 int data_size = 0, // size of data |
| 57 uint8_t* data = nullptr) { // data pointer | 57 uint8_t* data = nullptr) { // data pointer |
| 58 VCMPacket packet; | 58 VCMPacket packet; |
| 59 packet.codec = kVideoCodecGeneric; | 59 packet.codec = kVideoCodecGeneric; |
| 60 packet.seqNum = seq_num; | 60 packet.seqNum = seq_num; |
| 61 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; | 61 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; |
| 62 packet.isFirstPacket = first == kFirst; | 62 packet.is_first_packet_in_frame = first == kFirst; |
| 63 packet.markerBit = last == kLast; | 63 packet.markerBit = last == kLast; |
| 64 packet.sizeBytes = data_size; | 64 packet.sizeBytes = data_size; |
| 65 packet.dataPtr = data; | 65 packet.dataPtr = data; |
| 66 | 66 |
| 67 return packet_buffer_->InsertPacket(&packet); | 67 return packet_buffer_->InsertPacket(&packet); |
| 68 } | 68 } |
| 69 | 69 |
| 70 void CheckFrame(uint16_t first_seq_num) { | 70 void CheckFrame(uint16_t first_seq_num) { |
| 71 auto frame_it = frames_from_callback_.find(first_seq_num); | 71 auto frame_it = frames_from_callback_.find(first_seq_num); |
| 72 ASSERT_FALSE(frame_it == frames_from_callback_.end()) | 72 ASSERT_FALSE(frame_it == frames_from_callback_.end()) |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 ASSERT_EQ(2UL, frames_from_callback_.size()); | 131 ASSERT_EQ(2UL, frames_from_callback_.size()); |
| 132 } | 132 } |
| 133 | 133 |
| 134 TEST_F(TestPacketBuffer, NackCount) { | 134 TEST_F(TestPacketBuffer, NackCount) { |
| 135 const uint16_t seq_num = Rand(); | 135 const uint16_t seq_num = Rand(); |
| 136 | 136 |
| 137 VCMPacket packet; | 137 VCMPacket packet; |
| 138 packet.codec = kVideoCodecGeneric; | 138 packet.codec = kVideoCodecGeneric; |
| 139 packet.seqNum = seq_num; | 139 packet.seqNum = seq_num; |
| 140 packet.frameType = kVideoFrameKey; | 140 packet.frameType = kVideoFrameKey; |
| 141 packet.isFirstPacket = true; | 141 packet.is_first_packet_in_frame = true; |
| 142 packet.markerBit = false; | 142 packet.markerBit = false; |
| 143 packet.timesNacked = 0; | 143 packet.timesNacked = 0; |
| 144 | 144 |
| 145 packet_buffer_->InsertPacket(&packet); | 145 packet_buffer_->InsertPacket(&packet); |
| 146 | 146 |
| 147 packet.seqNum++; | 147 packet.seqNum++; |
| 148 packet.isFirstPacket = false; | 148 packet.is_first_packet_in_frame = false; |
| 149 packet.timesNacked = 1; | 149 packet.timesNacked = 1; |
| 150 packet_buffer_->InsertPacket(&packet); | 150 packet_buffer_->InsertPacket(&packet); |
| 151 | 151 |
| 152 packet.seqNum++; | 152 packet.seqNum++; |
| 153 packet.timesNacked = 3; | 153 packet.timesNacked = 3; |
| 154 packet_buffer_->InsertPacket(&packet); | 154 packet_buffer_->InsertPacket(&packet); |
| 155 | 155 |
| 156 packet.seqNum++; | 156 packet.seqNum++; |
| 157 packet.markerBit = true; | 157 packet.markerBit = true; |
| 158 packet.timesNacked = 1; | 158 packet.timesNacked = 1; |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 std::unique_ptr<uint8_t[]> result( | 356 std::unique_ptr<uint8_t[]> result( |
| 357 new uint8_t[sizeof(data_data) + EncodedImage::kBufferPaddingBytesH264]); | 357 new uint8_t[sizeof(data_data) + EncodedImage::kBufferPaddingBytesH264]); |
| 358 | 358 |
| 359 VCMPacket packet; | 359 VCMPacket packet; |
| 360 packet.seqNum = seq_num; | 360 packet.seqNum = seq_num; |
| 361 packet.codec = kVideoCodecH264; | 361 packet.codec = kVideoCodecH264; |
| 362 packet.insertStartCode = true; | 362 packet.insertStartCode = true; |
| 363 packet.video_header.codecHeader.H264.packetization_type = kH264SingleNalu; | 363 packet.video_header.codecHeader.H264.packetization_type = kH264SingleNalu; |
| 364 packet.dataPtr = data; | 364 packet.dataPtr = data; |
| 365 packet.sizeBytes = sizeof(data_data); | 365 packet.sizeBytes = sizeof(data_data); |
| 366 packet.isFirstPacket = true; | 366 packet.is_first_packet_in_frame = true; |
| 367 packet.markerBit = true; | 367 packet.markerBit = true; |
| 368 packet_buffer_->InsertPacket(&packet); | 368 packet_buffer_->InsertPacket(&packet); |
| 369 | 369 |
| 370 ASSERT_EQ(1UL, frames_from_callback_.size()); | 370 ASSERT_EQ(1UL, frames_from_callback_.size()); |
| 371 EXPECT_EQ(frames_from_callback_[seq_num]->EncodedImage()._length, | 371 EXPECT_EQ(frames_from_callback_[seq_num]->EncodedImage()._length, |
| 372 sizeof(data_data)); | 372 sizeof(data_data)); |
| 373 EXPECT_EQ(frames_from_callback_[seq_num]->EncodedImage()._size, | 373 EXPECT_EQ(frames_from_callback_[seq_num]->EncodedImage()._size, |
| 374 sizeof(data_data) + EncodedImage::kBufferPaddingBytesH264); | 374 sizeof(data_data) + EncodedImage::kBufferPaddingBytesH264); |
| 375 EXPECT_TRUE(frames_from_callback_[seq_num]->GetBitstream(result.get())); | 375 EXPECT_TRUE(frames_from_callback_[seq_num]->GetBitstream(result.get())); |
| 376 EXPECT_EQ(memcmp(result.get(), data, sizeof(data_data)), 0); | 376 EXPECT_EQ(memcmp(result.get(), data, sizeof(data_data)), 0); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 // Expect to free data3 upon insertion (old packet). | 455 // Expect to free data3 upon insertion (old packet). |
| 456 packet_buffer_->ClearTo(1); | 456 packet_buffer_->ClearTo(1); |
| 457 EXPECT_FALSE(Insert(1, kKeyFrame, kFirst, kNotLast, 5, data3)); | 457 EXPECT_FALSE(Insert(1, kKeyFrame, kFirst, kNotLast, 5, data3)); |
| 458 | 458 |
| 459 // Expect to free data4 upon insertion (packet buffer is full). | 459 // Expect to free data4 upon insertion (packet buffer is full). |
| 460 EXPECT_FALSE(Insert(2 + kMaxSize, kKeyFrame, kFirst, kNotLast, 5, data4)); | 460 EXPECT_FALSE(Insert(2 + kMaxSize, kKeyFrame, kFirst, kNotLast, 5, data4)); |
| 461 } | 461 } |
| 462 | 462 |
| 463 } // namespace video_coding | 463 } // namespace video_coding |
| 464 } // namespace webrtc | 464 } // namespace webrtc |
| OLD | NEW |