diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-02-02 22:33:27 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-02-02 22:33:27 +0000 |
| commit | 989f182558193a51e0a26603fb2ca59f827216a0 (patch) | |
| tree | 7d2b2511967e5417838a4343341e5aa9d26cf2b8 /test/decryption_test.cc | |
| parent | 0d7fe66361a40702cb97357955cf35256f1d2c26 (diff) | |
Remove Image and ARGBImage and just dump RGB data into
uint8_t* buffers. This is hopefully simpler than trying
to come up with some Image hierarchy that suits everything.
Diffstat (limited to 'test/decryption_test.cc')
| -rw-r--r-- | test/decryption_test.cc | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/test/decryption_test.cc b/test/decryption_test.cc index a28f3c64..282e74f3 100644 --- a/test/decryption_test.cc +++ b/test/decryption_test.cc @@ -17,22 +17,28 @@ */ -#include <boost/test/unit_test.hpp> #include "dcp.h" #include "mono_picture_frame.h" #include "cpl.h" #include "decrypted_kdm.h" #include "encrypted_kdm.h" -#include "argb_image.h" #include "mono_picture_mxf.h" #include "reel_picture_asset.h" #include "reel.h" #include "test.h" +#include "xyz_image.h" +#include "rgb_xyz.h" +#include "colour_conversion.h" +#include <boost/test/unit_test.hpp> +#include <boost/scoped_array.hpp> +using std::pair; +using std::make_pair; using boost::dynamic_pointer_cast; using boost::shared_ptr; +using boost::scoped_array; -static shared_ptr<const dcp::ARGBImage> +pair<uint8_t*, dcp::Size> get_frame (dcp::DCP const & dcp) { shared_ptr<const dcp::Reel> reel = dcp.cpls().front()->reels().front (); @@ -41,7 +47,11 @@ get_frame (dcp::DCP const & dcp) shared_ptr<const dcp::MonoPictureMXF> mono_picture = dynamic_pointer_cast<const dcp::MonoPictureMXF> (picture); shared_ptr<const dcp::MonoPictureFrame> j2k_frame = mono_picture->get_frame (0); - return j2k_frame->argb_image (); + shared_ptr<dcp::XYZImage> 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::xyz_to_srgb(), argb); + return make_pair (argb, xyz->size ()); } /** Decrypt an encrypted test DCP and check that its first frame is the same as the unencrypted version */ @@ -68,14 +78,24 @@ BOOST_AUTO_TEST_CASE (decryption_test) encrypted.add (kdm); - shared_ptr<const dcp::ARGBImage> plaintext_frame = get_frame (plaintext); - shared_ptr<const dcp::ARGBImage> encrypted_frame = get_frame (encrypted); + pair<uint8_t *, dcp::Size> plaintext_frame = get_frame (plaintext); + pair<uint8_t *, dcp::Size> encrypted_frame = get_frame (encrypted); /* Check that plaintext and encrypted are the same */ - BOOST_CHECK_EQUAL (plaintext_frame->stride(), encrypted_frame->stride()); - BOOST_CHECK_EQUAL (plaintext_frame->size().width, encrypted_frame->size().width); - BOOST_CHECK_EQUAL (plaintext_frame->size().height, encrypted_frame->size().height); - BOOST_CHECK_EQUAL (memcmp (plaintext_frame->data(), encrypted_frame->data(), plaintext_frame->stride() * plaintext_frame->size().height), 0); + + BOOST_CHECK_EQUAL (plaintext_frame.second, encrypted_frame.second); + + BOOST_CHECK_EQUAL ( + memcmp ( + plaintext_frame.first, + encrypted_frame.first, + plaintext_frame.second.width * plaintext_frame.second.height * 4 + ), + 0 + ); + + delete[] plaintext_frame.first; + delete[] encrypted_frame.first; } /** Load in a KDM that didn't work at first */ |
