+ std::vector<Filter const *> filters () const {
+ return _filters;
+ }
+
+ Scaler const * scaler () const {
+ return _scaler;
+ }
+
+ int dcp_frames () const {
+ return _dcp_frames;
+ }
+
+ TrimAction dcp_trim_action () const {
+ return _dcp_trim_action;
+ }
+
+ bool dcp_ab () const {
+ return _dcp_ab;
+ }
+
+ int audio_stream_index () const {
+ return _audio_stream;
+ }
+
+ AudioStream audio_stream () const {
+ assert (_audio_stream < int (_audio_streams.size()));
+ return _audio_streams[_audio_stream];
+ }
+
+ float audio_gain () const {
+ return _audio_gain;
+ }
+
+ int audio_delay () const {
+ return _audio_delay;
+ }
+
+ int still_duration () const {
+ return _still_duration;
+ }
+
+ int subtitle_stream_index () const {
+ return _subtitle_stream;
+ }
+
+ SubtitleStream subtitle_stream () const {
+ assert (_subtitle_stream < int (_subtitle_streams.size()));
+ return _subtitle_streams[_subtitle_stream];
+ }
+
+ bool with_subtitles () const {
+ return _with_subtitles;
+ }
+
+ int subtitle_offset () const {
+ return _subtitle_offset;
+ }
+
+ float subtitle_scale () const {
+ return _subtitle_scale;
+ }
+
+ std::string audio_language () const {
+ return _audio_language;
+ }
+
+ std::string subtitle_language () const {
+ return _subtitle_language;
+ }
+
+ std::string territory () const {
+ return _territory;
+ }
+
+ std::string rating () const {
+ return _rating;
+ }
+
+ std::string studio () const {
+ return _studio;
+ }
+
+ std::string facility () const {
+ return _facility;
+ }
+
+ std::string package_type () const {
+ return _package_type;
+ }
+
+ std::vector<int> thumbs () const {
+ return _thumbs;
+ }
+
+ Size size () const {
+ return _size;
+ }
+
+ int length () const {
+ return _length;
+ }
+
+ int audio_sample_rate () const {
+ return _audio_sample_rate;
+ }
+
+ std::string content_digest () const {
+ return _content_digest;
+ }
+
+ bool has_subtitles () const {
+ return _has_subtitles;
+ }
+
+ std::vector<AudioStream> audio_streams () const {
+ return _audio_streams;
+ }
+
+ std::vector<SubtitleStream> subtitle_streams () const {
+ return _subtitle_streams;
+ }
+
+ float frames_per_second () const {
+ return _frames_per_second;
+ }
+
+
+ /* SET */
+
+ void set_directory (std::string);
+ void set_name (std::string);
+ void set_use_dci_name (bool);
+ virtual void set_content (std::string);
+ void set_dcp_content_type (DCPContentType const *);
+ void set_format (Format const *);
+ void set_crop (Crop);
+ void set_left_crop (int);
+ void set_right_crop (int);
+ void set_top_crop (int);
+ void set_bottom_crop (int);
+ void set_filters (std::vector<Filter const *>);
+ void set_scaler (Scaler const *);
+ void set_dcp_frames (int);
+ void set_dcp_trim_action (TrimAction);
+ void set_dcp_ab (bool);
+ void set_audio_stream (int);
+ void set_audio_gain (float);
+ void set_audio_delay (int);
+ void set_still_duration (int);
+ void set_subtitle_stream (int);
+ void set_with_subtitles (bool);
+ void set_subtitle_offset (int);
+ void set_subtitle_scale (float);
+ void set_audio_language (std::string);
+ void set_subtitle_language (std::string);
+ void set_territory (std::string);
+ void set_rating (std::string);
+ void set_studio (std::string);
+ void set_facility (std::string);
+ void set_package_type (std::string);
+ void set_thumbs (std::vector<int>);
+ void set_size (Size);
+ void set_length (int);
+ void set_audio_channels (int);
+ void set_audio_sample_rate (int);
+ void set_content_digest (std::string);
+ void set_has_subtitles (bool);
+ void set_audio_streams (std::vector<AudioStream>);
+ void set_subtitle_streams (std::vector<SubtitleStream>);
+ void set_frames_per_second (float);
+
+ /** Emitted when some property has changed */
+ mutable sigc::signal1<void, Property> Changed;
+
+private:
+
+ std::string thumb_file_for_frame (int) const;
+ std::string thumb_base_for_frame (int) const;
+ void signal_changed (Property);
+