Make xyz_to_xyz into a constructor of OpenJPEGImage where it makes more sense.
authorCarl Hetherington <cth@carlh.net>
Fri, 23 Jun 2017 10:57:50 +0000 (11:57 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 23 Jun 2017 10:57:50 +0000 (11:57 +0100)
src/openjpeg_image.cc
src/openjpeg_image.h
src/rgb_xyz.cc
src/rgb_xyz.h

index cf9063a92455fea1520db26cf1c8c8873a559cd6..318895662ce4d5bf5bb94f59d8e07b4783d24038 100644 (file)
@@ -84,6 +84,32 @@ OpenJPEGImage::OpenJPEGImage (OpenJPEGImage const & other)
  *  @param size Size for the frame in pixels.
  */
 OpenJPEGImage::OpenJPEGImage (Size size)
+{
+       create (size);
+}
+
+/** @param data_16 XYZ/RGB image data in packed 16:16:16, 48bpp with
+ *  the 2-byte value for each component stored as little-endian.
+ */
+OpenJPEGImage::OpenJPEGImage (uint8_t const * data_16, dcp::Size size, int stride)
+{
+       create (size);
+
+       int jn = 0;
+       for (int y = 0; y < size.height; ++y) {
+               uint16_t const * p = reinterpret_cast<uint16_t const *> (data_16 + y * stride);
+               for (int x = 0; x < size.width; ++x) {
+                       /* Truncate 16-bit to 12-bit */
+                       _opj_image->comps[0].data[jn] = *p++ >> 4;
+                       _opj_image->comps[1].data[jn] = *p++ >> 4;
+                       _opj_image->comps[2].data[jn] = *p++ >> 4;
+                       ++jn;
+               }
+       }
+}
+
+void
+OpenJPEGImage::create (Size size)
 {
        opj_image_cmptparm_t cmptparm[3];
 
index fa83a8dea39077d42150e592420e12d766defd99..002e2a834df16c5120127daca1161b25e7bcb318 100644 (file)
@@ -51,6 +51,7 @@ public:
        explicit OpenJPEGImage (opj_image_t *);
        explicit OpenJPEGImage (OpenJPEGImage const & other);
        explicit OpenJPEGImage (Size);
+       OpenJPEGImage (uint8_t const * in_16, dcp::Size size, int stride);
        ~OpenJPEGImage ();
 
        int* data (int) const;
@@ -67,6 +68,8 @@ public:
        }
 
 private:
+       void create (Size size);
+
        opj_image_t* _opj_image; ///< opj_image_t that we are managing
 };
 
index b4307756c14d31fa4a97f6c2fdfb874dbeeb7bed..d0774e7c1bcd142b002a9850a8058643b1190728 100644 (file)
@@ -348,28 +348,3 @@ dcp::rgb_to_xyz (
 
        return xyz;
 }
-
-
-/** @param xyz_16 XYZ image data in packed 16:16:16, 48bpp, 16X, 16Y,
- *  16Z, with the 2-byte value for each X/Y/Z component stored as
- *  little-endian.
- */
-shared_ptr<dcp::OpenJPEGImage>
-dcp::xyz_to_xyz (uint8_t const * xyz_16, dcp::Size size, int stride)
-{
-       shared_ptr<OpenJPEGImage> xyz_12 (new OpenJPEGImage (size));
-
-       int jn = 0;
-       for (int y = 0; y < size.height; ++y) {
-               uint16_t const * p = reinterpret_cast<uint16_t const *> (xyz_16 + y * stride);
-               for (int x = 0; x < size.width; ++x) {
-                       /* Truncate 16-bit to 12-bit */
-                       xyz_12->data(0)[jn] = *p++ >> 4;
-                       xyz_12->data(1)[jn] = *p++ >> 4;
-                       xyz_12->data(2)[jn] = *p++ >> 4;
-                       ++jn;
-               }
-       }
-
-       return xyz_12;
-}
index 907869afb59a23451f7e1f6edcf7450f923b957a..fcd15cfd6500bfa18ca58001ef3e808fea7cdb24 100644 (file)
@@ -66,8 +66,6 @@ extern boost::shared_ptr<OpenJPEGImage> rgb_to_xyz (
        boost::optional<NoteHandler> note = boost::optional<NoteHandler> ()
        );
 
-extern boost::shared_ptr<OpenJPEGImage> xyz_to_xyz (uint8_t const * xyz, dcp::Size size, int stride);
-
 extern void combined_rgb_to_xyz (ColourConversion const & conversion, double* matrix);
 
 }