X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fvideo_content.h;fp=src%2Flib%2Fvideo_content.h;h=3c8e5fefd5a587d7d57ef8f885031197f461e977;hp=9aa3be521e48f8ee0187ce2907007c1fa4cb3fd6;hb=b6c780d3107557d452c6612d715d01e2be52dbda;hpb=0dcbc398124f740e4fd7b552926f601a3e5c755e diff --git a/src/lib/video_content.h b/src/lib/video_content.h index 9aa3be521..3c8e5fefd 100644 --- a/src/lib/video_content.h +++ b/src/lib/video_content.h @@ -36,6 +36,8 @@ public: static int const VIDEO_CROP; static int const VIDEO_SCALE; static int const COLOUR_CONVERSION; + static int const VIDEO_FADE_IN; + static int const VIDEO_FADE_OUT; }; class VideoContent : public virtual Content @@ -44,9 +46,9 @@ public: typedef int Frame; VideoContent (boost::shared_ptr); - VideoContent (boost::shared_ptr, Time, VideoContent::Frame); + VideoContent (boost::shared_ptr, DCPTime, ContentTime); VideoContent (boost::shared_ptr, boost::filesystem::path); - VideoContent (boost::shared_ptr, boost::shared_ptr, int); + VideoContent (boost::shared_ptr, cxml::ConstNodePtr, int); VideoContent (boost::shared_ptr, std::vector >); void as_xml (xmlpp::Node *) const; @@ -54,21 +56,21 @@ public: virtual std::string information () const; virtual std::string identifier () const; - VideoContent::Frame video_length () const { + ContentTime video_length () const { boost::mutex::scoped_lock lm (_mutex); return _video_length; } - VideoContent::Frame video_length_after_3d_combine () const { + ContentTime video_length_after_3d_combine () const { boost::mutex::scoped_lock lm (_mutex); if (_video_frame_type == VIDEO_FRAME_TYPE_3D_ALTERNATE) { - return _video_length / 2; + return ContentTime (_video_length.get() / 2); } return _video_length; } - libdcp::Size video_size () const { + dcp::Size video_size () const { boost::mutex::scoped_lock lm (_mutex); return _video_size; } @@ -78,11 +80,6 @@ public: return _video_frame_rate; } - float original_video_frame_rate () const { - boost::mutex::scoped_lock lm (_mutex); - return _original_video_frame_rate; - } - void set_video_frame_type (VideoFrameType); void set_video_frame_rate (float); @@ -95,6 +92,9 @@ public: void unset_colour_conversion (); void set_colour_conversion (ColourConversion); void set_default_colour_conversion (); + + void set_fade_in (ContentTime); + void set_fade_out (ContentTime); VideoFrameType video_frame_type () const { boost::mutex::scoped_lock lm (_mutex); @@ -137,10 +137,22 @@ public: return _colour_conversion; } - libdcp::Size video_size_after_3d_split () const; - libdcp::Size video_size_after_crop () const; + ContentTime fade_in () const { + boost::mutex::scoped_lock lm (_mutex); + return _fade_in; + } + + ContentTime fade_out () const { + boost::mutex::scoped_lock lm (_mutex); + return _fade_out; + } + + dcp::Size video_size_after_3d_split () const; + dcp::Size video_size_after_crop () const; + + ContentTime dcp_time_to_content_time (DCPTime) const; - VideoContent::Frame time_to_content_video_frames (Time) const; + boost::optional fade (VideoFrame) const; void scale_and_crop_to_fit_width (); void scale_and_crop_to_fit_height (); @@ -148,21 +160,24 @@ public: protected: void take_from_video_examiner (boost::shared_ptr); - VideoContent::Frame _video_length; - float _original_video_frame_rate; + ContentTime _video_length; 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; - libdcp::Size _video_size; + void setup_default_colour_conversion (); + + dcp::Size _video_size; VideoFrameType _video_frame_type; Crop _crop; VideoContentScale _scale; boost::optional _colour_conversion; + ContentTime _fade_in; + ContentTime _fade_out; }; #endif