diff options
Diffstat (limited to 'src/lib/frame_rate_change.h')
| -rw-r--r-- | src/lib/frame_rate_change.h | 63 |
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; }; |
