summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-05-28 23:25:11 +0100
committerCarl Hetherington <cth@carlh.net>2014-05-28 23:25:11 +0100
commit93439dbc6d93dafd88e80d51d6473c8d97aa02c7 (patch)
tree60696c8c2e35a7035800aa2b8b4becdd56b339a8 /src/lib
parent487b34e3dfdcbeea608aa89d4999c6f201a74583 (diff)
Modify KDM generation to work with CPLs rather than DCPs, and allow
user to specify a particular CPL to use. Tidy up the KDM dialog a bit.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/film.cc28
-rw-r--r--src/lib/film.h6
-rw-r--r--src/lib/kdm.cc20
-rw-r--r--src/lib/kdm.h6
-rw-r--r--src/lib/types.h15
5 files changed, 42 insertions, 33 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 5fde0447a..1b5b2b366 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -766,11 +766,11 @@ Film::j2c_path (int f, Eyes e, bool t) const
return file (p);
}
-/** @return List of subdirectories (not full paths) containing DCPs that can be successfully libdcp::DCP::read() */
-list<boost::filesystem::path>
-Film::dcps () const
+/** Find all the DCPs in our directory that can be libdcp::DCP::read() and return details of their CPLs */
+vector<CPLSummary>
+Film::cpls () const
{
- list<boost::filesystem::path> out;
+ vector<CPLSummary> out;
boost::filesystem::path const dir = directory ();
for (boost::filesystem::directory_iterator i = boost::filesystem::directory_iterator(dir); i != boost::filesystem::directory_iterator(); ++i) {
@@ -782,7 +782,11 @@ Film::dcps () const
try {
libdcp::DCP dcp (*i);
dcp.read ();
- out.push_back (i->path().leaf ());
+ out.push_back (
+ CPLSummary (
+ i->path().leaf().string(), dcp.cpls().front()->id(), dcp.cpls().front()->name(), dcp.cpls().front()->filename()
+ )
+ );
} catch (...) {
}
@@ -982,28 +986,18 @@ Film::frame_size () const
libdcp::KDM
Film::make_kdm (
shared_ptr<libdcp::Certificate> target,
- boost::filesystem::path dcp_dir,
+ boost::filesystem::path cpl_file,
boost::posix_time::ptime from,
boost::posix_time::ptime until
) const
{
shared_ptr<const Signer> signer = make_signer ();
- libdcp::DCP dcp (dir (dcp_dir.string ()));
-
- try {
- dcp.read ();
- } catch (...) {
- throw KDMError (_("Could not read DCP to make KDM for"));
- }
-
time_t now = time (0);
struct tm* tm = localtime (&now);
string const issue_date = libdcp::tm_to_string (tm);
- dcp.cpls().front()->set_mxf_keys (key ());
-
- return libdcp::KDM (dcp.cpls().front(), signer, target, from, until, "DCP-o-matic", issue_date);
+ return libdcp::KDM (cpl_file, signer, target, key (), from, until, "DCP-o-matic", issue_date);
}
list<libdcp::KDM>
diff --git a/src/lib/film.h b/src/lib/film.h
index 162b67b35..06c770efa 100644
--- a/src/lib/film.h
+++ b/src/lib/film.h
@@ -98,7 +98,7 @@ public:
libdcp::Size full_frame () const;
libdcp::Size frame_size () const;
- std::list<boost::filesystem::path> dcps () const;
+ std::vector<CPLSummary> cpls () const;
boost::shared_ptr<Player> make_player () const;
boost::shared_ptr<Playlist> playlist () const;
@@ -123,14 +123,14 @@ public:
libdcp::KDM
make_kdm (
boost::shared_ptr<libdcp::Certificate> target,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl_file,
boost::posix_time::ptime from,
boost::posix_time::ptime until
) const;
std::list<libdcp::KDM> make_kdms (
std::list<boost::shared_ptr<Screen> >,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl_file,
boost::posix_time::ptime from,
boost::posix_time::ptime until
) const;
diff --git a/src/lib/kdm.cc b/src/lib/kdm.cc
index 2a8e191e7..d5d5ec0a0 100644
--- a/src/lib/kdm.cc
+++ b/src/lib/kdm.cc
@@ -102,12 +102,12 @@ static list<ScreenKDM>
make_screen_kdms (
shared_ptr<const Film> film,
list<shared_ptr<Screen> > screens,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl,
boost::posix_time::ptime from,
boost::posix_time::ptime to
)
{
- list<libdcp::KDM> kdms = film->make_kdms (screens, dcp, from, to);
+ list<libdcp::KDM> kdms = film->make_kdms (screens, cpl, from, to);
list<ScreenKDM> screen_kdms;
@@ -126,12 +126,12 @@ static list<CinemaKDMs>
make_cinema_kdms (
shared_ptr<const Film> film,
list<shared_ptr<Screen> > screens,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl,
boost::posix_time::ptime from,
boost::posix_time::ptime to
)
{
- list<ScreenKDM> screen_kdms = make_screen_kdms (film, screens, dcp, from, to);
+ list<ScreenKDM> screen_kdms = make_screen_kdms (film, screens, cpl, from, to);
list<CinemaKDMs> cinema_kdms;
while (!screen_kdms.empty ()) {
@@ -171,13 +171,13 @@ void
write_kdm_files (
shared_ptr<const Film> film,
list<shared_ptr<Screen> > screens,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl,
boost::posix_time::ptime from,
boost::posix_time::ptime to,
boost::filesystem::path directory
)
{
- list<ScreenKDM> screen_kdms = make_screen_kdms (film, screens, dcp, from, to);
+ list<ScreenKDM> screen_kdms = make_screen_kdms (film, screens, cpl, from, to);
/* Write KDMs to the specified directory */
for (list<ScreenKDM>::iterator i = screen_kdms.begin(); i != screen_kdms.end(); ++i) {
@@ -191,13 +191,13 @@ void
write_kdm_zip_files (
shared_ptr<const Film> film,
list<shared_ptr<Screen> > screens,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl,
boost::posix_time::ptime from,
boost::posix_time::ptime to,
boost::filesystem::path directory
)
{
- list<CinemaKDMs> cinema_kdms = make_cinema_kdms (film, screens, dcp, from, to);
+ list<CinemaKDMs> cinema_kdms = make_cinema_kdms (film, screens, cpl, from, to);
for (list<CinemaKDMs>::const_iterator i = cinema_kdms.begin(); i != cinema_kdms.end(); ++i) {
boost::filesystem::path path = directory;
@@ -210,12 +210,12 @@ void
email_kdms (
shared_ptr<const Film> film,
list<shared_ptr<Screen> > screens,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl,
boost::posix_time::ptime from,
boost::posix_time::ptime to
)
{
- list<CinemaKDMs> cinema_kdms = make_cinema_kdms (film, screens, dcp, from, to);
+ list<CinemaKDMs> cinema_kdms = make_cinema_kdms (film, screens, cpl, from, to);
for (list<CinemaKDMs>::const_iterator i = cinema_kdms.begin(); i != cinema_kdms.end(); ++i) {
diff --git a/src/lib/kdm.h b/src/lib/kdm.h
index c4fd43d49..8aacd7b72 100644
--- a/src/lib/kdm.h
+++ b/src/lib/kdm.h
@@ -26,7 +26,7 @@ class Film;
extern void write_kdm_files (
boost::shared_ptr<const Film> film,
std::list<boost::shared_ptr<Screen> > screens,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl,
boost::posix_time::ptime from,
boost::posix_time::ptime to,
boost::filesystem::path directory
@@ -35,7 +35,7 @@ extern void write_kdm_files (
extern void write_kdm_zip_files (
boost::shared_ptr<const Film> film,
std::list<boost::shared_ptr<Screen> > screens,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl,
boost::posix_time::ptime from,
boost::posix_time::ptime to,
boost::filesystem::path directory
@@ -44,7 +44,7 @@ extern void write_kdm_zip_files (
extern void email_kdms (
boost::shared_ptr<const Film> film,
std::list<boost::shared_ptr<Screen> > screens,
- boost::filesystem::path dcp,
+ boost::filesystem::path cpl,
boost::posix_time::ptime from,
boost::posix_time::ptime to
);
diff --git a/src/lib/types.h b/src/lib/types.h
index 3fab302fc..4eb3d927e 100644
--- a/src/lib/types.h
+++ b/src/lib/types.h
@@ -138,6 +138,21 @@ struct Crop
void as_xml (xmlpp::Node *) const;
};
+struct CPLSummary
+{
+ CPLSummary (std::string d, std::string i, std::string a, boost::filesystem::path f)
+ : dcp_directory (d)
+ , cpl_id (i)
+ , cpl_annotation_text (a)
+ , cpl_file (f)
+ {}
+
+ std::string dcp_directory;
+ std::string cpl_id;
+ std::string cpl_annotation_text;
+ boost::filesystem::path cpl_file;
+};
+
extern bool operator== (Crop const & a, Crop const & b);
extern bool operator!= (Crop const & a, Crop const & b);