}
+static
void
-alpha_blend_test_one (AVPixelFormat format, string suffix)
+alpha_blend_test_bgra_onto(AVPixelFormat format, string suffix)
{
auto proxy = make_shared<FFmpegImageProxy>(TestPaths::private_data() / "prophet_frame.tiff");
auto raw = proxy->image(Image::Alignment::PADDED).image;
/** Test Image::alpha_blend */
BOOST_AUTO_TEST_CASE (alpha_blend_test)
{
- alpha_blend_test_one (AV_PIX_FMT_RGB24, "rgb24");
- alpha_blend_test_one (AV_PIX_FMT_BGRA, "bgra");
- alpha_blend_test_one (AV_PIX_FMT_RGBA, "rgba");
- alpha_blend_test_one (AV_PIX_FMT_RGB48LE, "rgb48le");
- alpha_blend_test_one (AV_PIX_FMT_YUV420P, "yuv420p");
- alpha_blend_test_one (AV_PIX_FMT_YUV420P10, "yuv420p10");
- alpha_blend_test_one (AV_PIX_FMT_YUV422P10LE, "yuv422p10le");
+ alpha_blend_test_bgra_onto(AV_PIX_FMT_RGB24, "rgb24");
+ alpha_blend_test_bgra_onto(AV_PIX_FMT_BGRA, "bgra");
+ alpha_blend_test_bgra_onto(AV_PIX_FMT_RGBA, "rgba");
+ alpha_blend_test_bgra_onto(AV_PIX_FMT_RGB48LE, "rgb48le");
+ alpha_blend_test_bgra_onto(AV_PIX_FMT_YUV420P, "yuv420p");
+ alpha_blend_test_bgra_onto(AV_PIX_FMT_YUV420P10, "yuv420p10");
+ alpha_blend_test_bgra_onto(AV_PIX_FMT_YUV422P10LE, "yuv422p10le");
}
for (int y = 0; y < 50; ++y) {
uint16_t* p = reinterpret_cast<uint16_t*>(xyz.data()[0]) + (y * xyz.stride()[0] / 2);
for (int x = 0; x < 50; ++x) {
- std::cout << "x=" << x << ", y=" << y << "\n";
if (4 <= x && x < 12 && 4 <= y && y < 12) {
BOOST_REQUIRE_EQUAL(p[0], 45078U);
BOOST_REQUIRE_EQUAL(p[1], 34939U);
Crop(512, 0, 0, 0), dcp::Size(1486, 1080), dcp::Size(1998, 1080), dcp::YUVToRGB::REC709, VideoRange::FULL, AV_PIX_FMT_XYZ12LE, VideoRange::FULL, Image::Alignment::COMPACT, false
);
write_image(cropped, "build/test/crop_scale_window_test4.png");
- check_image("test/data/crop_scale_window_test4.png", "build/test/crop_scale_window_test4.png", 35000);
+ check_image("test/data/crop_scale_window_test4.png", "build/test/crop_scale_window_test4.png");
}
Crop(512, 0, 0, 0), dcp::Size(1486, 1080), dcp::Size(1998, 1080), dcp::YUVToRGB::REC709, VideoRange::FULL, AV_PIX_FMT_XYZ12LE, VideoRange::FULL, Image::Alignment::COMPACT, false
);
write_image(cropped, "build/test/crop_scale_window_test6.png");
- check_image("test/data/crop_scale_window_test6.png", "build/test/crop_scale_window_test6.png", 35000);
+ check_image("test/data/crop_scale_window_test6.png", "build/test/crop_scale_window_test6.png");
}
}
+BOOST_AUTO_TEST_CASE (crop_scale_window_test8)
+{
+ using namespace boost::filesystem;
+
+ auto image = make_shared<Image>(AV_PIX_FMT_YUV420P, dcp::Size(800, 600), Image::Alignment::PADDED);
+ memset(image->data()[0], 41, image->stride()[0] * 600);
+ memset(image->data()[1], 240, image->stride()[1] * 300);
+ memset(image->data()[2], 41, image->stride()[2] * 300);
+ auto scaled = image->crop_scale_window(
+ Crop(), dcp::Size(1435, 1080), dcp::Size(1998, 1080), dcp::YUVToRGB::REC709, VideoRange::FULL, AV_PIX_FMT_YUV420P, VideoRange::FULL, Image::Alignment::PADDED, false
+ );
+ auto file = "crop_scale_window_test8.png";
+ write_image(scaled->convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_RGB24, Image::Alignment::COMPACT, false), path("build") / "test" / file);
+ check_image(path("test") / "data" / file, path("build") / "test" / file, 10);
+}
+
+
BOOST_AUTO_TEST_CASE (as_png_test)
{
auto proxy = make_shared<FFmpegImageProxy>("test/data/3d_test/000001.png");
AV_PIX_FMT_BGRA,
AV_PIX_FMT_YUV420P,
AV_PIX_FMT_YUV422P10LE,
+ AV_PIX_FMT_YUV444P10LE
};
list<std::pair<int, int>> positions = {