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

Side by Side Diff: trunk/src/remoting/codec/video_decoder_vpx_unittest.cc

Issue 188563002: Revert 255208 "Add VP9 encode support to the remoting host." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 9 months 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 | « no previous file | trunk/src/remoting/codec/video_encoder_vpx.h » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "remoting/codec/video_decoder_vpx.h" 5 #include "remoting/codec/video_decoder_vpx.h"
6 6
7 #include "media/base/video_frame.h" 7 #include "media/base/video_frame.h"
8 #include "remoting/codec/codec_test.h" 8 #include "remoting/codec/codec_test.h"
9 #include "remoting/codec/video_encoder_vpx.h" 9 #include "remoting/codec/video_encoder_vpx.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h" 11 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
12 12
13 namespace remoting { 13 namespace remoting {
14 14
15 namespace {
16
17 class VideoDecoderVpxTest : public testing::Test { 15 class VideoDecoderVpxTest : public testing::Test {
18 protected: 16 protected:
19 scoped_ptr<VideoEncoderVpx> encoder_; 17 scoped_ptr<VideoEncoderVpx> encoder_;
20 scoped_ptr<VideoDecoderVpx> decoder_; 18 scoped_ptr<VideoDecoderVpx> decoder_;
21 19
22 VideoDecoderVpxTest() : encoder_(VideoEncoderVpx::CreateForVP8()), 20 VideoDecoderVpxTest() : encoder_(VideoEncoderVpx::CreateForVP8()),
23 decoder_(VideoDecoderVpx::CreateForVP8()) { 21 decoder_(VideoDecoderVpx::CreateForVP8()) {
24 } 22 }
25 23
26 void TestGradient(int screen_width, int screen_height, 24 void TestGradient(int screen_width, int screen_height,
27 int view_width, int view_height, 25 int view_width, int view_height,
28 double max_error_limit, double mean_error_limit) { 26 double max_error_limit, double mean_error_limit) {
29 TestVideoEncoderDecoderGradient( 27 TestVideoEncoderDecoderGradient(
30 encoder_.get(), decoder_.get(), 28 encoder_.get(), decoder_.get(),
31 webrtc::DesktopSize(screen_width, screen_height), 29 webrtc::DesktopSize(screen_width, screen_height),
32 webrtc::DesktopSize(view_width, view_height), 30 webrtc::DesktopSize(view_width, view_height),
33 max_error_limit, mean_error_limit); 31 max_error_limit, mean_error_limit);
34 } 32 }
35 }; 33 };
36 34
37 class VideoDecoderVp8Test : public VideoDecoderVpxTest { 35 TEST_F(VideoDecoderVpxTest, VideoEncodeAndDecode) {
38 protected:
39 VideoDecoderVp8Test() {
40 encoder_ = VideoEncoderVpx::CreateForVP8();
41 decoder_ = VideoDecoderVpx::CreateForVP8();
42 }
43 };
44
45 class VideoDecoderVp9Test : public VideoDecoderVpxTest {
46 protected:
47 VideoDecoderVp9Test() {
48 encoder_ = VideoEncoderVpx::CreateForVP9();
49 decoder_ = VideoDecoderVpx::CreateForVP9();
50 }
51 };
52
53 } // namespace
54
55 //
56 // Test the VP8 codec.
57 //
58
59 TEST_F(VideoDecoderVp8Test, VideoEncodeAndDecode) {
60 TestVideoEncoderDecoder(encoder_.get(), decoder_.get(), false); 36 TestVideoEncoderDecoder(encoder_.get(), decoder_.get(), false);
61 } 37 }
62 38
63 // Check that encoding and decoding a particular frame doesn't change the 39 // Check that encoding and decoding a particular frame doesn't change the
64 // frame too much. The frame used is a gradient, which does not contain sharp 40 // frame too much. The frame used is a gradient, which does not contain sharp
65 // transitions, so encoding lossiness should not be too high. 41 // transitions, so encoding lossiness should not be too high.
66 TEST_F(VideoDecoderVp8Test, Gradient) { 42 TEST_F(VideoDecoderVpxTest, Gradient) {
67 TestGradient(320, 240, 320, 240, 0.04, 0.02); 43 TestGradient(320, 240, 320, 240, 0.04, 0.02);
68 } 44 }
69 45
70 TEST_F(VideoDecoderVp8Test, GradientScaleUpEvenToEven) { 46 TEST_F(VideoDecoderVpxTest, GradientScaleUpEvenToEven) {
71 TestGradient(320, 240, 640, 480, 0.04, 0.02); 47 TestGradient(320, 240, 640, 480, 0.04, 0.02);
72 } 48 }
73 49
74 TEST_F(VideoDecoderVp8Test, GradientScaleUpEvenToOdd) { 50 TEST_F(VideoDecoderVpxTest, GradientScaleUpEvenToOdd) {
75 TestGradient(320, 240, 641, 481, 0.04, 0.02); 51 TestGradient(320, 240, 641, 481, 0.04, 0.02);
76 } 52 }
77 53
78 TEST_F(VideoDecoderVp8Test, GradientScaleUpOddToEven) { 54 TEST_F(VideoDecoderVpxTest, GradientScaleUpOddToEven) {
79 TestGradient(321, 241, 640, 480, 0.04, 0.02); 55 TestGradient(321, 241, 640, 480, 0.04, 0.02);
80 } 56 }
81 57
82 TEST_F(VideoDecoderVp8Test, GradientScaleUpOddToOdd) { 58 TEST_F(VideoDecoderVpxTest, GradientScaleUpOddToOdd) {
83 TestGradient(321, 241, 641, 481, 0.04, 0.02); 59 TestGradient(321, 241, 641, 481, 0.04, 0.02);
84 } 60 }
85 61
86 TEST_F(VideoDecoderVp8Test, GradientScaleDownEvenToEven) { 62 TEST_F(VideoDecoderVpxTest, GradientScaleDownEvenToEven) {
87 TestGradient(320, 240, 160, 120, 0.04, 0.02); 63 TestGradient(320, 240, 160, 120, 0.04, 0.02);
88 } 64 }
89 65
90 TEST_F(VideoDecoderVp8Test, GradientScaleDownEvenToOdd) { 66 TEST_F(VideoDecoderVpxTest, GradientScaleDownEvenToOdd) {
91 // The maximum error is non-deterministic. The mean error is not too high, 67 // The maximum error is non-deterministic. The mean error is not too high,
92 // which suggests that the problem is restricted to a small area of the output 68 // which suggests that the problem is restricted to a small area of the output
93 // image. See crbug.com/139437 and crbug.com/139633. 69 // image. See crbug.com/139437 and crbug.com/139633.
94 TestGradient(320, 240, 161, 121, 1.0, 0.02); 70 TestGradient(320, 240, 161, 121, 1.0, 0.02);
95 } 71 }
96 72
97 TEST_F(VideoDecoderVp8Test, GradientScaleDownOddToEven) { 73 TEST_F(VideoDecoderVpxTest, GradientScaleDownOddToEven) {
98 TestGradient(321, 241, 160, 120, 0.04, 0.02); 74 TestGradient(321, 241, 160, 120, 0.04, 0.02);
99 } 75 }
100 76
101 TEST_F(VideoDecoderVp8Test, GradientScaleDownOddToOdd) { 77 TEST_F(VideoDecoderVpxTest, GradientScaleDownOddToOdd) {
102 TestGradient(321, 241, 161, 121, 0.04, 0.02);
103 }
104
105 //
106 // Test the VP9 codec.
107 //
108
109 TEST_F(VideoDecoderVp9Test, VideoEncodeAndDecode) {
110 TestVideoEncoderDecoder(encoder_.get(), decoder_.get(), false);
111 }
112
113 // Check that encoding and decoding a particular frame doesn't change the
114 // frame too much. The frame used is a gradient, which does not contain sharp
115 // transitions, so encoding lossiness should not be too high.
116 TEST_F(VideoDecoderVp9Test, Gradient) {
117 TestGradient(320, 240, 320, 240, 0.04, 0.02);
118 }
119
120 TEST_F(VideoDecoderVp9Test, GradientScaleUpEvenToEven) {
121 TestGradient(320, 240, 640, 480, 0.04, 0.02);
122 }
123
124 TEST_F(VideoDecoderVp9Test, GradientScaleUpEvenToOdd) {
125 TestGradient(320, 240, 641, 481, 0.04, 0.02);
126 }
127
128 TEST_F(VideoDecoderVp9Test, GradientScaleUpOddToEven) {
129 TestGradient(321, 241, 640, 480, 0.04, 0.02);
130 }
131
132 TEST_F(VideoDecoderVp9Test, GradientScaleUpOddToOdd) {
133 TestGradient(321, 241, 641, 481, 0.04, 0.02);
134 }
135
136 TEST_F(VideoDecoderVp9Test, GradientScaleDownEvenToEven) {
137 TestGradient(320, 240, 160, 120, 0.04, 0.02);
138 }
139
140 TEST_F(VideoDecoderVp9Test, GradientScaleDownEvenToOdd) {
141 // The maximum error is non-deterministic. The mean error is not too high,
142 // which suggests that the problem is restricted to a small area of the output
143 // image. See crbug.com/139437 and crbug.com/139633.
144 TestGradient(320, 240, 161, 121, 1.0, 0.02);
145 }
146
147 TEST_F(VideoDecoderVp9Test, GradientScaleDownOddToEven) {
148 TestGradient(321, 241, 160, 120, 0.04, 0.02);
149 }
150
151 TEST_F(VideoDecoderVp9Test, GradientScaleDownOddToOdd) {
152 TestGradient(321, 241, 161, 121, 0.04, 0.02); 78 TestGradient(321, 241, 161, 121, 0.04, 0.02);
153 } 79 }
154 80
155 } // namespace remoting 81 } // namespace remoting
OLDNEW
« no previous file with comments | « no previous file | trunk/src/remoting/codec/video_encoder_vpx.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698