diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-03-30 23:08:54 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-03-30 23:08:54 +0100 |
| commit | b0b10b50e5a9a21e54459369b9e6eba2b7dd44a3 (patch) | |
| tree | 202ecf605396db022c8f608ed87cf8e0c7be59c3 | |
| parent | 47c65b4db31a821c4c0934d0dcc88970423980c3 (diff) | |
Add stride parameter to dcp::xyz_to_rgba.
| -rw-r--r-- | examples/read_dcp.cc | 2 | ||||
| -rw-r--r-- | src/rgb_xyz.cc | 6 | ||||
| -rw-r--r-- | src/rgb_xyz.h | 3 | ||||
| -rw-r--r-- | test/decryption_test.cc | 2 | ||||
| -rw-r--r-- | test/round_trip_test.cc | 4 |
5 files changed, 9 insertions, 8 deletions
diff --git a/examples/read_dcp.cc b/examples/read_dcp.cc index a851f0bb..5b44fb51 100644 --- a/examples/read_dcp.cc +++ b/examples/read_dcp.cc @@ -94,7 +94,7 @@ main () /* Convert to ARGB */ boost::scoped_array<uint8_t> rgba (new uint8_t[picture_image_xyz->size().width * picture_image_xyz->size().height * 4]); - dcp::xyz_to_rgba (picture_image_xyz, dcp::ColourConversion::srgb_to_xyz(), rgba.get ()); + dcp::xyz_to_rgba (picture_image_xyz, dcp::ColourConversion::srgb_to_xyz(), rgba.get(), picture_image_xyz->size().width * 4); Magick::Image image (picture_image_xyz->size().width, picture_image_xyz->size().height, "BGRA", Magick::CharPixel, rgba.get ()); image.write ("frame.png"); diff --git a/src/rgb_xyz.cc b/src/rgb_xyz.cc index 1110accb..b4307756 100644 --- a/src/rgb_xyz.cc +++ b/src/rgb_xyz.cc @@ -67,7 +67,8 @@ void dcp::xyz_to_rgba ( boost::shared_ptr<const OpenJPEGImage> xyz_image, ColourConversion const & conversion, - uint8_t* argb + uint8_t* argb, + int stride ) { int const max_colour = pow (2, 16) - 1; @@ -134,8 +135,7 @@ dcp::xyz_to_rgba ( *argb_line++ = 0xff; } - /* 4 bytes per pixel */ - argb += width * 4; + argb += stride; } } diff --git a/src/rgb_xyz.h b/src/rgb_xyz.h index 51846083..907869af 100644 --- a/src/rgb_xyz.h +++ b/src/rgb_xyz.h @@ -46,7 +46,8 @@ class ColourConversion; extern void xyz_to_rgba ( boost::shared_ptr<const OpenJPEGImage>, ColourConversion const & conversion, - uint8_t* rgba + uint8_t* rgba, + int stride ); extern void xyz_to_rgb ( diff --git a/test/decryption_test.cc b/test/decryption_test.cc index 32ea7cda..49fb3a92 100644 --- a/test/decryption_test.cc +++ b/test/decryption_test.cc @@ -52,7 +52,7 @@ get_frame (dcp::DCP const & dcp) shared_ptr<dcp::OpenJPEGImage> xyz = j2k_frame->xyz_image(); uint8_t* argb = new uint8_t[xyz->size().width * xyz->size().height * 4]; - dcp::xyz_to_rgba (j2k_frame->xyz_image(), dcp::ColourConversion::srgb_to_xyz(), argb); + dcp::xyz_to_rgba (j2k_frame->xyz_image(), dcp::ColourConversion::srgb_to_xyz(), argb, xyz->size().width * 4); return make_pair (argb, xyz->size ()); } diff --git a/test/round_trip_test.cc b/test/round_trip_test.cc index e2b90244..396dba67 100644 --- a/test/round_trip_test.cc +++ b/test/round_trip_test.cc @@ -112,10 +112,10 @@ BOOST_AUTO_TEST_CASE (round_trip_test) shared_ptr<dcp::OpenJPEGImage> xyz_B = asset_B->start_read()->get_frame(0)->xyz_image (); scoped_array<uint8_t> frame_A (new uint8_t[xyz_A->size().width * xyz_A->size().height * 4]); - dcp::xyz_to_rgba (xyz_A, dcp::ColourConversion::srgb_to_xyz(), frame_A.get()); + dcp::xyz_to_rgba (xyz_A, dcp::ColourConversion::srgb_to_xyz(), frame_A.get(), xyz_A->size().width * 4); scoped_array<uint8_t> frame_B (new uint8_t[xyz_B->size().width * xyz_B->size().height * 4]); - dcp::xyz_to_rgba (xyz_B, dcp::ColourConversion::srgb_to_xyz(), frame_B.get()); + dcp::xyz_to_rgba (xyz_B, dcp::ColourConversion::srgb_to_xyz(), frame_B.get(), xyz_B->size().width * 4); BOOST_CHECK_EQUAL (xyz_A->size().width, xyz_B->size().width); BOOST_CHECK_EQUAL (xyz_A->size().height, xyz_B->size().height); |
