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

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

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