X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ffilm.h;h=59589b325af3a3b0f863689f9e8d88c9cac8dc5e;hb=44b57d623dec97a3f9955082f0b8a7a8d27b7518;hp=40aa7b0f6617deaa85c18a65852953e223e9e50d;hpb=fb16d3932b49957672b5da3ced016186c926de9b;p=dcpomatic.git diff --git a/src/lib/film.h b/src/lib/film.h index 40aa7b0f6..59589b325 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -29,7 +29,7 @@ #include #include #include -#include +#include extern "C" { #include } @@ -48,141 +48,15 @@ class ExamineContentJob; * A representation of a piece of video (with sound), including naming, * the source content file, and how it should be presented in a DCP. */ -class Film +class Film : public FilmState { public: Film (std::string d, bool must_exist = true); - Film (Film const &); ~Film (); - void write_metadata () const; - - /** @return complete path to directory containing the film metadata */ - std::string directory () const { - return _state.directory; - } - - std::string content () const; - ContentType content_type () const; - - /** @return name for DVD-o-matic */ - std::string name () const { - return _state.name; - } - - /** @return number of pixels to crop from the sides of the original picture */ - Crop crop () const { - return _state.crop; - } - - /** @return the format to present this film in (flat, scope, etc.) */ - Format const * format () const { - return _state.format; - } - - /** @return video filters that should be used when generating DCPs */ - std::vector filters () const { - return _state.filters; - } - - /** @return scaler algorithm to use */ - Scaler const * scaler () const { - return _state.scaler; - } - - /** @return number of frames to put in the DCP, or 0 for all */ - int dcp_frames () const { - return _state.dcp_frames; - } - - TrimAction dcp_trim_action () const { - return _state.dcp_trim_action; - } - - /** @return true to create an A/B comparison DCP, where the left half of the image - * is the video without any filters or post-processing, and the right half - * has the specified filters and post-processing. - */ - bool dcp_ab () const { - return _state.dcp_ab; - } - - float audio_gain () const { - return _state.audio_gain; - } - - int audio_delay () const { - return _state.audio_delay; - } - - int still_duration () const { - return _state.still_duration; - } - - void set_filters (std::vector const &); - - void set_scaler (Scaler const *); - - /** @return the type of content that this Film represents (feature, trailer etc.) */ - DCPContentType const * dcp_content_type () { - return _state.dcp_content_type; - } - - void set_dcp_frames (int); - void set_dcp_trim_action (TrimAction); - void set_dcp_ab (bool); - - void set_name (std::string); - void set_content (std::string); - void set_top_crop (int); - void set_bottom_crop (int); - void set_left_crop (int); - void set_right_crop (int); - void set_format (Format const *); - void set_dcp_content_type (DCPContentType const *); - void set_audio_gain (float); - void set_audio_delay (int); - void set_still_duration (int); - - /** @return size, in pixels, of the source (ignoring cropping) */ - Size size () const { - return _state.size; - } - - /** @return length, in video frames */ - int length () const { - return _state.length; - } - - /** @return nnumber of video frames per second */ - float frames_per_second () const { - return _state.frames_per_second; - } - - /** @return number of audio channels */ - int audio_channels () const { - return _state.audio_channels; - } - - /** @return audio sample rate, in Hz */ - int audio_sample_rate () const { - return _state.audio_sample_rate; - } - - /** @return format of the audio samples */ - AVSampleFormat audio_sample_format () const { - return _state.audio_sample_format; - } - std::string j2k_dir () const; - std::vector audio_files () const; - - void update_thumbs_pre_gui (); - void update_thumbs_post_gui (); - int num_thumbs () const; - int thumb_frame (int) const; - std::string thumb_file (int) const; + std::pair thumb_subtitle (int) const; void copy_from_dvd_post_gui (); void examine_content (); @@ -190,37 +64,7 @@ public: void send_dcp_to_tms (); void copy_from_dvd (); - /** @return true if our metadata has been modified since it was last saved */ - bool dirty () const { - return _dirty; - } - - void make_dcp (bool, int freq = 0); - - enum Property { - NONE, - NAME, - CONTENT, - DCP_CONTENT_TYPE, - FORMAT, - CROP, - FILTERS, - SCALER, - DCP_FRAMES, - DCP_TRIM_ACTION, - DCP_AB, - AUDIO_GAIN, - AUDIO_DELAY, - THUMBS, - SIZE, - LENGTH, - FRAMES_PER_SECOND, - AUDIO_CHANNELS, - AUDIO_SAMPLE_RATE, - STILL_DURATION - }; - - boost::shared_ptr state_copy () const; + void make_dcp (bool); /** @return Logger. * It is safe to call this from any thread. @@ -230,25 +74,11 @@ public: } int encoded_frames () const; - - /** Emitted when some metadata property has changed */ - mutable sigc::signal1 Changed; -private: - void read_metadata (); - std::string metadata_file () const; - void update_dimensions (); - void signal_changed (Property); - - /** The majority of our state. Kept in a separate object - * so that it can easily be copied for passing onto long-running - * jobs (which then have an unchanging set of parameters). - */ - FilmState _state; - - /** true if our metadata has changed since it was last written to disk */ - mutable bool _dirty; + void set_content (std::string); +private: + /** Log to write to */ Log* _log;