diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-01-07 09:29:06 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-01-07 09:29:06 +0000 |
| commit | ea6240f349a27e1e8f4f03ee69640e3a2939d958 (patch) | |
| tree | 5b681e232ade7707ff20c3c6864f6cb3a110a7ba /src/lib | |
| parent | 9dc4a15bf9cd11e076d35dc71041b3149128877c (diff) | |
Allow moving-still-image sources to have their frame rate specified.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/content.cc | 4 | ||||
| -rw-r--r-- | src/lib/image_content.cc | 16 | ||||
| -rw-r--r-- | src/lib/image_content.h | 1 | ||||
| -rw-r--r-- | src/lib/player.cc | 7 | ||||
| -rw-r--r-- | src/lib/video_content.h | 2 |
5 files changed, 27 insertions, 3 deletions
diff --git a/src/lib/content.cc b/src/lib/content.cc index d835a5b05..ccca46bc0 100644 --- a/src/lib/content.cc +++ b/src/lib/content.cc @@ -150,6 +150,10 @@ Content::set_position (Time p) { { boost::mutex::scoped_lock lm (_mutex); + if (p == _position) { + return; + } + _position = p; } diff --git a/src/lib/image_content.cc b/src/lib/image_content.cc index b05fa6b8d..2d29df0c4 100644 --- a/src/lib/image_content.cc +++ b/src/lib/image_content.cc @@ -144,3 +144,19 @@ ImageContent::still () const { return number_of_paths() == 1; } + +void +ImageContent::set_video_frame_rate (float r) +{ + { + boost::mutex::scoped_lock lm (_mutex); + if (_video_frame_rate == r) { + return; + } + + _video_frame_rate = r; + } + + signal_changed (VideoContentProperty::VIDEO_FRAME_RATE); +} + diff --git a/src/lib/image_content.h b/src/lib/image_content.h index 47c5a20e3..e5a0311d9 100644 --- a/src/lib/image_content.h +++ b/src/lib/image_content.h @@ -47,6 +47,7 @@ public: void set_video_length (VideoContent::Frame); bool still () const; + void set_video_frame_rate (float); }; #endif diff --git a/src/lib/player.cc b/src/lib/player.cc index e1bf1fdb5..9f8599693 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -524,7 +524,10 @@ Player::content_changed (weak_ptr<Content> w, int property, bool frequent) update_subtitle (); Changed (frequent); - } else if (property == VideoContentProperty::VIDEO_CROP || property == VideoContentProperty::VIDEO_RATIO) { + } else if ( + property == VideoContentProperty::VIDEO_CROP || property == VideoContentProperty::VIDEO_RATIO || + property == VideoContentProperty::VIDEO_FRAME_RATE + ) { Changed (frequent); @@ -617,7 +620,7 @@ Player::film_changed (Film::Property p) last time we were run. */ - if (p == Film::SCALER || p == Film::WITH_SUBTITLES || p == Film::CONTAINER) { + if (p == Film::SCALER || p == Film::WITH_SUBTITLES || p == Film::CONTAINER || p == Film::VIDEO_FRAME_RATE) { Changed (false); } } diff --git a/src/lib/video_content.h b/src/lib/video_content.h index effca5c61..141525e01 100644 --- a/src/lib/video_content.h +++ b/src/lib/video_content.h @@ -129,6 +129,7 @@ protected: void take_from_video_examiner (boost::shared_ptr<VideoExaminer>); VideoContent::Frame _video_length; + float _video_frame_rate; private: friend class ffmpeg_pts_offset_test; @@ -139,7 +140,6 @@ private: void setup_default_colour_conversion (); libdcp::Size _video_size; - float _video_frame_rate; VideoFrameType _video_frame_type; Crop _crop; Ratio const * _ratio; |
