diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-05-09 19:58:37 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-05-18 11:50:29 +0100 |
| commit | 19f94521139aac13ef8fb4eaa55855b2ada307b4 (patch) | |
| tree | 6e4b457c1fa46c674433fb1a5d2a9cd0f07c5a11 /src/lib/content.cc | |
| parent | 0a2d40420813403a96352c6dc895d23fcd9994c0 (diff) | |
Move video frame rate ('prepared-for') into Content.
Diffstat (limited to 'src/lib/content.cc')
| -rw-r--r-- | src/lib/content.cc | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/lib/content.cc b/src/lib/content.cc index 3b9c3e3a1..ff35eeab7 100644 --- a/src/lib/content.cc +++ b/src/lib/content.cc @@ -50,6 +50,7 @@ int const ContentProperty::POSITION = 401; int const ContentProperty::LENGTH = 402; int const ContentProperty::TRIM_START = 403; int const ContentProperty::TRIM_END = 404; +int const ContentProperty::VIDEO_FRAME_RATE = 405; Content::Content (shared_ptr<const Film> film) : _film (film) @@ -157,7 +158,6 @@ Content::signal_changed (int p) { try { emit (boost::bind (boost::ref (Changed), shared_from_this (), p, _change_signals_frequent)); - changed (p); } catch (boost::bad_weak_ptr) { /* This must be during construction; never mind */ } @@ -308,3 +308,33 @@ Content::reel_split_points () const t.push_back (position().round_up (film()->video_frame_rate())); return t; } + +void +Content::set_video_frame_rate (double r) +{ + { + boost::mutex::scoped_lock lm (_mutex); + _video_frame_rate = r; + } + + signal_changed (ContentProperty::VIDEO_FRAME_RATE); +} + +double +Content::active_video_frame_rate () const +{ + { + boost::mutex::scoped_lock lm (_mutex); + if (_video_frame_rate) { + return _video_frame_rate.get (); + } + } + + /* No frame rate specified, so assume this content has been + prepared for any concurrent video content or perhaps + just the DCP rate. + */ + shared_ptr<const Film> film = _film.lock (); + DCPOMATIC_ASSERT (film); + return film->active_frame_rate_change(position()).source; +} |
