Index: remoting/codec/codec_test.cc |
diff --git a/remoting/codec/codec_test.cc b/remoting/codec/codec_test.cc |
index a97c51f086bace863d2d3db70fd1412d84f6a849..4152ff3cbaccf1190b794900b85be4483717e6ff 100644 |
--- a/remoting/codec/codec_test.cc |
+++ b/remoting/codec/codec_test.cc |
@@ -27,25 +27,25 @@ namespace { |
const int kBytesPerPixel = 4; |
// Some sample rects for testing. |
-std::vector<std::vector<DesktopRect> > MakeTestRectLists(DesktopSize size) { |
- std::vector<std::vector<DesktopRect> > rect_lists; |
- std::vector<DesktopRect> rects; |
- rects.push_back(DesktopRect::MakeXYWH(0, 0, size.width(), size.height())); |
- rect_lists.push_back(rects); |
- rects.clear(); |
- rects.push_back(DesktopRect::MakeXYWH( |
- 0, 0, size.width() / 2, size.height() / 2)); |
- rect_lists.push_back(rects); |
- rects.clear(); |
- rects.push_back(DesktopRect::MakeXYWH( |
- size.width() / 2, size.height() / 2, |
- size.width() / 2, size.height() / 2)); |
- rect_lists.push_back(rects); |
- rects.clear(); |
- rects.push_back(DesktopRect::MakeXYWH(16, 16, 16, 16)); |
- rects.push_back(DesktopRect::MakeXYWH(128, 64, 32, 32)); |
- rect_lists.push_back(rects); |
- return rect_lists; |
+std::vector<DesktopRegion> MakeTestRegionLists(DesktopSize size) { |
+ std::vector<DesktopRegion> region_lists; |
+ DesktopRegion region; |
+ region.AddRect(DesktopRect::MakeXYWH(0, 0, size.width(), size.height())); |
+ region_lists.push_back(region); |
+ region.Clear(); |
+ region.AddRect( |
+ DesktopRect::MakeXYWH(0, 0, size.width() / 2, size.height() / 2)); |
+ region_lists.push_back(region); |
+ region.Clear(); |
+ region.AddRect(DesktopRect::MakeXYWH(size.width() / 2, size.height() / 2, |
+ size.width() / 2, size.height() / 2)); |
+ region_lists.push_back(region); |
+ region.Clear(); |
+ region.AddRect(DesktopRect::MakeXYWH(16, 16, 16, 16)); |
+ region.AddRect(DesktopRect::MakeXYWH(32, 32, 32, 32)); |
+ region.IntersectWith(DesktopRect::MakeSize(size)); |
+ region_lists.push_back(region); |
+ return region_lists; |
} |
} // namespace |
@@ -105,12 +105,6 @@ class VideoDecoderTester { |
frame_ = frame; |
} |
- void AddRects(const DesktopRect* rects, int count) { |
- for (int i = 0; i < count; ++i) { |
- expected_region_.AddRect(rects[i]); |
- } |
- } |
- |
void AddRegion(const DesktopRegion& region) { |
expected_region_.AddRegion(region); |
} |
@@ -245,37 +239,28 @@ scoped_ptr<DesktopFrame> PrepareFrame(const DesktopSize& size) { |
static void TestEncodingRects(VideoEncoder* encoder, |
VideoEncoderTester* tester, |
DesktopFrame* frame, |
- const DesktopRect* rects, |
- int count) { |
- frame->mutable_updated_region()->Clear(); |
- for (int i = 0; i < count; ++i) { |
- frame->mutable_updated_region()->AddRect(rects[i]); |
- } |
- |
+ const DesktopRegion& region) { |
+ *frame->mutable_updated_region() = region; |
scoped_ptr<VideoPacket> packet = encoder->Encode(*frame); |
tester->DataAvailable(packet.Pass()); |
} |
void TestVideoEncoder(VideoEncoder* encoder, bool strict) { |
- const int kSizes[] = {320, 319, 317, 150}; |
+ const int kSizes[] = {80, 79, 77, 54}; |
VideoEncoderTester tester; |
for (size_t xi = 0; xi < arraysize(kSizes); ++xi) { |
for (size_t yi = 0; yi < arraysize(kSizes); ++yi) { |
- DesktopSize size = DesktopSize(kSizes[xi], kSizes[yi]); |
+ DesktopSize size(kSizes[xi], kSizes[yi]); |
scoped_ptr<DesktopFrame> frame = PrepareFrame(size); |
- std::vector<std::vector<DesktopRect> > test_rect_lists = |
- MakeTestRectLists(size); |
- for (size_t i = 0; i < test_rect_lists.size(); ++i) { |
- const std::vector<DesktopRect>& test_rects = test_rect_lists[i]; |
- TestEncodingRects(encoder, &tester, frame.get(), |
- &test_rects[0], test_rects.size()); |
+ for (const DesktopRegion& region : MakeTestRegionLists(size)) { |
+ TestEncodingRects(encoder, &tester, frame.get(), region); |
} |
// Pass some empty frames through the encoder. |
- for (int i = 0; i < 10; ++i) { |
- TestEncodingRects(encoder, &tester, frame.get(), nullptr, 0); |
+ for (int i = 0; i < 5; ++i) { |
+ TestEncodingRects(encoder, &tester, frame.get(), DesktopRegion()); |
} |
} |
} |
@@ -283,7 +268,7 @@ void TestVideoEncoder(VideoEncoder* encoder, bool strict) { |
void TestVideoEncoderEmptyFrames(VideoEncoder* encoder, |
int max_topoff_frames) { |
- const DesktopSize kSize(640, 480); |
+ const DesktopSize kSize(100, 100); |
scoped_ptr<DesktopFrame> frame(PrepareFrame(kSize)); |
frame->mutable_updated_region()->SetRect( |
@@ -309,22 +294,17 @@ static void TestEncodeDecodeRects(VideoEncoder* encoder, |
VideoEncoderTester* encoder_tester, |
VideoDecoderTester* decoder_tester, |
DesktopFrame* frame, |
- const DesktopRect* rects, int count) { |
- frame->mutable_updated_region()->Clear(); |
- for (int i = 0; i < count; ++i) { |
- frame->mutable_updated_region()->AddRect(rects[i]); |
- } |
- decoder_tester->AddRects(rects, count); |
+ const DesktopRegion& region) { |
+ *frame->mutable_updated_region() = region; |
+ decoder_tester->AddRegion(region); |
// Generate random data for the updated region. |
srand(0); |
- for (int i = 0; i < count; ++i) { |
- const int row_size = |
- DesktopFrame::kBytesPerPixel * rects[i].width(); |
- uint8* memory = frame->data() + |
- frame->stride() * rects[i].top() + |
- DesktopFrame::kBytesPerPixel * rects[i].left(); |
- for (int y = 0; y < rects[i].height(); ++y) { |
+ for (DesktopRegion::Iterator i(region); !i.IsAtEnd(); i.Advance()) { |
+ const int row_size = DesktopFrame::kBytesPerPixel * i.rect().width(); |
+ uint8* memory = frame->data() + frame->stride() * i.rect().top() + |
+ DesktopFrame::kBytesPerPixel * i.rect().left(); |
+ for (int y = 0; y < i.rect().height(); ++y) { |
for (int x = 0; x < row_size; ++x) |
memory[x] = rand() % 256; |
memory += frame->stride(); |
@@ -337,9 +317,10 @@ static void TestEncodeDecodeRects(VideoEncoder* encoder, |
decoder_tester->Reset(); |
} |
-void TestVideoEncoderDecoder( |
- VideoEncoder* encoder, VideoDecoder* decoder, bool strict) { |
- DesktopSize kSize = DesktopSize(320, 240); |
+void TestVideoEncoderDecoder(VideoEncoder* encoder, |
+ VideoDecoder* decoder, |
+ bool strict) { |
+ DesktopSize kSize = DesktopSize(160, 120); |
VideoEncoderTester encoder_tester; |
@@ -350,12 +331,9 @@ void TestVideoEncoderDecoder( |
decoder_tester.set_frame(frame.get()); |
encoder_tester.set_decoder_tester(&decoder_tester); |
- std::vector<std::vector<DesktopRect> > test_rect_lists = |
- MakeTestRectLists(kSize); |
- for (size_t i = 0; i < test_rect_lists.size(); ++i) { |
- const std::vector<DesktopRect> test_rects = test_rect_lists[i]; |
+ for (const DesktopRegion& region : MakeTestRegionLists(kSize)) { |
TestEncodeDecodeRects(encoder, &encoder_tester, &decoder_tester, |
- frame.get(), &test_rects[0], test_rects.size()); |
+ frame.get(), region); |
} |
} |