#include "lib/image.h"
#include "lib/image_content.h"
#include "lib/image_decoder.h"
+#include "lib/image_jpeg.h"
#include "lib/image_png.h"
#include "lib/ffmpeg_image_proxy.h"
#include "test.h"
}
+/** Test Image::alpha_blend when the "base" image is XYZ12LE */
+BOOST_AUTO_TEST_CASE (alpha_blend_test_onto_xyz)
+{
+ Image xyz(AV_PIX_FMT_XYZ12LE, dcp::Size(50, 50), Image::Alignment::PADDED);
+ xyz.make_black();
+
+ auto overlay = make_shared<Image>(AV_PIX_FMT_RGBA, dcp::Size(8, 8), Image::Alignment::PADDED);
+ for (int y = 0; y < 8; ++y) {
+ uint8_t* p = overlay->data()[0] + (y * overlay->stride()[0]);
+ for (int x = 0; x < 8; ++x) {
+ *p++ = 255;
+ *p++ = 0;
+ *p++ = 0;
+ *p++ = 255;
+ }
+ }
+
+ xyz.alpha_blend(overlay, Position<int>(4, 4));
+
+ 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);
+ BOOST_REQUIRE_EQUAL(p[2], 13892U);
+ } else {
+ BOOST_REQUIRE_EQUAL(p[0], 0U);
+ BOOST_REQUIRE_EQUAL(p[1], 0U);
+ BOOST_REQUIRE_EQUAL(p[2], 0U);
+ }
+ p += 3;
+ }
+ }
+}
+
+
/** Test merge (list<PositionImage>) with a single image */
BOOST_AUTO_TEST_CASE (merge_test1)
{
}
+BOOST_AUTO_TEST_CASE (as_jpeg_test)
+{
+ auto proxy = make_shared<FFmpegImageProxy>("test/data/3d_test/000001.png");
+ auto image_rgb = proxy->image(Image::Alignment::PADDED).image;
+ auto image_bgr = image_rgb->convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_BGRA, Image::Alignment::PADDED, false);
+ image_as_jpeg(image_rgb, 60).write("build/test/as_jpeg_rgb.jpeg");
+ image_as_jpeg(image_bgr, 60).write("build/test/as_jpeg_bgr.jpeg");
+
+ check_image ("test/data/as_jpeg_rgb.jpeg", "build/test/as_jpeg_rgb.jpeg");
+ check_image ("test/data/as_jpeg_bgr.jpeg", "build/test/as_jpeg_bgr.jpeg");
+}
+
+
/* Very dumb test to fade black to make sure it stays black */
static void
fade_test_format_black (AVPixelFormat f, string name)