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