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

Side by Side Diff: media/cast/video_receiver/video_receiver_unittest.cc

Issue 250363002: [Cast] Clean-up RtpCastHeader and RtpParser, removing the last WebRTC dependency. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed hubbe's comment. Created 6 years, 8 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
« no previous file with comments | « media/cast/video_receiver/video_receiver.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/memory/ref_counted.h" 6 #include "base/memory/ref_counted.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/test/simple_test_tick_clock.h" 8 #include "base/test/simple_test_tick_clock.h"
9 #include "media/cast/cast_defines.h" 9 #include "media/cast/cast_defines.h"
10 #include "media/cast/cast_environment.h" 10 #include "media/cast/cast_environment.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 } 84 }
85 85
86 virtual ~VideoReceiverTest() {} 86 virtual ~VideoReceiverTest() {}
87 87
88 virtual void SetUp() { 88 virtual void SetUp() {
89 payload_.assign(kPacketSize, 0); 89 payload_.assign(kPacketSize, 0);
90 90
91 // Always start with a key frame. 91 // Always start with a key frame.
92 rtp_header_.is_key_frame = true; 92 rtp_header_.is_key_frame = true;
93 rtp_header_.frame_id = kFirstFrameId; 93 rtp_header_.frame_id = kFirstFrameId;
94 rtp_header_.reference_frame_id = rtp_header_.frame_id;
94 rtp_header_.packet_id = 0; 95 rtp_header_.packet_id = 0;
95 rtp_header_.max_packet_id = 0; 96 rtp_header_.max_packet_id = 0;
96 rtp_header_.is_reference = false;
97 rtp_header_.reference_frame_id = 0;
98 rtp_header_.webrtc.header.timestamp = 0;
99 } 97 }
100 98
101 void FeedOneFrameIntoReceiver() { 99 void FeedOneFrameIntoReceiver() {
102 receiver_->OnReceivedPayloadData( 100 receiver_->OnReceivedPayloadData(
103 payload_.data(), payload_.size(), rtp_header_); 101 payload_.data(), payload_.size(), rtp_header_);
104 } 102 }
105 103
106 VideoReceiverConfig config_; 104 VideoReceiverConfig config_;
107 std::vector<uint8> payload_; 105 std::vector<uint8> payload_;
108 RtpCastHeader rtp_header_; 106 RtpCastHeader rtp_header_;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 FeedOneFrameIntoReceiver(); 139 FeedOneFrameIntoReceiver();
142 task_runner_->RunTasks(); 140 task_runner_->RunTasks();
143 EXPECT_EQ(1, fake_video_client_.number_times_called()); 141 EXPECT_EQ(1, fake_video_client_.number_times_called());
144 142
145 std::vector<FrameEvent> frame_events; 143 std::vector<FrameEvent> frame_events;
146 event_subscriber.GetFrameEventsAndReset(&frame_events); 144 event_subscriber.GetFrameEventsAndReset(&frame_events);
147 145
148 ASSERT_TRUE(!frame_events.empty()); 146 ASSERT_TRUE(!frame_events.empty());
149 EXPECT_EQ(kVideoAckSent, frame_events.begin()->type); 147 EXPECT_EQ(kVideoAckSent, frame_events.begin()->type);
150 EXPECT_EQ(rtp_header_.frame_id, frame_events.begin()->frame_id); 148 EXPECT_EQ(rtp_header_.frame_id, frame_events.begin()->frame_id);
151 EXPECT_EQ(rtp_header_.webrtc.header.timestamp, 149 EXPECT_EQ(rtp_header_.rtp_timestamp, frame_events.begin()->rtp_timestamp);
152 frame_events.begin()->rtp_timestamp);
153 150
154 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber); 151 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber);
155 } 152 }
156 153
157 TEST_F(VideoReceiverTest, MultiplePendingGetCalls) { 154 TEST_F(VideoReceiverTest, MultiplePendingGetCalls) {
158 EXPECT_CALL(mock_transport_, SendRtcpPacket(_)) 155 EXPECT_CALL(mock_transport_, SendRtcpPacket(_))
159 .WillRepeatedly(testing::Return(true)); 156 .WillRepeatedly(testing::Return(true));
160 157
161 // Enqueue a request for an video frame. 158 // Enqueue a request for an video frame.
162 const VideoFrameEncodedCallback frame_encoded_callback = 159 const VideoFrameEncodedCallback frame_encoded_callback =
(...skipping 17 matching lines...) Expand all
180 // Enqueue a second request for an video frame, but it should not be 177 // Enqueue a second request for an video frame, but it should not be
181 // fulfilled yet. 178 // fulfilled yet.
182 receiver_->GetEncodedVideoFrame(frame_encoded_callback); 179 receiver_->GetEncodedVideoFrame(frame_encoded_callback);
183 task_runner_->RunTasks(); 180 task_runner_->RunTasks();
184 EXPECT_EQ(1, fake_video_client_.number_times_called()); 181 EXPECT_EQ(1, fake_video_client_.number_times_called());
185 182
186 // Receive one video frame out-of-order: Make sure that we are not continuous 183 // Receive one video frame out-of-order: Make sure that we are not continuous
187 // and that the RTP timestamp represents a time in the future. 184 // and that the RTP timestamp represents a time in the future.
188 rtp_header_.is_key_frame = false; 185 rtp_header_.is_key_frame = false;
189 rtp_header_.frame_id = kFirstFrameId + 2; 186 rtp_header_.frame_id = kFirstFrameId + 2;
190 rtp_header_.is_reference = true;
191 rtp_header_.reference_frame_id = 0; 187 rtp_header_.reference_frame_id = 0;
192 rtp_header_.webrtc.header.timestamp += 188 rtp_header_.rtp_timestamp +=
193 config_.rtp_max_delay_ms * kVideoFrequency / 1000; 189 config_.rtp_max_delay_ms * kVideoFrequency / 1000;
194 fake_video_client_.SetNextExpectedResult( 190 fake_video_client_.SetNextExpectedResult(
195 kFirstFrameId + 2, 191 kFirstFrameId + 2,
196 time_at_first_frame_feed + 192 time_at_first_frame_feed +
197 base::TimeDelta::FromMilliseconds(config_.rtp_max_delay_ms)); 193 base::TimeDelta::FromMilliseconds(config_.rtp_max_delay_ms));
198 FeedOneFrameIntoReceiver(); 194 FeedOneFrameIntoReceiver();
199 195
200 // Frame 2 should not come out at this point in time. 196 // Frame 2 should not come out at this point in time.
201 task_runner_->RunTasks(); 197 task_runner_->RunTasks();
202 EXPECT_EQ(1, fake_video_client_.number_times_called()); 198 EXPECT_EQ(1, fake_video_client_.number_times_called());
203 199
204 // Enqueue a third request for an video frame. 200 // Enqueue a third request for an video frame.
205 receiver_->GetEncodedVideoFrame(frame_encoded_callback); 201 receiver_->GetEncodedVideoFrame(frame_encoded_callback);
206 task_runner_->RunTasks(); 202 task_runner_->RunTasks();
207 EXPECT_EQ(1, fake_video_client_.number_times_called()); 203 EXPECT_EQ(1, fake_video_client_.number_times_called());
208 204
209 // After |rtp_max_delay_ms| has elapsed, Frame 2 is emitted (to satisfy the 205 // After |rtp_max_delay_ms| has elapsed, Frame 2 is emitted (to satisfy the
210 // second request) because a decision was made to skip over the no-show Frame 206 // second request) because a decision was made to skip over the no-show Frame
211 // 1. 207 // 1.
212 testing_clock_->Advance( 208 testing_clock_->Advance(
213 base::TimeDelta::FromMilliseconds(config_.rtp_max_delay_ms)); 209 base::TimeDelta::FromMilliseconds(config_.rtp_max_delay_ms));
214 task_runner_->RunTasks(); 210 task_runner_->RunTasks();
215 EXPECT_EQ(2, fake_video_client_.number_times_called()); 211 EXPECT_EQ(2, fake_video_client_.number_times_called());
216 212
217 // Receive Frame 3 and expect it to fulfill the third request immediately. 213 // Receive Frame 3 and expect it to fulfill the third request immediately.
218 rtp_header_.frame_id = kFirstFrameId + 3; 214 rtp_header_.frame_id = kFirstFrameId + 3;
219 rtp_header_.is_reference = false; 215 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
220 rtp_header_.reference_frame_id = 0; 216 rtp_header_.rtp_timestamp += kVideoFrequency / config_.max_frame_rate;
221 rtp_header_.webrtc.header.timestamp +=
222 kVideoFrequency / config_.max_frame_rate;
223 fake_video_client_.SetNextExpectedResult(kFirstFrameId + 3, 217 fake_video_client_.SetNextExpectedResult(kFirstFrameId + 3,
224 testing_clock_->NowTicks()); 218 testing_clock_->NowTicks());
225 FeedOneFrameIntoReceiver(); 219 FeedOneFrameIntoReceiver();
226 task_runner_->RunTasks(); 220 task_runner_->RunTasks();
227 EXPECT_EQ(3, fake_video_client_.number_times_called()); 221 EXPECT_EQ(3, fake_video_client_.number_times_called());
228 222
229 // Move forward another |rtp_max_delay_ms| and run any pending tasks (there 223 // Move forward another |rtp_max_delay_ms| and run any pending tasks (there
230 // should be none). Expect no additional frames where emitted. 224 // should be none). Expect no additional frames where emitted.
231 testing_clock_->Advance( 225 testing_clock_->Advance(
232 base::TimeDelta::FromMilliseconds(config_.rtp_max_delay_ms)); 226 base::TimeDelta::FromMilliseconds(config_.rtp_max_delay_ms));
233 task_runner_->RunTasks(); 227 task_runner_->RunTasks();
234 EXPECT_EQ(3, fake_video_client_.number_times_called()); 228 EXPECT_EQ(3, fake_video_client_.number_times_called());
235 } 229 }
236 230
237 } // namespace cast 231 } // namespace cast
238 } // namespace media 232 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/video_receiver/video_receiver.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698