123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /*
- * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
- #include <climits>
- #include <vector>
- #include "third_party/googletest/src/include/gtest/gtest.h"
- #include "test/codec_factory.h"
- #include "test/encode_test_driver.h"
- #include "test/i420_video_source.h"
- #include "test/util.h"
- namespace {
- class BordersTest
- : public ::libvpx_test::EncoderTest,
- public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> {
- protected:
- BordersTest() : EncoderTest(GET_PARAM(0)) {}
- virtual ~BordersTest() {}
- virtual void SetUp() {
- InitializeConfig();
- SetMode(GET_PARAM(1));
- }
- virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
- ::libvpx_test::Encoder *encoder) {
- if (video->frame() == 0) {
- encoder->Control(VP8E_SET_CPUUSED, 1);
- encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
- encoder->Control(VP8E_SET_ARNR_MAXFRAMES, 7);
- encoder->Control(VP8E_SET_ARNR_STRENGTH, 5);
- encoder->Control(VP8E_SET_ARNR_TYPE, 3);
- }
- }
- virtual void FramePktHook(const vpx_codec_cx_pkt_t *pkt) {
- if (pkt->data.frame.flags & VPX_FRAME_IS_KEY) {
- }
- }
- };
- TEST_P(BordersTest, TestEncodeHighBitrate) {
- // Validate that this non multiple of 64 wide clip encodes and decodes
- // without a mismatch when passing in a very low max q. This pushes
- // the encoder to producing lots of big partitions which will likely
- // extend into the border and test the border condition.
- cfg_.g_lag_in_frames = 25;
- cfg_.rc_2pass_vbr_minsection_pct = 5;
- cfg_.rc_2pass_vbr_maxsection_pct = 2000;
- cfg_.rc_target_bitrate = 2000;
- cfg_.rc_max_quantizer = 10;
- ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
- 40);
- ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
- }
- TEST_P(BordersTest, TestLowBitrate) {
- // Validate that this clip encodes and decodes without a mismatch
- // when passing in a very high min q. This pushes the encoder to producing
- // lots of small partitions which might will test the other condition.
- cfg_.g_lag_in_frames = 25;
- cfg_.rc_2pass_vbr_minsection_pct = 5;
- cfg_.rc_2pass_vbr_maxsection_pct = 2000;
- cfg_.rc_target_bitrate = 200;
- cfg_.rc_min_quantizer = 40;
- ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
- 40);
- ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
- }
- VP9_INSTANTIATE_TEST_CASE(BordersTest,
- ::testing::Values(::libvpx_test::kTwoPassGood));
- } // namespace
|