/*
- Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "content.h"
#include "colour_conversion.h"
+#include "video_content_scale.h"
class VideoExaminer;
class Ratio;
static int const COLOUR_CONVERSION;
};
-class VideoContentScale
-{
-public:
- VideoContentScale ();
- VideoContentScale (Ratio const *);
- VideoContentScale (bool);
- VideoContentScale (boost::shared_ptr<cxml::Node>);
-
- libdcp::Size size (boost::shared_ptr<const VideoContent>, libdcp::Size) const;
- std::string id () const;
- std::string name () const;
- void as_xml (xmlpp::Node *) const;
-
- Ratio const * ratio () const {
- return _ratio;
- }
-
- bool scale () const {
- return _scale;
- }
-
- static void setup_scales ();
- static std::vector<VideoContentScale> all () {
- return _scales;
- }
-
-private:
- Ratio const * _ratio;
- bool _scale;
-
- static std::vector<VideoContentScale> _scales;
-};
-
-bool operator== (VideoContentScale const & a, VideoContentScale const & b);
-bool operator!= (VideoContentScale const & a, VideoContentScale const & b);
-
class VideoContent : public virtual Content
{
public:
VideoContent (boost::shared_ptr<const Film>);
VideoContent (boost::shared_ptr<const Film>, DCPTime, ContentTime);
VideoContent (boost::shared_ptr<const Film>, boost::filesystem::path);
- VideoContent (boost::shared_ptr<const Film>, boost::shared_ptr<const cxml::Node>, int);
+ VideoContent (boost::shared_ptr<const Film>, cxml::ConstNodePtr, int);
VideoContent (boost::shared_ptr<const Film>, std::vector<boost::shared_ptr<Content> >);
void as_xml (xmlpp::Node *) const;
return _video_length;
}
+ ContentTime video_length_after_3d_combine () const {
+ boost::mutex::scoped_lock lm (_mutex);
+ if (_video_frame_type == VIDEO_FRAME_TYPE_3D_ALTERNATE) {
+ return ContentTime (_video_length.get() / 2);
+ }
+
+ return _video_length;
+ }
+
dcp::Size video_size () const {
boost::mutex::scoped_lock lm (_mutex);
return _video_size;
}
void set_video_frame_type (VideoFrameType);
+ void set_video_frame_rate (float);
void set_left_crop (int);
void set_right_crop (int);
ContentTime dcp_time_to_content_time (DCPTime) const;
+ void scale_and_crop_to_fit_width ();
+ void scale_and_crop_to_fit_height ();
+
protected:
void take_from_video_examiner (boost::shared_ptr<VideoExaminer>);
float _video_frame_rate;
private:
- friend class ffmpeg_pts_offset_test;
- friend class best_dcp_frame_rate_test_single;
- friend class best_dcp_frame_rate_test_double;
- friend class audio_sampling_rate_test;
+ friend struct ffmpeg_pts_offset_test;
+ friend struct best_dcp_frame_rate_test_single;
+ friend struct best_dcp_frame_rate_test_double;
+ friend struct audio_sampling_rate_test;
void setup_default_colour_conversion ();