OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 VideoEncoderTester* tester, | 351 VideoEncoderTester* tester, |
352 webrtc::DesktopFrame* frame, | 352 webrtc::DesktopFrame* frame, |
353 const DesktopRect* rects, | 353 const DesktopRect* rects, |
354 int count) { | 354 int count) { |
355 frame->mutable_updated_region()->Clear(); | 355 frame->mutable_updated_region()->Clear(); |
356 for (int i = 0; i < count; ++i) { | 356 for (int i = 0; i < count; ++i) { |
357 frame->mutable_updated_region()->AddRect(rects[i]); | 357 frame->mutable_updated_region()->AddRect(rects[i]); |
358 } | 358 } |
359 tester->AddRects(rects, count); | 359 tester->AddRects(rects, count); |
360 | 360 |
361 encoder->Encode(frame, base::Bind( | 361 scoped_ptr<VideoPacket> packet = encoder->Encode(*frame); |
362 &VideoEncoderTester::DataAvailable, base::Unretained(tester))); | 362 tester->DataAvailable(packet.Pass()); |
363 } | 363 } |
364 | 364 |
365 void TestVideoEncoder(VideoEncoder* encoder, bool strict) { | 365 void TestVideoEncoder(VideoEncoder* encoder, bool strict) { |
366 const int kSizes[] = {320, 319, 317, 150}; | 366 const int kSizes[] = {320, 319, 317, 150}; |
367 | 367 |
368 VideoEncoderMessageTester message_tester; | 368 VideoEncoderMessageTester message_tester; |
369 message_tester.set_strict(strict); | 369 message_tester.set_strict(strict); |
370 | 370 |
371 VideoEncoderTester tester(&message_tester); | 371 VideoEncoderTester tester(&message_tester); |
372 | 372 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 uint8* memory = frame->data() + | 405 uint8* memory = frame->data() + |
406 frame->stride() * rects[i].top() + | 406 frame->stride() * rects[i].top() + |
407 webrtc::DesktopFrame::kBytesPerPixel * rects[i].left(); | 407 webrtc::DesktopFrame::kBytesPerPixel * rects[i].left(); |
408 for (int y = 0; y < rects[i].height(); ++y) { | 408 for (int y = 0; y < rects[i].height(); ++y) { |
409 for (int x = 0; x < row_size; ++x) | 409 for (int x = 0; x < row_size; ++x) |
410 memory[x] = rand() % 256; | 410 memory[x] = rand() % 256; |
411 memory += frame->stride(); | 411 memory += frame->stride(); |
412 } | 412 } |
413 } | 413 } |
414 | 414 |
415 encoder->Encode(frame, base::Bind(&VideoEncoderTester::DataAvailable, | 415 scoped_ptr<VideoPacket> packet = encoder->Encode(*frame); |
416 base::Unretained(encoder_tester))); | 416 encoder_tester->DataAvailable(packet.Pass()); |
417 decoder_tester->VerifyResults(); | 417 decoder_tester->VerifyResults(); |
418 decoder_tester->Reset(); | 418 decoder_tester->Reset(); |
419 } | 419 } |
420 | 420 |
421 void TestVideoEncoderDecoder( | 421 void TestVideoEncoderDecoder( |
422 VideoEncoder* encoder, VideoDecoder* decoder, bool strict) { | 422 VideoEncoder* encoder, VideoDecoder* decoder, bool strict) { |
423 DesktopSize kSize = DesktopSize(320, 240); | 423 DesktopSize kSize = DesktopSize(320, 240); |
424 | 424 |
425 VideoEncoderMessageTester message_tester; | 425 VideoEncoderMessageTester message_tester; |
426 message_tester.set_strict(strict); | 426 message_tester.set_strict(strict); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 frame->mutable_updated_region()->SetRect(DesktopRect::MakeSize(screen_size)); | 468 frame->mutable_updated_region()->SetRect(DesktopRect::MakeSize(screen_size)); |
469 | 469 |
470 scoped_ptr<webrtc::BasicDesktopFrame> expected_result( | 470 scoped_ptr<webrtc::BasicDesktopFrame> expected_result( |
471 new webrtc::BasicDesktopFrame(view_size)); | 471 new webrtc::BasicDesktopFrame(view_size)); |
472 FillWithGradient(expected_result.get()); | 472 FillWithGradient(expected_result.get()); |
473 | 473 |
474 VideoDecoderTester decoder_tester(decoder, screen_size, view_size); | 474 VideoDecoderTester decoder_tester(decoder, screen_size, view_size); |
475 decoder_tester.set_frame(frame.get()); | 475 decoder_tester.set_frame(frame.get()); |
476 decoder_tester.AddRegion(frame->updated_region()); | 476 decoder_tester.AddRegion(frame->updated_region()); |
477 | 477 |
478 encoder->Encode(frame.get(), | 478 scoped_ptr<VideoPacket> packet = encoder->Encode(*frame); |
479 base::Bind(&VideoDecoderTester::ReceivedScopedPacket, | 479 decoder_tester.ReceivedScopedPacket(packet.Pass()); |
480 base::Unretained(&decoder_tester))); | |
481 | 480 |
482 decoder_tester.VerifyResultsApprox(expected_result->data(), | 481 decoder_tester.VerifyResultsApprox(expected_result->data(), |
483 max_error_limit, mean_error_limit); | 482 max_error_limit, mean_error_limit); |
484 | 483 |
485 // Check that the decoder correctly re-renders the frame if its client | 484 // Check that the decoder correctly re-renders the frame if its client |
486 // invalidates the frame. | 485 // invalidates the frame. |
487 decoder_tester.ResetRenderedData(); | 486 decoder_tester.ResetRenderedData(); |
488 decoder->Invalidate( | 487 decoder->Invalidate( |
489 SkISize::Make(view_size.width(), view_size.height()), | 488 SkISize::Make(view_size.width(), view_size.height()), |
490 SkRegion(SkIRect::MakeWH(view_size.width(), view_size.height()))); | 489 SkRegion(SkIRect::MakeWH(view_size.width(), view_size.height()))); |
491 decoder_tester.RenderFrame(); | 490 decoder_tester.RenderFrame(); |
492 decoder_tester.VerifyResultsApprox(expected_result->data(), | 491 decoder_tester.VerifyResultsApprox(expected_result->data(), |
493 max_error_limit, mean_error_limit); | 492 max_error_limit, mean_error_limit); |
494 } | 493 } |
495 | 494 |
496 } // namespace remoting | 495 } // namespace remoting |
OLD | NEW |