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

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

Issue 1362503003: Use suffixed {uint,int}{8,16,32,64}_t types. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase + revert basictypes.h (to be landed separately just in case of a revert due to unexpected us… Created 5 years, 2 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 | « talk/media/base/videocommon.cc ('k') | talk/media/base/videoframe.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 * libjingle 2 * libjingle
3 * Copyright 2014 Google Inc. 3 * Copyright 2014 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 #define EXPECT_FRAME_ON_RENDERER_WAIT(r, c, w, h, t) \ 51 #define EXPECT_FRAME_ON_RENDERER_WAIT(r, c, w, h, t) \
52 EXPECT_EQ_WAIT((c), (r).num_rendered_frames(), (t)); \ 52 EXPECT_EQ_WAIT((c), (r).num_rendered_frames(), (t)); \
53 EXPECT_EQ((w), (r).width()); \ 53 EXPECT_EQ((w), (r).width()); \
54 EXPECT_EQ((h), (r).height()); \ 54 EXPECT_EQ((h), (r).height()); \
55 EXPECT_EQ(0, (r).errors()); \ 55 EXPECT_EQ(0, (r).errors()); \
56 56
57 #define EXPECT_GT_FRAME_ON_RENDERER_WAIT(r, c, w, h, t) \ 57 #define EXPECT_GT_FRAME_ON_RENDERER_WAIT(r, c, w, h, t) \
58 EXPECT_TRUE_WAIT((r).num_rendered_frames() >= (c) && \ 58 EXPECT_TRUE_WAIT((r).num_rendered_frames() >= (c) && \
59 (w) == (r).width() && \ 59 (w) == (r).width() && \
60 (h) == (r).height(), (t)); \ 60 (h) == (r).height(), (t)); \
61 EXPECT_EQ(0, (r).errors()); \ 61 EXPECT_EQ(0, (r).errors());
62 62
63 static const uint32 kTimeout = 5000U; 63 static const uint32_t kTimeout = 5000U;
64 static const uint32 kDefaultReceiveSsrc = 0; 64 static const uint32_t kDefaultReceiveSsrc = 0;
65 static const uint32 kSsrc = 1234u; 65 static const uint32_t kSsrc = 1234u;
66 static const uint32 kRtxSsrc = 4321u; 66 static const uint32_t kRtxSsrc = 4321u;
67 static const uint32 kSsrcs4[] = {1, 2, 3, 4}; 67 static const uint32_t kSsrcs4[] = {1, 2, 3, 4};
68 68
69 inline bool IsEqualRes(const cricket::VideoCodec& a, int w, int h, int fps) { 69 inline bool IsEqualRes(const cricket::VideoCodec& a, int w, int h, int fps) {
70 return a.width == w && a.height == h && a.framerate == fps; 70 return a.width == w && a.height == h && a.framerate == fps;
71 } 71 }
72 72
73 inline bool IsEqualCodec(const cricket::VideoCodec& a, 73 inline bool IsEqualCodec(const cricket::VideoCodec& a,
74 const cricket::VideoCodec& b) { 74 const cricket::VideoCodec& b) {
75 return a.id == b.id && a.name == b.name && 75 return a.id == b.id && a.name == b.name &&
76 IsEqualRes(a, b.width, b.height, b.framerate); 76 IsEqualRes(a, b.width, b.height, b.framerate);
77 } 77 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 video_capturer->SignalVideoFrame.disconnect(this); 112 video_capturer->SignalVideoFrame.disconnect(this);
113 } 113 }
114 } 114 }
115 void OnLocalFrame(cricket::VideoCapturer*, 115 void OnLocalFrame(cricket::VideoCapturer*,
116 const cricket::VideoFrame*) { 116 const cricket::VideoFrame*) {
117 } 117 }
118 void OnLocalFrameFormat(cricket::VideoCapturer*, 118 void OnLocalFrameFormat(cricket::VideoCapturer*,
119 const cricket::VideoFormat*) { 119 const cricket::VideoFormat*) {
120 } 120 }
121 121
122 void TriggerMediaFrame( 122 void TriggerMediaFrame(uint32_t ssrc,
123 uint32 ssrc, cricket::VideoFrame* frame, bool* drop_frame) { 123 cricket::VideoFrame* frame,
124 bool* drop_frame) {
124 T::SignalMediaFrame(ssrc, frame, drop_frame); 125 T::SignalMediaFrame(ssrc, frame, drop_frame);
125 } 126 }
126 }; 127 };
127 128
128 template<class E> 129 template<class E>
129 class VideoEngineTest : public testing::Test { 130 class VideoEngineTest : public testing::Test {
130 protected: 131 protected:
131 // Tests starting and stopping the engine, and creating a channel. 132 // Tests starting and stopping the engine, and creating a channel.
132 void StartupShutdown() { 133 void StartupShutdown() {
133 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); 134 EXPECT_TRUE(engine_.Init(rtc::Thread::Current()));
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 success = channel_->SetSendParameters(parameters); 547 success = channel_->SetSendParameters(parameters);
547 } 548 }
548 if (success) { 549 if (success) {
549 success = SetSend(sending); 550 success = SetSend(sending);
550 } 551 }
551 return success; 552 return success;
552 } 553 }
553 bool SetSend(bool send) { 554 bool SetSend(bool send) {
554 return channel_->SetSend(send); 555 return channel_->SetSend(send);
555 } 556 }
556 bool SetSendStreamFormat(uint32 ssrc, const cricket::VideoCodec& codec) { 557 bool SetSendStreamFormat(uint32_t ssrc, const cricket::VideoCodec& codec) {
557 return channel_->SetSendStreamFormat(ssrc, cricket::VideoFormat( 558 return channel_->SetSendStreamFormat(ssrc, cricket::VideoFormat(
558 codec.width, codec.height, 559 codec.width, codec.height,
559 cricket::VideoFormat::FpsToInterval(codec.framerate), 560 cricket::VideoFormat::FpsToInterval(codec.framerate),
560 cricket::FOURCC_ANY)); 561 cricket::FOURCC_ANY));
561 } 562 }
562 int DrainOutgoingPackets() { 563 int DrainOutgoingPackets() {
563 int packets = 0; 564 int packets = 0;
564 do { 565 do {
565 packets = NumRtpPackets(); 566 packets = NumRtpPackets();
566 // 100 ms should be long enough. 567 // 100 ms should be long enough.
(...skipping 30 matching lines...) Expand all
597 return 0; 598 return 0;
598 #endif 599 #endif
599 } 600 }
600 bool SendCustomVideoFrame(int w, int h) { 601 bool SendCustomVideoFrame(int w, int h) {
601 if (!video_capturer_.get()) return false; 602 if (!video_capturer_.get()) return false;
602 return video_capturer_->CaptureCustomFrame(w, h, cricket::FOURCC_I420); 603 return video_capturer_->CaptureCustomFrame(w, h, cricket::FOURCC_I420);
603 } 604 }
604 int NumRtpBytes() { 605 int NumRtpBytes() {
605 return network_interface_.NumRtpBytes(); 606 return network_interface_.NumRtpBytes();
606 } 607 }
607 int NumRtpBytes(uint32 ssrc) { 608 int NumRtpBytes(uint32_t ssrc) {
608 return network_interface_.NumRtpBytes(ssrc); 609 return network_interface_.NumRtpBytes(ssrc);
609 } 610 }
610 int NumRtpPackets() { 611 int NumRtpPackets() {
611 return network_interface_.NumRtpPackets(); 612 return network_interface_.NumRtpPackets();
612 } 613 }
613 int NumRtpPackets(uint32 ssrc) { 614 int NumRtpPackets(uint32_t ssrc) {
614 return network_interface_.NumRtpPackets(ssrc); 615 return network_interface_.NumRtpPackets(ssrc);
615 } 616 }
616 int NumSentSsrcs() { 617 int NumSentSsrcs() {
617 return network_interface_.NumSentSsrcs(); 618 return network_interface_.NumSentSsrcs();
618 } 619 }
619 const rtc::Buffer* GetRtpPacket(int index) { 620 const rtc::Buffer* GetRtpPacket(int index) {
620 return network_interface_.GetRtpPacket(index); 621 return network_interface_.GetRtpPacket(index);
621 } 622 }
622 int NumRtcpPackets() { 623 int NumRtcpPackets() {
623 return network_interface_.NumRtcpPackets(); 624 return network_interface_.NumRtcpPackets();
624 } 625 }
625 const rtc::Buffer* GetRtcpPacket(int index) { 626 const rtc::Buffer* GetRtcpPacket(int index) {
626 return network_interface_.GetRtcpPacket(index); 627 return network_interface_.GetRtcpPacket(index);
627 } 628 }
628 static int GetPayloadType(const rtc::Buffer* p) { 629 static int GetPayloadType(const rtc::Buffer* p) {
629 int pt = -1; 630 int pt = -1;
630 ParseRtpPacket(p, NULL, &pt, NULL, NULL, NULL, NULL); 631 ParseRtpPacket(p, NULL, &pt, NULL, NULL, NULL, NULL);
631 return pt; 632 return pt;
632 } 633 }
633 static bool ParseRtpPacket(const rtc::Buffer* p, bool* x, int* pt, 634 static bool ParseRtpPacket(const rtc::Buffer* p,
634 int* seqnum, uint32* tstamp, uint32* ssrc, 635 bool* x,
636 int* pt,
637 int* seqnum,
638 uint32_t* tstamp,
639 uint32_t* ssrc,
635 std::string* payload) { 640 std::string* payload) {
636 rtc::ByteBuffer buf(*p); 641 rtc::ByteBuffer buf(*p);
637 uint8 u08 = 0; 642 uint8_t u08 = 0;
638 uint16 u16 = 0; 643 uint16_t u16 = 0;
639 uint32 u32 = 0; 644 uint32_t u32 = 0;
640 645
641 // Read X and CC fields. 646 // Read X and CC fields.
642 if (!buf.ReadUInt8(&u08)) return false; 647 if (!buf.ReadUInt8(&u08)) return false;
643 bool extension = ((u08 & 0x10) != 0); 648 bool extension = ((u08 & 0x10) != 0);
644 uint8 cc = (u08 & 0x0F); 649 uint8_t cc = (u08 & 0x0F);
645 if (x) *x = extension; 650 if (x) *x = extension;
646 651
647 // Read PT field. 652 // Read PT field.
648 if (!buf.ReadUInt8(&u08)) return false; 653 if (!buf.ReadUInt8(&u08)) return false;
649 if (pt) *pt = (u08 & 0x7F); 654 if (pt) *pt = (u08 & 0x7F);
650 655
651 // Read Sequence Number field. 656 // Read Sequence Number field.
652 if (!buf.ReadUInt16(&u16)) return false; 657 if (!buf.ReadUInt16(&u16)) return false;
653 if (seqnum) *seqnum = u16; 658 if (seqnum) *seqnum = u16;
654 659
655 // Read Timestamp field. 660 // Read Timestamp field.
656 if (!buf.ReadUInt32(&u32)) return false; 661 if (!buf.ReadUInt32(&u32)) return false;
657 if (tstamp) *tstamp = u32; 662 if (tstamp) *tstamp = u32;
658 663
659 // Read SSRC field. 664 // Read SSRC field.
660 if (!buf.ReadUInt32(&u32)) return false; 665 if (!buf.ReadUInt32(&u32)) return false;
661 if (ssrc) *ssrc = u32; 666 if (ssrc) *ssrc = u32;
662 667
663 // Skip CSRCs. 668 // Skip CSRCs.
664 for (uint8 i = 0; i < cc; ++i) { 669 for (uint8_t i = 0; i < cc; ++i) {
665 if (!buf.ReadUInt32(&u32)) return false; 670 if (!buf.ReadUInt32(&u32)) return false;
666 } 671 }
667 672
668 // Skip extension header. 673 // Skip extension header.
669 if (extension) { 674 if (extension) {
670 // Read Profile-specific extension header ID 675 // Read Profile-specific extension header ID
671 if (!buf.ReadUInt16(&u16)) return false; 676 if (!buf.ReadUInt16(&u16)) return false;
672 677
673 // Read Extension header length 678 // Read Extension header length
674 if (!buf.ReadUInt16(&u16)) return false; 679 if (!buf.ReadUInt16(&u16)) return false;
675 uint16 ext_header_len = u16; 680 uint16_t ext_header_len = u16;
676 681
677 // Read Extension header 682 // Read Extension header
678 for (uint16 i = 0; i < ext_header_len; ++i) { 683 for (uint16_t i = 0; i < ext_header_len; ++i) {
679 if (!buf.ReadUInt32(&u32)) return false; 684 if (!buf.ReadUInt32(&u32)) return false;
680 } 685 }
681 } 686 }
682 687
683 if (payload) { 688 if (payload) {
684 return buf.ReadString(payload, buf.Length()); 689 return buf.ReadString(payload, buf.Length());
685 } 690 }
686 return true; 691 return true;
687 } 692 }
688 693
689 // Parse all RTCP packet, from start_index to stop_index, and count how many 694 // Parse all RTCP packet, from start_index to stop_index, and count how many
690 // FIR (PT=206 and FMT=4 according to RFC 5104). If successful, set the count 695 // FIR (PT=206 and FMT=4 according to RFC 5104). If successful, set the count
691 // and return true. 696 // and return true.
692 bool CountRtcpFir(int start_index, int stop_index, int* fir_count) { 697 bool CountRtcpFir(int start_index, int stop_index, int* fir_count) {
693 int count = 0; 698 int count = 0;
694 for (int i = start_index; i < stop_index; ++i) { 699 for (int i = start_index; i < stop_index; ++i) {
695 rtc::scoped_ptr<const rtc::Buffer> p(GetRtcpPacket(i)); 700 rtc::scoped_ptr<const rtc::Buffer> p(GetRtcpPacket(i));
696 rtc::ByteBuffer buf(*p); 701 rtc::ByteBuffer buf(*p);
697 size_t total_len = 0; 702 size_t total_len = 0;
698 // The packet may be a compound RTCP packet. 703 // The packet may be a compound RTCP packet.
699 while (total_len < p->size()) { 704 while (total_len < p->size()) {
700 // Read FMT, type and length. 705 // Read FMT, type and length.
701 uint8 fmt = 0; 706 uint8_t fmt = 0;
702 uint8 type = 0; 707 uint8_t type = 0;
703 uint16 length = 0; 708 uint16_t length = 0;
704 if (!buf.ReadUInt8(&fmt)) return false; 709 if (!buf.ReadUInt8(&fmt)) return false;
705 fmt &= 0x1F; 710 fmt &= 0x1F;
706 if (!buf.ReadUInt8(&type)) return false; 711 if (!buf.ReadUInt8(&type)) return false;
707 if (!buf.ReadUInt16(&length)) return false; 712 if (!buf.ReadUInt16(&length)) return false;
708 buf.Consume(length * 4); // Skip RTCP data. 713 buf.Consume(length * 4); // Skip RTCP data.
709 total_len += (length + 1) * 4; 714 total_len += (length + 1) * 4;
710 if ((192 == type) || ((206 == type) && (4 == fmt))) { 715 if ((192 == type) || ((206 == type) && (4 == fmt))) {
711 ++count; 716 ++count;
712 } 717 }
713 } 718 }
714 } 719 }
715 720
716 if (fir_count) { 721 if (fir_count) {
717 *fir_count = count; 722 *fir_count = count;
718 } 723 }
719 return true; 724 return true;
720 } 725 }
721 726
722 void OnVideoChannelError(uint32 ssrc, 727 void OnVideoChannelError(uint32_t ssrc,
723 cricket::VideoMediaChannel::Error error) { 728 cricket::VideoMediaChannel::Error error) {
724 media_error_ = error; 729 media_error_ = error;
725 } 730 }
726 731
727 // Test that SetSend works. 732 // Test that SetSend works.
728 void SetSend() { 733 void SetSend() {
729 EXPECT_FALSE(channel_->sending()); 734 EXPECT_FALSE(channel_->sending());
730 EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get())); 735 EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get()));
731 EXPECT_TRUE(SetOneCodec(DefaultCodec())); 736 EXPECT_TRUE(SetOneCodec(DefaultCodec()));
732 EXPECT_FALSE(channel_->sending()); 737 EXPECT_FALSE(channel_->sending());
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 879 EXPECT_TRUE(channel_->SetSendParameters(parameters));
875 EXPECT_TRUE(SetSend(true)); 880 EXPECT_TRUE(SetSend(true));
876 EXPECT_TRUE(channel_->AddRecvStream( 881 EXPECT_TRUE(channel_->AddRecvStream(
877 cricket::StreamParams::CreateLegacy(1))); 882 cricket::StreamParams::CreateLegacy(1)));
878 EXPECT_TRUE(channel_->AddRecvStream( 883 EXPECT_TRUE(channel_->AddRecvStream(
879 cricket::StreamParams::CreateLegacy(2))); 884 cricket::StreamParams::CreateLegacy(2)));
880 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); 885 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1));
881 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); 886 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2));
882 EXPECT_EQ(0, renderer1.num_rendered_frames()); 887 EXPECT_EQ(0, renderer1.num_rendered_frames());
883 EXPECT_EQ(0, renderer2.num_rendered_frames()); 888 EXPECT_EQ(0, renderer2.num_rendered_frames());
884 std::vector<uint32> ssrcs; 889 std::vector<uint32_t> ssrcs;
885 ssrcs.push_back(1); 890 ssrcs.push_back(1);
886 ssrcs.push_back(2); 891 ssrcs.push_back(2);
887 network_interface_.SetConferenceMode(true, ssrcs); 892 network_interface_.SetConferenceMode(true, ssrcs);
888 EXPECT_TRUE(SendFrame()); 893 EXPECT_TRUE(SendFrame());
889 EXPECT_FRAME_ON_RENDERER_WAIT( 894 EXPECT_FRAME_ON_RENDERER_WAIT(
890 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); 895 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout);
891 EXPECT_FRAME_ON_RENDERER_WAIT( 896 EXPECT_FRAME_ON_RENDERER_WAIT(
892 renderer2, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); 897 renderer2, 1, DefaultCodec().width, DefaultCodec().height, kTimeout);
893 898
894 EXPECT_TRUE(channel_->SetSend(false)); 899 EXPECT_TRUE(channel_->SetSend(false));
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 EXPECT_TRUE(channel_->SetRenderer(5678, &renderer2)); 956 EXPECT_TRUE(channel_->SetRenderer(5678, &renderer2));
952 EXPECT_TRUE(capturer->CaptureCustomFrame( 957 EXPECT_TRUE(capturer->CaptureCustomFrame(
953 kTestWidth, kTestHeight, cricket::FOURCC_I420)); 958 kTestWidth, kTestHeight, cricket::FOURCC_I420));
954 EXPECT_FRAME_ON_RENDERER_WAIT( 959 EXPECT_FRAME_ON_RENDERER_WAIT(
955 renderer2, 1, kTestWidth, kTestHeight, kTimeout); 960 renderer2, 1, kTestWidth, kTestHeight, kTimeout);
956 961
957 // Get stats, and make sure they are correct for two senders. We wait until 962 // Get stats, and make sure they are correct for two senders. We wait until
958 // the number of expected packets have been sent to avoid races where we 963 // the number of expected packets have been sent to avoid races where we
959 // check stats before it has been updated. 964 // check stats before it has been updated.
960 cricket::VideoMediaInfo info; 965 cricket::VideoMediaInfo info;
961 for (uint32 i = 0; i < kTimeout; ++i) { 966 for (uint32_t i = 0; i < kTimeout; ++i) {
962 rtc::Thread::Current()->ProcessMessages(1); 967 rtc::Thread::Current()->ProcessMessages(1);
963 EXPECT_TRUE(channel_->GetStats(&info)); 968 EXPECT_TRUE(channel_->GetStats(&info));
964 ASSERT_EQ(2U, info.senders.size()); 969 ASSERT_EQ(2U, info.senders.size());
965 if (info.senders[0].packets_sent + info.senders[1].packets_sent == 970 if (info.senders[0].packets_sent + info.senders[1].packets_sent ==
966 NumRtpPackets()) { 971 NumRtpPackets()) {
967 // Stats have been updated for both sent frames, expectations can be 972 // Stats have been updated for both sent frames, expectations can be
968 // checked now. 973 // checked now.
969 break; 974 break;
970 } 975 }
971 } 976 }
(...skipping 21 matching lines...) Expand all
993 parameters.max_bandwidth_bps = 128 * 1024; 998 parameters.max_bandwidth_bps = 128 * 1024;
994 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 999 EXPECT_TRUE(channel_->SetSendParameters(parameters));
995 } 1000 }
996 // Test that we can set the SSRC for the default send source. 1001 // Test that we can set the SSRC for the default send source.
997 void SetSendSsrc() { 1002 void SetSendSsrc() {
998 EXPECT_TRUE(SetDefaultCodec()); 1003 EXPECT_TRUE(SetDefaultCodec());
999 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec())); 1004 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec()));
1000 EXPECT_TRUE(SetSend(true)); 1005 EXPECT_TRUE(SetSend(true));
1001 EXPECT_TRUE(SendFrame()); 1006 EXPECT_TRUE(SendFrame());
1002 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); 1007 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout);
1003 uint32 ssrc = 0; 1008 uint32_t ssrc = 0;
1004 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 1009 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0));
1005 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); 1010 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL);
1006 EXPECT_EQ(kSsrc, ssrc); 1011 EXPECT_EQ(kSsrc, ssrc);
1007 EXPECT_EQ(NumRtpPackets(), NumRtpPackets(ssrc)); 1012 EXPECT_EQ(NumRtpPackets(), NumRtpPackets(ssrc));
1008 EXPECT_EQ(NumRtpBytes(), NumRtpBytes(ssrc)); 1013 EXPECT_EQ(NumRtpBytes(), NumRtpBytes(ssrc));
1009 EXPECT_EQ(1, NumSentSsrcs()); 1014 EXPECT_EQ(1, NumSentSsrcs());
1010 EXPECT_EQ(0, NumRtpPackets(kSsrc - 1)); 1015 EXPECT_EQ(0, NumRtpPackets(kSsrc - 1));
1011 EXPECT_EQ(0, NumRtpBytes(kSsrc - 1)); 1016 EXPECT_EQ(0, NumRtpBytes(kSsrc - 1));
1012 } 1017 }
1013 // Test that we can set the SSRC even after codecs are set. 1018 // Test that we can set the SSRC even after codecs are set.
1014 void SetSendSsrcAfterSetCodecs() { 1019 void SetSendSsrcAfterSetCodecs() {
1015 // Remove stream added in Setup. 1020 // Remove stream added in Setup.
1016 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); 1021 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc));
1017 EXPECT_TRUE(SetDefaultCodec()); 1022 EXPECT_TRUE(SetDefaultCodec());
1018 EXPECT_TRUE(channel_->AddSendStream( 1023 EXPECT_TRUE(channel_->AddSendStream(
1019 cricket::StreamParams::CreateLegacy(999))); 1024 cricket::StreamParams::CreateLegacy(999)));
1020 EXPECT_TRUE(channel_->SetCapturer(999u, video_capturer_.get())); 1025 EXPECT_TRUE(channel_->SetCapturer(999u, video_capturer_.get()));
1021 EXPECT_TRUE(SetSendStreamFormat(999u, DefaultCodec())); 1026 EXPECT_TRUE(SetSendStreamFormat(999u, DefaultCodec()));
1022 EXPECT_TRUE(SetSend(true)); 1027 EXPECT_TRUE(SetSend(true));
1023 EXPECT_TRUE(WaitAndSendFrame(0)); 1028 EXPECT_TRUE(WaitAndSendFrame(0));
1024 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); 1029 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout);
1025 uint32 ssrc = 0; 1030 uint32_t ssrc = 0;
1026 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 1031 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0));
1027 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); 1032 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL);
1028 EXPECT_EQ(999u, ssrc); 1033 EXPECT_EQ(999u, ssrc);
1029 EXPECT_EQ(NumRtpPackets(), NumRtpPackets(ssrc)); 1034 EXPECT_EQ(NumRtpPackets(), NumRtpPackets(ssrc));
1030 EXPECT_EQ(NumRtpBytes(), NumRtpBytes(ssrc)); 1035 EXPECT_EQ(NumRtpBytes(), NumRtpBytes(ssrc));
1031 EXPECT_EQ(1, NumSentSsrcs()); 1036 EXPECT_EQ(1, NumSentSsrcs());
1032 EXPECT_EQ(0, NumRtpPackets(kSsrc)); 1037 EXPECT_EQ(0, NumRtpPackets(kSsrc));
1033 EXPECT_EQ(0, NumRtpBytes(kSsrc)); 1038 EXPECT_EQ(0, NumRtpBytes(kSsrc));
1034 } 1039 }
1035 // Test that we can set the default video renderer before and after 1040 // Test that we can set the default video renderer before and after
1036 // media is received. 1041 // media is received.
1037 void SetRenderer() { 1042 void SetRenderer() {
1038 uint8 data1[] = { 1043 uint8_t data1[] = {
1039 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1044 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
1040 };
1041 1045
1042 rtc::Buffer packet1(data1, sizeof(data1)); 1046 rtc::Buffer packet1(data1, sizeof(data1));
1043 rtc::SetBE32(packet1.data() + 8, kSsrc); 1047 rtc::SetBE32(packet1.data() + 8, kSsrc);
1044 channel_->SetRenderer(kDefaultReceiveSsrc, NULL); 1048 channel_->SetRenderer(kDefaultReceiveSsrc, NULL);
1045 EXPECT_TRUE(SetDefaultCodec()); 1049 EXPECT_TRUE(SetDefaultCodec());
1046 EXPECT_TRUE(SetSend(true)); 1050 EXPECT_TRUE(SetSend(true));
1047 EXPECT_EQ(0, renderer_.num_rendered_frames()); 1051 EXPECT_EQ(0, renderer_.num_rendered_frames());
1048 channel_->OnPacketReceived(&packet1, rtc::PacketTime()); 1052 channel_->OnPacketReceived(&packet1, rtc::PacketTime());
1049 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); 1053 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_));
1050 EXPECT_TRUE(SendFrame()); 1054 EXPECT_TRUE(SendFrame());
(...skipping 12 matching lines...) Expand all
1063 } 1067 }
1064 1068
1065 // Tests setting up and configuring a send stream. 1069 // Tests setting up and configuring a send stream.
1066 void AddRemoveSendStreams() { 1070 void AddRemoveSendStreams() {
1067 EXPECT_TRUE(SetOneCodec(DefaultCodec())); 1071 EXPECT_TRUE(SetOneCodec(DefaultCodec()));
1068 EXPECT_TRUE(SetSend(true)); 1072 EXPECT_TRUE(SetSend(true));
1069 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); 1073 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_));
1070 EXPECT_TRUE(SendFrame()); 1074 EXPECT_TRUE(SendFrame());
1071 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); 1075 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout);
1072 EXPECT_GT(NumRtpPackets(), 0); 1076 EXPECT_GT(NumRtpPackets(), 0);
1073 uint32 ssrc = 0; 1077 uint32_t ssrc = 0;
1074 size_t last_packet = NumRtpPackets() - 1; 1078 size_t last_packet = NumRtpPackets() - 1;
1075 rtc::scoped_ptr<const rtc::Buffer> 1079 rtc::scoped_ptr<const rtc::Buffer>
1076 p(GetRtpPacket(static_cast<int>(last_packet))); 1080 p(GetRtpPacket(static_cast<int>(last_packet)));
1077 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); 1081 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL);
1078 EXPECT_EQ(kSsrc, ssrc); 1082 EXPECT_EQ(kSsrc, ssrc);
1079 1083
1080 // Remove the send stream that was added during Setup. 1084 // Remove the send stream that was added during Setup.
1081 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); 1085 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc));
1082 int rtp_packets = NumRtpPackets(); 1086 int rtp_packets = NumRtpPackets();
1083 1087
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1236 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 1240 EXPECT_TRUE(channel_->SetSendParameters(parameters));
1237 EXPECT_TRUE(SetSend(true)); 1241 EXPECT_TRUE(SetSend(true));
1238 EXPECT_TRUE(channel_->AddRecvStream( 1242 EXPECT_TRUE(channel_->AddRecvStream(
1239 cricket::StreamParams::CreateLegacy(1))); 1243 cricket::StreamParams::CreateLegacy(1)));
1240 EXPECT_TRUE(channel_->AddRecvStream( 1244 EXPECT_TRUE(channel_->AddRecvStream(
1241 cricket::StreamParams::CreateLegacy(2))); 1245 cricket::StreamParams::CreateLegacy(2)));
1242 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); 1246 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1));
1243 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); 1247 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2));
1244 EXPECT_EQ(0, renderer1.num_rendered_frames()); 1248 EXPECT_EQ(0, renderer1.num_rendered_frames());
1245 EXPECT_EQ(0, renderer2.num_rendered_frames()); 1249 EXPECT_EQ(0, renderer2.num_rendered_frames());
1246 std::vector<uint32> ssrcs; 1250 std::vector<uint32_t> ssrcs;
1247 ssrcs.push_back(1); 1251 ssrcs.push_back(1);
1248 ssrcs.push_back(2); 1252 ssrcs.push_back(2);
1249 network_interface_.SetConferenceMode(true, ssrcs); 1253 network_interface_.SetConferenceMode(true, ssrcs);
1250 EXPECT_TRUE(SendFrame()); 1254 EXPECT_TRUE(SendFrame());
1251 EXPECT_FRAME_ON_RENDERER_WAIT( 1255 EXPECT_FRAME_ON_RENDERER_WAIT(
1252 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); 1256 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout);
1253 EXPECT_FRAME_ON_RENDERER_WAIT( 1257 EXPECT_FRAME_ON_RENDERER_WAIT(
1254 renderer2, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); 1258 renderer2, 1, DefaultCodec().width, DefaultCodec().height, kTimeout);
1255 1259
1256 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); 1260 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0));
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
1601 // frames being dropped. 1605 // frames being dropped.
1602 void SetSendStreamFormat0x0() { 1606 void SetSendStreamFormat0x0() {
1603 EXPECT_TRUE(SetOneCodec(DefaultCodec())); 1607 EXPECT_TRUE(SetOneCodec(DefaultCodec()));
1604 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec())); 1608 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec()));
1605 EXPECT_TRUE(SetSend(true)); 1609 EXPECT_TRUE(SetSend(true));
1606 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); 1610 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_));
1607 EXPECT_EQ(0, renderer_.num_rendered_frames()); 1611 EXPECT_EQ(0, renderer_.num_rendered_frames());
1608 // This frame should be received. 1612 // This frame should be received.
1609 EXPECT_TRUE(SendFrame()); 1613 EXPECT_TRUE(SendFrame());
1610 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); 1614 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout);
1611 const int64 interval = cricket::VideoFormat::FpsToInterval( 1615 const int64_t interval =
1612 DefaultCodec().framerate); 1616 cricket::VideoFormat::FpsToInterval(DefaultCodec().framerate);
1613 cricket::VideoFormat format( 1617 cricket::VideoFormat format(
1614 0, 1618 0,
1615 0, 1619 0,
1616 interval, 1620 interval,
1617 cricket::FOURCC_I420); 1621 cricket::FOURCC_I420);
1618 EXPECT_TRUE(channel_->SetSendStreamFormat(kSsrc, format)); 1622 EXPECT_TRUE(channel_->SetSendStreamFormat(kSsrc, format));
1619 // This frame should not be received. 1623 // This frame should not be received.
1620 EXPECT_TRUE(WaitAndSendFrame( 1624 EXPECT_TRUE(WaitAndSendFrame(
1621 static_cast<int>(interval/rtc::kNumNanosecsPerMillisec))); 1625 static_cast<int>(interval/rtc::kNumNanosecsPerMillisec)));
1622 rtc::Thread::Current()->ProcessMessages(500); 1626 rtc::Thread::Current()->ProcessMessages(500);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1712 void TwoStreamsReUseFirstStream(const cricket::VideoCodec& codec) { 1716 void TwoStreamsReUseFirstStream(const cricket::VideoCodec& codec) {
1713 SetUpSecondStream(); 1717 SetUpSecondStream();
1714 // Default channel used by the first stream. 1718 // Default channel used by the first stream.
1715 EXPECT_EQ(kSsrc, channel_->GetDefaultSendChannelSsrc()); 1719 EXPECT_EQ(kSsrc, channel_->GetDefaultSendChannelSsrc());
1716 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc)); 1720 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc));
1717 EXPECT_FALSE(channel_->RemoveRecvStream(kSsrc)); 1721 EXPECT_FALSE(channel_->RemoveRecvStream(kSsrc));
1718 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); 1722 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc));
1719 EXPECT_FALSE(channel_->RemoveSendStream(kSsrc)); 1723 EXPECT_FALSE(channel_->RemoveSendStream(kSsrc));
1720 // Default channel is no longer used by a stream. 1724 // Default channel is no longer used by a stream.
1721 EXPECT_EQ(0u, channel_->GetDefaultSendChannelSsrc()); 1725 EXPECT_EQ(0u, channel_->GetDefaultSendChannelSsrc());
1722 uint32 new_ssrc = kSsrc + 100; 1726 uint32_t new_ssrc = kSsrc + 100;
1723 EXPECT_TRUE(channel_->AddSendStream( 1727 EXPECT_TRUE(channel_->AddSendStream(
1724 cricket::StreamParams::CreateLegacy(new_ssrc))); 1728 cricket::StreamParams::CreateLegacy(new_ssrc)));
1725 // Re-use default channel. 1729 // Re-use default channel.
1726 EXPECT_EQ(new_ssrc, channel_->GetDefaultSendChannelSsrc()); 1730 EXPECT_EQ(new_ssrc, channel_->GetDefaultSendChannelSsrc());
1727 EXPECT_FALSE(channel_->AddSendStream( 1731 EXPECT_FALSE(channel_->AddSendStream(
1728 cricket::StreamParams::CreateLegacy(new_ssrc))); 1732 cricket::StreamParams::CreateLegacy(new_ssrc)));
1729 EXPECT_TRUE(channel_->AddRecvStream( 1733 EXPECT_TRUE(channel_->AddRecvStream(
1730 cricket::StreamParams::CreateLegacy(new_ssrc))); 1734 cricket::StreamParams::CreateLegacy(new_ssrc)));
1731 EXPECT_TRUE(channel_->SetRenderer(new_ssrc, &renderer_)); 1735 EXPECT_TRUE(channel_->SetRenderer(new_ssrc, &renderer_));
1732 EXPECT_FALSE(channel_->AddRecvStream( 1736 EXPECT_FALSE(channel_->AddRecvStream(
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1802 rtc::scoped_ptr<C> channel_; 1806 rtc::scoped_ptr<C> channel_;
1803 cricket::FakeNetworkInterface network_interface_; 1807 cricket::FakeNetworkInterface network_interface_;
1804 cricket::FakeVideoRenderer renderer_; 1808 cricket::FakeVideoRenderer renderer_;
1805 cricket::VideoMediaChannel::Error media_error_; 1809 cricket::VideoMediaChannel::Error media_error_;
1806 1810
1807 // Used by test cases where 2 streams are run on the same channel. 1811 // Used by test cases where 2 streams are run on the same channel.
1808 cricket::FakeVideoRenderer renderer2_; 1812 cricket::FakeVideoRenderer renderer2_;
1809 }; 1813 };
1810 1814
1811 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT 1815 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT
OLDNEW
« no previous file with comments | « talk/media/base/videocommon.cc ('k') | talk/media/base/videoframe.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698