use about 240Mb with 72 encoding threads.
*/
_frames_in_memory_multiplier = 3;
+ _decode_reduction = optional<int>();
_allowed_dcp_frame_rates.clear ();
_allowed_dcp_frame_rates.push_back (24);
}
}
_frames_in_memory_multiplier = f.optional_number_child<int>("FramesInMemoryMultiplier").get_value_or(3);
+ _decode_reduction = f.optional_number_child<int>("DecodeReduction");
/* Replace any cinemas from config.xml with those from the configured file */
if (boost::filesystem::exists (_cinemas_file)) {
*/
root->add_child("FramesInMemoryMultiplier")->add_child_text(raw_convert<string>(_frames_in_memory_multiplier));
+ /* [XML] DecodeReduction power of 2 to reduce DCP images by before decoding in the player */
+ if (_decode_reduction) {
+ root->add_child("DecodeReduction")->add_child_text(raw_convert<string>(_decode_reduction.get()));
+ }
+
try {
doc.write_to_file_formatted(config_file().string());
} catch (xmlpp::exception& e) {
return _frames_in_memory_multiplier;
}
+ boost::optional<int> decode_reduction () const {
+ return _decode_reduction;
+ }
+
+ /* SET (mostly) */
+
void set_master_encoding_threads (int n) {
maybe_set (_master_encoding_threads, n);
}
maybe_set (_frames_in_memory_multiplier, m);
}
+ void set_decode_reduction (boost::optional<int> r) {
+ maybe_set (_decode_reduction, r);
+ }
+
void clear_history () {
_history.clear ();
changed ();
boost::optional<KDMWriteType> _last_kdm_write_type;
boost::optional<DKDMWriteType> _last_dkdm_write_type;
int _frames_in_memory_multiplier;
+ boost::optional<int> _decode_reduction;
/** Singleton instance, or 0 */
static Config* _instance;
{
_viewer->set_dcp_decode_reduction (reduction);
_info->triggered_update ();
+ Config::instance()->set_decode_reduction (reduction);
}
void load_dcp (boost::filesystem::path dir)
#endif
wxMenu* view = new wxMenu;
- view->AppendRadioItem (ID_view_scale_appropriate, _("Set decode resolution to match display"));
- view->AppendRadioItem (ID_view_scale_full, _("Decode at full resolution"));
- view->AppendRadioItem (ID_view_scale_half, _("Decode at half resolution"));
- view->AppendRadioItem (ID_view_scale_quarter, _("Decode at quarter resolution"));
+ optional<int> c = Config::instance()->decode_reduction();
+ view->AppendRadioItem(ID_view_scale_appropriate, _("Set decode resolution to match display"))->Check(!static_cast<bool>(c));
+ view->AppendRadioItem(ID_view_scale_full, _("Decode at full resolution"))->Check(c && c.get() == 0);
+ view->AppendRadioItem(ID_view_scale_half, _("Decode at half resolution"))->Check(c && c.get() == 1);
+ view->AppendRadioItem(ID_view_scale_quarter, _("Decode at quarter resolution"))->Check(c && c.get() == 2);
wxMenu* tools = new wxMenu;
tools->Append (ID_tools_check_for_updates, _("Check for updates"));