X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ffilm.h;h=72d6d5e8d409bce8b2751e565c6fce1de789e751;hb=e68386830c8812f80cb4b3af9871170226b916b4;hp=1d1034775d6042943fbc1c923e33c3d0cf5482a3;hpb=df5228d00d70d68218e7f606131a0c5fa2caba9f;p=dcpomatic.git diff --git a/src/lib/film.h b/src/lib/film.h index 1d1034775..72d6d5e8d 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -37,6 +37,7 @@ #include "types.h" #include "util.h" #include +#include #include #include #include @@ -75,13 +76,8 @@ class InfoFileHandle { 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; } @@ -89,10 +85,10 @@ private: 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, @@ -131,7 +127,7 @@ public: void use_template (std::string name); std::list read_metadata (boost::optional path = boost::optional ()); - void write_metadata () const; + void write_metadata (); void write_metadata (boost::filesystem::path path) const; void write_template (boost::filesystem::path path) const; std::shared_ptr metadata (bool with_content_paths = true) const; @@ -152,8 +148,6 @@ public: std::vector cpls () const; - int audio_frame_rate () const; - std::list closed_caption_tracks () const; uint64_t required_disk_space () const; @@ -216,6 +210,8 @@ public: 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. */ @@ -233,6 +229,7 @@ public: ENCRYPTED, J2K_BANDWIDTH, VIDEO_FRAME_RATE, + AUDIO_FRAME_RATE, AUDIO_CHANNELS, /** The setting of _three_d has changed */ THREE_D, @@ -417,6 +414,10 @@ public: return _isdcf_date; } + int audio_frame_rate () const { + return _audio_frame_rate; + } + /* SET */ void set_directory (boost::filesystem::path); @@ -463,6 +464,7 @@ public: void set_distributor (boost::optional d = boost::none); void set_luminance (boost::optional l = boost::none); void set_audio_language (boost::optional language); + void set_audio_frame_rate (int rate); void add_ffoc_lfoc (Markers& markers) const; @@ -477,6 +479,8 @@ public: */ mutable boost::signals2::signal LengthChange; + boost::signals2::signal DirtyChange; + /** Emitted when we have something important to tell the user */ boost::signals2::signal Message; @@ -503,6 +507,7 @@ private: void audio_analysis_finished (); void check_settings_consistency (); void maybe_set_container_and_resolution (); + void set_dirty (bool dirty); /** Log to write to */ std::shared_ptr _log; @@ -513,6 +518,8 @@ private: */ boost::optional _directory; + boost::optional _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 */ @@ -570,6 +577,7 @@ private: bool _two_d_version_of_three_d = false; boost::optional _luminance; boost::optional _audio_language; + int _audio_frame_rate = 48000; int _state_version;