Various build fixes.
authorCarl Hetherington <cth@carlh.net>
Tue, 8 Mar 2016 12:45:52 +0000 (12:45 +0000)
committerCarl Hetherington <cth@carlh.net>
Mon, 21 Mar 2016 16:41:14 +0000 (16:41 +0000)
src/lib/dcp_video.cc
src/lib/exceptions.cc
src/lib/jpeg2000_encoder.cc
src/lib/jpeg2000_encoder.h
src/lib/openjpeg_encoder.cc
src/lib/openjpeg_encoder.h
src/lib/poznan_encoder.cc
src/lib/poznan_encoder.h
src/wx/config_dialog.cc
test/poznan.cc
wscript

index af4c8c3ab7e254817fc665d943dcae8c7c55fc00..aded330cdb58c1becd5e9e2811f612902b43e804 100644 (file)
@@ -121,6 +121,8 @@ DCPVideo::convert_to_xyz (shared_ptr<const PlayerVideo> frame, dcp::NoteHandler
 Data
 DCPVideo::encode_locally (dcp::NoteHandler note)
 {
+       shared_ptr<dcp::OpenJPEGImage> xyz = convert_to_xyz (_frame, note);
+
        shared_ptr<JPEG2000Encoder> encoder;
        if (Config::instance()->encoder ()) {
                encoder = JPEG2000Encoder::from_id (Config::instance()->encoder().get ());
index b5de4168f0491c8cfb310252a15bb2c837c7d5bb..ecc8cee8678a5f80017716c05a05c59b2a29e4ae 100644 (file)
@@ -82,7 +82,7 @@ ProgrammingError::ProgrammingError (string file, int line)
 }
 
 JPEG2000EncoderUnavailableException::JPEG2000EncoderUnavailableException (string encoder_name, string message)
-       : StringError (String::compose (_("Encoder %1 unavailable: %2"), encoder_name, message))
+       : runtime_error (String::compose (_("Encoder %1 unavailable: %2"), encoder_name, message))
 {
 
 }
index fe6959cd535e8e7068906fa4b4a97a77998f3112..f0fc88cfdbd41b084ddc8df5781ad2038629aab1 100644 (file)
@@ -28,6 +28,7 @@
 using std::vector;
 using std::string;
 using boost::shared_ptr;
+using dcp::Data;
 
 #define LOG_GENERAL(...) log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL);
 
index 0f907e1ba0ac1c783167d4db2f07115044d40f99..f77110b54685d6b1ccd988aeb125d22561da188c 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2015-2016 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -21,8 +21,8 @@
 #define DCPOMATIC_JPEG2000_ENCODER_H
 
 #include "types.h"
-#include "data.h"
 #include <dcp/types.h>
+#include <dcp/data.h>
 #include <boost/shared_ptr.hpp>
 #include <boost/optional.hpp>
 #include <list>
@@ -46,7 +46,7 @@ public:
 
         *  @return Encoded JPEG2000 data.
         */
-       Data encode (
+       dcp::Data encode (
                boost::shared_ptr<const dcp::OpenJPEGImage> input,
                int bandwidth,
                int frame_rate,
@@ -61,7 +61,7 @@ public:
 
 protected:
 
-       virtual Data do_encode (
+       virtual dcp::Data do_encode (
                boost::shared_ptr<const dcp::OpenJPEGImage> input
                ) = 0;
 
index 5094cf1508ed03657401dd9cd38f7137192053c8..e8c36316c13528be9132208378954a166b25fbb8 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
     Adapted from code Copyright (C) 2010-2011 Terrence Meiczinger
 
     This program is free software; you can redistribute it and/or modify
 */
 
 #include "openjpeg_encoder.h"
-#include "data.h"
 #include "exceptions.h"
+#include <dcp/data.h>
+#include <dcp/j2k.h>
 #include <dcp/openjpeg_image.h>
 
 #include "i18n.h"
 
 using std::string;
 using boost::shared_ptr;
+using dcp::Data;
 
 string
 OpenJPEGEncoder::name () const
@@ -37,113 +39,6 @@ OpenJPEGEncoder::name () const
 Data
 OpenJPEGEncoder::do_encode (shared_ptr<const dcp::OpenJPEGImage> input)
 {
-       /* Set the max image and component sizes based on frame_rate */
-       int max_cs_len = ((float) _bandwidth.get()) / 8 / _frame_rate.get();
-       if (_threed.get()) {
-               /* In 3D we have only half the normal bandwidth per eye */
-               max_cs_len /= 2;
-       }
-       int const max_comp_size = max_cs_len / 1.25;
-
-       /* get a J2K compressor handle */
-       opj_cinfo_t* cinfo = opj_create_compress (CODEC_J2K);
-       if (cinfo == 0) {
-               throw EncodeError (N_("could not create JPEG2000 encoder"));
-       }
-
-       /* Set encoding parameters to default values */
-       opj_cparameters_t parameters;
-       opj_set_default_encoder_parameters (&parameters);
-
-       /* Set default cinema parameters */
-       parameters.tile_size_on = false;
-       parameters.cp_tdx = 1;
-       parameters.cp_tdy = 1;
-
-       /* Tile part */
-       parameters.tp_flag = 'C';
-       parameters.tp_on = 1;
-
-       /* Tile and Image shall be at (0,0) */
-       parameters.cp_tx0 = 0;
-       parameters.cp_ty0 = 0;
-       parameters.image_offset_x0 = 0;
-       parameters.image_offset_y0 = 0;
-
-       /* Codeblock size = 32x32 */
-       parameters.cblockw_init = 32;
-       parameters.cblockh_init = 32;
-       parameters.csty |= 0x01;
-
-       /* The progression order shall be CPRL */
-       parameters.prog_order = CPRL;
-
-       /* No ROI */
-       parameters.roi_compno = -1;
-
-       parameters.subsampling_dx = 1;
-       parameters.subsampling_dy = 1;
-
-       /* 9-7 transform */
-       parameters.irreversible = 1;
-
-       parameters.tcp_rates[0] = 0;
-       parameters.tcp_numlayers++;
-       parameters.cp_disto_alloc = 1;
-       parameters.cp_rsiz = _resolution.get() == RESOLUTION_2K ? CINEMA2K : CINEMA4K;
-       if (_resolution.get() == RESOLUTION_4K) {
-               parameters.numpocs = 2;
-               parameters.POC[0].tile = 1;
-               parameters.POC[0].resno0 = 0;
-               parameters.POC[0].compno0 = 0;
-               parameters.POC[0].layno1 = 1;
-               parameters.POC[0].resno1 = parameters.numresolution - 1;
-               parameters.POC[0].compno1 = 3;
-               parameters.POC[0].prg1 = CPRL;
-               parameters.POC[1].tile = 1;
-               parameters.POC[1].resno0 = parameters.numresolution - 1;
-               parameters.POC[1].compno0 = 0;
-               parameters.POC[1].layno1 = 1;
-               parameters.POC[1].resno1 = parameters.numresolution;
-               parameters.POC[1].compno1 = 3;
-               parameters.POC[1].prg1 = CPRL;
-       }
-
-       parameters.cp_comment = strdup (N_("DCP-o-matic"));
-       parameters.cp_cinema = _resolution.get() == RESOLUTION_2K ? CINEMA2K_24 : CINEMA4K_24;
-
-       /* 3 components, so use MCT */
-       parameters.tcp_mct = 1;
-
-       /* set max image */
-       parameters.max_comp_size = max_comp_size;
-       parameters.tcp_rates[0] = ((float) (3 * input->size().width * input->size().height * 12)) / (max_cs_len * 8);
-
-       /* Set event manager to null (openjpeg 1.3 bug) */
-       cinfo->event_mgr = 0;
-
-       /* Setup the encoder parameters using the current image and user parameters */
-       opj_setup_encoder (cinfo, &parameters, input->opj_image ());
-
-       opj_cio_t* cio = opj_cio_open ((opj_common_ptr) cinfo, 0, 0);
-       if (cio == 0) {
-               opj_destroy_compress (cinfo);
-               throw EncodeError (N_("could not open JPEG2000 stream"));
-       }
-
-       int const r = opj_encode (cinfo, cio, input->opj_image(), 0);
-       if (r == 0) {
-               opj_cio_close (cio);
-               opj_destroy_compress (cinfo);
-               throw EncodeError (N_("JPEG2000 encoding failed"));
-       }
-
-       Data enc (cio->buffer, cio_tell (cio));
-
-       opj_cio_close (cio);
-       free (parameters.cp_comment);
-       opj_destroy_compress (cinfo);
-
-       return enc;
+       return dcp::compress_j2k (input, _bandwidth.get(), _frame_rate.get(), _threed.get(), _resolution.get() == RESOLUTION_4K);
 }
 
index 0351abe4dc013eb22a4c80a9799b6f430a542a68..86362801905e4c28e9ea87da67b530ed4c764a5a 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -30,5 +30,5 @@ public:
        }
 
 protected:
-       Data do_encode (boost::shared_ptr<const dcp::OpenJPEGImage> input);
+       dcp::Data do_encode (boost::shared_ptr<const dcp::OpenJPEGImage> input);
 };
index 22da60abd7a20b9bf3129f4f37534116740cdc46..fe36ebc64a9ad29d04087eda1e022e20ad6c745b 100644 (file)
 
 #include "poznan_encoder.h"
 #include "exceptions.h"
-#include "data.h"
 #include "raw_convert.h"
-#include <poznan/tier2/markers.h>
+#include <poznan-jpeg2k-cth/tier2/markers.h>
 #include <dcp/openjpeg_image.h>
+#include <dcp/data.h>
 #include <dlfcn.h>
 #include <thrust/system/cuda/error.h>
 
@@ -31,6 +31,7 @@
 using std::string;
 using std::cout;
 using boost::shared_ptr;
+using dcp::Data;
 
 PoznanEncoder::PoznanEncoder ()
 {
index 91413493c136371563b825330606fc54607af308..6cdc5f0740ed85eb22c40dbb43b9c683d99d85ff 100644 (file)
@@ -18,8 +18,8 @@
 */
 
 #include "jpeg2000_encoder.h"
-#include <poznan/config/parameters.h>
-#include <poznan/types/image_types.h>
+#include <poznan-jpeg2k-cth/config/parameters.h>
+#include <poznan-jpeg2k-cth/types/image_types.h>
 #include <string>
 
 class PoznanEncoder : public JPEG2000Encoder
@@ -35,7 +35,7 @@ public:
 
 protected:
 
-       Data do_encode (
+       dcp::Data do_encode (
                boost::shared_ptr<const dcp::OpenJPEGImage> input
                );
 
index 887ef3de60c35c8a83ce5270024e35981e5fb183..9b4c10029fbd5e6b12d84d264f2a32f8940347da 100644 (file)
@@ -40,6 +40,7 @@
 #include "lib/raw_convert.h"
 #include "lib/cross.h"
 #include "lib/exceptions.h"
+#include "lib/jpeg2000_encoder.h"
 #include <dcp/exceptions.h>
 #include <dcp/certificate_chain.h>
 #include <wx/stdpaths.h>
@@ -232,7 +233,7 @@ private:
                table->Add (bottom_table, wxGBPosition (r, 0), wxGBSpan (2, 2), wxEXPAND);
                ++r;
 
-               add_label_to_grid_bag_sizer (table, _panel, _("JPEG2000 encoder"), true, wxGBPosition (r, 0));
+               add_label_to_sizer (table, _panel, _("JPEG2000 encoder"), true, wxGBPosition (r, 0));
                _encoder = new wxChoice (_panel, wxID_ANY);
                BOOST_FOREACH (shared_ptr<JPEG2000Encoder> i, JPEG2000Encoder::all()) {
                        _encoder->Append (std_to_wx (i->name ()));
@@ -297,11 +298,9 @@ private:
                checked_set (_check_for_test_updates, config->check_for_test_updates ());
                checked_set (_issuer, config->dcp_issuer ());
                checked_set (_creator, config->dcp_creator ());
-<<<<<<< 0f3c2864599f9e5a5ec001266b4aefb0205d1e1f
                checked_set (_cinemas_file, config->cinemas_file());
 
                setup_sensitivity ();
-=======
 
                if (!config->encoder ()) {
                        checked_set (_encoder, 0);
@@ -313,7 +312,6 @@ private:
                                }
                        }
                }
->>>>>>> Basic classes for different JPEG2000 encoders; config to choose one.
        }
 
        void setup_sensitivity ()
index fe18667d10c2f89400c35b6223e4ad69f31e110e..588ef754e946edea94af655cd1cda5c26bc1092b 100644 (file)
@@ -7,6 +7,7 @@
 
 using std::vector;
 using boost::shared_ptr;
+using dcp::Data;
 
 int main ()
 {
@@ -14,7 +15,7 @@ int main ()
 
        shared_ptr<JPEG2000Encoder> encoder = JPEG2000Encoder::from_id ("poznan");
 
-       shared_ptr<Image> rgb (new Image (PIX_FMT_RGB24, dcp::Size (1998, 1080), false));
+       shared_ptr<Image> rgb (new Image (AV_PIX_FMT_RGB24, dcp::Size (1998, 1080), false));
 
        int const line_size = 1998 * 3;
 
diff --git a/wscript b/wscript
index 4fd019bf32dc2798a044f39988992eb0876e2880..b36ff878d6c8253326ecee236d562d995874d52b 100644 (file)
--- a/wscript
+++ b/wscript
@@ -394,7 +394,7 @@ def configure(conf):
     conf.find_program('msgfmt', var='MSGFMT')
 
     # Check for headers of poznan JPEG2000 encoding library
-    conf.check(header_name="poznan/config/parameters.h")
+    conf.check(header_name="poznan-jpeg2k-cth/config/parameters.h")
 
     datadir = conf.env.DATADIR
     if not datadir: