From: Carl Hetherington Date: Thu, 4 Aug 2016 20:56:14 +0000 (+0100) Subject: Different configuration of filename format for assets / metadata (since CPL/PKL files... X-Git-Tag: v2.9.9~2 X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=ada96204dfa1456da77e2ea7469f492cfc0a5483 Different configuration of filename format for assets / metadata (since CPL/PKL files don't refer to reels). --- diff --git a/src/lib/config.cc b/src/lib/config.cc index 5dbbd692e..6f7c8ec55 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -110,7 +110,8 @@ Config::set_defaults () _cinemas_file = path ("cinemas.xml"); _show_hints_before_make_dcp = true; _kdm_filename_format = dcp::NameFormat ("KDM %f %c %s"); - _dcp_filename_format = dcp::NameFormat ("%t_%i"); + _dcp_metadata_filename_format = dcp::NameFormat ("%t_%i"); + _dcp_asset_filename_format = dcp::NameFormat ("%t_%i"); _allowed_dcp_frame_rates.clear (); _allowed_dcp_frame_rates.push_back (24); @@ -294,7 +295,8 @@ try _cinemas_file = f.optional_string_child("CinemasFile").get_value_or (path ("cinemas.xml").string ()); _show_hints_before_make_dcp = f.optional_bool_child("ShowHintsBeforeMakeDCP").get_value_or (true); _kdm_filename_format = dcp::NameFormat (f.optional_string_child("KDMFilenameFormat").get_value_or ("KDM %f %c %s")); - _dcp_filename_format = dcp::NameFormat (f.optional_string_child("DCPFilenameFormat").get_value_or ("%t_%i.mxf")); + _dcp_metadata_filename_format = dcp::NameFormat (f.optional_string_child("DCPMetadataFilenameFormat").get_value_or ("%t_%i")); + _dcp_asset_filename_format = dcp::NameFormat (f.optional_string_child("DCPAssetFilenameFormat").get_value_or ("%t_%i")); /* Replace any cinemas from config.xml with those from the configured file */ if (boost::filesystem::exists (_cinemas_file)) { @@ -453,7 +455,8 @@ Config::write_config_xml () const root->add_child("CinemasFile")->add_child_text (_cinemas_file.string()); root->add_child("ShowHintsBeforeMakeDCP")->add_child_text (_show_hints_before_make_dcp ? "1" : "0"); root->add_child("KDMFilenameFormat")->add_child_text (_kdm_filename_format.specification ()); - root->add_child("DCPFilenameFormat")->add_child_text (_dcp_filename_format.specification ()); + root->add_child("DCPMetadataFilenameFormat")->add_child_text (_dcp_metadata_filename_format.specification ()); + root->add_child("DCPAssetFilenameFormat")->add_child_text (_dcp_asset_filename_format.specification ()); try { doc.write_to_file_formatted (path("config.xml").string ()); diff --git a/src/lib/config.h b/src/lib/config.h index 3a0308462..a988cda6b 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -271,8 +271,12 @@ public: return _kdm_filename_format; } - dcp::NameFormat dcp_filename_format () const { - return _dcp_filename_format; + dcp::NameFormat dcp_metadata_filename_format () const { + return _dcp_metadata_filename_format; + } + + dcp::NameFormat dcp_asset_filename_format () const { + return _dcp_asset_filename_format; } /** @param n New number of local encoding threads */ @@ -486,8 +490,12 @@ public: maybe_set (_kdm_filename_format, n); } - void set_dcp_filename_format (dcp::NameFormat n) { - maybe_set (_dcp_filename_format, n); + void set_dcp_metadata_filename_format (dcp::NameFormat n) { + maybe_set (_dcp_metadata_filename_format, n); + } + + void set_dcp_asset_filename_format (dcp::NameFormat n) { + maybe_set (_dcp_asset_filename_format, n); } void clear_history () { @@ -602,7 +610,8 @@ private: boost::filesystem::path _cinemas_file; bool _show_hints_before_make_dcp; dcp::NameFormat _kdm_filename_format; - dcp::NameFormat _dcp_filename_format; + dcp::NameFormat _dcp_metadata_filename_format; + dcp::NameFormat _dcp_asset_filename_format; /** Singleton instance, or 0 */ static Config* _instance; diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index 176c54c8f..fa2813837 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -334,7 +334,9 @@ ReelWriter::create_reel (list const & refs, listadd (reel_picture_asset); + /* If we have a hash for this asset in the CPL, assume that it is correct */ if (reel_picture_asset->hash()) { reel_picture_asset->asset_ref()->set_hash (reel_picture_asset->hash().get()); diff --git a/src/lib/util.cc b/src/lib/util.cc index a0d6453ff..1cf71ba32 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -627,7 +627,7 @@ video_asset_filename (shared_ptr asset, int reel_index, int r if (summary) { values['c'] = summary.get(); } - return Config::instance()->dcp_filename_format().get(values) + ".mxf"; + return Config::instance()->dcp_asset_filename_format().get(values) + ".mxf"; } string @@ -641,7 +641,7 @@ audio_asset_filename (shared_ptr asset, int reel_index, int ree if (summary) { values['c'] = summary.get(); } - return Config::instance()->dcp_filename_format().get(values) + ".mxf"; + return Config::instance()->dcp_asset_filename_format().get(values) + ".mxf"; } float diff --git a/src/lib/writer.cc b/src/lib/writer.cc index a5085abae..85099062f 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -514,7 +514,7 @@ Writer::finish () } } - dcp.write_xml (_film->interop () ? dcp::INTEROP : dcp::SMPTE, meta, signer, Config::instance()->dcp_filename_format()); + dcp.write_xml (_film->interop () ? dcp::INTEROP : dcp::SMPTE, meta, signer, Config::instance()->dcp_metadata_filename_format()); LOG_GENERAL ( N_("Wrote %1 FULL, %2 FAKE, %3 REPEAT, %4 pushed to disk"), _full_written, _fake_written, _repeat_written, _pushed_to_disk diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 640f73873..a33099a42 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -1376,6 +1376,17 @@ public: {} private: + void add_top_aligned_label_to_sizer (wxSizer* table, wxWindow* parent, wxString text) + { + int flags = wxALIGN_TOP | wxTOP | wxLEFT; +#ifdef __WXOSX__ + flags |= wxALIGN_RIGHT; + text += wxT (":"); +#endif + wxStaticText* m = new wxStaticText (parent, wxID_ANY, text); + table->Add (m, 0, flags, DCPOMATIC_SIZER_Y_GAP); + } + void setup () { wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); @@ -1400,40 +1411,39 @@ private: table->AddSpacer (0); { - int flags = wxALIGN_TOP | wxTOP | wxLEFT; - wxString t = _("DCP filename format"); -#ifdef __WXOSX__ - flags |= wxALIGN_RIGHT; - t += wxT (":"); -#endif - wxStaticText* m = new wxStaticText (_panel, wxID_ANY, t); - table->Add (m, 0, flags, DCPOMATIC_SIZER_Y_GAP); + add_top_aligned_label_to_sizer (table, _panel, _("DCP metadata filename format")); + dcp::NameFormat::Map titles; + titles['t'] = "type (cpl/pkl)"; + titles['i'] = "unique ID"; + titles['c'] = "content filename"; + dcp::NameFormat::Map examples; + examples['t'] = "cpl"; + examples['i'] = "eb1c112c-ca3c-4ae6-9263-c6714ff05d64"; + examples['c'] = "myfile.mp4"; + _dcp_metadata_filename_format = new NameFormatEditor (_panel, Config::instance()->dcp_metadata_filename_format(), titles, examples); + table->Add (_dcp_metadata_filename_format->panel(), 1, wxEXPAND | wxALL); } - dcp::NameFormat::Map titles; - titles['t'] = "type (j2c/pcm/sub/cpl/pkl)"; - titles['i'] = "unique ID"; - titles['r'] = "reel number"; - titles['n'] = "number of reels"; - titles['c'] = "content filename"; - dcp::NameFormat::Map examples; - examples['t'] = "j2c"; - examples['i'] = "eb1c112c-ca3c-4ae6-9263-c6714ff05d64"; - examples['r'] = "1"; - examples['n'] = "4"; - examples['c'] = "myfile.mp4"; - _dcp_filename_format = new NameFormatEditor (_panel, Config::instance()->dcp_filename_format(), titles, examples); - table->Add (_dcp_filename_format->panel(), 1, wxEXPAND | wxALL); - -#ifdef __WXOSX__ - wxStaticText* m = new wxStaticText (_panel, wxID_ANY, _("Log:")); - table->Add (m, 0, wxALIGN_TOP | wxLEFT | wxRIGHT | wxEXPAND | wxALL | wxALIGN_RIGHT, 6); -#else - wxStaticText* m = new wxStaticText (_panel, wxID_ANY, _("Log")); - table->Add (m, 0, wxALIGN_TOP | wxLEFT | wxRIGHT | wxEXPAND | wxALL, 6); -#endif + { + add_top_aligned_label_to_sizer (table, _panel, _("DCP asset filename format")); + dcp::NameFormat::Map titles; + titles['t'] = "type (j2c/pcm/sub)"; + titles['i'] = "unique ID"; + titles['r'] = "reel number"; + titles['n'] = "number of reels"; + titles['c'] = "content filename"; + dcp::NameFormat::Map examples; + examples['t'] = "j2c"; + examples['i'] = "eb1c112c-ca3c-4ae6-9263-c6714ff05d64"; + examples['r'] = "1"; + examples['n'] = "4"; + examples['c'] = "myfile.mp4"; + _dcp_asset_filename_format = new NameFormatEditor (_panel, Config::instance()->dcp_asset_filename_format(), titles, examples); + table->Add (_dcp_asset_filename_format->panel(), 1, wxEXPAND | wxALL); + } { + add_top_aligned_label_to_sizer (table, _panel, _("Log")); wxBoxSizer* t = new wxBoxSizer (wxVERTICAL); _log_general = new wxCheckBox (_panel, wxID_ANY, _("General")); t->Add (_log_general, 1, wxEXPAND | wxALL); @@ -1463,7 +1473,8 @@ private: _maximum_j2k_bandwidth->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&AdvancedPage::maximum_j2k_bandwidth_changed, this)); _allow_any_dcp_frame_rate->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::allow_any_dcp_frame_rate_changed, this)); _only_servers_encode->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::only_servers_encode_changed, this)); - _dcp_filename_format->Changed.connect (boost::bind (&AdvancedPage::dcp_filename_format_changed, this)); + _dcp_metadata_filename_format->Changed.connect (boost::bind (&AdvancedPage::dcp_metadata_filename_format_changed, this)); + _dcp_asset_filename_format->Changed.connect (boost::bind (&AdvancedPage::dcp_asset_filename_format_changed, this)); _log_general->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); _log_warning->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); _log_error->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); @@ -1510,9 +1521,14 @@ private: Config::instance()->set_only_servers_encode (_only_servers_encode->GetValue ()); } - void dcp_filename_format_changed () + void dcp_metadata_filename_format_changed () + { + Config::instance()->set_dcp_metadata_filename_format (_dcp_metadata_filename_format->get ()); + } + + void dcp_asset_filename_format_changed () { - Config::instance()->set_dcp_filename_format (_dcp_filename_format->get ()); + Config::instance()->set_dcp_asset_filename_format (_dcp_asset_filename_format->get ()); } void log_changed () @@ -1552,7 +1568,8 @@ private: wxSpinCtrl* _maximum_j2k_bandwidth; wxCheckBox* _allow_any_dcp_frame_rate; wxCheckBox* _only_servers_encode; - NameFormatEditor* _dcp_filename_format; + NameFormatEditor* _dcp_metadata_filename_format; + NameFormatEditor* _dcp_asset_filename_format; wxCheckBox* _log_general; wxCheckBox* _log_warning; wxCheckBox* _log_error; diff --git a/test/file_naming_test.cc b/test/file_naming_test.cc index 5bc2e6dd4..054685a7e 100644 --- a/test/file_naming_test.cc +++ b/test/file_naming_test.cc @@ -30,7 +30,7 @@ using boost::shared_ptr; BOOST_AUTO_TEST_CASE (file_naming_test) { dcp::NameFormat nf ("%c"); - Config::instance()->set_dcp_filename_format (dcp::NameFormat ("%c")); + Config::instance()->set_dcp_metadata_filename_format (dcp::NameFormat ("%c")); shared_ptr film = new_test_film ("file_naming_test"); film->set_name ("file_naming_test"); film->set_dcp_content_type (DCPContentType::from_isdcf_name ("FTR"));