diff --git a/YUViewUnitTest/filesource/guessFormatFromFilenameTest.cpp b/YUViewUnitTest/filesource/guessFormatFromFilenameTest.cpp index 0f4326d5d..54305529d 100644 --- a/YUViewUnitTest/filesource/guessFormatFromFilenameTest.cpp +++ b/YUViewUnitTest/filesource/guessFormatFromFilenameTest.cpp @@ -64,138 +64,142 @@ TEST_P(GuessFormatFromFilenameTest, TestFormatFromFilename) } INSTANTIATE_TEST_SUITE_P( - FilesourceTest, - GuessFormatFromFilenameTest, - Values( - // Resolution must use an 'x' (case irrelevant) or a '*' between width/height - std::make_pair(FileInfoForGuess({"something_1920x1080.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_295x289.yuv", "", {}}), - ExpectedGuessResult({Size(295, 289), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_295234x289234.yuv", "", {}}), - ExpectedGuessResult({Size(295234, 289234), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920X1080.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920*1080.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_something.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), - - // Other characters are not supported - std::make_pair(FileInfoForGuess({"something_1920_1080.yuv", "", {}}), - ExpectedGuessResult({{}, {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_19201080.yuv", "", {}}), - ExpectedGuessResult({{}, {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1280-720.yuv", "", {}}), - ExpectedGuessResult({{}, {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920-1080_something.yuv", "", {}}), - ExpectedGuessResult({{}, {}, {}, {}})), - - // Test fps detection with 'xxxhz' or 'xxfps'. Cases should not matter. - std::make_pair(FileInfoForGuess({"something_1920x1080_25.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 25, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_999.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 999, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_60Hz.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_999_something.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 999, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_60hz.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_60HZ.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_60hZ.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_60fps.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_60FPS.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_60fPs.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), - // The indicator can even be anywhere - std::make_pair(FileInfoForGuess({"something240fPssomething_1920x1080.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 240, {}, {}})), - - std::make_pair(FileInfoForGuess({"something_1920x1080_25_8.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 25, 8, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_25_12.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 25, 12, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_25_8b.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 25, 8, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_25_8b_something.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 25, 8, {}})), - - std::make_pair(FileInfoForGuess({"something1080p.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something1080pSomething.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something1080p33.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 33, {}, {}})), - std::make_pair(FileInfoForGuess({"something1080p33Something.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), 33, {}, {}})), - std::make_pair(FileInfoForGuess({"something720p.yuv", "", {}}), - ExpectedGuessResult({Size(1280, 720), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something720pSomething.yuv", "", {}}), - ExpectedGuessResult({Size(1280, 720), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something720p44.yuv", "", {}}), - ExpectedGuessResult({Size(1280, 720), 44, {}, {}})), - std::make_pair(FileInfoForGuess({"something720p44Something.yuv", "", {}}), - ExpectedGuessResult({Size(1280, 720), 44, {}, {}})), - - std::make_pair(FileInfoForGuess({"something_cif.yuv", "", {}}), - ExpectedGuessResult({Size(352, 288), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_cifSomething.yuv", "", {}}), - ExpectedGuessResult({Size(352, 288), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_qcif.yuv", "", {}}), - ExpectedGuessResult({Size(176, 144), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_qcifSomething.yuv", "", {}}), - ExpectedGuessResult({Size(176, 144), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_4cif.yuv", "", {}}), - ExpectedGuessResult({Size(704, 576), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"something_4cifSomething.yuv", "", {}}), - ExpectedGuessResult({Size(704, 576), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"somethingUHDSomething.yuv", "", {}}), - ExpectedGuessResult({Size(3840, 2160), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"somethingHDSomething.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), - - std::make_pair(FileInfoForGuess({"something_1920x1080_8Bit.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_10Bit.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, 10, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_12Bit.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, 12, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_16Bit.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, 16, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_8bit.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_8BIT.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_8-Bit.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), - std::make_pair(FileInfoForGuess({"something_1920x1080_8-BIT.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), - - std::make_pair(FileInfoForGuess({"something_1920x1080_packed.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, video::DataLayout::Packed})), - std::make_pair(FileInfoForGuess({"something_1920x1080_packed-something.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, video::DataLayout::Packed})), - std::make_pair(FileInfoForGuess({"something_1920x1080packed.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), - std::make_pair(FileInfoForGuess({"packed_something_1920x1080.yuv", "", {}}), - ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), - - std::make_pair( - FileInfoForGuess({"sample_1280x720_16bit_444_packed_20200109_114812.yuv", "", {}}), - ExpectedGuessResult({Size(1280, 720), {}, 16u, video::DataLayout::Packed})), - std::make_pair( - FileInfoForGuess({"sample_1280x720_16b_yuv44416le_packed_20200109_114812.yuv", "", {}}), - ExpectedGuessResult({Size(1280, 720), {}, 16u, video::DataLayout::Packed})), - std::make_pair( - FileInfoForGuess({"sample_1280x720_16b_yuv16le_packed_444_20200109_114812", "", {}}), - ExpectedGuessResult({Size(1280, 720), {}, 16u, video::DataLayout::Packed})) - - ), - getTestName); + FilesourceTest, + GuessFormatFromFilenameTest, + Values( + // Resolution must use an 'x' (case irrelevant) or a '*' between width/height + std::make_pair(FileInfoForGuess({"something_1920x1080.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_295x289.yuv", "", {}}), + ExpectedGuessResult({Size(295, 289), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_295234x289234.yuv", "", {}}), + ExpectedGuessResult({Size(295234, 289234), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920X1080.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920*1080.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_something.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), + + // Other characters are not supported + std::make_pair(FileInfoForGuess({"something_1920_1080.yuv", "", {}}), + ExpectedGuessResult({{}, {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_19201080.yuv", "", {}}), + ExpectedGuessResult({{}, {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1280-720.yuv", "", {}}), + ExpectedGuessResult({{}, {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920-1080_something.yuv", "", {}}), + ExpectedGuessResult({{}, {}, {}, {}})), + + // Test fps detection with 'xxxhz' or 'xxfps'. Cases should not matter. + std::make_pair(FileInfoForGuess({"something_1920x1080_25.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 25, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_999.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 999, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_60Hz.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_999_something.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 999, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_60hz.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_60HZ.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_60hZ.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_60fps.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_60FPS.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_60fPs.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 60, {}, {}})), + // The indicator can even be anywhere + std::make_pair(FileInfoForGuess({"something240fPssomething_1920x1080.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 240, {}, {}})), + + std::make_pair(FileInfoForGuess({"something_1920x1080_25_8.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 25, 8, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_25_12.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 25, 12, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_25_8b.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 25, 8, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_25_8b_something.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 25, 8, {}})), + + std::make_pair(FileInfoForGuess({"something1080p.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something1080pSomething.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something1080p33.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 33, {}, {}})), + std::make_pair(FileInfoForGuess({"something1080p33Something.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), 33, {}, {}})), + std::make_pair(FileInfoForGuess({"something720p.yuv", "", {}}), + ExpectedGuessResult({Size(1280, 720), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something720pSomething.yuv", "", {}}), + ExpectedGuessResult({Size(1280, 720), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something720p44.yuv", "", {}}), + ExpectedGuessResult({Size(1280, 720), 44, {}, {}})), + std::make_pair(FileInfoForGuess({"something720p44Something.yuv", "", {}}), + ExpectedGuessResult({Size(1280, 720), 44, {}, {}})), + + std::make_pair(FileInfoForGuess({"something_cif.yuv", "", {}}), + ExpectedGuessResult({Size(352, 288), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_cifSomething.yuv", "", {}}), + ExpectedGuessResult({Size(352, 288), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_qcif.yuv", "", {}}), + ExpectedGuessResult({Size(176, 144), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_qcifSomething.yuv", "", {}}), + ExpectedGuessResult({Size(176, 144), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_4cif.yuv", "", {}}), + ExpectedGuessResult({Size(704, 576), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"something_4cifSomething.yuv", "", {}}), + ExpectedGuessResult({Size(704, 576), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"somethingUHDSomething.yuv", "", {}}), + ExpectedGuessResult({Size(3840, 2160), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"somethingHDSomething.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), + + std::make_pair(FileInfoForGuess({"something_1920x1080_8Bit.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_10Bit.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, 10, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_12Bit.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, 12, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_16Bit.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, 16, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_8bit.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_8BIT.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_8-Bit.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), + std::make_pair(FileInfoForGuess({"something_1920x1080_8-BIT.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, 8, {}})), + + std::make_pair(FileInfoForGuess({"something_1920x1080_packed.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, video::DataLayout::Packed})), + std::make_pair(FileInfoForGuess({"something_1920x1080_packed-something.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, video::DataLayout::Packed})), + std::make_pair(FileInfoForGuess({"something_1920x1080packed.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), + std::make_pair(FileInfoForGuess({"packed_something_1920x1080.yuv", "", {}}), + ExpectedGuessResult({Size(1920, 1080), {}, {}, {}})), + + std::make_pair( + FileInfoForGuess({"sample_1280x720_16bit_444_packed_20200109_114812.yuv", "", {}}), + ExpectedGuessResult({Size(1280, 720), {}, 16u, video::DataLayout::Packed})), + std::make_pair( + FileInfoForGuess({"sample_1280x720_16b_yuv44416le_packed_20200109_114812.yuv", "", {}}), + ExpectedGuessResult({Size(1280, 720), {}, 16u, video::DataLayout::Packed})), + std::make_pair( + FileInfoForGuess({"sample_1280x720_16b_yuv16le_packed_444_20200109_114812", "", {}}), + ExpectedGuessResult({Size(1280, 720), {}, 16u, video::DataLayout::Packed})), + + std::make_pair( + FileInfoForGuess({"VisualAcuityLandolt_3840x2160_60fps_10bit_420p_BT709.yuv", "", {}}), + ExpectedGuessResult({Size(3840, 2160), 60, 10u, {}})) + + ), + getTestName); } // namespace filesource::frameFormatGuess::test diff --git a/YUViewUnitTest/video/yuv/PixelFormatYUVGuessTest.cpp b/YUViewUnitTest/video/yuv/PixelFormatYUVGuessTest.cpp index d72707e8e..4f54f1370 100644 --- a/YUViewUnitTest/video/yuv/PixelFormatYUVGuessTest.cpp +++ b/YUViewUnitTest/video/yuv/PixelFormatYUVGuessTest.cpp @@ -62,7 +62,7 @@ std::string getTestName(const testing::TestParamInfo &testParame { const auto testParameters = testParametersInfo.param; return filesource::frameFormatGuess::test::formatFileInfoForGuessForTestName( - testParameters.fileInfoForGuess) + + testParameters.fileInfoForGuess) + "_" + yuviewTest::replaceNonSupportedCharacters(testParameters.expectedPixelFormat.getName()); } @@ -72,129 +72,131 @@ TEST_P(GuessYUVFormatFromFilenameFrameSizeFileSizeDataLayoutAndBitDepth, TestGue const auto parameters = GetParam(); const auto guessedFrameFormat = - filesource::frameFormatGuess::guessFrameFormat(parameters.fileInfoForGuess); + filesource::frameFormatGuess::guessFrameFormat(parameters.fileInfoForGuess); const auto guessedFormat = - video::yuv::guessPixelFormatFromSizeAndName(guessedFrameFormat, parameters.fileInfoForGuess); + video::yuv::guessPixelFormatFromSizeAndName(guessedFrameFormat, parameters.fileInfoForGuess); EXPECT_TRUE(guessedFormat.isValid()); EXPECT_EQ(guessedFormat, parameters.expectedPixelFormat) - << "Guessed format '" << guessedFormat.getName() << "' expected format '" - << parameters.expectedPixelFormat.getName() << "' for filename '" - << parameters.fileInfoForGuess.filename << "' parentFolderName '" - << parameters.fileInfoForGuess.parentFolderName << "' size " - << parameters.fileInfoForGuess.fileSize.value_or(-1); + << "Guessed format '" << guessedFormat.getName() << "' expected format '" + << parameters.expectedPixelFormat.getName() << "' for filename '" + << parameters.fileInfoForGuess.filename << "' parentFolderName '" + << parameters.fileInfoForGuess.parentFolderName << "' size " + << parameters.fileInfoForGuess.fileSize.value_or(-1); } -constexpr auto BYTES_1080P = 1920 * 1080 * 3 * 6; // 12 frames 420 -constexpr auto BYTES_720P = 1280 * 720 * 3 * 6; // 6 frames 444 -constexpr auto BYTES_720P_V210 = 1296u * 720 / 6 * 16 * 3; // 3 frames -constexpr auto BYTES_1808P_400 = 1920u * 1080 * 2; // 2 frames 400 +constexpr auto BYTES_1080P = 1920 * 1080 * 3 * 6; // 12 frames 420 +constexpr auto BYTES_720P = 1280 * 720 * 3 * 6; // 6 frames 444 +constexpr auto BYTES_720P_V210 = 1296u * 720 / 6 * 16 * 3; // 3 frames +constexpr auto BYTES_1808P_400 = 1920u * 1080 * 2; // 2 frames 400 +constexpr auto BYTES_2160p_10bit_420 = 3840u * 2160 * 3 * 6; // 6 frames 420 10 bit INSTANTIATE_TEST_SUITE_P( - VideoYUVTest, - GuessYUVFormatFromFilenameFrameSizeFileSizeDataLayoutAndBitDepth, - Values( - TestParameters({FileInfoForGuess({"something_1920x1080_25_8.yuv", "", BYTES_1080P}), - PixelFormatYUV(Subsampling::YUV_420, 8)}), - TestParameters({FileInfoForGuess({"something_1920x1080_25_10.yuv", "", BYTES_1080P}), - PixelFormatYUV(Subsampling::YUV_420, 10)}), - TestParameters({FileInfoForGuess({"something_1920x1080_25_12.yuv", "", BYTES_1080P}), - PixelFormatYUV(Subsampling::YUV_420, 12)}), - TestParameters({FileInfoForGuess({"something_1920x1080_25_16b.yuv", "", BYTES_1080P}), - PixelFormatYUV(Subsampling::YUV_420, 16)}), - TestParameters( - {FileInfoForGuess({"something_1920x1080_25_10b_something.yuv", "", BYTES_1080P}), - PixelFormatYUV(Subsampling::YUV_420, 10)}), - - // Issue 211 - TestParameters({FileInfoForGuess({"sample_1280x720_16bit_444_packed_20200109_114812.yuv", - "", - BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_444, 16, PackingOrder::YUV)}), - TestParameters( - {FileInfoForGuess( - {"sample_1280x720_16b_yuv44416le_packed_20200109_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_444, 16, PackingOrder::YUV)}), - TestParameters( - {FileInfoForGuess( - {"sample_1280x720_16b_yuv16le_packed_444_20200109_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_444, 16, PackingOrder::YUV)}), - - // Issue 221 - TestParameters({FileInfoForGuess({"sample_1280x720_yuv420pUVI_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_420, - 8, - PlaneOrder::YUV, - BigEndian(false), - ChromaOffset(0, 0), - UVInterleaved(true))}), - TestParameters( - {FileInfoForGuess({"sample_1280x720_yuv420pinterlaced_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_420, - 8, - PlaneOrder::YUV, - BigEndian(false), - ChromaOffset(0, 0), - UVInterleaved(true))}), - TestParameters( - {FileInfoForGuess({"sample_1280x720_yuv444p16leUVI_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_444, - 16, - PlaneOrder::YUV, - BigEndian(false), - ChromaOffset(0, 0), - UVInterleaved(true))}), - TestParameters( - {FileInfoForGuess({"sample_1280x720_yuv444p16leinterlaced_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_444, - 16, - PlaneOrder::YUV, - BigEndian(false), - ChromaOffset(0, 0), - UVInterleaved(true))}), - - // Invalid interlaced indicators - TestParameters( - {FileInfoForGuess({"sample_1280x720_yuv420pUVVI_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_420, 8)}), - TestParameters( - {FileInfoForGuess({"sample_1280x720_yuv420pinnterlaced_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_420, 8)}), - TestParameters( - {FileInfoForGuess({"sample_1280x720_yuv444p16leUVVI_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_444, 16)}), - TestParameters({FileInfoForGuess( - {"sample_1280x720_yuv444p16leinnterlaced_114812.yuv", "", BYTES_720P}), - PixelFormatYUV(Subsampling::YUV_444, 16)}), - - // V210 format (w must be multiple of 48) - TestParameters({FileInfoForGuess({"sample_1280x720_v210.yuv", "", BYTES_720P_V210}), - PixelFormatYUV(PredefinedPixelFormat::V210)}), - TestParameters({FileInfoForGuess({"something_1280x720_V210_som.yuv", "", BYTES_720P_V210}), - PixelFormatYUV(PredefinedPixelFormat::V210)}), - TestParameters({FileInfoForGuess({"sample_1280x720.v210", "", BYTES_720P_V210}), - PixelFormatYUV(PredefinedPixelFormat::V210)}), - TestParameters({FileInfoForGuess({"sample_1280x720.V210", "", BYTES_720P_V210}), - PixelFormatYUV(PredefinedPixelFormat::V210)}), - - // 4:0:0 formats - TestParameters({FileInfoForGuess({"sample_1920x1080_YUV400p16LE.yuv", "", BYTES_1808P_400}), - PixelFormatYUV(Subsampling::YUV_400, 16)}), - TestParameters({FileInfoForGuess({"sample_1920x1080_gray8le.yuv", "", BYTES_1808P_400}), - PixelFormatYUV(Subsampling::YUV_400, 8)}), - TestParameters({FileInfoForGuess({"sample_1920x1080_gray10le.yuv", "", BYTES_1808P_400}), - PixelFormatYUV(Subsampling::YUV_400, 10)}), - TestParameters({FileInfoForGuess({"sample_1920x1080_gray16le.yuv", "", BYTES_1808P_400}), - PixelFormatYUV(Subsampling::YUV_400, 16)}), - - // Raw bayer file - TestParameters({FileInfoForGuess({"sample_1920x1080_something.raw", "", BYTES_1808P_400}), - PixelFormatYUV(Subsampling::YUV_400, 8)}) - - // More tests please :) - - ), - getTestName); + VideoYUVTest, + GuessYUVFormatFromFilenameFrameSizeFileSizeDataLayoutAndBitDepth, + Values( + TestParameters({FileInfoForGuess({"something_1920x1080_25_8.yuv", "", BYTES_1080P}), + PixelFormatYUV(Subsampling::YUV_420, 8)}), + TestParameters({FileInfoForGuess({"something_1920x1080_25_10.yuv", "", BYTES_1080P}), + PixelFormatYUV(Subsampling::YUV_420, 10)}), + TestParameters({FileInfoForGuess({"something_1920x1080_25_12.yuv", "", BYTES_1080P}), + PixelFormatYUV(Subsampling::YUV_420, 12)}), + TestParameters({FileInfoForGuess({"something_1920x1080_25_16b.yuv", "", BYTES_1080P}), + PixelFormatYUV(Subsampling::YUV_420, 16)}), + TestParameters({FileInfoForGuess({"something_1920x1080_25_10b_something.yuv", "", BYTES_1080P}), + PixelFormatYUV(Subsampling::YUV_420, 10)}), + + // Issue 211 + TestParameters( + {FileInfoForGuess({"sample_1280x720_16bit_444_packed_20200109_114812.yuv", "", BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_444, 16, PackingOrder::YUV)}), + TestParameters({FileInfoForGuess({"sample_1280x720_16b_yuv44416le_packed_20200109_114812.yuv", + "", + BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_444, 16, PackingOrder::YUV)}), + TestParameters({FileInfoForGuess({"sample_1280x720_16b_yuv16le_packed_444_20200109_114812.yuv", + "", + BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_444, 16, PackingOrder::YUV)}), + + // Issue 221 + TestParameters({FileInfoForGuess({"sample_1280x720_yuv420pUVI_114812.yuv", "", BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_420, + 8, + PlaneOrder::YUV, + BigEndian(false), + ChromaOffset(0, 0), + UVInterleaved(true))}), + TestParameters( + {FileInfoForGuess({"sample_1280x720_yuv420pinterlaced_114812.yuv", "", BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_420, + 8, + PlaneOrder::YUV, + BigEndian(false), + ChromaOffset(0, 0), + UVInterleaved(true))}), + TestParameters({FileInfoForGuess({"sample_1280x720_yuv444p16leUVI_114812.yuv", "", BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_444, + 16, + PlaneOrder::YUV, + BigEndian(false), + ChromaOffset(0, 0), + UVInterleaved(true))}), + TestParameters( + {FileInfoForGuess({"sample_1280x720_yuv444p16leinterlaced_114812.yuv", "", BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_444, + 16, + PlaneOrder::YUV, + BigEndian(false), + ChromaOffset(0, 0), + UVInterleaved(true))}), + + // Invalid interlaced indicators + TestParameters({FileInfoForGuess({"sample_1280x720_yuv420pUVVI_114812.yuv", "", BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_420, 8)}), + TestParameters( + {FileInfoForGuess({"sample_1280x720_yuv420pinnterlaced_114812.yuv", "", BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_420, 8)}), + TestParameters( + {FileInfoForGuess({"sample_1280x720_yuv444p16leUVVI_114812.yuv", "", BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_444, 16)}), + TestParameters( + {FileInfoForGuess({"sample_1280x720_yuv444p16leinnterlaced_114812.yuv", "", BYTES_720P}), + PixelFormatYUV(Subsampling::YUV_444, 16)}), + + // V210 format (w must be multiple of 48) + TestParameters({FileInfoForGuess({"sample_1280x720_v210.yuv", "", BYTES_720P_V210}), + PixelFormatYUV(PredefinedPixelFormat::V210)}), + TestParameters({FileInfoForGuess({"something_1280x720_V210_som.yuv", "", BYTES_720P_V210}), + PixelFormatYUV(PredefinedPixelFormat::V210)}), + TestParameters({FileInfoForGuess({"sample_1280x720.v210", "", BYTES_720P_V210}), + PixelFormatYUV(PredefinedPixelFormat::V210)}), + TestParameters({FileInfoForGuess({"sample_1280x720.V210", "", BYTES_720P_V210}), + PixelFormatYUV(PredefinedPixelFormat::V210)}), + + // 4:0:0 formats + TestParameters({FileInfoForGuess({"sample_1920x1080_YUV400p16LE.yuv", "", BYTES_1808P_400}), + PixelFormatYUV(Subsampling::YUV_400, 16)}), + TestParameters({FileInfoForGuess({"sample_1920x1080_gray8le.yuv", "", BYTES_1808P_400}), + PixelFormatYUV(Subsampling::YUV_400, 8)}), + TestParameters({FileInfoForGuess({"sample_1920x1080_gray10le.yuv", "", BYTES_1808P_400}), + PixelFormatYUV(Subsampling::YUV_400, 10)}), + TestParameters({FileInfoForGuess({"sample_1920x1080_gray16le.yuv", "", BYTES_1808P_400}), + PixelFormatYUV(Subsampling::YUV_400, 16)}), + + // Raw bayer file + TestParameters({FileInfoForGuess({"sample_1920x1080_something.raw", "", BYTES_1808P_400}), + PixelFormatYUV(Subsampling::YUV_400, 8)}), + + TestParameters({FileInfoForGuess({"VisualAcuityLandolt_3840x2160_60fps_10bit_420p_BT709.yuv", + "", + BYTES_2160p_10bit_420}), + PixelFormatYUV(Subsampling::YUV_420, 10)}) + + // More tests please :) + + ), + getTestName); } // namespace video::yuv::test