Index: remoting/base/decoder_vp8_unittest.cc |
diff --git a/remoting/base/decoder_vp8_unittest.cc b/remoting/base/decoder_vp8_unittest.cc |
index e75071477555e934a7fc7ce0dc1655dee4ae07e2..ab0607fc35135b4aebce6e23797fbca8ddbc45bc 100644 |
--- a/remoting/base/decoder_vp8_unittest.cc |
+++ b/remoting/base/decoder_vp8_unittest.cc |
@@ -10,19 +10,65 @@ |
namespace remoting { |
-TEST(DecoderVp8Test, EncodeAndDecode) { |
- EncoderVp8 encoder; |
- DecoderVp8 decoder; |
- TestEncoderDecoder(&encoder, &decoder, false); |
+class DecoderVp8Test : public testing::Test { |
+ protected: |
+ EncoderVp8 encoder_; |
+ DecoderVp8 decoder_; |
+ |
+ void TestGradient(int screen_width, int screen_height, |
+ int view_width, int view_height, |
+ double max_error_limit, double mean_error_limit) { |
+ TestEncoderDecoderGradient(&encoder_, &decoder_, |
+ SkISize::Make(screen_width, screen_height), |
+ SkISize::Make(view_width, view_height), |
+ max_error_limit, mean_error_limit); |
+ } |
+}; |
+ |
+TEST_F(DecoderVp8Test, EncodeAndDecode) { |
+ TestEncoderDecoder(&encoder_, &decoder_, false); |
} |
// Check that encoding and decoding a particular frame doesn't change the |
// frame too much. The frame used is a gradient, which does not contain sharp |
// transitions, so encoding lossiness should not be too high. |
-TEST(DecoderVp8Test, Gradient) { |
- EncoderVp8 encoder; |
- DecoderVp8 decoder; |
- TestEncoderDecoderGradient(&encoder, &decoder, 0.03, 0.01); |
+TEST_F(DecoderVp8Test, Gradient) { |
+ TestGradient(320, 240, 320, 240, 0.03, 0.01); |
+} |
+ |
+TEST_F(DecoderVp8Test, GradientScaleUpEvenToEven) { |
+ TestGradient(320, 240, 640, 480, 0.04, 0.02); |
+} |
+ |
+TEST_F(DecoderVp8Test, GradientScaleUpEvenToOdd) { |
+ TestGradient(320, 240, 641, 481, 0.04, 0.02); |
+} |
+ |
+TEST_F(DecoderVp8Test, GradientScaleUpOddToEven) { |
+ TestGradient(321, 241, 640, 480, 0.04, 0.02); |
+} |
+ |
+TEST_F(DecoderVp8Test, GradientScaleUpOddToOdd) { |
+ TestGradient(321, 241, 641, 481, 0.04, 0.02); |
+} |
+ |
+TEST_F(DecoderVp8Test, GradientScaleDownEvenToEven) { |
+ TestGradient(320, 240, 160, 120, 0.04, 0.02); |
+} |
+ |
+TEST_F(DecoderVp8Test, GradientScaleDownEvenToOdd) { |
+ // TODO(simonmorris): The maximum error is non-deterministic. |
+ // The mean error is not too high, which suggests that the problem is |
+ // restricted to a small area of the output image. See crbug.com/139437. |
+ TestGradient(320, 240, 161, 121, 1.0, 0.02); |
+} |
+ |
+TEST_F(DecoderVp8Test, GradientScaleDownOddToEven) { |
+ TestGradient(321, 241, 160, 120, 0.04, 0.02); |
+} |
+ |
+TEST_F(DecoderVp8Test, GradientScaleDownOddToOdd) { |
+ TestGradient(321, 241, 161, 121, 0.04, 0.02); |
} |
} // namespace remoting |