blob: eaf0b8370a4d6bd61a6a3d33c7f22d7fed65a6bd [file] [log] [blame]
Jim Bankoski943e4322014-07-17 06:31:50 -07001/*
Yaowu Xu2ab7ff02016-09-02 12:04:54 -07002 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
Jim Bankoski943e4322014-07-17 06:31:50 -07003 *
Yaowu Xu2ab7ff02016-09-02 12:04:54 -07004 * This source code is subject to the terms of the BSD 2 Clause License and
5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6 * was not distributed with this source code in the LICENSE file, you can
7 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8 * Media Patent License 1.0 was not distributed with this source code in the
9 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
Johann123e8a62017-12-28 14:40:49 -080010 */
Yaowu Xu2ab7ff02016-09-02 12:04:54 -070011
Tom Finegan7a07ece2017-02-07 17:14:05 -080012#include "third_party/googletest/src/googletest/include/gtest/gtest.h"
Jim Bankoski943e4322014-07-17 06:31:50 -070013#include "test/codec_factory.h"
James Zerne04273f2014-08-01 13:18:30 -070014#include "test/video_source.h"
Jim Bankoski943e4322014-07-17 06:31:50 -070015
16namespace {
17
Sebastien Alaiwan4322bc12017-06-05 10:18:28 +020018class AV1FrameSizeTests : public ::testing::Test,
19 public ::libaom_test::EncoderTest {
Jim Bankoski943e4322014-07-17 06:31:50 -070020 protected:
Alex Converse086c9db2017-01-25 17:56:36 -080021 AV1FrameSizeTests()
Yaowu Xuf883b422016-08-30 14:01:10 -070022 : EncoderTest(&::libaom_test::kAV1), expected_res_(AOM_CODEC_OK) {}
Alex Converse086c9db2017-01-25 17:56:36 -080023 virtual ~AV1FrameSizeTests() {}
Jim Bankoski943e4322014-07-17 06:31:50 -070024
25 virtual void SetUp() {
26 InitializeConfig();
Yaowu Xuc27fc142016-08-22 16:08:15 -070027 SetMode(::libaom_test::kRealTime);
Jim Bankoski943e4322014-07-17 06:31:50 -070028 }
29
Yaowu Xuf883b422016-08-30 14:01:10 -070030 virtual bool HandleDecodeResult(const aom_codec_err_t res_dec,
Yaowu Xuc27fc142016-08-22 16:08:15 -070031 libaom_test::Decoder *decoder) {
James Zerne04273f2014-08-01 13:18:30 -070032 EXPECT_EQ(expected_res_, res_dec) << decoder->DecodeError();
Jim Bankoski943e4322014-07-17 06:31:50 -070033 return !::testing::Test::HasFailure();
34 }
35
Yaowu Xuc27fc142016-08-22 16:08:15 -070036 virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
37 ::libaom_test::Encoder *encoder) {
Jim Bankoski943e4322014-07-17 06:31:50 -070038 if (video->frame() == 1) {
Yaowu Xuf883b422016-08-30 14:01:10 -070039 encoder->Control(AOME_SET_CPUUSED, 7);
40 encoder->Control(AOME_SET_ENABLEAUTOALTREF, 1);
41 encoder->Control(AOME_SET_ARNR_MAXFRAMES, 7);
42 encoder->Control(AOME_SET_ARNR_STRENGTH, 5);
Jim Bankoski943e4322014-07-17 06:31:50 -070043 }
44 }
45
46 int expected_res_;
47};
48
Yaowu Xu1b6e3942017-05-03 17:56:33 -070049#if CONFIG_SIZE_LIMIT
Alex Converse086c9db2017-01-25 17:56:36 -080050TEST_F(AV1FrameSizeTests, TestInvalidSizes) {
Yaowu Xuc27fc142016-08-22 16:08:15 -070051 ::libaom_test::RandomVideoSource video;
Jim Bankoski943e4322014-07-17 06:31:50 -070052
Jim Bankoski943e4322014-07-17 06:31:50 -070053 video.SetSize(DECODE_WIDTH_LIMIT + 16, DECODE_HEIGHT_LIMIT + 16);
54 video.set_limit(2);
Yaowu Xuf883b422016-08-30 14:01:10 -070055 expected_res_ = AOM_CODEC_CORRUPT_FRAME;
Jim Bankoski943e4322014-07-17 06:31:50 -070056 ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
Jim Bankoski943e4322014-07-17 06:31:50 -070057}
58
Alex Converse086c9db2017-01-25 17:56:36 -080059TEST_F(AV1FrameSizeTests, LargeValidSizes) {
Yaowu Xuc27fc142016-08-22 16:08:15 -070060 ::libaom_test::RandomVideoSource video;
Jim Bankoski943e4322014-07-17 06:31:50 -070061
Jim Bankoski943e4322014-07-17 06:31:50 -070062 video.SetSize(DECODE_WIDTH_LIMIT, DECODE_HEIGHT_LIMIT);
63 video.set_limit(2);
Yaowu Xuf883b422016-08-30 14:01:10 -070064 expected_res_ = AOM_CODEC_OK;
Jim Bankoski943e4322014-07-17 06:31:50 -070065 ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
Jim Bankoski943e4322014-07-17 06:31:50 -070066}
Yaowu Xu1b6e3942017-05-03 17:56:33 -070067#endif
Alex Converse655fbd12014-10-01 11:40:34 -070068
Debargha Mukherjee1a0ae842017-01-26 16:45:22 -080069TEST_F(AV1FrameSizeTests, OneByOneVideo) {
Yaowu Xuc27fc142016-08-22 16:08:15 -070070 ::libaom_test::RandomVideoSource video;
Alex Converse655fbd12014-10-01 11:40:34 -070071
72 video.SetSize(1, 1);
73 video.set_limit(2);
Yaowu Xuf883b422016-08-30 14:01:10 -070074 expected_res_ = AOM_CODEC_OK;
Alex Converse655fbd12014-10-01 11:40:34 -070075 ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
76}
Alex Converse086c9db2017-01-25 17:56:36 -080077#undef ONE_BY_ONE_VIDEO_NAME
Jim Bankoski943e4322014-07-17 06:31:50 -070078} // namespace