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

Side by Side Diff: media/cast/net/rtp/framer_unittest.cc

Issue 404323002: Cast: Build cast targets with GN (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merged Created 6 years, 4 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/net/cast_transport_defines.h" 6 #include "media/cast/net/cast_transport_defines.h"
7 #include "media/cast/net/rtp/framer.h" 7 #include "media/cast/net/rtp/framer.h"
8 #include "media/cast/net/rtp/mock_rtp_payload_feedback.h" 8 #include "media/cast/net/rtp/mock_rtp_payload_feedback.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 42
43 TEST_F(FramerTest, AlwaysStartWithKey) { 43 TEST_F(FramerTest, AlwaysStartWithKey) {
44 EncodedFrame frame; 44 EncodedFrame frame;
45 bool next_frame = false; 45 bool next_frame = false;
46 bool complete = false; 46 bool complete = false;
47 bool multiple = false; 47 bool multiple = false;
48 bool duplicate = false; 48 bool duplicate = false;
49 49
50 // Insert non key first frame. 50 // Insert non key first frame.
51 complete = framer_.InsertPacket( 51 complete = framer_.InsertPacket(
52 payload_.data(), payload_.size(), rtp_header_, &duplicate); 52 &payload_[0], payload_.size(), rtp_header_, &duplicate);
53 EXPECT_TRUE(complete); 53 EXPECT_TRUE(complete);
54 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 54 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
55 rtp_header_.frame_id = 1; 55 rtp_header_.frame_id = 1;
56 rtp_header_.reference_frame_id = 1; 56 rtp_header_.reference_frame_id = 1;
57 rtp_header_.is_key_frame = true; 57 rtp_header_.is_key_frame = true;
58 complete = framer_.InsertPacket( 58 complete = framer_.InsertPacket(
59 payload_.data(), payload_.size(), rtp_header_, &duplicate); 59 &payload_[0], payload_.size(), rtp_header_, &duplicate);
60 EXPECT_TRUE(complete); 60 EXPECT_TRUE(complete);
61 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 61 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
62 EXPECT_TRUE(next_frame); 62 EXPECT_TRUE(next_frame);
63 EXPECT_TRUE(multiple); 63 EXPECT_TRUE(multiple);
64 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 64 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
65 EXPECT_EQ(1u, frame.frame_id); 65 EXPECT_EQ(1u, frame.frame_id);
66 EXPECT_EQ(1u, frame.referenced_frame_id); 66 EXPECT_EQ(1u, frame.referenced_frame_id);
67 framer_.ReleaseFrame(frame.frame_id); 67 framer_.ReleaseFrame(frame.frame_id);
68 } 68 }
69 69
70 TEST_F(FramerTest, CompleteFrame) { 70 TEST_F(FramerTest, CompleteFrame) {
71 EncodedFrame frame; 71 EncodedFrame frame;
72 bool next_frame = false; 72 bool next_frame = false;
73 bool complete = false; 73 bool complete = false;
74 bool multiple = false; 74 bool multiple = false;
75 bool duplicate = false; 75 bool duplicate = 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 complete = framer_.InsertPacket( 79 complete = framer_.InsertPacket(
80 payload_.data(), payload_.size(), rtp_header_, &duplicate); 80 &payload_[0], payload_.size(), rtp_header_, &duplicate);
81 EXPECT_TRUE(complete); 81 EXPECT_TRUE(complete);
82 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 82 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
83 EXPECT_TRUE(next_frame); 83 EXPECT_TRUE(next_frame);
84 EXPECT_FALSE(multiple); 84 EXPECT_FALSE(multiple);
85 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 85 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
86 EXPECT_EQ(0u, frame.frame_id); 86 EXPECT_EQ(0u, frame.frame_id);
87 EXPECT_EQ(0u, frame.referenced_frame_id); 87 EXPECT_EQ(0u, frame.referenced_frame_id);
88 framer_.ReleaseFrame(frame.frame_id); 88 framer_.ReleaseFrame(frame.frame_id);
89 89
90 // Incomplete delta. 90 // Incomplete delta.
91 ++rtp_header_.frame_id; 91 ++rtp_header_.frame_id;
92 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1; 92 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
93 rtp_header_.is_key_frame = false; 93 rtp_header_.is_key_frame = false;
94 rtp_header_.max_packet_id = 2; 94 rtp_header_.max_packet_id = 2;
95 complete = framer_.InsertPacket( 95 complete = framer_.InsertPacket(
96 payload_.data(), payload_.size(), rtp_header_, &duplicate); 96 &payload_[0], payload_.size(), rtp_header_, &duplicate);
97 EXPECT_FALSE(complete); 97 EXPECT_FALSE(complete);
98 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 98 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
99 99
100 // Complete delta - can't skip, as incomplete sequence. 100 // Complete delta - can't skip, as incomplete sequence.
101 ++rtp_header_.frame_id; 101 ++rtp_header_.frame_id;
102 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1; 102 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
103 rtp_header_.max_packet_id = 0; 103 rtp_header_.max_packet_id = 0;
104 complete = framer_.InsertPacket( 104 complete = framer_.InsertPacket(
105 payload_.data(), payload_.size(), rtp_header_, &duplicate); 105 &payload_[0], payload_.size(), rtp_header_, &duplicate);
106 EXPECT_TRUE(complete); 106 EXPECT_TRUE(complete);
107 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 107 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
108 } 108 }
109 109
110 TEST_F(FramerTest, DuplicatePackets) { 110 TEST_F(FramerTest, DuplicatePackets) {
111 EncodedFrame frame; 111 EncodedFrame frame;
112 bool next_frame = false; 112 bool next_frame = false;
113 bool complete = false; 113 bool complete = false;
114 bool multiple = false; 114 bool multiple = false;
115 bool duplicate = false; 115 bool duplicate = false;
116 116
117 // Start with an incomplete key frame. 117 // Start with an incomplete key frame.
118 rtp_header_.is_key_frame = true; 118 rtp_header_.is_key_frame = true;
119 rtp_header_.max_packet_id = 1; 119 rtp_header_.max_packet_id = 1;
120 duplicate = true; 120 duplicate = true;
121 complete = framer_.InsertPacket( 121 complete = framer_.InsertPacket(
122 payload_.data(), payload_.size(), rtp_header_, &duplicate); 122 &payload_[0], payload_.size(), rtp_header_, &duplicate);
123 EXPECT_FALSE(complete); 123 EXPECT_FALSE(complete);
124 EXPECT_FALSE(duplicate); 124 EXPECT_FALSE(duplicate);
125 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 125 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
126 126
127 // Add same packet again in incomplete key frame. 127 // Add same packet again in incomplete key frame.
128 duplicate = false; 128 duplicate = false;
129 complete = framer_.InsertPacket( 129 complete = framer_.InsertPacket(
130 payload_.data(), payload_.size(), rtp_header_, &duplicate); 130 &payload_[0], payload_.size(), rtp_header_, &duplicate);
131 EXPECT_FALSE(complete); 131 EXPECT_FALSE(complete);
132 EXPECT_TRUE(duplicate); 132 EXPECT_TRUE(duplicate);
133 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 133 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
134 134
135 // Complete key frame. 135 // Complete key frame.
136 rtp_header_.packet_id = 1; 136 rtp_header_.packet_id = 1;
137 duplicate = true; 137 duplicate = true;
138 complete = framer_.InsertPacket( 138 complete = framer_.InsertPacket(
139 payload_.data(), payload_.size(), rtp_header_, &duplicate); 139 &payload_[0], payload_.size(), rtp_header_, &duplicate);
140 EXPECT_TRUE(complete); 140 EXPECT_TRUE(complete);
141 EXPECT_FALSE(duplicate); 141 EXPECT_FALSE(duplicate);
142 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 142 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
143 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 143 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
144 EXPECT_FALSE(multiple); 144 EXPECT_FALSE(multiple);
145 EXPECT_EQ(0u, frame.referenced_frame_id); 145 EXPECT_EQ(0u, frame.referenced_frame_id);
146 146
147 // Add same packet again in complete key frame. 147 // Add same packet again in complete key frame.
148 duplicate = false; 148 duplicate = false;
149 complete = framer_.InsertPacket( 149 complete = framer_.InsertPacket(
150 payload_.data(), payload_.size(), rtp_header_, &duplicate); 150 &payload_[0], payload_.size(), rtp_header_, &duplicate);
151 EXPECT_FALSE(complete); 151 EXPECT_FALSE(complete);
152 EXPECT_TRUE(duplicate); 152 EXPECT_TRUE(duplicate);
153 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 153 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
154 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 154 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
155 EXPECT_EQ(0u, frame.frame_id); 155 EXPECT_EQ(0u, frame.frame_id);
156 EXPECT_FALSE(multiple); 156 EXPECT_FALSE(multiple);
157 EXPECT_EQ(0u, frame.referenced_frame_id); 157 EXPECT_EQ(0u, frame.referenced_frame_id);
158 framer_.ReleaseFrame(frame.frame_id); 158 framer_.ReleaseFrame(frame.frame_id);
159 159
160 // Incomplete delta frame. 160 // Incomplete delta frame.
161 ++rtp_header_.frame_id; 161 ++rtp_header_.frame_id;
162 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1; 162 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
163 rtp_header_.packet_id = 0; 163 rtp_header_.packet_id = 0;
164 rtp_header_.is_key_frame = false; 164 rtp_header_.is_key_frame = false;
165 duplicate = true; 165 duplicate = true;
166 complete = framer_.InsertPacket( 166 complete = framer_.InsertPacket(
167 payload_.data(), payload_.size(), rtp_header_, &duplicate); 167 &payload_[0], payload_.size(), rtp_header_, &duplicate);
168 EXPECT_FALSE(complete); 168 EXPECT_FALSE(complete);
169 EXPECT_FALSE(duplicate); 169 EXPECT_FALSE(duplicate);
170 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 170 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
171 171
172 // Add same packet again in incomplete delta frame. 172 // Add same packet again in incomplete delta frame.
173 duplicate = false; 173 duplicate = false;
174 complete = framer_.InsertPacket( 174 complete = framer_.InsertPacket(
175 payload_.data(), payload_.size(), rtp_header_, &duplicate); 175 &payload_[0], payload_.size(), rtp_header_, &duplicate);
176 EXPECT_FALSE(complete); 176 EXPECT_FALSE(complete);
177 EXPECT_TRUE(duplicate); 177 EXPECT_TRUE(duplicate);
178 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 178 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
179 179
180 // Complete delta frame. 180 // Complete delta frame.
181 rtp_header_.packet_id = 1; 181 rtp_header_.packet_id = 1;
182 duplicate = true; 182 duplicate = true;
183 complete = framer_.InsertPacket( 183 complete = framer_.InsertPacket(
184 payload_.data(), payload_.size(), rtp_header_, &duplicate); 184 &payload_[0], payload_.size(), rtp_header_, &duplicate);
185 EXPECT_TRUE(complete); 185 EXPECT_TRUE(complete);
186 EXPECT_FALSE(duplicate); 186 EXPECT_FALSE(duplicate);
187 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 187 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
188 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency); 188 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
189 EXPECT_EQ(1u, frame.frame_id); 189 EXPECT_EQ(1u, frame.frame_id);
190 EXPECT_EQ(0u, frame.referenced_frame_id); 190 EXPECT_EQ(0u, frame.referenced_frame_id);
191 EXPECT_FALSE(multiple); 191 EXPECT_FALSE(multiple);
192 192
193 // Add same packet again in complete delta frame. 193 // Add same packet again in complete delta frame.
194 duplicate = false; 194 duplicate = false;
195 complete = framer_.InsertPacket( 195 complete = framer_.InsertPacket(
196 payload_.data(), payload_.size(), rtp_header_, &duplicate); 196 &payload_[0], payload_.size(), rtp_header_, &duplicate);
197 EXPECT_FALSE(complete); 197 EXPECT_FALSE(complete);
198 EXPECT_TRUE(duplicate); 198 EXPECT_TRUE(duplicate);
199 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 199 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
200 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency); 200 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
201 EXPECT_EQ(1u, frame.frame_id); 201 EXPECT_EQ(1u, frame.frame_id);
202 EXPECT_EQ(0u, frame.referenced_frame_id); 202 EXPECT_EQ(0u, frame.referenced_frame_id);
203 EXPECT_FALSE(multiple); 203 EXPECT_FALSE(multiple);
204 } 204 }
205 205
206 TEST_F(FramerTest, ContinuousSequence) { 206 TEST_F(FramerTest, ContinuousSequence) {
207 EncodedFrame frame; 207 EncodedFrame frame;
208 bool next_frame = false; 208 bool next_frame = false;
209 bool complete = false; 209 bool complete = false;
210 bool multiple = false; 210 bool multiple = false;
211 bool duplicate = false; 211 bool duplicate = false;
212 212
213 // Start with a complete key frame. 213 // Start with a complete key frame.
214 rtp_header_.is_key_frame = true; 214 rtp_header_.is_key_frame = true;
215 complete = framer_.InsertPacket( 215 complete = framer_.InsertPacket(
216 payload_.data(), payload_.size(), rtp_header_, &duplicate); 216 &payload_[0], payload_.size(), rtp_header_, &duplicate);
217 EXPECT_TRUE(complete); 217 EXPECT_TRUE(complete);
218 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 218 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
219 EXPECT_TRUE(next_frame); 219 EXPECT_TRUE(next_frame);
220 EXPECT_FALSE(multiple); 220 EXPECT_FALSE(multiple);
221 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 221 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
222 EXPECT_EQ(0u, frame.frame_id); 222 EXPECT_EQ(0u, frame.frame_id);
223 EXPECT_EQ(0u, frame.referenced_frame_id); 223 EXPECT_EQ(0u, frame.referenced_frame_id);
224 framer_.ReleaseFrame(frame.frame_id); 224 framer_.ReleaseFrame(frame.frame_id);
225 225
226 // Complete - not continuous. 226 // Complete - not continuous.
227 rtp_header_.frame_id = 2; 227 rtp_header_.frame_id = 2;
228 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1; 228 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
229 rtp_header_.is_key_frame = false; 229 rtp_header_.is_key_frame = false;
230 complete = framer_.InsertPacket( 230 complete = framer_.InsertPacket(
231 payload_.data(), payload_.size(), rtp_header_, &duplicate); 231 &payload_[0], payload_.size(), rtp_header_, &duplicate);
232 EXPECT_TRUE(complete); 232 EXPECT_TRUE(complete);
233 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 233 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
234 } 234 }
235 235
236 TEST_F(FramerTest, Wrap) { 236 TEST_F(FramerTest, Wrap) {
237 // Insert key frame, frame_id = 255 (will jump to that) 237 // Insert key frame, frame_id = 255 (will jump to that)
238 EncodedFrame frame; 238 EncodedFrame frame;
239 bool next_frame = false; 239 bool next_frame = false;
240 bool multiple = true; 240 bool multiple = true;
241 bool duplicate = false; 241 bool duplicate = false;
242 242
243 // Start with a complete key frame. 243 // Start with a complete key frame.
244 rtp_header_.is_key_frame = true; 244 rtp_header_.is_key_frame = true;
245 rtp_header_.frame_id = 255; 245 rtp_header_.frame_id = 255;
246 rtp_header_.reference_frame_id = 255; 246 rtp_header_.reference_frame_id = 255;
247 framer_.InsertPacket( 247 framer_.InsertPacket(
248 payload_.data(), payload_.size(), rtp_header_, &duplicate); 248 &payload_[0], payload_.size(), rtp_header_, &duplicate);
249 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 249 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
250 EXPECT_TRUE(next_frame); 250 EXPECT_TRUE(next_frame);
251 EXPECT_FALSE(multiple); 251 EXPECT_FALSE(multiple);
252 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 252 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
253 EXPECT_EQ(255u, frame.frame_id); 253 EXPECT_EQ(255u, frame.frame_id);
254 EXPECT_EQ(255u, frame.referenced_frame_id); 254 EXPECT_EQ(255u, frame.referenced_frame_id);
255 framer_.ReleaseFrame(frame.frame_id); 255 framer_.ReleaseFrame(frame.frame_id);
256 256
257 // Insert wrapped delta frame - should be continuous. 257 // Insert wrapped delta frame - should be continuous.
258 rtp_header_.is_key_frame = false; 258 rtp_header_.is_key_frame = false;
259 rtp_header_.frame_id = 256; 259 rtp_header_.frame_id = 256;
260 framer_.InsertPacket( 260 framer_.InsertPacket(
261 payload_.data(), payload_.size(), rtp_header_, &duplicate); 261 &payload_[0], payload_.size(), rtp_header_, &duplicate);
262 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 262 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
263 EXPECT_TRUE(next_frame); 263 EXPECT_TRUE(next_frame);
264 EXPECT_FALSE(multiple); 264 EXPECT_FALSE(multiple);
265 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency); 265 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
266 EXPECT_EQ(256u, frame.frame_id); 266 EXPECT_EQ(256u, frame.frame_id);
267 EXPECT_EQ(255u, frame.referenced_frame_id); 267 EXPECT_EQ(255u, frame.referenced_frame_id);
268 framer_.ReleaseFrame(frame.frame_id); 268 framer_.ReleaseFrame(frame.frame_id);
269 } 269 }
270 270
271 TEST_F(FramerTest, Reset) { 271 TEST_F(FramerTest, Reset) {
272 EncodedFrame frame; 272 EncodedFrame frame;
273 bool next_frame = false; 273 bool next_frame = false;
274 bool complete = false; 274 bool complete = false;
275 bool multiple = true; 275 bool multiple = true;
276 bool duplicate = false; 276 bool duplicate = false;
277 277
278 // Start with a complete key frame. 278 // Start with a complete key frame.
279 rtp_header_.is_key_frame = true; 279 rtp_header_.is_key_frame = true;
280 complete = framer_.InsertPacket( 280 complete = framer_.InsertPacket(
281 payload_.data(), payload_.size(), rtp_header_, &duplicate); 281 &payload_[0], payload_.size(), rtp_header_, &duplicate);
282 EXPECT_TRUE(complete); 282 EXPECT_TRUE(complete);
283 framer_.Reset(); 283 framer_.Reset();
284 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 284 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
285 } 285 }
286 286
287 TEST_F(FramerTest, RequireKeyAfterReset) { 287 TEST_F(FramerTest, RequireKeyAfterReset) {
288 EncodedFrame frame; 288 EncodedFrame frame;
289 bool next_frame = false; 289 bool next_frame = false;
290 bool multiple = false; 290 bool multiple = false;
291 bool duplicate = false; 291 bool duplicate = false;
292 292
293 framer_.Reset(); 293 framer_.Reset();
294 294
295 // Start with a complete key frame. 295 // Start with a complete key frame.
296 rtp_header_.is_key_frame = false; 296 rtp_header_.is_key_frame = false;
297 rtp_header_.frame_id = 0; 297 rtp_header_.frame_id = 0;
298 framer_.InsertPacket( 298 framer_.InsertPacket(
299 payload_.data(), payload_.size(), rtp_header_, &duplicate); 299 &payload_[0], payload_.size(), rtp_header_, &duplicate);
300 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 300 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
301 rtp_header_.frame_id = 1; 301 rtp_header_.frame_id = 1;
302 rtp_header_.reference_frame_id = 1; 302 rtp_header_.reference_frame_id = 1;
303 rtp_header_.is_key_frame = true; 303 rtp_header_.is_key_frame = true;
304 framer_.InsertPacket( 304 framer_.InsertPacket(
305 payload_.data(), payload_.size(), rtp_header_, &duplicate); 305 &payload_[0], payload_.size(), rtp_header_, &duplicate);
306 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 306 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
307 EXPECT_TRUE(next_frame); 307 EXPECT_TRUE(next_frame);
308 EXPECT_TRUE(multiple); 308 EXPECT_TRUE(multiple);
309 } 309 }
310 310
311 TEST_F(FramerTest, BasicNonLastReferenceId) { 311 TEST_F(FramerTest, BasicNonLastReferenceId) {
312 EncodedFrame frame; 312 EncodedFrame frame;
313 bool next_frame = false; 313 bool next_frame = false;
314 bool multiple = false; 314 bool multiple = false;
315 bool duplicate = false; 315 bool duplicate = false;
316 316
317 rtp_header_.is_key_frame = true; 317 rtp_header_.is_key_frame = true;
318 rtp_header_.frame_id = 0; 318 rtp_header_.frame_id = 0;
319 framer_.InsertPacket( 319 framer_.InsertPacket(
320 payload_.data(), payload_.size(), rtp_header_, &duplicate); 320 &payload_[0], payload_.size(), rtp_header_, &duplicate);
321 321
322 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 322 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
323 EXPECT_FALSE(multiple); 323 EXPECT_FALSE(multiple);
324 framer_.ReleaseFrame(frame.frame_id); 324 framer_.ReleaseFrame(frame.frame_id);
325 325
326 rtp_header_.is_key_frame = false; 326 rtp_header_.is_key_frame = false;
327 rtp_header_.reference_frame_id = 0; 327 rtp_header_.reference_frame_id = 0;
328 rtp_header_.frame_id = 5; 328 rtp_header_.frame_id = 5;
329 framer_.InsertPacket( 329 framer_.InsertPacket(
330 payload_.data(), payload_.size(), rtp_header_, &duplicate); 330 &payload_[0], payload_.size(), rtp_header_, &duplicate);
331 331
332 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 332 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
333 EXPECT_FALSE(next_frame); 333 EXPECT_FALSE(next_frame);
334 EXPECT_FALSE(multiple); 334 EXPECT_FALSE(multiple);
335 } 335 }
336 336
337 TEST_F(FramerTest, InOrderReferenceFrameSelection) { 337 TEST_F(FramerTest, InOrderReferenceFrameSelection) {
338 // Create pattern: 0, 1, 4, 5. 338 // Create pattern: 0, 1, 4, 5.
339 EncodedFrame frame; 339 EncodedFrame frame;
340 bool next_frame = false; 340 bool next_frame = false;
341 bool multiple = false; 341 bool multiple = false;
342 bool duplicate = false; 342 bool duplicate = false;
343 343
344 rtp_header_.is_key_frame = true; 344 rtp_header_.is_key_frame = true;
345 rtp_header_.frame_id = 0; 345 rtp_header_.frame_id = 0;
346 framer_.InsertPacket( 346 framer_.InsertPacket(
347 payload_.data(), payload_.size(), rtp_header_, &duplicate); 347 &payload_[0], payload_.size(), rtp_header_, &duplicate);
348 rtp_header_.is_key_frame = false; 348 rtp_header_.is_key_frame = false;
349 rtp_header_.frame_id = 1; 349 rtp_header_.frame_id = 1;
350 framer_.InsertPacket( 350 framer_.InsertPacket(
351 payload_.data(), payload_.size(), rtp_header_, &duplicate); 351 &payload_[0], payload_.size(), rtp_header_, &duplicate);
352 352
353 // Insert frame #2 partially. 353 // Insert frame #2 partially.
354 rtp_header_.frame_id = 2; 354 rtp_header_.frame_id = 2;
355 rtp_header_.max_packet_id = 1; 355 rtp_header_.max_packet_id = 1;
356 framer_.InsertPacket( 356 framer_.InsertPacket(
357 payload_.data(), payload_.size(), rtp_header_, &duplicate); 357 &payload_[0], payload_.size(), rtp_header_, &duplicate);
358 rtp_header_.frame_id = 4; 358 rtp_header_.frame_id = 4;
359 rtp_header_.max_packet_id = 0; 359 rtp_header_.max_packet_id = 0;
360 rtp_header_.reference_frame_id = 0; 360 rtp_header_.reference_frame_id = 0;
361 framer_.InsertPacket( 361 framer_.InsertPacket(
362 payload_.data(), payload_.size(), rtp_header_, &duplicate); 362 &payload_[0], payload_.size(), rtp_header_, &duplicate);
363 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 363 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
364 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 364 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
365 EXPECT_EQ(0u, frame.frame_id); 365 EXPECT_EQ(0u, frame.frame_id);
366 EXPECT_EQ(0u, frame.referenced_frame_id); 366 EXPECT_EQ(0u, frame.referenced_frame_id);
367 EXPECT_FALSE(multiple); 367 EXPECT_FALSE(multiple);
368 framer_.ReleaseFrame(frame.frame_id); 368 framer_.ReleaseFrame(frame.frame_id);
369 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 369 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
370 EXPECT_TRUE(next_frame); 370 EXPECT_TRUE(next_frame);
371 EXPECT_TRUE(multiple); 371 EXPECT_TRUE(multiple);
372 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency); 372 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
373 EXPECT_EQ(1u, frame.frame_id); 373 EXPECT_EQ(1u, frame.frame_id);
374 EXPECT_EQ(0u, frame.referenced_frame_id); 374 EXPECT_EQ(0u, frame.referenced_frame_id);
375 framer_.ReleaseFrame(frame.frame_id); 375 framer_.ReleaseFrame(frame.frame_id);
376 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 376 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
377 EXPECT_FALSE(next_frame); 377 EXPECT_FALSE(next_frame);
378 EXPECT_FALSE(multiple); 378 EXPECT_FALSE(multiple);
379 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency); 379 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
380 EXPECT_EQ(4u, frame.frame_id); 380 EXPECT_EQ(4u, frame.frame_id);
381 EXPECT_EQ(0u, frame.referenced_frame_id); 381 EXPECT_EQ(0u, frame.referenced_frame_id);
382 framer_.ReleaseFrame(frame.frame_id); 382 framer_.ReleaseFrame(frame.frame_id);
383 // Insert remaining packet of frame #2 - should no be continuous. 383 // Insert remaining packet of frame #2 - should no be continuous.
384 rtp_header_.frame_id = 2; 384 rtp_header_.frame_id = 2;
385 rtp_header_.packet_id = 1; 385 rtp_header_.packet_id = 1;
386 framer_.InsertPacket( 386 framer_.InsertPacket(
387 payload_.data(), payload_.size(), rtp_header_, &duplicate); 387 &payload_[0], payload_.size(), rtp_header_, &duplicate);
388 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 388 EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
389 rtp_header_.frame_id = 5; 389 rtp_header_.frame_id = 5;
390 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1; 390 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
391 rtp_header_.packet_id = 0; 391 rtp_header_.packet_id = 0;
392 rtp_header_.max_packet_id = 0; 392 rtp_header_.max_packet_id = 0;
393 framer_.InsertPacket( 393 framer_.InsertPacket(
394 payload_.data(), payload_.size(), rtp_header_, &duplicate); 394 &payload_[0], payload_.size(), rtp_header_, &duplicate);
395 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 395 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
396 EXPECT_TRUE(next_frame); 396 EXPECT_TRUE(next_frame);
397 EXPECT_FALSE(multiple); 397 EXPECT_FALSE(multiple);
398 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency); 398 EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
399 EXPECT_EQ(5u, frame.frame_id); 399 EXPECT_EQ(5u, frame.frame_id);
400 EXPECT_EQ(4u, frame.referenced_frame_id); 400 EXPECT_EQ(4u, frame.referenced_frame_id);
401 } 401 }
402 402
403 TEST_F(FramerTest, AudioWrap) { 403 TEST_F(FramerTest, AudioWrap) {
404 // All audio frames are marked as key frames. 404 // All audio frames are marked as key frames.
405 EncodedFrame frame; 405 EncodedFrame frame;
406 bool next_frame = false; 406 bool next_frame = false;
407 bool multiple = false; 407 bool multiple = false;
408 bool duplicate = false; 408 bool duplicate = false;
409 409
410 rtp_header_.is_key_frame = true; 410 rtp_header_.is_key_frame = true;
411 rtp_header_.frame_id = 254; 411 rtp_header_.frame_id = 254;
412 rtp_header_.reference_frame_id = 254; 412 rtp_header_.reference_frame_id = 254;
413 413
414 framer_.InsertPacket( 414 framer_.InsertPacket(
415 payload_.data(), payload_.size(), rtp_header_, &duplicate); 415 &payload_[0], payload_.size(), rtp_header_, &duplicate);
416 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 416 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
417 EXPECT_TRUE(next_frame); 417 EXPECT_TRUE(next_frame);
418 EXPECT_FALSE(multiple); 418 EXPECT_FALSE(multiple);
419 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 419 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
420 EXPECT_EQ(254u, frame.frame_id); 420 EXPECT_EQ(254u, frame.frame_id);
421 EXPECT_EQ(254u, frame.referenced_frame_id); 421 EXPECT_EQ(254u, frame.referenced_frame_id);
422 framer_.ReleaseFrame(frame.frame_id); 422 framer_.ReleaseFrame(frame.frame_id);
423 423
424 rtp_header_.frame_id = 255; 424 rtp_header_.frame_id = 255;
425 rtp_header_.reference_frame_id = 255; 425 rtp_header_.reference_frame_id = 255;
426 framer_.InsertPacket( 426 framer_.InsertPacket(
427 payload_.data(), payload_.size(), rtp_header_, &duplicate); 427 &payload_[0], payload_.size(), rtp_header_, &duplicate);
428 428
429 // Insert wrapped frame - should be continuous. 429 // Insert wrapped frame - should be continuous.
430 rtp_header_.frame_id = 256; 430 rtp_header_.frame_id = 256;
431 rtp_header_.reference_frame_id = 256; 431 rtp_header_.reference_frame_id = 256;
432 framer_.InsertPacket( 432 framer_.InsertPacket(
433 payload_.data(), payload_.size(), rtp_header_, &duplicate); 433 &payload_[0], payload_.size(), rtp_header_, &duplicate);
434 434
435 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 435 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
436 EXPECT_TRUE(next_frame); 436 EXPECT_TRUE(next_frame);
437 EXPECT_TRUE(multiple); 437 EXPECT_TRUE(multiple);
438 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 438 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
439 EXPECT_EQ(255u, frame.frame_id); 439 EXPECT_EQ(255u, frame.frame_id);
440 EXPECT_EQ(255u, frame.referenced_frame_id); 440 EXPECT_EQ(255u, frame.referenced_frame_id);
441 framer_.ReleaseFrame(frame.frame_id); 441 framer_.ReleaseFrame(frame.frame_id);
442 442
443 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 443 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
(...skipping 10 matching lines...) Expand all
454 EncodedFrame frame; 454 EncodedFrame frame;
455 bool next_frame = false; 455 bool next_frame = false;
456 bool multiple = true; 456 bool multiple = true;
457 bool duplicate = false; 457 bool duplicate = false;
458 458
459 // Insert and get first packet. 459 // Insert and get first packet.
460 rtp_header_.is_key_frame = true; 460 rtp_header_.is_key_frame = true;
461 rtp_header_.frame_id = 253; 461 rtp_header_.frame_id = 253;
462 rtp_header_.reference_frame_id = 253; 462 rtp_header_.reference_frame_id = 253;
463 framer_.InsertPacket( 463 framer_.InsertPacket(
464 payload_.data(), payload_.size(), rtp_header_, &duplicate); 464 &payload_[0], payload_.size(), rtp_header_, &duplicate);
465 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 465 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
466 EXPECT_TRUE(next_frame); 466 EXPECT_TRUE(next_frame);
467 EXPECT_FALSE(multiple); 467 EXPECT_FALSE(multiple);
468 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 468 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
469 EXPECT_EQ(253u, frame.frame_id); 469 EXPECT_EQ(253u, frame.frame_id);
470 EXPECT_EQ(253u, frame.referenced_frame_id); 470 EXPECT_EQ(253u, frame.referenced_frame_id);
471 framer_.ReleaseFrame(frame.frame_id); 471 framer_.ReleaseFrame(frame.frame_id);
472 472
473 // Insert third and fourth packets. 473 // Insert third and fourth packets.
474 rtp_header_.frame_id = 255; 474 rtp_header_.frame_id = 255;
475 rtp_header_.reference_frame_id = 255; 475 rtp_header_.reference_frame_id = 255;
476 framer_.InsertPacket( 476 framer_.InsertPacket(
477 payload_.data(), payload_.size(), rtp_header_, &duplicate); 477 &payload_[0], payload_.size(), rtp_header_, &duplicate);
478 rtp_header_.frame_id = 256; 478 rtp_header_.frame_id = 256;
479 rtp_header_.reference_frame_id = 256; 479 rtp_header_.reference_frame_id = 256;
480 framer_.InsertPacket( 480 framer_.InsertPacket(
481 payload_.data(), payload_.size(), rtp_header_, &duplicate); 481
482 &payload_[0], payload_.size(), rtp_header_, &duplicate);
482 483
483 // Get third and fourth packets. 484 // Get third and fourth packets.
484 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 485 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
485 EXPECT_FALSE(next_frame); 486 EXPECT_FALSE(next_frame);
486 EXPECT_TRUE(multiple); 487 EXPECT_TRUE(multiple);
487 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 488 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
488 EXPECT_EQ(255u, frame.frame_id); 489 EXPECT_EQ(255u, frame.frame_id);
489 EXPECT_EQ(255u, frame.referenced_frame_id); 490 EXPECT_EQ(255u, frame.referenced_frame_id);
490 framer_.ReleaseFrame(frame.frame_id); 491 framer_.ReleaseFrame(frame.frame_id);
491 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); 492 EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
492 EXPECT_TRUE(next_frame); 493 EXPECT_TRUE(next_frame);
493 EXPECT_FALSE(multiple); 494 EXPECT_FALSE(multiple);
494 EXPECT_EQ(EncodedFrame::KEY, frame.dependency); 495 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
495 EXPECT_EQ(256u, frame.frame_id); 496 EXPECT_EQ(256u, frame.frame_id);
496 EXPECT_EQ(256u, frame.referenced_frame_id); 497 EXPECT_EQ(256u, frame.referenced_frame_id);
497 framer_.ReleaseFrame(frame.frame_id); 498 framer_.ReleaseFrame(frame.frame_id);
498 } 499 }
499 500
500 } // namespace cast 501 } // namespace cast
501 } // namespace media 502 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/net/rtp/frame_buffer_unittest.cc ('k') | media/cast/net/rtp/rtp_packetizer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698