projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.
[dcpomatic.git]
/
src
/
lib
/
video_content.h
diff --git
a/src/lib/video_content.h
b/src/lib/video_content.h
index 96572bbd9adff2dbfc22c233e67bf49c48ba4b47..3c8e5fefd5a587d7d57ef8f885031197f461e977 100644
(file)
--- a/
src/lib/video_content.h
+++ b/
src/lib/video_content.h
@@
-1,5
+1,5
@@
/*
/*
- 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
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
@@
-22,6
+22,7
@@
#include "content.h"
#include "colour_conversion.h"
#include "content.h"
#include "colour_conversion.h"
+#include "video_content_scale.h"
class VideoExaminer;
class Ratio;
class VideoExaminer;
class Ratio;
@@
-33,8
+34,10
@@
public:
static int const VIDEO_FRAME_RATE;
static int const VIDEO_FRAME_TYPE;
static int const VIDEO_CROP;
static int const VIDEO_FRAME_RATE;
static int const VIDEO_FRAME_TYPE;
static int const VIDEO_CROP;
- static int const VIDEO_
RATIO
;
+ static int const VIDEO_
SCALE
;
static int const COLOUR_CONVERSION;
static int const COLOUR_CONVERSION;
+ static int const VIDEO_FADE_IN;
+ static int const VIDEO_FADE_OUT;
};
class VideoContent : public virtual Content
};
class VideoContent : public virtual Content
@@
-43,9
+46,9
@@
public:
typedef int Frame;
VideoContent (boost::shared_ptr<const Film>);
typedef int Frame;
VideoContent (boost::shared_ptr<const Film>);
- VideoContent (boost::shared_ptr<const Film>, DCPTime,
VideoFra
me);
+ VideoContent (boost::shared_ptr<const Film>, DCPTime,
ContentTi
me);
VideoContent (boost::shared_ptr<const Film>, boost::filesystem::path);
VideoContent (boost::shared_ptr<const Film>, boost::filesystem::path);
- VideoContent (boost::shared_ptr<const Film>,
boost::shared_ptr<const cxml::Node>
);
+ 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;
VideoContent (boost::shared_ptr<const Film>, std::vector<boost::shared_ptr<Content> >);
void as_xml (xmlpp::Node *) const;
@@
-53,11
+56,20
@@
public:
virtual std::string information () const;
virtual std::string identifier () const;
virtual std::string information () const;
virtual std::string identifier () const;
-
VideoFra
me video_length () const {
+
ContentTi
me video_length () const {
boost::mutex::scoped_lock lm (_mutex);
return _video_length;
}
boost::mutex::scoped_lock lm (_mutex);
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;
dcp::Size video_size () const {
boost::mutex::scoped_lock lm (_mutex);
return _video_size;
@@
-69,14
+81,21
@@
public:
}
void set_video_frame_type (VideoFrameType);
}
void set_video_frame_type (VideoFrameType);
+ void set_video_frame_rate (float);
void set_left_crop (int);
void set_right_crop (int);
void set_top_crop (int);
void set_bottom_crop (int);
void set_left_crop (int);
void set_right_crop (int);
void set_top_crop (int);
void set_bottom_crop (int);
+ void set_scale (VideoContentScale);
+ void unset_colour_conversion ();
void set_colour_conversion (ColourConversion);
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);
return _video_frame_type;
VideoFrameType video_frame_type () const {
boost::mutex::scoped_lock lm (_mutex);
return _video_frame_type;
@@
-106,44
+125,59
@@
public:
boost::mutex::scoped_lock lm (_mutex);
return _crop.bottom;
}
boost::mutex::scoped_lock lm (_mutex);
return _crop.bottom;
}
-
- void set_ratio (Ratio const *);
- /** @return
ratio to scale to, or 0 if the content's own ratio should be preserved.
*/
-
Ratio const * ratio
() const {
+ /** @return
Description of how to scale this content (if indeed it should be scaled)
*/
+
VideoContentScale scale
() const {
boost::mutex::scoped_lock lm (_mutex);
boost::mutex::scoped_lock lm (_mutex);
- return _
ratio
;
+ return _
scale
;
}
}
-
ColourConversion
colour_conversion () const {
+
boost::optional<ColourConversion>
colour_conversion () const {
boost::mutex::scoped_lock lm (_mutex);
return _colour_conversion;
}
boost::mutex::scoped_lock lm (_mutex);
return _colour_conversion;
}
+ 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;
dcp::Size video_size_after_3d_split () const;
dcp::Size video_size_after_crop () const;
- VideoFrame time_to_content_video_frames (DCPTime) const;
+ ContentTime dcp_time_to_content_time (DCPTime) const;
+
+ boost::optional<float> fade (VideoFrame) 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>);
protected:
void take_from_video_examiner (boost::shared_ptr<VideoExaminer>);
-
VideoFra
me _video_length;
+
ContentTi
me _video_length;
float _video_frame_rate;
private:
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 ();
dcp::Size _video_size;
VideoFrameType _video_frame_type;
Crop _crop;
void setup_default_colour_conversion ();
dcp::Size _video_size;
VideoFrameType _video_frame_type;
Crop _crop;
- Ratio const * _ratio;
- ColourConversion _colour_conversion;
+ VideoContentScale _scale;
+ boost::optional<ColourConversion> _colour_conversion;
+ ContentTime _fade_in;
+ ContentTime _fade_out;
};
#endif
};
#endif