A few fixes to poznan setup.
authorCarl Hetherington <cth@carlh.net>
Sat, 2 May 2015 19:43:11 +0000 (20:43 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 21 Mar 2016 16:41:07 +0000 (16:41 +0000)
src/lib/jpeg2000_encoder.cc
src/lib/poznan_encoder.cc
src/lib/poznan_encoder.h

index fd0780a38b95c5d2081671e75f1e7ff81c043153..617e9fa7bda61d4312378bea54f4d73fc1263c2e 100644 (file)
@@ -37,15 +37,15 @@ void
 JPEG2000Encoder::setup_encoders ()
 {
        try {
-               _encoders.push_back (shared_ptr<JPEG2000Encoder> (new OpenJPEGEncoder ()));
-       } catch (JPEG2000EncoderUnavailableException &) {
-               
+               _encoders.push_back (shared_ptr<JPEG2000Encoder> (new PoznanEncoder ()));
+       } catch (JPEG2000EncoderUnavailableException& e) {
+               std::cerr << e.what() << "\n";
        }
 
        try {
-               _encoders.push_back (shared_ptr<JPEG2000Encoder> (new PoznanEncoder ()));
+               _encoders.push_back (shared_ptr<JPEG2000Encoder> (new OpenJPEGEncoder ()));
        } catch (JPEG2000EncoderUnavailableException &) {
-
+               
        }
 }
 
@@ -70,6 +70,8 @@ JPEG2000Encoder::from_id (string id)
 shared_ptr<EncodedData>
 JPEG2000Encoder::encode (shared_ptr<const dcp::XYZImage> input,        dcp::NoteHandler note, int bandwidth, int frame_rate, Resolution resolution, bool threed)
 {
+       std::cout << "Encoding with " << name() << "\n";
+       
        if (!_bandwidth || _bandwidth.get() != bandwidth ||
            !_frame_rate || _frame_rate.get() != frame_rate ||
            !_resolution || _resolution.get() != resolution ||
index 17f5b6ac6dd05195bc68a994a4316cecf069ab09..4834a25893001fea09cb93bb2058e6a3ad6dd8bb 100644 (file)
@@ -32,20 +32,19 @@ PoznanEncoder::PoznanEncoder ()
        void* preprocessing = open_library ("preprocessing");
        void* dwt = open_library ("dwt");
        void* tier1 = open_library ("tier1");
+       void* gpu_coeff_coder = open_library ("gpu_coeff_coder");
        void* tier2 = open_library ("tier2");
        
        _init_device = (void (*)(type_parameters *)) dlsym (config, "init_device");
        _mct = (void (*)(type_image *, type_parameters *)) dlsym (preprocessing, "mct");
        _fwt = (void (*)(type_tile *)) dlsym (dwt, "fwt");
        _quantize_tile = (void (*)(type_tile *)) dlsym (tier1, "quantize_tile");
-       _encode_tile = (void (*)(type_tile *)) dlsym (tier1, "encode_tile");
+       _encode_tile = (void (*)(type_tile *)) dlsym (gpu_coeff_coder, "encode_tile");
        _write_codestream = (void (*)(type_image *)) dlsym (tier2, "write_codestream");
        
        if (!_init_device || !_mct || !_fwt || !_quantize_tile || !_encode_tile || !_write_codestream) {
                throw JPEG2000EncoderUnavailableException (name(), "missing symbol");
        }
-
-       setup_device ();
 }
 
 void *
@@ -62,7 +61,7 @@ PoznanEncoder::open_library (string library_name)
 }
 
 void
-PoznanEncoder::setup_device ()
+PoznanEncoder::parameters_changed ()
 {
        /* One tile which covers entire image */
        _param.param_tile_w = -1;
@@ -123,9 +122,3 @@ PoznanEncoder::do_encode (shared_ptr<const dcp::XYZImage> input, dcp::NoteHandle
        _write_codestream (&img);
        return shared_ptr<EncodedData> ();
 }
-
-void
-PoznanEncoder::parameters_changed ()
-{
-       setup_device ();
-}
index 4f2f0cc4d4e4da19d91edf9b8c1ada63f2256a5c..111161d02b202c142731ee7384813683d8df0ad1 100644 (file)
@@ -44,7 +44,6 @@ protected:
        
 private:
        void* open_library (std::string name);
-       void setup_device ();
        
        type_parameters _param;