diff options
Diffstat (limited to 'remoting/base/codec_test.cc')
-rw-r--r-- | remoting/base/codec_test.cc | 74 |
1 files changed, 39 insertions, 35 deletions
diff --git a/remoting/base/codec_test.cc b/remoting/base/codec_test.cc index 81f0db8..efe7055 100644 --- a/remoting/base/codec_test.cc +++ b/remoting/base/codec_test.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -132,8 +132,8 @@ class DecoderTester { } void Reset() { - expected_region_.setEmpty(); - update_region_.setEmpty(); + rects_.clear(); + update_rects_.clear(); } void ReceivedPacket(VideoPacket* packet) { @@ -142,7 +142,7 @@ class DecoderTester { ASSERT_NE(Decoder::DECODE_ERROR, result); if (result == Decoder::DECODE_DONE) { - decoder_->GetUpdatedRegion(&update_region_); + decoder_->GetUpdatedRects(&update_rects_); } } @@ -155,9 +155,7 @@ class DecoderTester { } void AddRects(const SkIRect* rects, int count) { - SkRegion new_rects; - new_rects.setRects(rects, count); - expected_region_.op(new_rects, SkRegion::kUnion_Op); + rects_.insert(rects_.begin() + rects_.size(), rects, rects + count); } void VerifyResults() { @@ -166,17 +164,19 @@ class DecoderTester { ASSERT_TRUE(capture_data_.get()); - // Test the content of the update region. - EXPECT_EQ(expected_region_, update_region_); - for (SkRegion::Iterator i(update_region_); !i.done(); i.next()) { + // Test the content of the update rect. + ASSERT_EQ(rects_.size(), update_rects_.size()); + for (size_t i = 0; i < update_rects_.size(); ++i) { + EXPECT_EQ(rects_[i], update_rects_[i]); + EXPECT_EQ(frame_->stride(0), capture_data_->data_planes().strides[0]); const int stride = frame_->stride(0); - const int offset = stride * i.rect().top() + - kBytesPerPixel * i.rect().left(); + const int offset = stride * update_rects_[i].fTop + + kBytesPerPixel * update_rects_[i].fLeft; const uint8* original = capture_data_->data_planes().data[0] + offset; const uint8* decoded = frame_->data(0) + offset; - const int row_size = kBytesPerPixel * i.rect().width(); - for (int y = 0; y < i.rect().height(); ++y) { + const int row_size = kBytesPerPixel * update_rects_[i].width(); + for (int y = 0; y < update_rects_[i].height(); ++y) { EXPECT_EQ(0, memcmp(original, decoded, row_size)) << "Row " << y << " is different"; original += stride; @@ -187,8 +187,8 @@ class DecoderTester { private: bool strict_; - SkRegion expected_region_; - SkRegion update_region_; + std::deque<SkIRect> rects_; + RectVector update_rects_; Decoder* decoder_; scoped_refptr<media::VideoFrame> frame_; scoped_refptr<CaptureData> capture_data_; @@ -292,24 +292,28 @@ void TestEncoder(Encoder* encoder, bool strict) { TestEncodingRects(encoder, &tester, data, kTestRects + 3, 2); } -static void TestEncodeDecodeRects(Encoder* encoder, - EncoderTester* encoder_tester, - DecoderTester* decoder_tester, - scoped_refptr<CaptureData> data, - const SkIRect* rects, int count) { - data->mutable_dirty_region().setRects(rects, count); +static void TestEncodingRects(Encoder* encoder, + EncoderTester* encoder_tester, + DecoderTester* decoder_tester, + scoped_refptr<CaptureData> data, + const SkIRect* rects, int count) { + data->mutable_dirty_region().setEmpty(); + for (int i = 0; i < count; ++i) { + data->mutable_dirty_region().op(rects[i], SkRegion::kUnion_Op); + } encoder_tester->AddRects(rects, count); decoder_tester->AddRects(rects, count); - // Generate random data for the updated region. + // Generate random data for the updated rects. srand(0); for (int i = 0; i < count; ++i) { + const SkIRect& rect = rects[i]; const int bytes_per_pixel = GetBytesPerPixel(data->pixel_format()); - const int row_size = bytes_per_pixel * rects[i].width(); + const int row_size = bytes_per_pixel * rect.width(); uint8* memory = data->data_planes().data[0] + - data->data_planes().strides[0] * rects[i].top() + - bytes_per_pixel * rects[i].left(); - for (int y = 0; y < rects[i].height(); ++y) { + data->data_planes().strides[0] * rect.fTop + + bytes_per_pixel * rect.fLeft; + for (int y = 0; y < rect.height(); ++y) { for (int x = 0; x < row_size; ++x) memory[x] = rand() % 256; memory += data->data_planes().strides[0]; @@ -338,14 +342,14 @@ void TestEncoderDecoder(Encoder* encoder, Decoder* decoder, bool strict) { decoder_tester.set_capture_data(data); encoder_tester.set_decoder_tester(&decoder_tester); - TestEncodeDecodeRects(encoder, &encoder_tester, &decoder_tester, data, - kTestRects, 1); - TestEncodeDecodeRects(encoder, &encoder_tester, &decoder_tester, data, - kTestRects + 1, 1); - TestEncodeDecodeRects(encoder, &encoder_tester, &decoder_tester, data, - kTestRects + 2, 1); - TestEncodeDecodeRects(encoder, &encoder_tester, &decoder_tester, data, - kTestRects + 3, 2); + TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data, + kTestRects, 1); + TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data, + kTestRects + 1, 1); + TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data, + kTestRects + 2, 1); + TestEncodingRects(encoder, &encoder_tester, &decoder_tester, data, + kTestRects + 3, 2); } } // namespace remoting |