summaryrefslogtreecommitdiff
path: root/src/lib/frame_rate_change.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/frame_rate_change.h')
-rw-r--r--src/lib/frame_rate_change.h63
1 files changed, 45 insertions, 18 deletions
diff --git a/src/lib/frame_rate_change.h b/src/lib/frame_rate_change.h
index c28342e92..b58e499d8 100644
--- a/src/lib/frame_rate_change.h
+++ b/src/lib/frame_rate_change.h
@@ -27,36 +27,65 @@
#include <string>
-class Film;
class Content;
+class Film;
class FrameRateChange
{
public:
- FrameRateChange ();
- FrameRateChange (double, int);
- FrameRateChange (std::shared_ptr<const Film> film, std::shared_ptr<const Content> content);
- FrameRateChange (std::shared_ptr<const Film> film, Content const * content);
+ FrameRateChange();
+ FrameRateChange(double, int);
+ FrameRateChange(std::shared_ptr<const Film> film, std::shared_ptr<const Content> content);
+ FrameRateChange(std::shared_ptr<const Film> film, Content const * content);
/** @return factor by which to multiply a source frame rate
to get the effective rate after any skip or repeat has happened.
*/
- double factor () const {
- if (skip) {
- return 0.5;
+ double factor() const {
+ if (_skip > 0) {
+ return 1.0 / (_skip + 1);
}
- return repeat;
+ return _repeat;
}
- double source = 24;
- int dcp = 24;
+ std::string description() const;
- /** true to skip every other frame */
- bool skip = false;
+ int skip() const {
+ return _skip;
+ }
+
+ int repeat() const {
+ return _repeat;
+ }
+
+ double speed_up() const {
+ return _speed_up;
+ }
+
+ bool change_speed() const {
+ return _change_speed;
+ }
+
+ double source() const {
+ return _source;
+ }
+
+ int dcp() const {
+ return _dcp;
+ }
+
+private:
+ double _source = 24;
+ int _dcp = 24;
+
+ /** Frames to skip between each one to use, e.g.
+ * 0 to skip no frames, 1 to skip every other one, 2 to skip 2 out of 3, etc.
+ */
+ int _skip = 0;
/** number of times to use each frame (e.g. 1 is normal, 2 means repeat each frame once, and so on) */
- int repeat = 1;
+ int _repeat = 1;
/** true if this DCP will run its video faster or slower than the source
* without taking into account `repeat' nor `skip'.
* (e.g. change_speed will be true if
@@ -66,14 +95,12 @@ public:
* source is 15.00fps, DCP is 30fps
* source is 12.50fps, DCP is 25fps)
*/
- bool change_speed = false;
+ bool _change_speed = false;
/** Amount by which the video is being sped-up in the DCP; e.g. for a
* 24fps source in a 25fps DCP this would be 25/24.
*/
- double speed_up = 1.0;
-
- std::string description () const;
+ double _speed_up = 1.0;
};