_viewer->Started.connect (bind(&DOMFrame::playback_started, this, _1));
_viewer->Seeked.connect (bind(&DOMFrame::playback_seeked, this, _1));
_viewer->Stopped.connect (bind(&DOMFrame::playback_stopped, this, _1));
-#ifdef DCPOMATIC_VARIANT_SWAROOP
- _viewer->PositionChanged.connect (bind(&DOMFrame::position_changed, this));
-#endif
_info = new PlayerInformation (_overall_panel, _viewer);
setup_main_sizer (Config::instance()->player_mode());
#ifdef __WXOSX__
setup_screen ();
#ifdef DCPOMATIC_VARIANT_SWAROOP
- if (
- boost::filesystem::is_regular_file(Config::path("position")) &&
- boost::filesystem::is_regular_file(Config::path("spl.xml"))) {
-
- shared_ptr<Film> film (new Film(boost::optional<boost::filesystem::path>()));
- film->read_metadata (Config::path("spl.xml"));
- reset_film (film);
- FILE* f = fopen_boost (Config::path("position"), "r");
- if (f) {
- char buffer[64];
- fscanf (f, "%63s", buffer);
- _viewer->seek (DCPTime(atoi(buffer)), true);
- _viewer->start ();
- fclose (f);
- }
- }
-
+ sc->check_restart ();
#endif
}
- void position_changed ()
- {
- if (!_viewer->playing() || _viewer->position().get() % DCPTime::HZ) {
- return;
- }
-
- FILE* f = fopen_boost (Config::path("position"), "w");
- if (f) {
- string const p = dcp::raw_convert<string> (_viewer->position().get());
- fwrite (p.c_str(), p.length(), 1, f);
- fclose (f);
- }
- }
-
#ifdef DCPOMATIC_VARIANT_SWAROOP
void monitor_checker_state_changed ()
{
reset_film ();
try {
shared_ptr<DCPContent> dcp (new DCPContent(dir));
- _film->examine_and_add_content (dcp);
+ _film->examine_and_add_content (dcp, true);
bool const ok = display_progress (_("DCP-o-matic Player"), _("Loading content"));
if (!ok || !report_errors_from_last_job(this)) {
return;
}
+#ifndef DCPOMATIC_VARIANT_SWAROOP
Config::instance()->add_to_player_history (dir);
+#endif
} catch (dcp::DCPReadError& e) {
error_dialog (this, wxString::Format(_("Could not load a DCP from %s"), std_to_wx(dir.string())), std_to_wx(e.what()));
}
}
-#ifdef DCPOMATIC_VARIANT_SWAROOP
- optional<dcp::EncryptedKDM> get_kdm_from_url (shared_ptr<DCPContent> dcp)
- {
- ScopedTemporary temp;
- string url = Config::instance()->kdm_server_url();
- boost::algorithm::replace_all (url, "{CPL}", *dcp->cpl());
- optional<dcp::EncryptedKDM> kdm;
- if (dcp->cpl() && !get_from_url(url, false, temp)) {
- try {
- kdm = dcp::EncryptedKDM (dcp::file_to_string(temp.file()));
- if (kdm->cpl_id() != dcp->cpl()) {
- kdm = boost::none;
- }
- } catch (std::exception& e) {
- /* Hey well */
- }
- }
- return kdm;
- }
-#endif
-
- optional<dcp::EncryptedKDM> get_kdm_from_directory (shared_ptr<DCPContent> dcp)
- {
- using namespace boost::filesystem;
- optional<path> kdm_dir = Config::instance()->player_kdm_directory();
- if (!kdm_dir) {
- return optional<dcp::EncryptedKDM>();
- }
- for (directory_iterator i = directory_iterator(*kdm_dir); i != directory_iterator(); ++i) {
- try {
- if (file_size(i->path()) < MAX_KDM_SIZE) {
- dcp::EncryptedKDM kdm (dcp::file_to_string(i->path()));
- if (kdm.cpl_id() == dcp->cpl()) {
- return kdm;
- }
- }
- } catch (std::exception& e) {
- /* Hey well */
- }
- }
- return optional<dcp::EncryptedKDM>();
- }
-
void reset_film_weak (weak_ptr<Film> weak_film)
{
shared_ptr<Film> film = weak_film.lock ();
return;
}
- _film->write_metadata (Config::path("spl.xml"));
-
if (_viewer->playing ()) {
_viewer->stop ();
}
BOOST_FOREACH (shared_ptr<Content> i, _film->content()) {
shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent>(i);
- if (dcp && dcp->needs_kdm()) {
- optional<dcp::EncryptedKDM> kdm;
-#ifdef DCPOMATIC_VARIANT_SWAROOP
- kdm = get_kdm_from_url (dcp);
-#endif
- if (!kdm) {
- kdm = get_kdm_from_directory (dcp);
- }
-
- if (kdm) {
- dcp->add_kdm (*kdm);
- dcp->examine (_film, shared_ptr<Job>());
- }
- }
BOOST_FOREACH (shared_ptr<TextContent> j, i->text) {
j->set_use (true);
static const wxCmdLineEntryDesc command_line_description[] = {
{ wxCMD_LINE_PARAM, 0, 0, "DCP to load or create", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
+ { wxCMD_LINE_OPTION, "c", "config", "Directory containing config.xml", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_NONE, "", "", "", wxCmdLineParamType (0), 0 }
};
_dcp_to_load = wx_to_std (parser.GetParam (0));
}
+ wxString config;
+ if (parser.Found("c", &config)) {
+ Config::override_path = wx_to_std (config);
+ }
+
return true;
}