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

Side by Side Diff: media/cast/audio_sender/audio_sender_unittest.cc

Issue 295603004: [Cast] Aggressively send sender reports until first receiver report is received. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/test/simple_test_tick_clock.h" 10 #include "base/test/simple_test_tick_clock.h"
(...skipping 15 matching lines...) Expand all
26 26
27 class TestPacketSender : public transport::PacketSender { 27 class TestPacketSender : public transport::PacketSender {
28 public: 28 public:
29 TestPacketSender() : number_of_rtp_packets_(0), number_of_rtcp_packets_(0) {} 29 TestPacketSender() : number_of_rtp_packets_(0), number_of_rtcp_packets_(0) {}
30 30
31 virtual bool SendPacket(transport::PacketRef packet, 31 virtual bool SendPacket(transport::PacketRef packet,
32 const base::Closure& cb) OVERRIDE { 32 const base::Closure& cb) OVERRIDE {
33 if (Rtcp::IsRtcpPacket(&packet->data[0], packet->data.size())) { 33 if (Rtcp::IsRtcpPacket(&packet->data[0], packet->data.size())) {
34 ++number_of_rtcp_packets_; 34 ++number_of_rtcp_packets_;
35 } else { 35 } else {
36 // Check that at least one RTCP packet was sent before the first RTP
37 // packet. This confirms that the receiver will have the necessary lip
38 // sync info before it has to calculate the playout time of the first
39 // frame.
40 if (number_of_rtp_packets_ == 0)
41 EXPECT_LE(1, number_of_rtcp_packets_);
36 ++number_of_rtp_packets_; 42 ++number_of_rtp_packets_;
37 } 43 }
38 return true; 44 return true;
39 } 45 }
40 46
41 int number_of_rtp_packets() const { return number_of_rtp_packets_; } 47 int number_of_rtp_packets() const { return number_of_rtp_packets_; }
42 48
43 int number_of_rtcp_packets() const { return number_of_rtcp_packets_; } 49 int number_of_rtcp_packets() const { return number_of_rtcp_packets_; }
44 50
45 private: 51 private:
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 task_runner_, 87 task_runner_,
82 &transport_)); 88 &transport_));
83 audio_sender_.reset(new AudioSender( 89 audio_sender_.reset(new AudioSender(
84 cast_environment_, audio_config_, transport_sender_.get())); 90 cast_environment_, audio_config_, transport_sender_.get()));
85 task_runner_->RunTasks(); 91 task_runner_->RunTasks();
86 } 92 }
87 93
88 virtual ~AudioSenderTest() {} 94 virtual ~AudioSenderTest() {}
89 95
90 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { 96 static void UpdateCastTransportStatus(transport::CastTransportStatus status) {
91 EXPECT_EQ(status, transport::TRANSPORT_AUDIO_INITIALIZED); 97 EXPECT_EQ(transport::TRANSPORT_AUDIO_INITIALIZED, status);
92 } 98 }
93 99
94 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. 100 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
95 TestPacketSender transport_; 101 TestPacketSender transport_;
96 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; 102 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_;
97 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; 103 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
98 scoped_ptr<AudioSender> audio_sender_; 104 scoped_ptr<AudioSender> audio_sender_;
99 scoped_refptr<CastEnvironment> cast_environment_; 105 scoped_refptr<CastEnvironment> cast_environment_;
100 AudioSenderConfig audio_config_; 106 AudioSenderConfig audio_config_;
101 }; 107 };
102 108
103 TEST_F(AudioSenderTest, Encode20ms) { 109 TEST_F(AudioSenderTest, Encode20ms) {
104 const base::TimeDelta kDuration = base::TimeDelta::FromMilliseconds(20); 110 const base::TimeDelta kDuration = base::TimeDelta::FromMilliseconds(20);
105 scoped_ptr<AudioBus> bus( 111 scoped_ptr<AudioBus> bus(
106 TestAudioBusFactory(audio_config_.channels, 112 TestAudioBusFactory(audio_config_.channels,
107 audio_config_.frequency, 113 audio_config_.frequency,
108 TestAudioBusFactory::kMiddleANoteFreq, 114 TestAudioBusFactory::kMiddleANoteFreq,
109 0.5f).NextAudioBus(kDuration)); 115 0.5f).NextAudioBus(kDuration));
110 116
111 audio_sender_->InsertAudio(bus.Pass(), testing_clock_->NowTicks()); 117 audio_sender_->InsertAudio(bus.Pass(), testing_clock_->NowTicks());
112 task_runner_->RunTasks(); 118 task_runner_->RunTasks();
113 EXPECT_GE( 119 EXPECT_LE(1, transport_.number_of_rtp_packets());
114 transport_.number_of_rtp_packets() + transport_.number_of_rtcp_packets(), 120 EXPECT_LE(1, transport_.number_of_rtcp_packets());
115 1);
116 } 121 }
117 122
118 TEST_F(AudioSenderTest, RtcpTimer) { 123 TEST_F(AudioSenderTest, RtcpTimer) {
119 const base::TimeDelta kDuration = base::TimeDelta::FromMilliseconds(20); 124 const base::TimeDelta kDuration = base::TimeDelta::FromMilliseconds(20);
120 scoped_ptr<AudioBus> bus( 125 scoped_ptr<AudioBus> bus(
121 TestAudioBusFactory(audio_config_.channels, 126 TestAudioBusFactory(audio_config_.channels,
122 audio_config_.frequency, 127 audio_config_.frequency,
123 TestAudioBusFactory::kMiddleANoteFreq, 128 TestAudioBusFactory::kMiddleANoteFreq,
124 0.5f).NextAudioBus(kDuration)); 129 0.5f).NextAudioBus(kDuration));
125 130
126 audio_sender_->InsertAudio(bus.Pass(), testing_clock_->NowTicks()); 131 audio_sender_->InsertAudio(bus.Pass(), testing_clock_->NowTicks());
127 task_runner_->RunTasks(); 132 task_runner_->RunTasks();
128 133
129 // Make sure that we send at least one RTCP packet. 134 // Make sure that we send at least one RTCP packet.
130 base::TimeDelta max_rtcp_timeout = 135 base::TimeDelta max_rtcp_timeout =
131 base::TimeDelta::FromMilliseconds(1 + kDefaultRtcpIntervalMs * 3 / 2); 136 base::TimeDelta::FromMilliseconds(1 + kDefaultRtcpIntervalMs * 3 / 2);
132 testing_clock_->Advance(max_rtcp_timeout); 137 testing_clock_->Advance(max_rtcp_timeout);
133 task_runner_->RunTasks(); 138 task_runner_->RunTasks();
134 EXPECT_GE(transport_.number_of_rtp_packets(), 1); 139 EXPECT_LE(1, transport_.number_of_rtp_packets());
135 EXPECT_EQ(transport_.number_of_rtcp_packets(), 1); 140 EXPECT_LE(1, transport_.number_of_rtcp_packets());
136 } 141 }
137 142
138 } // namespace cast 143 } // namespace cast
139 } // namespace media 144 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698