diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-09-26 13:29:59 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-01-28 02:01:57 +0100 |
| commit | e55d917a7e3a0d2988c3f53c3027fe890970e6a8 (patch) | |
| tree | d36c33d735a51a55ee95dcbd4debb3ffe893dcd7 /src/lib/grok | |
| parent | a75cac36969942d1fcb43dadfdf60434c840af54 (diff) | |
Create a single DcpomaticContext for all GrokContexts, rather than copying them.
I think this makes sense, and also allows us to forward-declare the
contexts in a forthcoming commit.
Diffstat (limited to 'src/lib/grok')
| -rw-r--r-- | src/lib/grok/context.h | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/lib/grok/context.h b/src/lib/grok/context.h index 1aac6f177..96477d597 100644 --- a/src/lib/grok/context.h +++ b/src/lib/grok/context.h @@ -106,17 +106,17 @@ struct DcpomaticContext { class GrokContext { public: - explicit GrokContext(DcpomaticContext const& dcpomatic_context) + explicit GrokContext(DcpomaticContext* dcpomatic_context) : _dcpomatic_context(dcpomatic_context) , messenger_(nullptr) , launched_(false) { if (Config::instance()->enable_gpu ()) { - boost::filesystem::path folder(_dcpomatic_context._location); + boost::filesystem::path folder(_dcpomatic_context->_location); boost::filesystem::path binaryPath = folder / "grk_compress"; if (!boost::filesystem::exists(binaryPath)) { getMessengerLogger()->error( - "Invalid binary location %s", _dcpomatic_context._location.c_str() + "Invalid binary location %s", _dcpomatic_context->_location.c_str() ); return; } @@ -134,7 +134,7 @@ public: [this](FrameProxy srcFrame, uint8_t* compressed, uint32_t compressedFrameLength) { auto compressed_data = std::make_shared<dcp::ArrayData>(compressed, compressedFrameLength); - _dcpomatic_context.writer_.write(compressed_data, srcFrame.index(), srcFrame.eyes()); + _dcpomatic_context->writer_.write(compressed_data, srcFrame.index(), srcFrame.eyes()); frame_done (); }; int const minimum_size = 16384; @@ -147,7 +147,7 @@ public: } auto encoded = std::make_shared<dcp::ArrayData>(fp->vf.encode_locally()); - _dcpomatic_context.writer_.write(encoded, fp->vf.index(), fp->vf.eyes()); + _dcpomatic_context->writer_.write(encoded, fp->vf.index(), fp->vf.eyes()); frame_done (); } } @@ -177,16 +177,16 @@ public: return true; if (MessengerInit::firstLaunch(true)) { auto s = dcpv.get_size(); - _dcpomatic_context.setDimensions(s.width, s.height); + _dcpomatic_context->setDimensions(s.width, s.height); auto config = Config::instance(); messenger_->launchGrok( - _dcpomatic_context._location, - _dcpomatic_context.width_,_dcpomatic_context.width_, - _dcpomatic_context.height_, + _dcpomatic_context->_location, + _dcpomatic_context->width_,_dcpomatic_context->width_, + _dcpomatic_context->height_, 3, 12, device, - _dcpomatic_context.film_->resolution() == Resolution::FOUR_K, - _dcpomatic_context.film_->video_frame_rate(), - _dcpomatic_context.film_->j2k_bandwidth(), + _dcpomatic_context->film_->resolution() == Resolution::FOUR_K, + _dcpomatic_context->film_->video_frame_rate(), + _dcpomatic_context->film_->j2k_bandwidth(), config->gpu_license_server(), config->gpu_license_port(), config->gpu_license() @@ -220,10 +220,10 @@ public: messenger_ = nullptr; } void frame_done () { - _dcpomatic_context.history_.event(); + _dcpomatic_context->history_.event(); } private: - DcpomaticContext _dcpomatic_context; + DcpomaticContext* _dcpomatic_context; ScheduledMessenger<FrameProxy> *messenger_; bool launched_; }; |
