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..b3c81d9c3eb807bbc3866d384141ce26f1aaff47 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,7
+34,7
@@
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;
};
@@
-43,9
+44,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
+54,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
+79,16
@@
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 set_colour_conversion (ColourConversion);
void set_colour_conversion (ColourConversion);
-
+
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,13
+118,11
@@
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 {
}
ColourConversion colour_conversion () const {
@@
-123,26
+133,29
@@
public:
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;
+
+ 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
;
+
VideoContentScale _scale
;
ColourConversion _colour_conversion;
};
ColourConversion _colour_conversion;
};