Home | History | Annotate | Download | only in codec
      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
     62