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

Side by Side Diff: media/cast/framer/framer_unittest.cc

Issue 109413004: Cast:Adding cast_transport_config and cleaning up (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Injecting TaskRunner Created 6 years, 12 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 "base/test/simple_test_tick_clock.h" 5 #include "base/test/simple_test_tick_clock.h"
6 #include "media/cast/framer/framer.h" 6 #include "media/cast/framer/framer.h"
7 #include "media/cast/rtp_receiver/mock_rtp_payload_feedback.h" 7 #include "media/cast/rtp_receiver/mock_rtp_payload_feedback.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace media { 10 namespace media {
(...skipping 24 matching lines...) Expand all
35 35
36 std::vector<uint8> payload_; 36 std::vector<uint8> payload_;
37 RtpCastHeader rtp_header_; 37 RtpCastHeader rtp_header_;
38 MockRtpPayloadFeedback mock_rtp_payload_feedback_; 38 MockRtpPayloadFeedback mock_rtp_payload_feedback_;
39 Framer framer_; 39 Framer framer_;
40 base::SimpleTestTickClock testing_clock_; 40 base::SimpleTestTickClock testing_clock_;
41 }; 41 };
42 42
43 43
44 TEST_F(FramerTest, EmptyState) { 44 TEST_F(FramerTest, EmptyState) {
45 EncodedVideoFrame frame; 45 transport::EncodedVideoFrame frame;
46 uint32 rtp_timestamp; 46 uint32 rtp_timestamp;
47 bool next_frame = false; 47 bool next_frame = false;
48 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 48 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
49 &next_frame)); 49 &next_frame));
50 } 50 }
51 51
52 TEST_F(FramerTest, AlwaysStartWithKey) { 52 TEST_F(FramerTest, AlwaysStartWithKey) {
53 EncodedVideoFrame frame; 53 transport::EncodedVideoFrame frame;
54 uint32 rtp_timestamp; 54 uint32 rtp_timestamp;
55 bool next_frame = false; 55 bool next_frame = false;
56 56
57 // Insert non key first frame. 57 // Insert non key first frame.
58 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 58 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
59 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 59 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
60 &next_frame)); 60 &next_frame));
61 rtp_header_.frame_id = 1; 61 rtp_header_.frame_id = 1;
62 rtp_header_.is_key_frame = true; 62 rtp_header_.is_key_frame = true;
63 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 63 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
64 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 64 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
65 &next_frame)); 65 &next_frame));
66 EXPECT_TRUE(next_frame); 66 EXPECT_TRUE(next_frame);
67 EXPECT_EQ(1u, frame.frame_id); 67 EXPECT_EQ(1u, frame.frame_id);
68 EXPECT_TRUE(frame.key_frame); 68 EXPECT_TRUE(frame.key_frame);
69 framer_.ReleaseFrame(frame.frame_id); 69 framer_.ReleaseFrame(frame.frame_id);
70 } 70 }
71 71
72 TEST_F(FramerTest, CompleteFrame) { 72 TEST_F(FramerTest, CompleteFrame) {
73 EncodedVideoFrame frame; 73 transport::EncodedVideoFrame frame;
74 uint32 rtp_timestamp; 74 uint32 rtp_timestamp;
75 bool next_frame = false; 75 bool next_frame = false;
76 76
77 // start with a complete key frame. 77 // start with a complete key frame.
78 rtp_header_.is_key_frame = true; 78 rtp_header_.is_key_frame = true;
79 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 79 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
80 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 80 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
81 &next_frame)); 81 &next_frame));
82 EXPECT_TRUE(next_frame); 82 EXPECT_TRUE(next_frame);
83 EXPECT_EQ(0u, frame.frame_id); 83 EXPECT_EQ(0u, frame.frame_id);
(...skipping 10 matching lines...) Expand all
94 94
95 // Complete delta - can't skip, as incomplete sequence. 95 // Complete delta - can't skip, as incomplete sequence.
96 ++rtp_header_.frame_id; 96 ++rtp_header_.frame_id;
97 rtp_header_.max_packet_id = 0; 97 rtp_header_.max_packet_id = 0;
98 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 98 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
99 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 99 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
100 &next_frame)); 100 &next_frame));
101 } 101 }
102 102
103 TEST_F(FramerTest, ContinuousSequence) { 103 TEST_F(FramerTest, ContinuousSequence) {
104 EncodedVideoFrame frame; 104 transport::EncodedVideoFrame frame;
105 uint32 rtp_timestamp; 105 uint32 rtp_timestamp;
106 bool next_frame = false; 106 bool next_frame = false;
107 107
108 // start with a complete key frame. 108 // start with a complete key frame.
109 rtp_header_.is_key_frame = true; 109 rtp_header_.is_key_frame = true;
110 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 110 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
111 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 111 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
112 &next_frame)); 112 &next_frame));
113 EXPECT_TRUE(next_frame); 113 EXPECT_TRUE(next_frame);
114 EXPECT_EQ(0u, frame.frame_id); 114 EXPECT_EQ(0u, frame.frame_id);
115 EXPECT_TRUE(frame.key_frame); 115 EXPECT_TRUE(frame.key_frame);
116 framer_.ReleaseFrame(frame.frame_id); 116 framer_.ReleaseFrame(frame.frame_id);
117 117
118 // Complete - not continuous. 118 // Complete - not continuous.
119 rtp_header_.frame_id = 2; 119 rtp_header_.frame_id = 2;
120 rtp_header_.is_key_frame = false; 120 rtp_header_.is_key_frame = false;
121 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 121 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
122 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 122 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
123 &next_frame)); 123 &next_frame));
124 } 124 }
125 125
126 TEST_F(FramerTest, Wrap) { 126 TEST_F(FramerTest, Wrap) {
127 // Insert key frame, frame_id = 255 (will jump to that) 127 // Insert key frame, frame_id = 255 (will jump to that)
128 EncodedVideoFrame frame; 128 transport::EncodedVideoFrame frame;
129 uint32 rtp_timestamp; 129 uint32 rtp_timestamp;
130 bool next_frame = false; 130 bool next_frame = false;
131 131
132 // Start with a complete key frame. 132 // Start with a complete key frame.
133 rtp_header_.is_key_frame = true; 133 rtp_header_.is_key_frame = true;
134 rtp_header_.frame_id = 255u; 134 rtp_header_.frame_id = 255u;
135 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 135 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
136 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 136 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
137 &next_frame)); 137 &next_frame));
138 EXPECT_TRUE(next_frame); 138 EXPECT_TRUE(next_frame);
139 EXPECT_EQ(255u, frame.frame_id); 139 EXPECT_EQ(255u, frame.frame_id);
140 framer_.ReleaseFrame(frame.frame_id); 140 framer_.ReleaseFrame(frame.frame_id);
141 141
142 // Insert wrapped delta frame - should be continuous. 142 // Insert wrapped delta frame - should be continuous.
143 rtp_header_.is_key_frame = false; 143 rtp_header_.is_key_frame = false;
144 rtp_header_.frame_id = 256; 144 rtp_header_.frame_id = 256;
145 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 145 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
146 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 146 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
147 &next_frame)); 147 &next_frame));
148 EXPECT_TRUE(next_frame); 148 EXPECT_TRUE(next_frame);
149 EXPECT_EQ(256u, frame.frame_id); 149 EXPECT_EQ(256u, frame.frame_id);
150 framer_.ReleaseFrame(frame.frame_id); 150 framer_.ReleaseFrame(frame.frame_id);
151 } 151 }
152 152
153 TEST_F(FramerTest, Reset) { 153 TEST_F(FramerTest, Reset) {
154 EncodedVideoFrame frame; 154 transport::EncodedVideoFrame frame;
155 uint32 rtp_timestamp; 155 uint32 rtp_timestamp;
156 bool next_frame = false; 156 bool next_frame = false;
157 157
158 // Start with a complete key frame. 158 // Start with a complete key frame.
159 rtp_header_.is_key_frame = true; 159 rtp_header_.is_key_frame = true;
160 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 160 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
161 framer_.Reset(); 161 framer_.Reset();
162 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 162 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
163 &next_frame)); 163 &next_frame));
164 } 164 }
165 165
166 TEST_F(FramerTest, RequireKeyAfterReset) { 166 TEST_F(FramerTest, RequireKeyAfterReset) {
167 EncodedVideoFrame frame; 167 transport::EncodedVideoFrame frame;
168 uint32 rtp_timestamp; 168 uint32 rtp_timestamp;
169 bool next_frame = false; 169 bool next_frame = false;
170 framer_.Reset(); 170 framer_.Reset();
171 171
172 // Start with a complete key frame. 172 // Start with a complete key frame.
173 rtp_header_.is_key_frame = false; 173 rtp_header_.is_key_frame = false;
174 rtp_header_.frame_id = 0u; 174 rtp_header_.frame_id = 0u;
175 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 175 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
176 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 176 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
177 &next_frame)); 177 &next_frame));
178 rtp_header_.frame_id = 1; 178 rtp_header_.frame_id = 1;
179 rtp_header_.is_key_frame = true; 179 rtp_header_.is_key_frame = true;
180 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 180 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
181 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 181 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
182 &next_frame)); 182 &next_frame));
183 EXPECT_TRUE(next_frame); 183 EXPECT_TRUE(next_frame);
184 } 184 }
185 185
186 TEST_F(FramerTest, BasicNonLastReferenceId) { 186 TEST_F(FramerTest, BasicNonLastReferenceId) {
187 EncodedVideoFrame frame; 187 transport::EncodedVideoFrame frame;
188 uint32 rtp_timestamp; 188 uint32 rtp_timestamp;
189 bool next_frame = false; 189 bool next_frame = false;
190 rtp_header_.is_key_frame = true; 190 rtp_header_.is_key_frame = true;
191 rtp_header_.frame_id = 0; 191 rtp_header_.frame_id = 0;
192 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 192 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
193 193
194 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 194 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
195 &next_frame)); 195 &next_frame));
196 framer_.ReleaseFrame(frame.frame_id); 196 framer_.ReleaseFrame(frame.frame_id);
197 197
198 rtp_header_.is_key_frame = false; 198 rtp_header_.is_key_frame = false;
199 rtp_header_.is_reference = true; 199 rtp_header_.is_reference = true;
200 rtp_header_.reference_frame_id = 0; 200 rtp_header_.reference_frame_id = 0;
201 rtp_header_.frame_id = 5u; 201 rtp_header_.frame_id = 5u;
202 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 202 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
203 203
204 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 204 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
205 &next_frame)); 205 &next_frame));
206 EXPECT_FALSE(next_frame); 206 EXPECT_FALSE(next_frame);
207 } 207 }
208 208
209 TEST_F(FramerTest, InOrderReferenceFrameSelection) { 209 TEST_F(FramerTest, InOrderReferenceFrameSelection) {
210 // Create pattern: 0, 1, 4, 5. 210 // Create pattern: 0, 1, 4, 5.
211 EncodedVideoFrame frame; 211 transport::EncodedVideoFrame frame;
212 uint32 rtp_timestamp; 212 uint32 rtp_timestamp;
213 bool next_frame = false; 213 bool next_frame = false;
214 214
215 rtp_header_.is_key_frame = true; 215 rtp_header_.is_key_frame = true;
216 rtp_header_.frame_id = 0; 216 rtp_header_.frame_id = 0;
217 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 217 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
218 rtp_header_.is_key_frame = false; 218 rtp_header_.is_key_frame = false;
219 rtp_header_.frame_id = 1; 219 rtp_header_.frame_id = 1;
220 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 220 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
221 221
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 rtp_header_.max_packet_id = 0; 254 rtp_header_.max_packet_id = 0;
255 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 255 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
256 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp, 256 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &rtp_timestamp,
257 &next_frame)); 257 &next_frame));
258 EXPECT_TRUE(next_frame); 258 EXPECT_TRUE(next_frame);
259 EXPECT_EQ(5u, frame.frame_id); 259 EXPECT_EQ(5u, frame.frame_id);
260 } 260 }
261 261
262 TEST_F(FramerTest, AudioWrap) { 262 TEST_F(FramerTest, AudioWrap) {
263 // All audio frames are marked as key frames. 263 // All audio frames are marked as key frames.
264 EncodedAudioFrame frame; 264 transport::EncodedAudioFrame frame;
265 uint32 rtp_timestamp; 265 uint32 rtp_timestamp;
266 bool next_frame = false; 266 bool next_frame = false;
267 rtp_header_.is_key_frame = true; 267 rtp_header_.is_key_frame = true;
268 rtp_header_.frame_id = 254; 268 rtp_header_.frame_id = 254;
269 269
270 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 270 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
271 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &rtp_timestamp, 271 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &rtp_timestamp,
272 &next_frame)); 272 &next_frame));
273 EXPECT_TRUE(next_frame); 273 EXPECT_TRUE(next_frame);
274 EXPECT_EQ(254u, frame.frame_id); 274 EXPECT_EQ(254u, frame.frame_id);
(...skipping 14 matching lines...) Expand all
289 289
290 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &rtp_timestamp, 290 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &rtp_timestamp,
291 &next_frame)); 291 &next_frame));
292 EXPECT_TRUE(next_frame); 292 EXPECT_TRUE(next_frame);
293 EXPECT_EQ(256u, frame.frame_id); 293 EXPECT_EQ(256u, frame.frame_id);
294 framer_.ReleaseFrame(frame.frame_id); 294 framer_.ReleaseFrame(frame.frame_id);
295 } 295 }
296 296
297 TEST_F(FramerTest, AudioWrapWithMissingFrame) { 297 TEST_F(FramerTest, AudioWrapWithMissingFrame) {
298 // All audio frames are marked as key frames. 298 // All audio frames are marked as key frames.
299 EncodedAudioFrame frame; 299 transport::EncodedAudioFrame frame;
300 uint32 rtp_timestamp; 300 uint32 rtp_timestamp;
301 bool next_frame = false; 301 bool next_frame = false;
302 302
303 // Insert and get first packet. 303 // Insert and get first packet.
304 rtp_header_.is_key_frame = true; 304 rtp_header_.is_key_frame = true;
305 rtp_header_.frame_id = 253; 305 rtp_header_.frame_id = 253;
306 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); 306 framer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_);
307 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &rtp_timestamp, 307 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &rtp_timestamp,
308 &next_frame)); 308 &next_frame));
309 EXPECT_TRUE(next_frame); 309 EXPECT_TRUE(next_frame);
(...skipping 14 matching lines...) Expand all
324 framer_.ReleaseFrame(frame.frame_id); 324 framer_.ReleaseFrame(frame.frame_id);
325 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &rtp_timestamp, 325 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &rtp_timestamp,
326 &next_frame)); 326 &next_frame));
327 EXPECT_TRUE(next_frame); 327 EXPECT_TRUE(next_frame);
328 EXPECT_EQ(256u, frame.frame_id); 328 EXPECT_EQ(256u, frame.frame_id);
329 framer_.ReleaseFrame(frame.frame_id); 329 framer_.ReleaseFrame(frame.frame_id);
330 } 330 }
331 331
332 } // namespace cast 332 } // namespace cast
333 } // namespace media 333 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698