Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / remoting / codec / video_encoder_vpx_perftest.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "remoting/codec/video_encoder_vpx.h"
6
7 #include <limits>
8 #include <vector>
9
10 #include "base/logging.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "remoting/codec/codec_test.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
15
16 using webrtc::DesktopSize;
17
18 namespace remoting {
19
20 // Measure the performance of the VP8 encoder.
21 TEST(VideoEncoderVpxTest, MeasureVp8Fps) {
22   scoped_ptr<VideoEncoderVpx> encoder(VideoEncoderVpx::CreateForVP8());
23
24   const DesktopSize kFrameSizes[] = {
25     DesktopSize(1280, 1024), DesktopSize(1920, 1200)
26   };
27
28   for (size_t i = 0; i < arraysize(kFrameSizes); ++i) {
29     float fps =
30         MeasureVideoEncoderFpsWithSize(encoder.get(), kFrameSizes[i]);
31     LOG(ERROR) << kFrameSizes[i].width() << "x" << kFrameSizes[i].height()
32                << ": " << fps << "fps";
33   }
34 }
35
36 // Measure the performance of the VP9 encoder.
37 TEST(VideoEncoderVpxTest, MeasureVp9Fps) {
38   const DesktopSize kFrameSizes[] = {
39     DesktopSize(1280, 1024), DesktopSize(1920, 1200)
40   };
41
42   for (int lossless_mode = 0; lossless_mode < 4; ++lossless_mode) {
43     bool lossless_color = lossless_mode & 1;
44     bool lossless_encode = lossless_mode & 2;
45
46     scoped_ptr<VideoEncoderVpx> encoder(VideoEncoderVpx::CreateForVP9());
47     encoder->SetLosslessColor(lossless_color);
48     encoder->SetLosslessEncode(lossless_encode);
49
50     for (size_t i = 0; i < arraysize(kFrameSizes); ++i) {
51       float fps =
52           MeasureVideoEncoderFpsWithSize(encoder.get(), kFrameSizes[i]);
53       LOG(ERROR) << kFrameSizes[i].width() << "x" << kFrameSizes[i].height()
54                  << "(" << (lossless_encode ? "lossless" : "lossy   ") << ")"
55                  << "(" << (lossless_color ? "I444" : "I420") << ")"
56                  << ": " << fps << "fps";
57     }
58   }
59 }
60
61 }  // namespace remoting