#include "colour_conversion.h"
#include "content_part.h"
+#include "crop.h"
#include "dcpomatic_time.h"
-#include "types.h"
+#include "pixel_quanta.h"
#include "user_property.h"
+#include "video_frame_type.h"
+#include "video_range.h"
+#include "types.h"
#include <dcp/language_tag.h>
#include <boost/thread/mutex.hpp>
static int const SIZE;
static int const FRAME_TYPE;
static int const CROP;
- static int const SCALE;
static int const COLOUR_CONVERSION;
static int const FADE_IN;
static int const FADE_OUT;
{
public:
explicit VideoContent (Content* parent);
- VideoContent (Content* parent, cxml::ConstNodePtr, int);
- VideoContent (Content* parent, std::vector<std::shared_ptr<Content> >);
+ VideoContent (Content* parent, cxml::ConstNodePtr node, int version, VideoRange video_range_hint);
+ VideoContent (Content* parent, std::vector<std::shared_ptr<Content>>);
void as_xml (xmlpp::Node *) const;
std::string technical_summary () const;
return _length;
}
- dcp::Size size () const {
+ boost::optional<dcp::Size> size () const {
boost::mutex::scoped_lock lm (_mutex);
return _size;
}
void set_frame_type (VideoFrameType);
+ void set_crop (Crop crop);
void set_left_crop (int);
void set_right_crop (int);
void set_top_crop (int);
return _frame_type;
}
- Crop crop () const {
+ Crop actual_crop () const;
+
+ Crop requested_crop () const {
boost::mutex::scoped_lock lm (_mutex);
return _crop;
}
- int left_crop () const {
+ int requested_left_crop () const {
boost::mutex::scoped_lock lm (_mutex);
return _crop.left;
}
- int right_crop () const {
+ int requested_right_crop () const {
boost::mutex::scoped_lock lm (_mutex);
return _crop.right;
}
- int top_crop () const {
+ int requested_top_crop () const {
boost::mutex::scoped_lock lm (_mutex);
return _crop.top;
}
- int bottom_crop () const {
+ int requested_bottom_crop () const {
boost::mutex::scoped_lock lm (_mutex);
return _crop.bottom;
}
return _range;
}
+ PixelQuanta pixel_quanta () const {
+ boost::mutex::scoped_lock lm (_mutex);
+ return _pixel_quanta;
+ }
+
bool use () const {
boost::mutex::scoped_lock lm (_mutex);
return _use;
/* XXX: names for these? */
- dcp::Size size_after_3d_split () const;
- dcp::Size size_after_crop () const;
- dcp::Size scaled_size (dcp::Size container_size);
+ boost::optional<dcp::Size> size_after_3d_split() const;
+ boost::optional<dcp::Size> size_after_crop() const;
+ boost::optional<dcp::Size> scaled_size(dcp::Size container_size);
boost::optional<double> fade (std::shared_ptr<const Film> film, Frame) const;
void set_length (Frame);
- void take_from_examiner (std::shared_ptr<VideoExaminer>);
+ void take_from_examiner(std::shared_ptr<const Film> film, std::shared_ptr<VideoExaminer>);
void add_properties (std::list<UserProperty> &) const;
void modify_position (std::shared_ptr<const Film> film, dcpomatic::DCPTime& pos) const;
void modify_trim_start (dcpomatic::ContentTime& pos) const;
- static std::shared_ptr<VideoContent> from_xml (Content* parent, cxml::ConstNodePtr, int);
+ void rotate_size();
+
+ static std::shared_ptr<VideoContent> from_xml (Content* parent, cxml::ConstNodePtr node, int version, VideoRange video_range_hint);
private:
bool _use;
Frame _length;
boost::optional<ColourConversion> _colour_conversion;
- dcp::Size _size;
+ boost::optional<dcp::Size> _size;
VideoFrameType _frame_type;
Crop _crop;
/** ratio to scale cropped image to (or none to guess); i.e. if set, scale to _custom_ratio:1 */
/** fade out time in content frames */
Frame _fade_out;
VideoRange _range;
+ PixelQuanta _pixel_quanta;
boost::optional<dcp::LanguageTag> _burnt_subtitle_language;
};
+
#endif