class ExternalAudioStream;
/** @class Film
- * @brief A representation of a video with sound.
+ * @brief A representation of a video, maybe with sound.
*
- * A representation of a piece of video (with sound), including naming,
+ * A representation of a piece of video (maybe with sound), including naming,
* the source content file, and how it should be presented in a DCP.
*/
class Film : public boost::enable_shared_from_this<Film>
~Film ();
std::string j2k_dir () const;
- std::vector<std::string> audio_files () const;
void examine_content ();
void send_dcp_to_tms ();
void write_metadata () const;
void read_metadata ();
- Size cropped_size (Size) const;
+ libdcp::Size cropped_size (libdcp::Size) const;
boost::optional<int> dcp_length () const;
std::string dci_name () const;
std::string dcp_name () const;
+ /** @return true if our state has changed since we last saved it */
bool dirty () const {
return _dirty;
}
void set_dci_date_today ();
+ /** Identifiers for the parts of our state;
+ used for signalling changes.
+ */
enum Property {
NONE,
NAME,
WITH_SUBTITLES,
SUBTITLE_OFFSET,
SUBTITLE_SCALE,
+ COLOUR_LUT,
+ J2K_BANDWIDTH,
DCI_METADATA,
SIZE,
LENGTH,
boost::mutex::scoped_lock lm (_state_mutex);
return _dcp_trim_end;
}
-
+
bool dcp_ab () const {
boost::mutex::scoped_lock lm (_state_mutex);
return _dcp_ab;
return _subtitle_scale;
}
+ int colour_lut () const {
+ boost::mutex::scoped_lock lm (_state_mutex);
+ return _colour_lut;
+ }
+
+ int j2k_bandwidth () const {
+ boost::mutex::scoped_lock lm (_state_mutex);
+ return _j2k_bandwidth;
+ }
+
std::string audio_language () const {
boost::mutex::scoped_lock lm (_state_mutex);
return _audio_language;
return _package_type;
}
- Size size () const {
+ libdcp::Size size () const {
boost::mutex::scoped_lock lm (_state_mutex);
return _size;
}
void set_with_subtitles (bool);
void set_subtitle_offset (int);
void set_subtitle_scale (float);
+ void set_colour_lut (int);
+ void set_j2k_bandwidth (int);
void set_audio_language (std::string);
void set_subtitle_language (std::string);
void set_territory (std::string);
void set_studio (std::string);
void set_facility (std::string);
void set_package_type (std::string);
- void set_size (Size);
+ void set_size (libdcp::Size);
void set_length (SourceFrame);
void unset_length ();
void set_content_digest (std::string);
* or an absolute path.
*/
std::string _content;
+ /** If this is true, we will believe the length specified by the content
+ * file's header; if false, we will run through the whole content file
+ * the first time we see it in order to obtain the length.
+ */
bool _trust_content_header;
/** The type of content that this Film represents (feature, trailer etc.) */
DCPContentType const * _dcp_content_type;
int _subtitle_offset;
/** scale factor to apply to subtitles */
float _subtitle_scale;
-
+ /** index of colour LUT to use when converting RGB to XYZ.
+ * 0: sRGB
+ * 1: Rec 709
+ */
+ int _colour_lut;
+ /** bandwidth for J2K files in bits per second */
+ int _j2k_bandwidth;
+
/* DCI naming stuff */
std::string _audio_language;
std::string _subtitle_language;
/* Data which are cached to speed things up */
- /** Size, in pixels, of the source (ignoring cropping) */
- Size _size;
- /** Actual length of the source (in video frames) from examining it */
+ /** libdcp::Size, in pixels, of the source (ignoring cropping) */
+ libdcp::Size _size;
+ /** The length of the source, in video frames (as far as we know) */
boost::optional<SourceFrame> _length;
/** MD5 digest of our content file */
std::string _content_digest;