Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: webrtc/media/base/videoengine_unittest.h

Issue 1785713005: Use CopyOnWriteBuffer instead of Buffer to avoid unnecessary copies. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Feedback from tommi. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/media/base/rtpdataengine_unittest.cc ('k') | webrtc/media/engine/webrtcvideoengine2.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 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 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 } 252 }
253 int NumRtpPackets() { 253 int NumRtpPackets() {
254 return network_interface_.NumRtpPackets(); 254 return network_interface_.NumRtpPackets();
255 } 255 }
256 int NumRtpPackets(uint32_t ssrc) { 256 int NumRtpPackets(uint32_t ssrc) {
257 return network_interface_.NumRtpPackets(ssrc); 257 return network_interface_.NumRtpPackets(ssrc);
258 } 258 }
259 int NumSentSsrcs() { 259 int NumSentSsrcs() {
260 return network_interface_.NumSentSsrcs(); 260 return network_interface_.NumSentSsrcs();
261 } 261 }
262 const rtc::Buffer* GetRtpPacket(int index) { 262 const rtc::CopyOnWriteBuffer* GetRtpPacket(int index) {
263 return network_interface_.GetRtpPacket(index); 263 return network_interface_.GetRtpPacket(index);
264 } 264 }
265 int NumRtcpPackets() { 265 int NumRtcpPackets() {
266 return network_interface_.NumRtcpPackets(); 266 return network_interface_.NumRtcpPackets();
267 } 267 }
268 const rtc::Buffer* GetRtcpPacket(int index) { 268 const rtc::CopyOnWriteBuffer* GetRtcpPacket(int index) {
269 return network_interface_.GetRtcpPacket(index); 269 return network_interface_.GetRtcpPacket(index);
270 } 270 }
271 static int GetPayloadType(const rtc::Buffer* p) { 271 static int GetPayloadType(const rtc::CopyOnWriteBuffer* p) {
272 int pt = -1; 272 int pt = -1;
273 ParseRtpPacket(p, NULL, &pt, NULL, NULL, NULL, NULL); 273 ParseRtpPacket(p, NULL, &pt, NULL, NULL, NULL, NULL);
274 return pt; 274 return pt;
275 } 275 }
276 static bool ParseRtpPacket(const rtc::Buffer* p, 276 static bool ParseRtpPacket(const rtc::CopyOnWriteBuffer* p,
277 bool* x, 277 bool* x,
278 int* pt, 278 int* pt,
279 int* seqnum, 279 int* seqnum,
280 uint32_t* tstamp, 280 uint32_t* tstamp,
281 uint32_t* ssrc, 281 uint32_t* ssrc,
282 std::string* payload) { 282 std::string* payload) {
283 rtc::ByteBuffer buf(*p); 283 // TODO(jbauch): avoid copying the buffer data into the ByteBuffer
284 rtc::ByteBuffer buf(p->data<char>(), p->size());
284 uint8_t u08 = 0; 285 uint8_t u08 = 0;
285 uint16_t u16 = 0; 286 uint16_t u16 = 0;
286 uint32_t u32 = 0; 287 uint32_t u32 = 0;
287 288
288 // Read X and CC fields. 289 // Read X and CC fields.
289 if (!buf.ReadUInt8(&u08)) return false; 290 if (!buf.ReadUInt8(&u08)) return false;
290 bool extension = ((u08 & 0x10) != 0); 291 bool extension = ((u08 & 0x10) != 0);
291 uint8_t cc = (u08 & 0x0F); 292 uint8_t cc = (u08 & 0x0F);
292 if (x) *x = extension; 293 if (x) *x = extension;
293 294
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 } 333 }
333 return true; 334 return true;
334 } 335 }
335 336
336 // Parse all RTCP packet, from start_index to stop_index, and count how many 337 // Parse all RTCP packet, from start_index to stop_index, and count how many
337 // FIR (PT=206 and FMT=4 according to RFC 5104). If successful, set the count 338 // FIR (PT=206 and FMT=4 according to RFC 5104). If successful, set the count
338 // and return true. 339 // and return true.
339 bool CountRtcpFir(int start_index, int stop_index, int* fir_count) { 340 bool CountRtcpFir(int start_index, int stop_index, int* fir_count) {
340 int count = 0; 341 int count = 0;
341 for (int i = start_index; i < stop_index; ++i) { 342 for (int i = start_index; i < stop_index; ++i) {
342 std::unique_ptr<const rtc::Buffer> p(GetRtcpPacket(i)); 343 std::unique_ptr<const rtc::CopyOnWriteBuffer> p(GetRtcpPacket(i));
343 rtc::ByteBuffer buf(*p); 344 // TODO(jbauch): avoid copying the buffer data into the ByteBuffer
345 rtc::ByteBuffer buf(p->data<char>(), p->size());
344 size_t total_len = 0; 346 size_t total_len = 0;
345 // The packet may be a compound RTCP packet. 347 // The packet may be a compound RTCP packet.
346 while (total_len < p->size()) { 348 while (total_len < p->size()) {
347 // Read FMT, type and length. 349 // Read FMT, type and length.
348 uint8_t fmt = 0; 350 uint8_t fmt = 0;
349 uint8_t type = 0; 351 uint8_t type = 0;
350 uint16_t length = 0; 352 uint16_t length = 0;
351 if (!buf.ReadUInt8(&fmt)) return false; 353 if (!buf.ReadUInt8(&fmt)) return false;
352 fmt &= 0x1F; 354 fmt &= 0x1F;
353 if (!buf.ReadUInt8(&type)) return false; 355 if (!buf.ReadUInt8(&type)) return false;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 EXPECT_TRUE(SetSend(true)); 399 EXPECT_TRUE(SetSend(true));
398 EXPECT_EQ(64 * 1024, network_interface_.sendbuf_size()); 400 EXPECT_EQ(64 * 1024, network_interface_.sendbuf_size());
399 EXPECT_EQ(64 * 1024, network_interface_.recvbuf_size()); 401 EXPECT_EQ(64 * 1024, network_interface_.recvbuf_size());
400 } 402 }
401 // Tests that we can send frames and the right payload type is used. 403 // Tests that we can send frames and the right payload type is used.
402 void Send(const cricket::VideoCodec& codec) { 404 void Send(const cricket::VideoCodec& codec) {
403 EXPECT_TRUE(SetOneCodec(codec)); 405 EXPECT_TRUE(SetOneCodec(codec));
404 EXPECT_TRUE(SetSend(true)); 406 EXPECT_TRUE(SetSend(true));
405 EXPECT_TRUE(SendFrame()); 407 EXPECT_TRUE(SendFrame());
406 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); 408 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout);
407 std::unique_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 409 std::unique_ptr<const rtc::CopyOnWriteBuffer> p(GetRtpPacket(0));
408 EXPECT_EQ(codec.id, GetPayloadType(p.get())); 410 EXPECT_EQ(codec.id, GetPayloadType(p.get()));
409 } 411 }
410 // Tests that we can send and receive frames. 412 // Tests that we can send and receive frames.
411 void SendAndReceive(const cricket::VideoCodec& codec) { 413 void SendAndReceive(const cricket::VideoCodec& codec) {
412 EXPECT_TRUE(SetOneCodec(codec)); 414 EXPECT_TRUE(SetOneCodec(codec));
413 EXPECT_TRUE(SetSend(true)); 415 EXPECT_TRUE(SetSend(true));
414 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); 416 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_));
415 EXPECT_EQ(0, renderer_.num_rendered_frames()); 417 EXPECT_EQ(0, renderer_.num_rendered_frames());
416 EXPECT_TRUE(SendFrame()); 418 EXPECT_TRUE(SendFrame());
417 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); 419 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout);
418 std::unique_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 420 std::unique_ptr<const rtc::CopyOnWriteBuffer> p(GetRtpPacket(0));
419 EXPECT_EQ(codec.id, GetPayloadType(p.get())); 421 EXPECT_EQ(codec.id, GetPayloadType(p.get()));
420 } 422 }
421 void SendReceiveManyAndGetStats(const cricket::VideoCodec& codec, 423 void SendReceiveManyAndGetStats(const cricket::VideoCodec& codec,
422 int duration_sec, int fps) { 424 int duration_sec, int fps) {
423 EXPECT_TRUE(SetOneCodec(codec)); 425 EXPECT_TRUE(SetOneCodec(codec));
424 EXPECT_TRUE(SetSend(true)); 426 EXPECT_TRUE(SetSend(true));
425 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); 427 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_));
426 EXPECT_EQ(0, renderer_.num_rendered_frames()); 428 EXPECT_EQ(0, renderer_.num_rendered_frames());
427 for (int i = 0; i < duration_sec; ++i) { 429 for (int i = 0; i < duration_sec; ++i) {
428 for (int frame = 1; frame <= fps; ++frame) { 430 for (int frame = 1; frame <= fps; ++frame) {
429 EXPECT_TRUE(WaitAndSendFrame(1000 / fps)); 431 EXPECT_TRUE(WaitAndSendFrame(1000 / fps));
430 EXPECT_FRAME_WAIT(frame + i * fps, codec.width, codec.height, kTimeout); 432 EXPECT_FRAME_WAIT(frame + i * fps, codec.width, codec.height, kTimeout);
431 } 433 }
432 } 434 }
433 std::unique_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 435 std::unique_ptr<const rtc::CopyOnWriteBuffer> p(GetRtpPacket(0));
434 EXPECT_EQ(codec.id, GetPayloadType(p.get())); 436 EXPECT_EQ(codec.id, GetPayloadType(p.get()));
435 } 437 }
436 438
437 // Test that stats work properly for a 1-1 call. 439 // Test that stats work properly for a 1-1 call.
438 void GetStats() { 440 void GetStats() {
439 const int kDurationSec = 3; 441 const int kDurationSec = 3;
440 const int kFps = 10; 442 const int kFps = 10;
441 SendReceiveManyAndGetStats(DefaultCodec(), kDurationSec, kFps); 443 SendReceiveManyAndGetStats(DefaultCodec(), kDurationSec, kFps);
442 444
443 cricket::VideoMediaInfo info; 445 cricket::VideoMediaInfo info;
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 parameters.max_bandwidth_bps = 128 * 1024; 618 parameters.max_bandwidth_bps = 128 * 1024;
617 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 619 EXPECT_TRUE(channel_->SetSendParameters(parameters));
618 } 620 }
619 // Test that we can set the SSRC for the default send source. 621 // Test that we can set the SSRC for the default send source.
620 void SetSendSsrc() { 622 void SetSendSsrc() {
621 EXPECT_TRUE(SetDefaultCodec()); 623 EXPECT_TRUE(SetDefaultCodec());
622 EXPECT_TRUE(SetSend(true)); 624 EXPECT_TRUE(SetSend(true));
623 EXPECT_TRUE(SendFrame()); 625 EXPECT_TRUE(SendFrame());
624 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); 626 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout);
625 uint32_t ssrc = 0; 627 uint32_t ssrc = 0;
626 std::unique_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 628 std::unique_ptr<const rtc::CopyOnWriteBuffer> p(GetRtpPacket(0));
627 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); 629 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL);
628 EXPECT_EQ(kSsrc, ssrc); 630 EXPECT_EQ(kSsrc, ssrc);
629 // Packets are being paced out, so these can mismatch between the first and 631 // Packets are being paced out, so these can mismatch between the first and
630 // second call to NumRtpPackets until pending packets are paced out. 632 // second call to NumRtpPackets until pending packets are paced out.
631 EXPECT_EQ_WAIT(NumRtpPackets(), NumRtpPackets(ssrc), kTimeout); 633 EXPECT_EQ_WAIT(NumRtpPackets(), NumRtpPackets(ssrc), kTimeout);
632 EXPECT_EQ_WAIT(NumRtpBytes(), NumRtpBytes(ssrc), kTimeout); 634 EXPECT_EQ_WAIT(NumRtpBytes(), NumRtpBytes(ssrc), kTimeout);
633 EXPECT_EQ(1, NumSentSsrcs()); 635 EXPECT_EQ(1, NumSentSsrcs());
634 EXPECT_EQ(0, NumRtpPackets(kSsrc - 1)); 636 EXPECT_EQ(0, NumRtpPackets(kSsrc - 1));
635 EXPECT_EQ(0, NumRtpBytes(kSsrc - 1)); 637 EXPECT_EQ(0, NumRtpBytes(kSsrc - 1));
636 } 638 }
637 // Test that we can set the SSRC even after codecs are set. 639 // Test that we can set the SSRC even after codecs are set.
638 void SetSendSsrcAfterSetCodecs() { 640 void SetSendSsrcAfterSetCodecs() {
639 // Remove stream added in Setup. 641 // Remove stream added in Setup.
640 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); 642 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc));
641 EXPECT_TRUE(SetDefaultCodec()); 643 EXPECT_TRUE(SetDefaultCodec());
642 EXPECT_TRUE(channel_->AddSendStream( 644 EXPECT_TRUE(channel_->AddSendStream(
643 cricket::StreamParams::CreateLegacy(999))); 645 cricket::StreamParams::CreateLegacy(999)));
644 EXPECT_TRUE(channel_->SetCapturer(999u, video_capturer_.get())); 646 EXPECT_TRUE(channel_->SetCapturer(999u, video_capturer_.get()));
645 EXPECT_TRUE(SetSend(true)); 647 EXPECT_TRUE(SetSend(true));
646 EXPECT_TRUE(WaitAndSendFrame(0)); 648 EXPECT_TRUE(WaitAndSendFrame(0));
647 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); 649 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout);
648 uint32_t ssrc = 0; 650 uint32_t ssrc = 0;
649 std::unique_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 651 std::unique_ptr<const rtc::CopyOnWriteBuffer> p(GetRtpPacket(0));
650 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); 652 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL);
651 EXPECT_EQ(999u, ssrc); 653 EXPECT_EQ(999u, ssrc);
652 // Packets are being paced out, so these can mismatch between the first and 654 // Packets are being paced out, so these can mismatch between the first and
653 // second call to NumRtpPackets until pending packets are paced out. 655 // second call to NumRtpPackets until pending packets are paced out.
654 EXPECT_EQ_WAIT(NumRtpPackets(), NumRtpPackets(ssrc), kTimeout); 656 EXPECT_EQ_WAIT(NumRtpPackets(), NumRtpPackets(ssrc), kTimeout);
655 EXPECT_EQ_WAIT(NumRtpBytes(), NumRtpBytes(ssrc), kTimeout); 657 EXPECT_EQ_WAIT(NumRtpBytes(), NumRtpBytes(ssrc), kTimeout);
656 EXPECT_EQ(1, NumSentSsrcs()); 658 EXPECT_EQ(1, NumSentSsrcs());
657 EXPECT_EQ(0, NumRtpPackets(kSsrc)); 659 EXPECT_EQ(0, NumRtpPackets(kSsrc));
658 EXPECT_EQ(0, NumRtpBytes(kSsrc)); 660 EXPECT_EQ(0, NumRtpBytes(kSsrc));
659 } 661 }
660 // Test that we can set the default video renderer before and after 662 // Test that we can set the default video renderer before and after
661 // media is received. 663 // media is received.
662 void SetSink() { 664 void SetSink() {
663 uint8_t data1[] = { 665 uint8_t data1[] = {
664 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 666 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
665 667
666 rtc::Buffer packet1(data1, sizeof(data1)); 668 rtc::CopyOnWriteBuffer packet1(data1, sizeof(data1));
667 rtc::SetBE32(packet1.data() + 8, kSsrc); 669 rtc::SetBE32(packet1.data() + 8, kSsrc);
668 channel_->SetSink(kDefaultReceiveSsrc, NULL); 670 channel_->SetSink(kDefaultReceiveSsrc, NULL);
669 EXPECT_TRUE(SetDefaultCodec()); 671 EXPECT_TRUE(SetDefaultCodec());
670 EXPECT_TRUE(SetSend(true)); 672 EXPECT_TRUE(SetSend(true));
671 EXPECT_EQ(0, renderer_.num_rendered_frames()); 673 EXPECT_EQ(0, renderer_.num_rendered_frames());
672 channel_->OnPacketReceived(&packet1, rtc::PacketTime()); 674 channel_->OnPacketReceived(&packet1, rtc::PacketTime());
673 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); 675 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_));
674 EXPECT_TRUE(SendFrame()); 676 EXPECT_TRUE(SendFrame());
675 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); 677 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout);
676 } 678 }
(...skipping 12 matching lines...) Expand all
689 // Tests setting up and configuring a send stream. 691 // Tests setting up and configuring a send stream.
690 void AddRemoveSendStreams() { 692 void AddRemoveSendStreams() {
691 EXPECT_TRUE(SetOneCodec(DefaultCodec())); 693 EXPECT_TRUE(SetOneCodec(DefaultCodec()));
692 EXPECT_TRUE(SetSend(true)); 694 EXPECT_TRUE(SetSend(true));
693 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); 695 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_));
694 EXPECT_TRUE(SendFrame()); 696 EXPECT_TRUE(SendFrame());
695 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); 697 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout);
696 EXPECT_GT(NumRtpPackets(), 0); 698 EXPECT_GT(NumRtpPackets(), 0);
697 uint32_t ssrc = 0; 699 uint32_t ssrc = 0;
698 size_t last_packet = NumRtpPackets() - 1; 700 size_t last_packet = NumRtpPackets() - 1;
699 std::unique_ptr<const rtc::Buffer> 701 std::unique_ptr<const rtc::CopyOnWriteBuffer>
700 p(GetRtpPacket(static_cast<int>(last_packet))); 702 p(GetRtpPacket(static_cast<int>(last_packet)));
701 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); 703 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL);
702 EXPECT_EQ(kSsrc, ssrc); 704 EXPECT_EQ(kSsrc, ssrc);
703 705
704 // Remove the send stream that was added during Setup. 706 // Remove the send stream that was added during Setup.
705 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); 707 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc));
706 int rtp_packets = NumRtpPackets(); 708 int rtp_packets = NumRtpPackets();
707 709
708 EXPECT_TRUE(channel_->AddSendStream( 710 EXPECT_TRUE(channel_->AddSendStream(
709 cricket::StreamParams::CreateLegacy(789u))); 711 cricket::StreamParams::CreateLegacy(789u)));
(...skipping 29 matching lines...) Expand all
739 std::vector<uint32_t> ssrcs; 741 std::vector<uint32_t> ssrcs;
740 ssrcs.push_back(1); 742 ssrcs.push_back(1);
741 ssrcs.push_back(2); 743 ssrcs.push_back(2);
742 network_interface_.SetConferenceMode(true, ssrcs); 744 network_interface_.SetConferenceMode(true, ssrcs);
743 EXPECT_TRUE(SendFrame()); 745 EXPECT_TRUE(SendFrame());
744 EXPECT_FRAME_ON_RENDERER_WAIT( 746 EXPECT_FRAME_ON_RENDERER_WAIT(
745 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); 747 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout);
746 EXPECT_FRAME_ON_RENDERER_WAIT( 748 EXPECT_FRAME_ON_RENDERER_WAIT(
747 renderer2, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); 749 renderer2, 1, DefaultCodec().width, DefaultCodec().height, kTimeout);
748 750
749 std::unique_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 751 std::unique_ptr<const rtc::CopyOnWriteBuffer> p(GetRtpPacket(0));
750 EXPECT_EQ(DefaultCodec().id, GetPayloadType(p.get())); 752 EXPECT_EQ(DefaultCodec().id, GetPayloadType(p.get()));
751 EXPECT_EQ(DefaultCodec().width, renderer1.width()); 753 EXPECT_EQ(DefaultCodec().width, renderer1.width());
752 EXPECT_EQ(DefaultCodec().height, renderer1.height()); 754 EXPECT_EQ(DefaultCodec().height, renderer1.height());
753 EXPECT_EQ(DefaultCodec().width, renderer2.width()); 755 EXPECT_EQ(DefaultCodec().width, renderer2.width());
754 EXPECT_EQ(DefaultCodec().height, renderer2.height()); 756 EXPECT_EQ(DefaultCodec().height, renderer2.height());
755 EXPECT_TRUE(channel_->RemoveRecvStream(2)); 757 EXPECT_TRUE(channel_->RemoveRecvStream(2));
756 EXPECT_TRUE(channel_->RemoveRecvStream(1)); 758 EXPECT_TRUE(channel_->RemoveRecvStream(1));
757 } 759 }
758 760
759 // Tests that we can add and remove capturers and frames are sent out properly 761 // Tests that we can add and remove capturers and frames are sent out properly
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 cricket::VideoCodec codec(DefaultCodec()); 1006 cricket::VideoCodec codec(DefaultCodec());
1005 int frame_count = 0; 1007 int frame_count = 0;
1006 // The capturer runs at 30 fps. The channel requires 30 fps. 1008 // The capturer runs at 30 fps. The channel requires 30 fps.
1007 EXPECT_TRUE(SetOneCodec(codec)); 1009 EXPECT_TRUE(SetOneCodec(codec));
1008 EXPECT_TRUE(SetSend(true)); 1010 EXPECT_TRUE(SetSend(true));
1009 EXPECT_EQ(frame_count, renderer_.num_rendered_frames()); 1011 EXPECT_EQ(frame_count, renderer_.num_rendered_frames());
1010 EXPECT_TRUE(WaitAndSendFrame(0)); // Should be rendered. 1012 EXPECT_TRUE(WaitAndSendFrame(0)); // Should be rendered.
1011 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be rendered. 1013 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be rendered.
1012 frame_count += 2; 1014 frame_count += 2;
1013 EXPECT_FRAME_WAIT(frame_count, codec.width, codec.height, kTimeout); 1015 EXPECT_FRAME_WAIT(frame_count, codec.width, codec.height, kTimeout);
1014 std::unique_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 1016 std::unique_ptr<const rtc::CopyOnWriteBuffer> p(GetRtpPacket(0));
1015 EXPECT_EQ(codec.id, GetPayloadType(p.get())); 1017 EXPECT_EQ(codec.id, GetPayloadType(p.get()));
1016 1018
1017 // The channel requires 15 fps. 1019 // The channel requires 15 fps.
1018 codec.framerate = 15; 1020 codec.framerate = 15;
1019 EXPECT_TRUE(SetOneCodec(codec)); 1021 EXPECT_TRUE(SetOneCodec(codec));
1020 EXPECT_TRUE(WaitAndSendFrame(0)); // Should be rendered. 1022 EXPECT_TRUE(WaitAndSendFrame(0)); // Should be rendered.
1021 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be dropped. 1023 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be dropped.
1022 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be rendered. 1024 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be rendered.
1023 frame_count += 2; 1025 frame_count += 2;
1024 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); 1026 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout);
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 std::unique_ptr<C> channel_; 1188 std::unique_ptr<C> channel_;
1187 cricket::FakeNetworkInterface network_interface_; 1189 cricket::FakeNetworkInterface network_interface_;
1188 cricket::FakeVideoRenderer renderer_; 1190 cricket::FakeVideoRenderer renderer_;
1189 cricket::VideoMediaChannel::Error media_error_; 1191 cricket::VideoMediaChannel::Error media_error_;
1190 1192
1191 // Used by test cases where 2 streams are run on the same channel. 1193 // Used by test cases where 2 streams are run on the same channel.
1192 cricket::FakeVideoRenderer renderer2_; 1194 cricket::FakeVideoRenderer renderer2_;
1193 }; 1195 };
1194 1196
1195 #endif // WEBRTC_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT 1197 #endif // WEBRTC_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT
OLDNEW
« no previous file with comments | « webrtc/media/base/rtpdataengine_unittest.cc ('k') | webrtc/media/engine/webrtcvideoengine2.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698