/** * @file tests/test_video.cpp * @brief Test src/video.*. */ #include #include class EncoderTest: public virtual BaseTest, public PlatformInitBase, public ::testing::WithParamInterface, video::encoder_t *>> { protected: void SetUp() override { BaseTest::SetUp(); PlatformInitBase::SetUp(); std::string_view p_name = std::get<0>(GetParam()); std::cout << "EncoderTest(" << p_name << "):: starting Fixture SetUp" << std::endl; std::cout << "EncoderTest(" << p_name << "):: validating encoder" << std::endl; video::encoder_t *encoder = std::get<1>(GetParam()); bool isEncoderValid; isEncoderValid = video::validate_encoder(*encoder, false); if (!isEncoderValid) { // if encoder is software fail, otherwise skip if (encoder == &video::software && std::string(TESTS_SOFTWARE_ENCODER_UNAVAILABLE) == "fail") { FAIL() << "EncoderTest(" << p_name << "):: software encoder not available"; } else { GTEST_SKIP_((std::string("EncoderTest(") + std::string(p_name) + "):: encoder not available").c_str()); } } else { std::cout << "EncoderTest(" << p_name << "):: encoder available" << std::endl; } } void TearDown() override { PlatformInitBase::TearDown(); BaseTest::TearDown(); } }; INSTANTIATE_TEST_SUITE_P( EncoderVariants, EncoderTest, ::testing::Values( #if !defined(__APPLE__) std::make_tuple(video::nvenc.name, &video::nvenc), #endif #ifdef _WIN32 std::make_tuple(video::amdvce.name, &video::amdvce), std::make_tuple(video::quicksync.name, &video::quicksync), #endif #ifdef __linux__ std::make_tuple(video::vaapi.name, &video::vaapi), #endif #ifdef __APPLE__ std::make_tuple(video::videotoolbox.name, &video::videotoolbox), #endif std::make_tuple(video::software.name, &video::software))); TEST_P(EncoderTest, ValidateEncoder) { // todo:: test something besides fixture setup }