| 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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 packet.timesNacked = 1; | 158 packet.timesNacked = 1; |
| 159 packet_buffer_->InsertPacket(packet); | 159 packet_buffer_->InsertPacket(packet); |
| 160 | 160 |
| 161 ASSERT_EQ(1UL, frames_from_callback_.size()); | 161 ASSERT_EQ(1UL, frames_from_callback_.size()); |
| 162 RtpFrameObject* frame = frames_from_callback_.begin()->second.get(); | 162 RtpFrameObject* frame = frames_from_callback_.begin()->second.get(); |
| 163 EXPECT_EQ(3, frame->times_nacked()); | 163 EXPECT_EQ(3, frame->times_nacked()); |
| 164 } | 164 } |
| 165 | 165 |
| 166 TEST_F(TestPacketBuffer, FrameSize) { | 166 TEST_F(TestPacketBuffer, FrameSize) { |
| 167 const uint16_t seq_num = Rand(); | 167 const uint16_t seq_num = Rand(); |
| 168 uint8_t data[] = {1, 2, 3, 4, 5}; | 168 uint8_t* data1 = new uint8_t[5](); |
| 169 uint8_t* data2 = new uint8_t[5](); |
| 170 uint8_t* data3 = new uint8_t[5](); |
| 171 uint8_t* data4 = new uint8_t[5](); |
| 169 | 172 |
| 170 EXPECT_TRUE(Insert(seq_num, kKeyFrame, kFirst, kNotLast, 5, data)); | 173 EXPECT_TRUE(Insert(seq_num, kKeyFrame, kFirst, kNotLast, 5, data1)); |
| 171 EXPECT_TRUE(Insert(seq_num + 1, kKeyFrame, kNotFirst, kNotLast, 5, data)); | 174 EXPECT_TRUE(Insert(seq_num + 1, kKeyFrame, kNotFirst, kNotLast, 5, data2)); |
| 172 EXPECT_TRUE(Insert(seq_num + 2, kKeyFrame, kNotFirst, kNotLast, 5, data)); | 175 EXPECT_TRUE(Insert(seq_num + 2, kKeyFrame, kNotFirst, kNotLast, 5, data3)); |
| 173 EXPECT_TRUE(Insert(seq_num + 3, kKeyFrame, kNotFirst, kLast, 5, data)); | 176 EXPECT_TRUE(Insert(seq_num + 3, kKeyFrame, kNotFirst, kLast, 5, data4)); |
| 174 | 177 |
| 175 ASSERT_EQ(1UL, frames_from_callback_.size()); | 178 ASSERT_EQ(1UL, frames_from_callback_.size()); |
| 176 EXPECT_EQ(20UL, frames_from_callback_.begin()->second->size()); | 179 EXPECT_EQ(20UL, frames_from_callback_.begin()->second->size()); |
| 177 } | 180 } |
| 178 | 181 |
| 179 TEST_F(TestPacketBuffer, ExpandBuffer) { | 182 TEST_F(TestPacketBuffer, ExpandBuffer) { |
| 180 const uint16_t seq_num = Rand(); | 183 const uint16_t seq_num = Rand(); |
| 181 | 184 |
| 182 for (int i = 0; i < kStartSize + 1; ++i) { | 185 for (int i = 0; i < kStartSize + 1; ++i) { |
| 183 EXPECT_TRUE(Insert(seq_num + i, kKeyFrame, kFirst, kLast)); | 186 EXPECT_TRUE(Insert(seq_num + i, kKeyFrame, kFirst, kLast)); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 | 303 |
| 301 ASSERT_EQ(4UL, frames_from_callback_.size()); | 304 ASSERT_EQ(4UL, frames_from_callback_.size()); |
| 302 CheckFrame(seq_num); | 305 CheckFrame(seq_num); |
| 303 CheckFrame(seq_num + 1); | 306 CheckFrame(seq_num + 1); |
| 304 CheckFrame(seq_num + 2); | 307 CheckFrame(seq_num + 2); |
| 305 CheckFrame(seq_num + 3); | 308 CheckFrame(seq_num + 3); |
| 306 } | 309 } |
| 307 | 310 |
| 308 TEST_F(TestPacketBuffer, GetBitstream) { | 311 TEST_F(TestPacketBuffer, GetBitstream) { |
| 309 // "many bitstream, such data" with null termination. | 312 // "many bitstream, such data" with null termination. |
| 310 uint8_t many[] = {0x6d, 0x61, 0x6e, 0x79, 0x20}; | 313 uint8_t many_data[] = {0x6d, 0x61, 0x6e, 0x79, 0x20}; |
| 311 uint8_t bitstream[] = {0x62, 0x69, 0x74, 0x73, 0x74, 0x72, | 314 uint8_t bitstream_data[] = {0x62, 0x69, 0x74, 0x73, 0x74, 0x72, |
| 312 0x65, 0x61, 0x6d, 0x2c, 0x20}; | 315 0x65, 0x61, 0x6d, 0x2c, 0x20}; |
| 313 uint8_t such[] = {0x73, 0x75, 0x63, 0x68, 0x20}; | 316 uint8_t such_data[] = {0x73, 0x75, 0x63, 0x68, 0x20}; |
| 314 uint8_t data[] = {0x64, 0x61, 0x74, 0x61, 0x0}; | 317 uint8_t data_data[] = {0x64, 0x61, 0x74, 0x61, 0x0}; |
| 315 uint8_t | 318 |
| 316 result[sizeof(many) + sizeof(bitstream) + sizeof(such) + sizeof(data)]; | 319 uint8_t* many = new uint8_t[sizeof(many_data)]; |
| 320 uint8_t* bitstream = new uint8_t[sizeof(bitstream_data)]; |
| 321 uint8_t* such = new uint8_t[sizeof(such_data)]; |
| 322 uint8_t* data = new uint8_t[sizeof(data_data)]; |
| 323 |
| 324 memcpy(many, many_data, sizeof(many_data)); |
| 325 memcpy(bitstream, bitstream_data, sizeof(bitstream_data)); |
| 326 memcpy(such, such_data, sizeof(such_data)); |
| 327 memcpy(data, data_data, sizeof(data_data)); |
| 328 |
| 329 uint8_t result[sizeof(many_data) + sizeof(bitstream_data) + |
| 330 sizeof(such_data) + sizeof(data_data)]; |
| 317 | 331 |
| 318 const uint16_t seq_num = Rand(); | 332 const uint16_t seq_num = Rand(); |
| 319 | 333 |
| 320 EXPECT_TRUE(Insert(seq_num, kKeyFrame, kFirst, kNotLast, sizeof(many), many)); | 334 EXPECT_TRUE( |
| 335 Insert(seq_num, kKeyFrame, kFirst, kNotLast, sizeof(many_data), many)); |
| 321 EXPECT_TRUE(Insert(seq_num + 1, kDeltaFrame, kNotFirst, kNotLast, | 336 EXPECT_TRUE(Insert(seq_num + 1, kDeltaFrame, kNotFirst, kNotLast, |
| 322 sizeof(bitstream), bitstream)); | 337 sizeof(bitstream_data), bitstream)); |
| 323 EXPECT_TRUE(Insert(seq_num + 2, kDeltaFrame, kNotFirst, kNotLast, | 338 EXPECT_TRUE(Insert(seq_num + 2, kDeltaFrame, kNotFirst, kNotLast, |
| 324 sizeof(such), such)); | 339 sizeof(such_data), such)); |
| 325 EXPECT_TRUE( | 340 EXPECT_TRUE(Insert(seq_num + 3, kDeltaFrame, kNotFirst, kLast, |
| 326 Insert(seq_num + 3, kDeltaFrame, kNotFirst, kLast, sizeof(data), data)); | 341 sizeof(data_data), data)); |
| 327 | 342 |
| 328 ASSERT_EQ(1UL, frames_from_callback_.size()); | 343 ASSERT_EQ(1UL, frames_from_callback_.size()); |
| 329 CheckFrame(seq_num); | 344 CheckFrame(seq_num); |
| 330 EXPECT_TRUE(frames_from_callback_[seq_num]->GetBitstream(result)); | 345 EXPECT_TRUE(frames_from_callback_[seq_num]->GetBitstream(result)); |
| 331 EXPECT_EQ(memcmp(result, "many bitstream, such data", sizeof(result)), 0); | 346 EXPECT_EQ(memcmp(result, "many bitstream, such data", sizeof(result)), 0); |
| 332 } | 347 } |
| 333 | 348 |
| 334 TEST_F(TestPacketBuffer, GetBitstreamH264BufferPadding) { | 349 TEST_F(TestPacketBuffer, GetBitstreamH264BufferPadding) { |
| 335 uint16_t seq_num = Rand(); | 350 uint16_t seq_num = Rand(); |
| 336 uint8_t data[] = "some plain old data"; | 351 uint8_t data_data[] = "some plain old data"; |
| 352 uint8_t* data = new uint8_t[sizeof(data_data)]; |
| 353 memcpy(data, data_data, sizeof(data_data)); |
| 337 | 354 |
| 338 // EncodedImage::kBufferPaddingBytesH264 is unknown at compile time. | 355 // EncodedImage::kBufferPaddingBytesH264 is unknown at compile time. |
| 339 uint8_t* result = | 356 std::unique_ptr<uint8_t[]> result( |
| 340 new uint8_t[sizeof(data) + EncodedImage::kBufferPaddingBytesH264]; | 357 new uint8_t[sizeof(data_data) + EncodedImage::kBufferPaddingBytesH264]); |
| 341 | 358 |
| 342 VCMPacket packet; | 359 VCMPacket packet; |
| 343 packet.seqNum = seq_num; | 360 packet.seqNum = seq_num; |
| 344 packet.codec = kVideoCodecH264; | 361 packet.codec = kVideoCodecH264; |
| 345 packet.insertStartCode = true; | 362 packet.insertStartCode = true; |
| 346 packet.video_header.codecHeader.H264.packetization_type = kH264SingleNalu; | 363 packet.video_header.codecHeader.H264.packetization_type = kH264SingleNalu; |
| 347 packet.dataPtr = data; | 364 packet.dataPtr = data; |
| 348 packet.sizeBytes = sizeof(data); | 365 packet.sizeBytes = sizeof(data_data); |
| 349 packet.isFirstPacket = true; | 366 packet.isFirstPacket = true; |
| 350 packet.markerBit = true; | 367 packet.markerBit = true; |
| 351 packet_buffer_->InsertPacket(packet); | 368 packet_buffer_->InsertPacket(packet); |
| 352 | 369 |
| 353 ASSERT_EQ(1UL, frames_from_callback_.size()); | 370 ASSERT_EQ(1UL, frames_from_callback_.size()); |
| 354 EXPECT_EQ(frames_from_callback_[seq_num]->EncodedImage()._length, | 371 EXPECT_EQ(frames_from_callback_[seq_num]->EncodedImage()._length, |
| 355 sizeof(data)); | 372 sizeof(data_data)); |
| 356 EXPECT_EQ(frames_from_callback_[seq_num]->EncodedImage()._size, | 373 EXPECT_EQ(frames_from_callback_[seq_num]->EncodedImage()._size, |
| 357 sizeof(data) + EncodedImage::kBufferPaddingBytesH264); | 374 sizeof(data_data) + EncodedImage::kBufferPaddingBytesH264); |
| 358 EXPECT_TRUE(frames_from_callback_[seq_num]->GetBitstream(result)); | 375 EXPECT_TRUE(frames_from_callback_[seq_num]->GetBitstream(result.get())); |
| 359 EXPECT_EQ(memcmp(result, data, sizeof(data)), 0); | 376 EXPECT_EQ(memcmp(result.get(), data, sizeof(data_data)), 0); |
| 360 delete[] result; | |
| 361 } | 377 } |
| 362 | 378 |
| 363 TEST_F(TestPacketBuffer, FreeSlotsOnFrameDestruction) { | 379 TEST_F(TestPacketBuffer, FreeSlotsOnFrameDestruction) { |
| 364 const uint16_t seq_num = Rand(); | 380 const uint16_t seq_num = Rand(); |
| 365 | 381 |
| 366 EXPECT_TRUE(Insert(seq_num, kKeyFrame, kFirst, kNotLast)); | 382 EXPECT_TRUE(Insert(seq_num, kKeyFrame, kFirst, kNotLast)); |
| 367 EXPECT_TRUE(Insert(seq_num + 1, kDeltaFrame, kNotFirst, kNotLast)); | 383 EXPECT_TRUE(Insert(seq_num + 1, kDeltaFrame, kNotFirst, kNotLast)); |
| 368 EXPECT_TRUE(Insert(seq_num + 2, kDeltaFrame, kNotFirst, kLast)); | 384 EXPECT_TRUE(Insert(seq_num + 2, kDeltaFrame, kNotFirst, kLast)); |
| 369 EXPECT_EQ(1UL, frames_from_callback_.size()); | 385 EXPECT_EQ(1UL, frames_from_callback_.size()); |
| 370 CheckFrame(seq_num); | 386 CheckFrame(seq_num); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 | 420 |
| 405 EXPECT_TRUE(Insert(seq_num, kKeyFrame, kFirst, kLast)); | 421 EXPECT_TRUE(Insert(seq_num, kKeyFrame, kFirst, kLast)); |
| 406 ASSERT_EQ(1UL, frames_from_callback_.size()); | 422 ASSERT_EQ(1UL, frames_from_callback_.size()); |
| 407 | 423 |
| 408 packet_buffer_->Clear(); | 424 packet_buffer_->Clear(); |
| 409 EXPECT_FALSE(frames_from_callback_.begin()->second->GetBitstream(nullptr)); | 425 EXPECT_FALSE(frames_from_callback_.begin()->second->GetBitstream(nullptr)); |
| 410 } | 426 } |
| 411 | 427 |
| 412 } // namespace video_coding | 428 } // namespace video_coding |
| 413 } // namespace webrtc | 429 } // namespace webrtc |
| OLD | NEW |