#include "change_signaller.h"
#include "dcp_text_track.h"
+#include "dcpomatic_time.h"
#include "frame_rate_change.h"
+#include "named_channel.h"
+#include "resolution.h"
#include "signaller.h"
#include "transcode_job.h"
#include "types.h"
#include "util.h"
#include <dcp/encrypted_kdm.h>
+#include <dcp/file.h>
#include <dcp/key.h>
#include <dcp/language_tag.h>
#include <dcp/rating.h>
class Job;
class Film;
struct isdcf_name_test;
+struct isdcf_name_with_atmos;
struct recover_test_2d_encrypted;
struct atmos_encrypted_passthrough_test;
{
public:
InfoFileHandle (boost::mutex& mutex, boost::filesystem::path file, bool read);
- ~InfoFileHandle ();
- FILE* get () const {
- return _handle;
- }
-
- boost::filesystem::path file () const {
+ dcp::File& get () {
return _file;
}
friend class Film;
boost::mutex::scoped_lock _lock;
- FILE* _handle;
- boost::filesystem::path _file;
+ dcp::File _file;
};
+
/** @class Film
*
* @brief A representation of some audio, video, subtitle and closed-caption content,
return _tolerant;
}
+ bool last_written_by_earlier_than(int major, int minor, int micro) const;
+
/** Identifiers for the parts of our state;
used for signalling changes.
*/
private:
friend struct ::isdcf_name_test;
+ friend struct ::isdcf_name_with_atmos;
friend struct ::recover_test_2d_encrypted;
friend struct ::atmos_encrypted_passthrough_test;
template <class, class> friend class ChangeSignaller;
*/
boost::optional<boost::filesystem::path> _directory;
+ boost::optional<std::string> _last_written_by;
+
/** Name for DCP-o-matic */
std::string _name;
/** True if a auto-generated ISDCF-compliant name should be used for our DCP */