/* * Copyright (c) 2020, Alliance for Open Media. All rights reserved. * * This source code is subject to the terms of the BSD 2 Clause License and * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License * was not distributed with this source code in the LICENSE file, you can * obtain it at www.aomedia.org/license/software. If the Alliance for Open * Media Patent License 1.0 was not distributed with this source code in the * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
*/ #include"aom/aom_codec.h" #include"gtest/gtest.h" #include"test/codec_factory.h" #include"test/encode_test_driver.h" #include"test/y4m_video_source.h" #include"test/util.h"
namespace { // This class is used to validate if screen_content_tools are turned on // appropriately. class ScreenContentToolsTestLarge
: public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode,
aom_rc_mode>, public ::libaom_test::EncoderTest { protected:
ScreenContentToolsTestLarge()
: EncoderTest(GET_PARAM(0)), encoding_mode_(GET_PARAM(1)),
rc_end_usage_(GET_PARAM(2)) {
is_screen_content_violated_ = true;
tune_content_ = AOM_CONTENT_DEFAULT;
}
~ScreenContentToolsTestLarge() override = default;
::libaom_test::TestMode encoding_mode_; bool is_screen_content_violated_; int tune_content_;
aom_rc_mode rc_end_usage_;
};
TEST_P(ScreenContentToolsTestLarge, ScreenContentToolsTest) { // force screen content tools on
::libaom_test::Y4mVideoSource video_nonsc("park_joy_90p_8_444.y4m", 0, 1);
cfg_.g_profile = 1;
tune_content_ = AOM_CONTENT_SCREEN;
ASSERT_NO_FATAL_FAILURE(RunLoop(&video_nonsc));
ASSERT_EQ(is_screen_content_violated_, false)
<< "Failed for tune_content_ = AOM_CONTENT_SCREEN";
// Don't force screen content, however as the input is screen content // allow_screen_content_tools should still be turned on
::libaom_test::Y4mVideoSource video_sc("desktop_credits.y4m", 0, 1);
cfg_.g_profile = 1;
is_screen_content_violated_ = true;
tune_content_ = AOM_CONTENT_DEFAULT;
ASSERT_NO_FATAL_FAILURE(RunLoop(&video_sc));
ASSERT_EQ(is_screen_content_violated_, false)
<< "Failed detection of screen content";
// TODO(anyone): Enable below test once low resolution screen content // detection issues are fixed. // low resolution test // ::libaom_test::Y4mVideoSource video_sc("screendata.y4m", 0, 1); // cfg_.g_profile = 0; // is_screen_content_violated_ = true; // tune_content_ = AOM_CONTENT_DEFAULT; // ASSERT_NO_FATAL_FAILURE(RunLoop(&video_sc)); // ASSERT_EQ(is_screen_content_violated_, false) // << "Failed detection of screen content(lowres)";
}
class ScreenContentToolsMultiThreadTestLarge
: public ScreenContentToolsTestLarge {};
TEST_P(ScreenContentToolsMultiThreadTestLarge, ScreenContentToolsTest) { // Don't force screen content, however as the input is screen content // allow_screen_content_tools should still be turned on even with // multi-threaded encoding.
::libaom_test::Y4mVideoSource video_sc("desktop_credits.y4m", 0, 10);
cfg_.g_profile = 1;
cfg_.g_threads = 4;
is_screen_content_violated_ = true;
tune_content_ = AOM_CONTENT_DEFAULT;
ASSERT_NO_FATAL_FAILURE(RunLoop(&video_sc));
ASSERT_EQ(is_screen_content_violated_, false)
<< "Failed detection of screen content";
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.