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

Side by Side Diff: remoting/base/codec_test.cc

Issue 5635003: Reenable encoder/decoder tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 10 years 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 | « remoting/base/codec_test.h ('k') | remoting/base/encode_decode_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <deque> 5 #include <deque>
6 #include <stdlib.h> 6 #include <stdlib.h>
7 7
8 #include "gfx/rect.h" 8 #include "gfx/rect.h"
9 #include "media/base/video_frame.h" 9 #include "media/base/video_frame.h"
10 #include "remoting/base/codec_test.h" 10 #include "remoting/base/codec_test.h"
(...skipping 11 matching lines...) Expand all
22 static const gfx::Rect kTestRects[] = { 22 static const gfx::Rect kTestRects[] = {
23 gfx::Rect(0, 0, kWidth, kHeight), 23 gfx::Rect(0, 0, kWidth, kHeight),
24 gfx::Rect(0, 0, kWidth / 2, kHeight / 2), 24 gfx::Rect(0, 0, kWidth / 2, kHeight / 2),
25 gfx::Rect(kWidth / 2, kHeight / 2, kWidth / 2, kHeight / 2), 25 gfx::Rect(kWidth / 2, kHeight / 2, kWidth / 2, kHeight / 2),
26 gfx::Rect(16, 16, 16, 16), 26 gfx::Rect(16, 16, 16, 16),
27 gfx::Rect(128, 64, 32, 32), 27 gfx::Rect(128, 64, 32, 32),
28 }; 28 };
29 29
30 namespace remoting { 30 namespace remoting {
31 31
32 // A class to test that the state transition of the Encoder is correct.
33 class EncoderStateTester {
34 public:
35 EncoderStateTester()
36 : next_state_(Encoder::EncodingStarting) {
37 }
38
39 ~EncoderStateTester() {
40 EXPECT_EQ(Encoder::EncodingStarting, next_state_);
41 }
42
43 // Set the state output of the Encoder.
44 void ReceivedState(Encoder::EncodingState state) {
45 if (state & Encoder::EncodingStarting) {
46 EXPECT_EQ(Encoder::EncodingStarting, next_state_);
47 next_state_ = Encoder::EncodingInProgress | Encoder::EncodingEnded;
48 } else {
49 EXPECT_FALSE(next_state_ & Encoder::EncodingStarting);
50 }
51
52 if (state & Encoder::EncodingInProgress) {
53 EXPECT_TRUE(next_state_ & Encoder::EncodingInProgress);
54 }
55
56 if (state & Encoder::EncodingEnded) {
57 EXPECT_TRUE(next_state_ & Encoder::EncodingEnded);
58 next_state_ = Encoder::EncodingStarting;
59 }
60 }
61
62 private:
63 Encoder::EncodingState next_state_;
64
65 DISALLOW_COPY_AND_ASSIGN(EncoderStateTester);
66 };
67
68 // A class to test the message output of the encoder. 32 // A class to test the message output of the encoder.
69 class EncoderMessageTester { 33 class EncoderMessageTester {
70 public: 34 public:
71 EncoderMessageTester() 35 EncoderMessageTester()
72 : begin_rect_(0), 36 : begin_rect_(0),
73 rect_data_(0), 37 rect_data_(0),
74 end_rect_(0), 38 end_rect_(0),
75 added_rects_(0), 39 added_rects_(0),
76 state_(kWaitingForBeginRect), 40 state_(kWaitingForBeginRect),
77 strict_(false) { 41 strict_(false) {
78 } 42 }
79 43
80 ~EncoderMessageTester() { 44 ~EncoderMessageTester() {
81 EXPECT_EQ(begin_rect_, end_rect_); 45 EXPECT_EQ(begin_rect_, end_rect_);
82 EXPECT_GT(begin_rect_, 0); 46 EXPECT_GT(begin_rect_, 0);
83 EXPECT_EQ(kWaitingForBeginRect, state_); 47 EXPECT_EQ(kWaitingForBeginRect, state_);
84 if (strict_) { 48 if (strict_) {
85 EXPECT_EQ(added_rects_, begin_rect_); 49 EXPECT_EQ(added_rects_, begin_rect_);
86 } 50 }
87 } 51 }
88 52
89 // Test that we received the correct message. 53 // Test that we received the correct packet.
90 void ReceivedMessage(ChromotingHostMessage* message) { 54 void ReceivedPacket(VideoPacket* packet) {
91 EXPECT_TRUE(message->has_update_stream_packet());
92
93 if (state_ == kWaitingForBeginRect) { 55 if (state_ == kWaitingForBeginRect) {
94 EXPECT_TRUE(message->update_stream_packet().has_begin_rect()); 56 EXPECT_TRUE((packet->flags() & VideoPacket::FIRST_PACKET) != 0);
95 state_ = kWaitingForRectData; 57 state_ = kWaitingForRectData;
96 ++begin_rect_; 58 ++begin_rect_;
97 59
98 if (strict_) { 60 if (strict_) {
99 gfx::Rect rect = rects_.front(); 61 gfx::Rect rect = rects_.front();
100 rects_.pop_front(); 62 rects_.pop_front();
101 EXPECT_EQ(rect.x(), message->update_stream_packet().begin_rect().x()); 63 EXPECT_EQ(rect.x(), packet->format().x());
102 EXPECT_EQ(rect.y(), message->update_stream_packet().begin_rect().y()); 64 EXPECT_EQ(rect.y(), packet->format().y());
103 EXPECT_EQ(rect.width(), 65 EXPECT_EQ(rect.width(), packet->format().width());
104 message->update_stream_packet().begin_rect().width()); 66 EXPECT_EQ(rect.height(), packet->format().height());
105 EXPECT_EQ(rect.height(),
106 message->update_stream_packet().begin_rect().height());
107 } 67 }
108 } else { 68 } else {
109 EXPECT_FALSE(message->update_stream_packet().has_begin_rect()); 69 EXPECT_FALSE((packet->flags() & VideoPacket::FIRST_PACKET) != 0);
110 } 70 }
111 71
112 if (state_ == kWaitingForRectData) { 72 if (state_ == kWaitingForRectData) {
113 if (message->update_stream_packet().has_rect_data()) { 73 if (packet->has_data()) {
114 ++rect_data_; 74 ++rect_data_;
115 } 75 }
116 76
117 if (message->update_stream_packet().has_end_rect()) { 77 if ((packet->flags() & VideoPacket::LAST_PACKET) != 0) {
118 // Expect that we have received some data. 78 // Expect that we have received some data.
119 EXPECT_GT(rect_data_, 0); 79 EXPECT_GT(rect_data_, 0);
120 rect_data_ = 0; 80 rect_data_ = 0;
121 state_ = kWaitingForBeginRect; 81 state_ = kWaitingForBeginRect;
122 ++end_rect_; 82 ++end_rect_;
123 } 83 }
124 } 84 }
125 } 85 }
126 86
127 void set_strict(bool strict) { 87 void set_strict(bool strict) {
(...skipping 20 matching lines...) Expand all
148 108
149 std::deque<gfx::Rect> rects_; 109 std::deque<gfx::Rect> rects_;
150 110
151 DISALLOW_COPY_AND_ASSIGN(EncoderMessageTester); 111 DISALLOW_COPY_AND_ASSIGN(EncoderMessageTester);
152 }; 112 };
153 113
154 class DecoderTester { 114 class DecoderTester {
155 public: 115 public:
156 DecoderTester(Decoder* decoder) 116 DecoderTester(Decoder* decoder)
157 : strict_(false), 117 : strict_(false),
158 decoder_(decoder), 118 decoder_(decoder) {
159 decode_done_(false) {
160 media::VideoFrame::CreateFrame(media::VideoFrame::RGB32, 119 media::VideoFrame::CreateFrame(media::VideoFrame::RGB32,
161 kWidth, kHeight, 120 kWidth, kHeight,
162 base::TimeDelta(), 121 base::TimeDelta(),
163 base::TimeDelta(), &frame_); 122 base::TimeDelta(), &frame_);
164 EXPECT_TRUE(frame_.get()); 123 EXPECT_TRUE(frame_.get());
124 decoder_->Initialize(frame_);
165 } 125 }
166 126
167 void ReceivedMessage(ChromotingHostMessage* message) { 127 void Reset() {
168 if (message->has_update_stream_packet()) { 128 rects_.clear();
169 EXPECT_TRUE(decoder_->PartialDecode(message)); 129 update_rects_.clear();
170 return; 130 }
131
132 void ReceivedPacket(VideoPacket* packet) {
133 Decoder::DecodeResult result = decoder_->DecodePacket(packet);
134
135 ASSERT_NE(Decoder::DECODE_ERROR, result);
136
137 if (result == Decoder::DECODE_DONE) {
138 decoder_->GetUpdatedRects(&update_rects_);
171 } 139 }
172
173 if (message->has_begin_update_stream()) {
174 EXPECT_TRUE(decoder_->BeginDecode(
175 frame_, &update_rects_,
176 NewRunnableMethod(this, &DecoderTester::OnPartialDecodeDone),
177 NewRunnableMethod(this, &DecoderTester::OnDecodeDone)));
178 }
179
180 if (message->has_end_update_stream()) {
181 decoder_->EndDecode();
182 }
183 delete message;
184 } 140 }
185 141
186 void set_strict(bool strict) { 142 void set_strict(bool strict) {
187 strict_ = strict; 143 strict_ = strict;
188 } 144 }
189 145
190 void set_capture_data(scoped_refptr<CaptureData> data) { 146 void set_capture_data(scoped_refptr<CaptureData> data) {
191 capture_data_ = data; 147 capture_data_ = data;
192 } 148 }
193 149
194 void AddRects(const gfx::Rect* rects, int count) { 150 void AddRects(const gfx::Rect* rects, int count) {
195 rects_.insert(rects_.begin() + rects_.size(), rects, rects + count); 151 rects_.insert(rects_.begin() + rects_.size(), rects, rects + count);
196 } 152 }
197 153
198 bool decode_done() const { return decode_done_; } 154 void VerifyResults() {
199 void reset_decode_done() { decode_done_ = false; }
200
201 private:
202 void OnPartialDecodeDone() {
203 if (!strict_) 155 if (!strict_)
204 return; 156 return;
205 157
158 ASSERT_TRUE(capture_data_.get());
159
206 // Test the content of the update rect. 160 // Test the content of the update rect.
161 ASSERT_EQ(rects_.size(), update_rects_.size());
207 for (size_t i = 0; i < update_rects_.size(); ++i) { 162 for (size_t i = 0; i < update_rects_.size(); ++i) {
208 EXPECT_FALSE(rects_.empty()); 163 gfx::Rect rect = rects_[i];
209 gfx::Rect rect = rects_.front();
210 rects_.pop_front();
211 EXPECT_EQ(rect, update_rects_[i]); 164 EXPECT_EQ(rect, update_rects_[i]);
212 165
213 EXPECT_EQ(frame_->stride(0), capture_data_->data_planes().strides[0]); 166 EXPECT_EQ(frame_->stride(0), capture_data_->data_planes().strides[0]);
214 const int stride = frame_->stride(0); 167 const int stride = frame_->stride(0);
215 const int offset = stride * update_rects_[i].y() + 168 const int offset = stride * update_rects_[i].y() +
216 kBytesPerPixel * update_rects_[i].x(); 169 kBytesPerPixel * update_rects_[i].x();
217 const uint8* original = capture_data_->data_planes().data[0] + offset; 170 const uint8* original = capture_data_->data_planes().data[0] + offset;
218 const uint8* decoded = frame_->data(0) + offset; 171 const uint8* decoded = frame_->data(0) + offset;
219 const int row_size = kBytesPerPixel * update_rects_[i].width(); 172 const int row_size = kBytesPerPixel * update_rects_[i].width();
220 for (int y = 0; y < update_rects_[i].height(); ++y) { 173 for (int y = 0; y < update_rects_[i].height(); ++y) {
221 EXPECT_EQ(0, memcmp(original, decoded, row_size)) 174 EXPECT_EQ(0, memcmp(original, decoded, row_size))
222 << "Row " << y << " is different"; 175 << "Row " << y << " is different";
223 original += stride; 176 original += stride;
224 decoded += stride; 177 decoded += stride;
225 } 178 }
226 } 179 }
227 } 180 }
228 181
229 void OnDecodeDone() { 182 private:
230 decode_done_ = true;
231 if (!strict_)
232 return;
233
234 EXPECT_TRUE(capture_data_.get());
235 for (int i = 0; i < DataPlanes::kPlaneCount; ++i) {
236 if (!frame_->data(i) || !capture_data_->data_planes().data[i])
237 continue;
238 // TODO(hclam): HAndle YUV.
239 int size = capture_data_->data_planes().strides[i] * kHeight;
240 EXPECT_EQ(0, memcmp(capture_data_->data_planes().data[i],
241 frame_->data(i), size));
242 }
243 }
244
245 bool strict_; 183 bool strict_;
246 std::deque<gfx::Rect> rects_; 184 std::deque<gfx::Rect> rects_;
247 UpdatedRects update_rects_; 185 UpdatedRects update_rects_;
248 Decoder* decoder_; 186 Decoder* decoder_;
249 scoped_refptr<media::VideoFrame> frame_; 187 scoped_refptr<media::VideoFrame> frame_;
250 scoped_refptr<CaptureData> capture_data_; 188 scoped_refptr<CaptureData> capture_data_;
251 bool decode_done_;
252 189
253 DISALLOW_COPY_AND_ASSIGN(DecoderTester); 190 DISALLOW_COPY_AND_ASSIGN(DecoderTester);
254 }; 191 };
255 192
256 // The EncoderTester provides a hook for retrieving the data, and passing the 193 // The EncoderTester provides a hook for retrieving the data, and passing the
257 // message to other subprograms for validaton. 194 // message to other subprograms for validaton.
258 class EncoderTester { 195 class EncoderTester {
259 public: 196 public:
260 EncoderTester(EncoderMessageTester* message_tester, 197 EncoderTester(EncoderMessageTester* message_tester)
261 EncoderStateTester* state_tester)
262 : message_tester_(message_tester), 198 : message_tester_(message_tester),
263 state_tester_(state_tester),
264 decoder_tester_(NULL), 199 decoder_tester_(NULL),
265 data_available_(0) { 200 data_available_(0) {
266 } 201 }
267 202
268 ~EncoderTester() { 203 ~EncoderTester() {
269 EXPECT_GT(data_available_, 0); 204 EXPECT_GT(data_available_, 0);
270 } 205 }
271 206
272 void DataAvailable(ChromotingHostMessage* message, 207 void DataAvailable(VideoPacket *packet) {
273 Encoder::EncodingState state) {
274 ++data_available_; 208 ++data_available_;
275 message_tester_->ReceivedMessage(message); 209 message_tester_->ReceivedPacket(packet);
276 state_tester_->ReceivedState(state);
277 210
278 // Send the message to the DecoderTester. 211 // Send the message to the DecoderTester.
279 if (decoder_tester_) { 212 if (decoder_tester_) {
280 if (state & Encoder::EncodingStarting) { 213 decoder_tester_->ReceivedPacket(packet);
281 ChromotingHostMessage* begin_update = new ChromotingHostMessage(); 214 }
282 begin_update->mutable_begin_update_stream();
283 decoder_tester_->ReceivedMessage(begin_update);
284 }
285 215
286 if (state & Encoder::EncodingInProgress) { 216 delete packet;
287 decoder_tester_->ReceivedMessage(message);
288 }
289
290 if (state & Encoder::EncodingEnded) {
291 ChromotingHostMessage* end_update = new ChromotingHostMessage();
292 end_update->mutable_end_update_stream();
293 decoder_tester_->ReceivedMessage(end_update);
294 }
295 } else {
296 delete message;
297 }
298 } 217 }
299 218
300 void AddRects(const gfx::Rect* rects, int count) { 219 void AddRects(const gfx::Rect* rects, int count) {
301 message_tester_->AddRects(rects, count); 220 message_tester_->AddRects(rects, count);
302 } 221 }
303 222
304 void set_decoder_tester(DecoderTester* decoder_tester) { 223 void set_decoder_tester(DecoderTester* decoder_tester) {
305 decoder_tester_ = decoder_tester; 224 decoder_tester_ = decoder_tester;
306 } 225 }
307 226
308 private: 227 private:
309 EncoderMessageTester* message_tester_; 228 EncoderMessageTester* message_tester_;
310 EncoderStateTester* state_tester_;
311 DecoderTester* decoder_tester_; 229 DecoderTester* decoder_tester_;
312 int data_available_; 230 int data_available_;
313 231
314 DISALLOW_COPY_AND_ASSIGN(EncoderTester); 232 DISALLOW_COPY_AND_ASSIGN(EncoderTester);
315 }; 233 };
316 234
317 scoped_refptr<CaptureData> PrepareEncodeData(PixelFormat format, 235 scoped_refptr<CaptureData> PrepareEncodeData(media::VideoFrame::Format format,
318 uint8** memory) { 236 uint8** memory) {
319 // TODO(hclam): Support also YUV format. 237 // TODO(hclam): Support also YUV format.
320 CHECK(format == PIXEL_FORMAT_RGB32); 238 CHECK_EQ(format, media::VideoFrame::RGB32);
321 int size = kWidth * kHeight * kBytesPerPixel; 239 int size = kWidth * kHeight * kBytesPerPixel;
322 240
323 *memory = new uint8[size]; 241 *memory = new uint8[size];
324 srand(0); 242 srand(0);
325 for (int i = 0; i < size; ++i) { 243 for (int i = 0; i < size; ++i) {
326 (*memory)[i] = rand() % 256; 244 (*memory)[i] = rand() % 256;
327 } 245 }
328 246
329 DataPlanes planes; 247 DataPlanes planes;
330 memset(planes.data, 0, sizeof(planes.data)); 248 memset(planes.data, 0, sizeof(planes.data));
(...skipping 17 matching lines...) Expand all
348 tester->AddRects(rects, count); 266 tester->AddRects(rects, count);
349 267
350 encoder->Encode(data, true, 268 encoder->Encode(data, true,
351 NewCallback(tester, &EncoderTester::DataAvailable)); 269 NewCallback(tester, &EncoderTester::DataAvailable));
352 } 270 }
353 271
354 void TestEncoder(Encoder* encoder, bool strict) { 272 void TestEncoder(Encoder* encoder, bool strict) {
355 EncoderMessageTester message_tester; 273 EncoderMessageTester message_tester;
356 message_tester.set_strict(strict); 274 message_tester.set_strict(strict);
357 275
358 EncoderStateTester state_tester; 276 EncoderTester tester(&message_tester);
359 EncoderTester tester(&message_tester, &state_tester);
360 277
361 uint8* memory; 278 uint8* memory;
362 scoped_refptr<CaptureData> data = 279 scoped_refptr<CaptureData> data =
363 PrepareEncodeData(PIXEL_FORMAT_RGB32, &memory); 280 PrepareEncodeData(media::VideoFrame::RGB32, &memory);
364 281
365 TestEncodingRects(encoder, &tester, data, kTestRects, 1); 282 TestEncodingRects(encoder, &tester, data, kTestRects, 1);
366 TestEncodingRects(encoder, &tester, data, kTestRects + 1, 1); 283 TestEncodingRects(encoder, &tester, data, kTestRects + 1, 1);
367 TestEncodingRects(encoder, &tester, data, kTestRects + 2, 1); 284 TestEncodingRects(encoder, &tester, data, kTestRects + 2, 1);
368 TestEncodingRects(encoder, &tester, data, kTestRects + 3, 2); 285 TestEncodingRects(encoder, &tester, data, kTestRects + 3, 2);
369 delete [] memory; 286 delete [] memory;
370 } 287 }
371 288
372 static void TestEncodingRects(Encoder* encoder, 289 static void TestEncodingRects(Encoder* encoder,
373 EncoderTester* encoder_tester, 290 EncoderTester* encoder_tester,
374 DecoderTester* decoder_tester, 291 DecoderTester* decoder_tester,
375 scoped_refptr<CaptureData> data, 292 scoped_refptr<CaptureData> data,
376 const gfx::Rect* rects, int count) { 293 const gfx::Rect* rects, int count) {
377 data->mutable_dirty_rects().clear(); 294 data->mutable_dirty_rects().clear();
378 for (int i = 0; i < count; ++i) { 295 for (int i = 0; i < count; ++i) {
379 data->mutable_dirty_rects().insert(rects[i]); 296 data->mutable_dirty_rects().insert(rects[i]);
380 } 297 }
381 encoder_tester->AddRects(rects, count); 298 encoder_tester->AddRects(rects, count);
382 decoder_tester->AddRects(rects, count); 299 decoder_tester->AddRects(rects, count);
383 decoder_tester->reset_decode_done();
384 300
385 // Generate random data for the updated rects. 301 // Generate random data for the updated rects.
386 srand(0); 302 srand(0);
387 for (int i = 0; i < count; ++i) { 303 for (int i = 0; i < count; ++i) {
388 const gfx::Rect rect = rects[i]; 304 const gfx::Rect rect = rects[i];
389 const int bytes_per_pixel = GetBytesPerPixel(data->pixel_format()); 305 const int bytes_per_pixel = GetBytesPerPixel(data->pixel_format());
390 const int row_size = bytes_per_pixel * rect.width(); 306 const int row_size = bytes_per_pixel * rect.width();
391 uint8* memory = data->data_planes().data[0] + 307 uint8* memory = data->data_planes().data[0] +
392 data->data_planes().strides[0] * rect.y() + 308 data->data_planes().strides[0] * rect.y() +
393 bytes_per_pixel * rect.x(); 309 bytes_per_pixel * rect.x();
394 for (int y = 0; y < rect.height(); ++y) { 310 for (int y = 0; y < rect.height(); ++y) {
395 for (int x = 0; x < row_size; ++x) 311 for (int x = 0; x < row_size; ++x)
396 memory[x] = rand() % 256; 312 memory[x] = rand() % 256;
397 memory += data->data_planes().strides[0]; 313 memory += data->data_planes().strides[0];
398 } 314 }
399 } 315 }
400 316
401 encoder->Encode(data, true, 317 encoder->Encode(data, true,
402 NewCallback(encoder_tester, &EncoderTester::DataAvailable)); 318 NewCallback(encoder_tester, &EncoderTester::DataAvailable));
403 EXPECT_TRUE(decoder_tester->decode_done()); 319 decoder_tester->VerifyResults();
320 decoder_tester->Reset();
404 } 321 }
405 322
406 void TestEncoderDecoder(Encoder* encoder, Decoder* decoder, bool strict) { 323 void TestEncoderDecoder(Encoder* encoder, Decoder* decoder, bool strict) {
407 EncoderMessageTester message_tester; 324 EncoderMessageTester message_tester;
408 message_tester.set_strict(strict); 325 message_tester.set_strict(strict);
409 326
410 EncoderStateTester state_tester; 327 EncoderTester encoder_tester(&message_tester);
411 EncoderTester encoder_tester(&message_tester, &state_tester);
412 328
413 uint8* memory; 329 uint8* memory;
414 scoped_refptr<CaptureData> data = 330 scoped_refptr<CaptureData> data =
415 PrepareEncodeData(PIXEL_FORMAT_RGB32, &memory); 331 PrepareEncodeData(media::VideoFrame::RGB32, &memory);
416 DecoderTester decoder_tester(decoder); 332 DecoderTester decoder_tester(decoder);
417 decoder_tester.set_strict(strict); 333 decoder_tester.set_strict(strict);
418 decoder_tester.set_capture_data(data); 334 decoder_tester.set_capture_data(data);
419 encoder_tester.set_decoder_tester(&decoder_tester); 335 encoder_tester.set_decoder_tester(&decoder_tester);
420 336
421 TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data, 337 TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data,
422 kTestRects, 1); 338 kTestRects, 1);
423 TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data, 339 TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data,
424 kTestRects + 1, 1); 340 kTestRects + 1, 1);
425 TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data, 341 TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data,
426 kTestRects + 2, 1); 342 kTestRects + 2, 1);
427 TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data, 343 TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data,
428 kTestRects + 3, 2); 344 kTestRects + 3, 2);
429 delete [] memory; 345 delete [] memory;
430 } 346 }
431 347
432 } // namespace remoting 348 } // namespace remoting
433 349
434 DISABLE_RUNNABLE_METHOD_REFCOUNT(remoting::DecoderTester); 350 DISABLE_RUNNABLE_METHOD_REFCOUNT(remoting::DecoderTester);
OLDNEW
« no previous file with comments | « remoting/base/codec_test.h ('k') | remoting/base/encode_decode_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698