diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-08-01 21:47:26 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-08-01 21:47:26 +0100 |
| commit | e82a4c81fe8bb3c3c6b68c667bda2f32fed4e68d (patch) | |
| tree | 180bf6ef98312f4241dbdc0234a67206f7458e6b /src | |
| parent | 8abb560971a256c0cfa9c9a3fe1d88964d593052 (diff) | |
Force audio content to be on a sample boundary.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/audio_content.cc | 12 | ||||
| -rw-r--r-- | src/lib/audio_content.h | 3 | ||||
| -rw-r--r-- | src/lib/content.cc | 14 |
3 files changed, 27 insertions, 2 deletions
diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index a252e4b5a..7f0ec1fd6 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -395,3 +395,15 @@ AudioContent::take_settings_from (shared_ptr<const AudioContent> c) ++j; } } + +void +AudioContent::modify_position (DCPTime& pos) const +{ + pos = pos.round (_parent->film()->audio_frame_rate()); +} + +void +AudioContent::modify_trim_start (ContentTime& trim) const +{ + trim = trim.round (stream()->frame_rate()); +} diff --git a/src/lib/audio_content.h b/src/lib/audio_content.h index a1f5ba8a0..eec67b201 100644 --- a/src/lib/audio_content.h +++ b/src/lib/audio_content.h @@ -83,6 +83,9 @@ public: void add_properties (std::list<UserProperty> &) const; + void modify_position (DCPTime& pos) const; + void modify_trim_start (ContentTime& pos) const; + static boost::shared_ptr<AudioContent> from_xml (Content* parent, cxml::ConstNodePtr, int version); private: diff --git a/src/lib/content.cc b/src/lib/content.cc index c1812b9fd..9b16eff7f 100644 --- a/src/lib/content.cc +++ b/src/lib/content.cc @@ -191,11 +191,16 @@ Content::signal_changed (int p) void Content::set_position (DCPTime p) { - /* video content can modify its position */ + /* video and audio content can modify its position */ + if (video) { video->modify_position (p); } + if (audio) { + audio->modify_position (p); + } + { boost::mutex::scoped_lock lm (_mutex); if (p == _position) { @@ -211,11 +216,16 @@ Content::set_position (DCPTime p) void Content::set_trim_start (ContentTime t) { - /* video content can modify its start trim */ + /* video and audio content can modify its start trim */ + if (video) { video->modify_trim_start (t); } + if (audio) { + audio->modify_trim_start (t); + } + { boost::mutex::scoped_lock lm (_mutex); _trim_start = t; |
